motion-master-client 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +7 -0
  2. package/package.json +9 -0
  3. package/src/index.d.ts +21 -0
  4. package/src/index.js +22 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/device-log-line.d.ts +5 -0
  7. package/src/lib/device-log-line.js +2 -0
  8. package/src/lib/device-log-line.js.map +1 -0
  9. package/src/lib/hardware-description.d.ts +36 -0
  10. package/src/lib/hardware-description.js +38 -0
  11. package/src/lib/hardware-description.js.map +1 -0
  12. package/src/lib/logger.d.ts +1 -0
  13. package/src/lib/logger.js +5 -0
  14. package/src/lib/logger.js.map +1 -0
  15. package/src/lib/monitoring-config.d.ts +6 -0
  16. package/src/lib/monitoring-config.js +2 -0
  17. package/src/lib/monitoring-config.js.map +1 -0
  18. package/src/lib/monitoring-entry.d.ts +10 -0
  19. package/src/lib/monitoring-entry.js +2 -0
  20. package/src/lib/monitoring-entry.js.map +1 -0
  21. package/src/lib/motion-master-client.d.ts +18 -0
  22. package/src/lib/motion-master-client.js +48 -0
  23. package/src/lib/motion-master-client.js.map +1 -0
  24. package/src/lib/motion-master-pub-sub-client.d.ts +16 -0
  25. package/src/lib/motion-master-pub-sub-client.js +64 -0
  26. package/src/lib/motion-master-pub-sub-client.js.map +1 -0
  27. package/src/lib/motion-master-pub-sub-socket.d.ts +28 -0
  28. package/src/lib/motion-master-pub-sub-socket.js +2 -0
  29. package/src/lib/motion-master-pub-sub-socket.js.map +1 -0
  30. package/src/lib/motion-master-pub-sub-web-socket.d.ts +13 -0
  31. package/src/lib/motion-master-pub-sub-web-socket.js +57 -0
  32. package/src/lib/motion-master-pub-sub-web-socket.js.map +1 -0
  33. package/src/lib/motion-master-pub-sub-worker-socket.d.ts +16 -0
  34. package/src/lib/motion-master-pub-sub-worker-socket.js +37 -0
  35. package/src/lib/motion-master-pub-sub-worker-socket.js.map +1 -0
  36. package/src/lib/motion-master-req-res-client.d.ts +370 -0
  37. package/src/lib/motion-master-req-res-client.js +1067 -0
  38. package/src/lib/motion-master-req-res-client.js.map +1 -0
  39. package/src/lib/motion-master-req-res-socket.d.ts +38 -0
  40. package/src/lib/motion-master-req-res-socket.js +2 -0
  41. package/src/lib/motion-master-req-res-socket.js.map +1 -0
  42. package/src/lib/motion-master-req-res-web-socket.d.ts +20 -0
  43. package/src/lib/motion-master-req-res-web-socket.js +96 -0
  44. package/src/lib/motion-master-req-res-web-socket.js.map +1 -0
  45. package/src/lib/motion-master-req-res-worker-socket.d.ts +15 -0
  46. package/src/lib/motion-master-req-res-worker-socket.js +49 -0
  47. package/src/lib/motion-master-req-res-worker-socket.js.map +1 -0
  48. package/src/lib/operators.d.ts +21 -0
  49. package/src/lib/operators.js +62 -0
  50. package/src/lib/operators.js.map +1 -0
  51. package/src/lib/options.d.ts +10 -0
  52. package/src/lib/options.js +11 -0
  53. package/src/lib/options.js.map +1 -0
  54. package/src/lib/parameter.d.ts +9 -0
  55. package/src/lib/parameter.js +2 -0
  56. package/src/lib/parameter.js.map +1 -0
  57. package/src/lib/request-status-resolver.d.ts +4 -0
  58. package/src/lib/request-status-resolver.js +320 -0
  59. package/src/lib/request-status-resolver.js.map +1 -0
  60. package/src/lib/system-log-line.d.ts +8 -0
  61. package/src/lib/system-log-line.js +2 -0
  62. package/src/lib/system-log-line.js.map +1 -0
  63. package/src/lib/types.d.ts +41 -0
  64. package/src/lib/types.js +9 -0
  65. package/src/lib/types.js.map +1 -0
  66. package/src/lib/urls.d.ts +3 -0
  67. package/src/lib/urls.js +6 -0
  68. package/src/lib/urls.js.map +1 -0
  69. package/src/lib/util.d.ts +33 -0
  70. package/src/lib/util.js +247 -0
  71. package/src/lib/util.js.map +1 -0
@@ -0,0 +1,247 @@
1
+ import { inRange } from "lodash";
2
+ import { MotionMasterMessage, ValueType } from "./types";
3
+ export function getParameterAddress(a, b) {
4
+ if (typeof a === 'object' && a.index) {
5
+ const subindexHex = a.subindex ? a.subindex.toString(16).padStart(2, '0') : `00`;
6
+ return `0x${a.index.toString(16)}:${subindexHex}`;
7
+ }
8
+ else {
9
+ const subindexHex = b ? b.toString(16).padStart(2, '0') : '00';
10
+ return `0x${a.toString(16)}:${subindexHex}`;
11
+ }
12
+ }
13
+ export function getParameterTypeValueDefault(key) {
14
+ if (key === 'floatValue' || key === 'intValue' || key === 'uintValue') {
15
+ return 0;
16
+ }
17
+ else if (key === 'rawValue') {
18
+ return Uint8Array.from([]);
19
+ }
20
+ else if (key === 'stringValue') {
21
+ return '';
22
+ }
23
+ else {
24
+ return 0;
25
+ }
26
+ }
27
+ export function getParameterTypeValue(parameter) {
28
+ return (MotionMasterMessage.Status.DeviceParameterValues.ParameterValue.create(parameter)).typeValue;
29
+ }
30
+ export function getParameterValue(parameter) {
31
+ var _a;
32
+ const key = getParameterTypeValue(parameter);
33
+ if (key && key in parameter) {
34
+ return (_a = parameter[key]) !== null && _a !== void 0 ? _a : getParameterTypeValueDefault(key);
35
+ }
36
+ return 0;
37
+ }
38
+ export function parseSystemLogLine(line) {
39
+ const re = /(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\.\d+)\s\((.*)\)\s\[(.*)\]\s(.*:\d+)\s(.*)\|(.*)$/gm;
40
+ const result = re.exec(line);
41
+ if (result) {
42
+ return {
43
+ date: new Date(result[1]),
44
+ uptime: result[2].trim(),
45
+ id: result[3].trim(),
46
+ file: result[4].trim(),
47
+ level: result[5].trim(),
48
+ message: result[6].trim(),
49
+ };
50
+ }
51
+ return;
52
+ }
53
+ export function parseSystemLogContent(content) {
54
+ return content.split('\n')
55
+ .map((v) => parseSystemLogLine(v))
56
+ .filter((l) => l !== undefined);
57
+ }
58
+ export function parseDeviceLog(line) {
59
+ const re = /^(\d{2}:\d{2}:\d{2}\.\d+)\s(.*)\|(.*)$/gm;
60
+ const result = re.exec(line);
61
+ if (result) {
62
+ return {
63
+ time: result[1].trim(),
64
+ level: result[2].trim(),
65
+ message: result[3].trim(),
66
+ };
67
+ }
68
+ return;
69
+ }
70
+ export function parseDeviceLogContent(content) {
71
+ return content.split('\n')
72
+ .map((v) => parseDeviceLog(v))
73
+ .filter((l) => l !== undefined);
74
+ }
75
+ export function mapParameterTypeValueToObject(type, value) {
76
+ var _a, _b;
77
+ const p = {};
78
+ if (type === 'floatValue') {
79
+ p['floatValue'] = typeof value === 'number' ? value : parseFloat(value);
80
+ }
81
+ else if (type === 'intValue') {
82
+ p['intValue'] = typeof value === 'number' ? value : parseInt(value, 10);
83
+ }
84
+ else if (type === 'rawValue') {
85
+ if (typeof value === 'number') {
86
+ p['rawValue'] = Uint8Array.from([value]);
87
+ }
88
+ else {
89
+ let bytes = [];
90
+ if (value.startsWith('0x')) {
91
+ bytes = (_b = (_a = value.slice(2).match(/.{1,2}/g)) === null || _a === void 0 ? void 0 : _a.map((h) => parseInt(h, 16))) !== null && _b !== void 0 ? _b : [];
92
+ }
93
+ else {
94
+ bytes = value.split(',').map((c) => c.trim()).map((c) => parseInt(c, 10));
95
+ }
96
+ p['rawValue'] = Uint8Array.from(bytes);
97
+ }
98
+ }
99
+ else if (type === 'stringValue') {
100
+ p['stringValue'] = typeof value === 'string' ? value : value.toString();
101
+ }
102
+ else if (type === 'uintValue') {
103
+ p['uintValue'] = typeof value === 'number' ? value : parseInt(value, 10);
104
+ }
105
+ return p;
106
+ }
107
+ // Using bytes fixes: ERROR TypeError: Cannot freeze array buffer views with elements in NgRx
108
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
+ export function createPlainObjectFromMotionMasterMessage(motionMasterMessage) {
110
+ return MotionMasterMessage.toObject(motionMasterMessage, {
111
+ arrays: true,
112
+ bytes: Array,
113
+ defaults: true,
114
+ objects: true,
115
+ oneofs: true, // includes virtual oneof fields set to the present field's name
116
+ });
117
+ }
118
+ export function decodeTextContent(content) {
119
+ const decoder = new TextDecoder();
120
+ const buffer = Uint8Array.from(content);
121
+ return decoder.decode(buffer);
122
+ }
123
+ export function isRxPdoIndex(index) {
124
+ return inRange(index, 0x1600, 0x1800);
125
+ }
126
+ export function isTxPdoIndex(index) {
127
+ return inRange(index, 0x1A00, 0x1C00);
128
+ }
129
+ export function filterRxPdoParameters(parameters, excludeSubIndex000 = false) {
130
+ return parameters.filter((p) => isRxPdoIndex(p.index) && (excludeSubIndex000 ? p.subindex > 0 : true)); // RxPDOs: Index area 0x1600 to 0x17FF
131
+ }
132
+ export function filterTxPdoParameters(parameters, excludeSubIndex000 = false) {
133
+ return parameters.filter((p) => isTxPdoIndex(p.index) && (excludeSubIndex000 ? p.subindex > 0 : true)); // TxPDOs: Index area 0x1A00 to 0x1BFF
134
+ }
135
+ export function fillPdoParametersWithMappingEntries(parameters, entriesPerPdo = 10) {
136
+ const output = [];
137
+ let i = 0;
138
+ while (i < parameters.length) {
139
+ if (parameters[i].subindex === 0) {
140
+ let j = i;
141
+ while (parameters[j] && (parameters[j].index === parameters[i].index)) {
142
+ output.push(parameters[j]);
143
+ j++;
144
+ }
145
+ let d = j - i;
146
+ while (d <= entriesPerPdo) {
147
+ output.push({
148
+ index: parameters[i].index,
149
+ subindex: d,
150
+ name: parameters[i].name,
151
+ uintValue: 0,
152
+ value: 0,
153
+ valueType: ValueType.UNSIGNED32,
154
+ group: parameters[i].group,
155
+ typeValue: "uintValue",
156
+ readAccess: true,
157
+ writeAccess: true,
158
+ });
159
+ d++;
160
+ }
161
+ i = j;
162
+ }
163
+ else {
164
+ i++;
165
+ }
166
+ }
167
+ return output;
168
+ }
169
+ export function mapParameterToPdoSubItemValue(parameter) {
170
+ const { index, subindex } = parameter;
171
+ if (parameter.valueType && parameter.valueType < ValueType.VISIBLE_STRING) {
172
+ const buffer = new ArrayBuffer(4);
173
+ const view = new DataView(buffer);
174
+ const bitSize = mapValueTypeToBitSize(parameter.valueType);
175
+ view.setUint16(0, index);
176
+ view.setUint8(2, subindex);
177
+ view.setUint8(3, bitSize);
178
+ return view.getUint32(0);
179
+ }
180
+ return 0;
181
+ }
182
+ export function mapValueTypeToBitSize(valueType) {
183
+ switch (valueType) {
184
+ case ValueType.UNSPECIFIED:
185
+ return 0;
186
+ case ValueType.BOOLEAN:
187
+ return 1;
188
+ case ValueType.INTEGER8:
189
+ case ValueType.UNSIGNED8:
190
+ return 8;
191
+ case ValueType.INTEGER16:
192
+ case ValueType.UNSIGNED16:
193
+ return 16;
194
+ case ValueType.INTEGER32:
195
+ case ValueType.UNSIGNED32:
196
+ case ValueType.REAL32:
197
+ return 32;
198
+ }
199
+ throw new Error(`Non-numeric value type "${valueType}" (data types with variable length) cannot be mapped to bit size. You will have to get this info from ESI.`);
200
+ }
201
+ export const valueTypeToParameterTypeValueKeyMap = new Map([
202
+ [ValueType.BOOLEAN, 'uintValue'],
203
+ [ValueType.INTEGER8, 'intValue'],
204
+ [ValueType.INTEGER16, 'intValue'],
205
+ [ValueType.INTEGER32, 'intValue'],
206
+ [ValueType.UNSIGNED8, 'uintValue'],
207
+ [ValueType.UNSIGNED16, 'uintValue'],
208
+ [ValueType.UNSIGNED32, 'uintValue'],
209
+ [ValueType.REAL32, 'floatValue'],
210
+ [ValueType.VISIBLE_STRING, 'stringValue'],
211
+ [ValueType.OCTET_STRING, 'stringValue'],
212
+ [ValueType.UNICODE_STRING, 'stringValue'],
213
+ ]);
214
+ export function createPdoParameterValues(parameters, values) {
215
+ const output = parameters.map((parameter, i, arr) => {
216
+ const { index, subindex, typeValue } = parameter;
217
+ let value = values[i];
218
+ if (subindex === 0) {
219
+ value = arr.reduce((n, p, j) => (p.index === index && p.subindex > 0 && values[j]) ? n + 1 : n, 0);
220
+ }
221
+ return [index, subindex, value, typeValue];
222
+ });
223
+ for (let i = 0; i < output.length - 1; i++) {
224
+ const [, subindex1, value1] = output[i];
225
+ if (subindex1 > 0 && value1 === 0) {
226
+ let j = i + 1;
227
+ let [, subindex2, value2] = output[j];
228
+ while (subindex2 > subindex1 && output[j]) {
229
+ if (value2 > 0) {
230
+ output[i][2] = value2;
231
+ output[j][2] = 0;
232
+ break;
233
+ }
234
+ if (output[++j]) {
235
+ [, subindex2, value2] = output[j];
236
+ }
237
+ }
238
+ }
239
+ }
240
+ return output;
241
+ }
242
+ export function resolveAfter(ms, value) {
243
+ return new Promise(function (resolve) {
244
+ setTimeout(resolve.bind(null, value), ms);
245
+ });
246
+ }
247
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/util.ts"],"names":[],"mappings":"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"}