motion-master-client 0.0.13 → 0.0.14

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 (124) hide show
  1. package/package.json +17 -2
  2. package/src/index.js +27 -0
  3. package/src/index.js.map +1 -0
  4. package/src/lib/cia402.d.ts +30 -0
  5. package/src/lib/cia402.js +112 -0
  6. package/src/lib/cia402.js.map +1 -0
  7. package/src/lib/device-log-line.d.ts +5 -0
  8. package/src/lib/device-log-line.js +3 -0
  9. package/src/lib/device-log-line.js.map +1 -0
  10. package/src/lib/device-parameter.d.ts +56 -0
  11. package/src/lib/device-parameter.js +39 -0
  12. package/src/lib/device-parameter.js.map +1 -0
  13. package/src/lib/device.d.ts +9 -0
  14. package/src/lib/device.js +3 -0
  15. package/src/lib/device.js.map +1 -0
  16. package/src/lib/examples/get-firmware-version-for-all-devices.d.ts +1 -0
  17. package/src/lib/examples/get-firmware-version-for-all-devices.js +15 -0
  18. package/src/lib/examples/get-firmware-version-for-all-devices.js.map +1 -0
  19. package/src/lib/hardware-description.d.ts +37 -0
  20. package/src/lib/hardware-description.js +48 -0
  21. package/src/lib/hardware-description.js.map +1 -0
  22. package/src/lib/logger.d.ts +1 -0
  23. package/src/lib/logger.js +8 -0
  24. package/src/lib/logger.js.map +1 -0
  25. package/src/lib/monitoring-config.d.ts +6 -0
  26. package/src/lib/monitoring-config.js +3 -0
  27. package/src/lib/monitoring-config.js.map +1 -0
  28. package/src/lib/{monitoring-entry.ts → monitoring-entry.d.ts} +4 -5
  29. package/src/lib/monitoring-entry.js +3 -0
  30. package/src/lib/monitoring-entry.js.map +1 -0
  31. package/src/lib/motion-master-client.d.ts +30 -0
  32. package/src/lib/motion-master-client.js +90 -0
  33. package/src/lib/motion-master-client.js.map +1 -0
  34. package/src/lib/motion-master-pub-sub-client.d.ts +16 -0
  35. package/src/lib/motion-master-pub-sub-client.js +68 -0
  36. package/src/lib/motion-master-pub-sub-client.js.map +1 -0
  37. package/src/lib/motion-master-pub-sub-socket.d.ts +28 -0
  38. package/src/lib/motion-master-pub-sub-socket.js +3 -0
  39. package/src/lib/motion-master-pub-sub-socket.js.map +1 -0
  40. package/src/lib/motion-master-pub-sub-web-socket.d.ts +13 -0
  41. package/src/lib/motion-master-pub-sub-web-socket.js +61 -0
  42. package/src/lib/motion-master-pub-sub-web-socket.js.map +1 -0
  43. package/src/lib/motion-master-pub-sub-worker-socket.d.ts +13 -0
  44. package/src/lib/motion-master-pub-sub-worker-socket.js +37 -0
  45. package/src/lib/motion-master-pub-sub-worker-socket.js.map +1 -0
  46. package/src/lib/motion-master-req-res-client.d.ts +836 -0
  47. package/src/lib/motion-master-req-res-client.js +1557 -0
  48. package/src/lib/motion-master-req-res-client.js.map +1 -0
  49. package/src/lib/motion-master-req-res-socket.d.ts +46 -0
  50. package/src/lib/motion-master-req-res-socket.js +3 -0
  51. package/src/lib/motion-master-req-res-socket.js.map +1 -0
  52. package/src/lib/motion-master-req-res-web-socket.d.ts +24 -0
  53. package/src/lib/motion-master-req-res-web-socket.js +108 -0
  54. package/src/lib/motion-master-req-res-web-socket.js.map +1 -0
  55. package/src/lib/motion-master-req-res-worker-socket.d.ts +19 -0
  56. package/src/lib/motion-master-req-res-worker-socket.js +61 -0
  57. package/src/lib/motion-master-req-res-worker-socket.js.map +1 -0
  58. package/src/lib/operators.d.ts +21 -0
  59. package/src/lib/operators.js +71 -0
  60. package/src/lib/operators.js.map +1 -0
  61. package/src/lib/options.d.ts +34 -0
  62. package/src/lib/options.js +38 -0
  63. package/src/lib/options.js.map +1 -0
  64. package/src/lib/parameter.d.ts +65 -0
  65. package/src/lib/parameter.js +70 -0
  66. package/src/lib/parameter.js.map +1 -0
  67. package/src/lib/product-id-range.d.ts +7 -0
  68. package/src/lib/product-id-range.js +12 -0
  69. package/src/lib/product-id-range.js.map +1 -0
  70. package/src/lib/request-status-resolver.d.ts +4 -0
  71. package/src/lib/request-status-resolver.js +345 -0
  72. package/src/lib/request-status-resolver.js.map +1 -0
  73. package/src/lib/system-log-line.d.ts +8 -0
  74. package/src/lib/system-log-line.js +3 -0
  75. package/src/lib/system-log-line.js.map +1 -0
  76. package/src/lib/types.d.ts +195 -0
  77. package/src/lib/types.js +23 -0
  78. package/src/lib/types.js.map +1 -0
  79. package/src/lib/urls.d.ts +3 -0
  80. package/src/lib/urls.js +10 -0
  81. package/src/lib/urls.js.map +1 -0
  82. package/src/lib/util.d.ts +30 -0
  83. package/src/lib/util.js +279 -0
  84. package/src/lib/util.js.map +1 -0
  85. package/.babelrc +0 -3
  86. package/.eslintrc.json +0 -18
  87. package/jest.config.ts +0 -15
  88. package/motion-master.proto +0 -1822
  89. package/project.json +0 -41
  90. package/src/lib/cia402.ts +0 -112
  91. package/src/lib/device-log-line.ts +0 -5
  92. package/src/lib/device-parameter.spec.ts +0 -85
  93. package/src/lib/device-parameter.ts +0 -79
  94. package/src/lib/device.ts +0 -10
  95. package/src/lib/examples/get-firmware-version-for-all-devices.ts +0 -18
  96. package/src/lib/hardware-description.spec.ts +0 -253
  97. package/src/lib/hardware-description.ts +0 -84
  98. package/src/lib/logger.ts +0 -5
  99. package/src/lib/monitoring-config.ts +0 -6
  100. package/src/lib/motion-master-client.ts +0 -126
  101. package/src/lib/motion-master-pub-sub-client.ts +0 -94
  102. package/src/lib/motion-master-pub-sub-socket.ts +0 -33
  103. package/src/lib/motion-master-pub-sub-web-socket.ts +0 -71
  104. package/src/lib/motion-master-pub-sub-worker-socket.ts +0 -46
  105. package/src/lib/motion-master-req-res-client.spec.ts +0 -740
  106. package/src/lib/motion-master-req-res-client.ts +0 -1974
  107. package/src/lib/motion-master-req-res-socket.ts +0 -55
  108. package/src/lib/motion-master-req-res-web-socket.ts +0 -131
  109. package/src/lib/motion-master-req-res-worker-socket.ts +0 -75
  110. package/src/lib/operators.ts +0 -93
  111. package/src/lib/options.ts +0 -38
  112. package/src/lib/parameter.spec.ts +0 -81
  113. package/src/lib/parameter.ts +0 -123
  114. package/src/lib/product-id-range.ts +0 -8
  115. package/src/lib/request-status-resolver.ts +0 -403
  116. package/src/lib/system-log-line.ts +0 -8
  117. package/src/lib/types.ts +0 -123
  118. package/src/lib/urls.ts +0 -6
  119. package/src/lib/util.ts +0 -267
  120. package/tsconfig.json +0 -23
  121. package/tsconfig.lib.json +0 -10
  122. package/tsconfig.spec.json +0 -20
  123. package/typedoc.json +0 -10
  124. /package/src/{index.ts → index.d.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,21 @@
1
1
  {
2
2
  "name": "motion-master-client",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "type": "commonjs",
5
- "description": "A library and CLI program used for communicating with Motion Master."
5
+ "description": "A library and CLI program used for communicating with Motion Master.",
6
+ "dependencies": {
7
+ "fast-deep-equal": "^3.1.3",
8
+ "lodash": "^4.17.21",
9
+ "long": "5.2.1",
10
+ "protobufjs": "^7.2.3",
11
+ "roarr": "^7.14.1",
12
+ "rxjs": "~7.5.0",
13
+ "uuid": "^9.0.0",
14
+ "ws": "^8.12.1"
15
+ },
16
+ "peerDependencies": {
17
+ "tslib": "^2.4.0"
18
+ },
19
+ "main": "./src/index.js",
20
+ "types": "./src/index.d.ts"
6
21
  }
package/src/index.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib/cia402"), exports);
5
+ tslib_1.__exportStar(require("./lib/device-log-line"), exports);
6
+ tslib_1.__exportStar(require("./lib/device-parameter"), exports);
7
+ tslib_1.__exportStar(require("./lib/hardware-description"), exports);
8
+ tslib_1.__exportStar(require("./lib/monitoring-config"), exports);
9
+ tslib_1.__exportStar(require("./lib/monitoring-entry"), exports);
10
+ tslib_1.__exportStar(require("./lib/motion-master-client"), exports);
11
+ tslib_1.__exportStar(require("./lib/motion-master-pub-sub-client"), exports);
12
+ tslib_1.__exportStar(require("./lib/motion-master-pub-sub-socket"), exports);
13
+ tslib_1.__exportStar(require("./lib/motion-master-pub-sub-web-socket"), exports);
14
+ tslib_1.__exportStar(require("./lib/motion-master-pub-sub-worker-socket"), exports);
15
+ tslib_1.__exportStar(require("./lib/motion-master-req-res-client"), exports);
16
+ tslib_1.__exportStar(require("./lib/motion-master-req-res-socket"), exports);
17
+ tslib_1.__exportStar(require("./lib/motion-master-req-res-web-socket"), exports);
18
+ tslib_1.__exportStar(require("./lib/motion-master-req-res-worker-socket"), exports);
19
+ tslib_1.__exportStar(require("./lib/operators"), exports);
20
+ tslib_1.__exportStar(require("./lib/options"), exports);
21
+ tslib_1.__exportStar(require("./lib/parameter"), exports);
22
+ tslib_1.__exportStar(require("./lib/request-status-resolver"), exports);
23
+ tslib_1.__exportStar(require("./lib/system-log-line"), exports);
24
+ tslib_1.__exportStar(require("./lib/types"), exports);
25
+ tslib_1.__exportStar(require("./lib/urls"), exports);
26
+ tslib_1.__exportStar(require("./lib/util"), exports);
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/motion-master-client/src/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,gEAAsC;AACtC,iEAAuC;AACvC,qEAA2C;AAC3C,kEAAwC;AACxC,iEAAuC;AACvC,qEAA2C;AAC3C,6EAAmD;AACnD,6EAAmD;AACnD,iFAAuD;AACvD,oFAA0D;AAC1D,6EAAmD;AACnD,6EAAmD;AACnD,iFAAuD;AACvD,oFAA0D;AAC1D,0DAAgC;AAChC,wDAA8B;AAC9B,0DAAgC;AAChC,wEAA8C;AAC9C,gEAAsC;AACtC,sDAA4B;AAC5B,qDAA2B;AAC3B,qDAA2B"}
@@ -0,0 +1,30 @@
1
+ export declare enum CiA402State {
2
+ NOT_READY_TO_SWITCH_ON = 0,
3
+ SWITCH_ON_DISABLED = 1,
4
+ READY_TO_SWITCH_ON = 2,
5
+ SWITCHED_ON = 3,
6
+ OPERATION_ENABLED = 4,
7
+ QUICK_STOP_ACTIVE = 5,
8
+ FAULT_REACTION_ACTIVE = 6,
9
+ FAULT = 7
10
+ }
11
+ export declare const cia402StateLabels: string[];
12
+ export declare const statuswordToCia402StateMap: Map<number, CiA402State>;
13
+ export declare function getCia402StateFromStatusword(statusword: number): CiA402State | undefined;
14
+ export declare function isInternalLimitActive(statusword: number): boolean;
15
+ export declare enum ModesOfOperation {
16
+ OPEN_LOOP_FIELD_MODE = -3,
17
+ DIAGNOSTICS_MODE = -2,
18
+ COGGING_COMPENSATION_RECORDING_MODE = -1,
19
+ NO_MODE_ASSIGNED = 0,
20
+ PROFILE_POSITION_MODE = 1,
21
+ PROFILE_VELOCITY_MODE = 3,
22
+ TORQUE_PROFILE_MODE = 4,
23
+ HOMING_MODE = 6,
24
+ CYCLIC_SYNC_POSITION_MODE = 8,
25
+ CYCLIC_SYNC_VELOCITY_MODE = 9,
26
+ CYCLIC_SYNC_TORQUE_MODE = 10
27
+ }
28
+ export declare const controlwordBits: string[];
29
+ export declare const statuswordBits: string[];
30
+ export declare const supportedDriveModesBits: string[];
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.supportedDriveModesBits = exports.statuswordBits = exports.controlwordBits = exports.ModesOfOperation = exports.isInternalLimitActive = exports.getCia402StateFromStatusword = exports.statuswordToCia402StateMap = exports.cia402StateLabels = exports.CiA402State = void 0;
4
+ var CiA402State;
5
+ (function (CiA402State) {
6
+ CiA402State[CiA402State["NOT_READY_TO_SWITCH_ON"] = 0] = "NOT_READY_TO_SWITCH_ON";
7
+ CiA402State[CiA402State["SWITCH_ON_DISABLED"] = 1] = "SWITCH_ON_DISABLED";
8
+ CiA402State[CiA402State["READY_TO_SWITCH_ON"] = 2] = "READY_TO_SWITCH_ON";
9
+ CiA402State[CiA402State["SWITCHED_ON"] = 3] = "SWITCHED_ON";
10
+ CiA402State[CiA402State["OPERATION_ENABLED"] = 4] = "OPERATION_ENABLED";
11
+ CiA402State[CiA402State["QUICK_STOP_ACTIVE"] = 5] = "QUICK_STOP_ACTIVE";
12
+ CiA402State[CiA402State["FAULT_REACTION_ACTIVE"] = 6] = "FAULT_REACTION_ACTIVE";
13
+ CiA402State[CiA402State["FAULT"] = 7] = "FAULT";
14
+ })(CiA402State = exports.CiA402State || (exports.CiA402State = {}));
15
+ exports.cia402StateLabels = [
16
+ 'NOT READY TO SWITCH ON',
17
+ 'SWITCH ON DISABLED',
18
+ 'READY TO SWITCH ON',
19
+ 'SWITCHED ON',
20
+ 'OPERATION ENABLED',
21
+ 'QUICK STOP ACTIVE',
22
+ 'FAULT REACTION ACTIVE',
23
+ 'FAULT',
24
+ ];
25
+ exports.statuswordToCia402StateMap = new Map([
26
+ [0b00000000, CiA402State.NOT_READY_TO_SWITCH_ON],
27
+ [0b01000000, CiA402State.SWITCH_ON_DISABLED],
28
+ [0b00100001, CiA402State.READY_TO_SWITCH_ON],
29
+ [0b00100011, CiA402State.SWITCHED_ON],
30
+ [0b00100111, CiA402State.OPERATION_ENABLED],
31
+ [0b00000111, CiA402State.QUICK_STOP_ACTIVE],
32
+ [0b00001111, CiA402State.FAULT_REACTION_ACTIVE],
33
+ [0b00001000, CiA402State.FAULT],
34
+ ]);
35
+ function getCia402StateFromStatusword(statusword) {
36
+ return exports.statuswordToCia402StateMap.get(statusword & 0b01101111)
37
+ || exports.statuswordToCia402StateMap.get(statusword & 0b01001111);
38
+ }
39
+ exports.getCia402StateFromStatusword = getCia402StateFromStatusword;
40
+ function isInternalLimitActive(statusword) {
41
+ return (0x800 & statusword) === 0x800;
42
+ }
43
+ exports.isInternalLimitActive = isInternalLimitActive;
44
+ var ModesOfOperation;
45
+ (function (ModesOfOperation) {
46
+ ModesOfOperation[ModesOfOperation["OPEN_LOOP_FIELD_MODE"] = -3] = "OPEN_LOOP_FIELD_MODE";
47
+ ModesOfOperation[ModesOfOperation["DIAGNOSTICS_MODE"] = -2] = "DIAGNOSTICS_MODE";
48
+ ModesOfOperation[ModesOfOperation["COGGING_COMPENSATION_RECORDING_MODE"] = -1] = "COGGING_COMPENSATION_RECORDING_MODE";
49
+ ModesOfOperation[ModesOfOperation["NO_MODE_ASSIGNED"] = 0] = "NO_MODE_ASSIGNED";
50
+ ModesOfOperation[ModesOfOperation["PROFILE_POSITION_MODE"] = 1] = "PROFILE_POSITION_MODE";
51
+ ModesOfOperation[ModesOfOperation["PROFILE_VELOCITY_MODE"] = 3] = "PROFILE_VELOCITY_MODE";
52
+ ModesOfOperation[ModesOfOperation["TORQUE_PROFILE_MODE"] = 4] = "TORQUE_PROFILE_MODE";
53
+ ModesOfOperation[ModesOfOperation["HOMING_MODE"] = 6] = "HOMING_MODE";
54
+ ModesOfOperation[ModesOfOperation["CYCLIC_SYNC_POSITION_MODE"] = 8] = "CYCLIC_SYNC_POSITION_MODE";
55
+ ModesOfOperation[ModesOfOperation["CYCLIC_SYNC_VELOCITY_MODE"] = 9] = "CYCLIC_SYNC_VELOCITY_MODE";
56
+ ModesOfOperation[ModesOfOperation["CYCLIC_SYNC_TORQUE_MODE"] = 10] = "CYCLIC_SYNC_TORQUE_MODE";
57
+ })(ModesOfOperation = exports.ModesOfOperation || (exports.ModesOfOperation = {}));
58
+ exports.controlwordBits = [
59
+ 'so = switch on',
60
+ 'ev = enable voltage',
61
+ 'qs = quick stop',
62
+ 'eo = enable operation',
63
+ 'oms = operation mode specific',
64
+ 'oms = operation mode specific',
65
+ 'oms = operation mode specific',
66
+ 'fr = fault reset',
67
+ 'h = halt',
68
+ 'oms = operation mode specific',
69
+ 'r = reserved',
70
+ 'ms = manufacturer-specific',
71
+ 'ms = manufacturer-specific',
72
+ 'ms = manufacturer-specific',
73
+ 'ms = manufacturer-specific',
74
+ 'ms = manufacturer-specific',
75
+ ];
76
+ exports.statuswordBits = [
77
+ 'rtso = ready to switch on',
78
+ 'so = switched on',
79
+ 'oe = operation enabled',
80
+ 'f = fault',
81
+ 've = voltage enabled',
82
+ 'qs = quick stop',
83
+ 'sod = switch on disabled',
84
+ 'w = warning',
85
+ 'ms = manufacturer-specific',
86
+ 'rm = remote',
87
+ 'tr = target reached',
88
+ 'ila = internal limit active',
89
+ 'oms = operation-mode-specific',
90
+ 'oms = operation-mode-specific',
91
+ 'ms = manufacturer-specific',
92
+ 'ms = manufacturer-specific',
93
+ ];
94
+ exports.supportedDriveModesBits = [
95
+ 'pp = profile position mode',
96
+ 'vl = velocity mode',
97
+ 'pv = profile velocity mode',
98
+ 'tq = torque mode',
99
+ 'r = reserved',
100
+ 'hm = homing mode',
101
+ 'ip = interpolated position mode',
102
+ 'csp = cyclic synchronous position mode',
103
+ 'csv = cyclic synchronous velocity mode',
104
+ 'cst = cyclic synchronous torque mode',
105
+ 'r = reserved',
106
+ 'r = reserved',
107
+ 'r = reserved',
108
+ 'r = reserved',
109
+ 'r = reserved',
110
+ 'r = reserved',
111
+ ];
112
+ //# sourceMappingURL=cia402.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cia402.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/cia402.ts"],"names":[],"mappings":";;;AAAA,IAAY,WASX;AATD,WAAY,WAAW;IACrB,iFAAsB,CAAA;IACtB,yEAAkB,CAAA;IAClB,yEAAkB,CAAA;IAClB,2DAAW,CAAA;IACX,uEAAiB,CAAA;IACjB,uEAAiB,CAAA;IACjB,+EAAqB,CAAA;IACrB,+CAAK,CAAA;AACP,CAAC,EATW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAStB;AAEY,QAAA,iBAAiB,GAAG;IAC/B,wBAAwB;IACxB,oBAAoB;IACpB,oBAAoB;IACpB,aAAa;IACb,mBAAmB;IACnB,mBAAmB;IACnB,uBAAuB;IACvB,OAAO;CACR,CAAC;AAEW,QAAA,0BAA0B,GAAG,IAAI,GAAG,CAAC;IAChD,CAAC,UAAU,EAAE,WAAW,CAAC,sBAAsB,CAAC;IAChD,CAAC,UAAU,EAAE,WAAW,CAAC,kBAAkB,CAAC;IAC5C,CAAC,UAAU,EAAE,WAAW,CAAC,kBAAkB,CAAC;IAC5C,CAAC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC;IACrC,CAAC,UAAU,EAAE,WAAW,CAAC,iBAAiB,CAAC;IAC3C,CAAC,UAAU,EAAE,WAAW,CAAC,iBAAiB,CAAC;IAC3C,CAAC,UAAU,EAAE,WAAW,CAAC,qBAAqB,CAAC;IAC/C,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC;CAChC,CAAC,CAAC;AAEH,SAAgB,4BAA4B,CAAC,UAAkB;IAC7D,OAAO,kCAA0B,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;WACzD,kCAA0B,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;AAC/D,CAAC;AAHD,oEAGC;AAED,SAAgB,qBAAqB,CAAC,UAAkB;IACtD,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,KAAK,CAAC;AACxC,CAAC;AAFD,sDAEC;AAED,IAAY,gBAYX;AAZD,WAAY,gBAAgB;IAC1B,wFAAyB,CAAA;IACzB,gFAAqB,CAAA;IACrB,sHAAwC,CAAA;IACxC,+EAAoB,CAAA;IACpB,yFAAyB,CAAA;IACzB,yFAAyB,CAAA;IACzB,qFAAuB,CAAA;IACvB,qEAAe,CAAA;IACf,iGAA6B,CAAA;IAC7B,iGAA6B,CAAA;IAC7B,8FAA4B,CAAA;AAC9B,CAAC,EAZW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAY3B;AAEY,QAAA,eAAe,GAAG;IAC7B,gBAAgB;IAChB,qBAAqB;IACrB,iBAAiB;IACjB,uBAAuB;IACvB,+BAA+B;IAC/B,+BAA+B;IAC/B,+BAA+B;IAC/B,kBAAkB;IAClB,UAAU;IACV,+BAA+B;IAC/B,cAAc;IACd,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;CAC7B,CAAC;AAEW,QAAA,cAAc,GAAG;IAC5B,2BAA2B;IAC3B,kBAAkB;IAClB,wBAAwB;IACxB,WAAW;IACX,sBAAsB;IACtB,iBAAiB;IACjB,0BAA0B;IAC1B,aAAa;IACb,4BAA4B;IAC5B,aAAa;IACb,qBAAqB;IACrB,6BAA6B;IAC7B,+BAA+B;IAC/B,+BAA+B;IAC/B,4BAA4B;IAC5B,4BAA4B;CAC7B,CAAC;AAEW,QAAA,uBAAuB,GAAG;IACrC,4BAA4B;IAC5B,oBAAoB;IACpB,4BAA4B;IAC5B,kBAAkB;IAClB,cAAc;IACd,kBAAkB;IAClB,iCAAiC;IACjC,wCAAwC;IACxC,wCAAwC;IACxC,sCAAsC;IACtC,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;CACf,CAAC"}
@@ -0,0 +1,5 @@
1
+ export interface DeviceLogLine {
2
+ time: string;
3
+ level: string;
4
+ message: string;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=device-log-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-log-line.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/device-log-line.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ import { Parameter } from "./parameter";
2
+ export interface DeviceParameter extends Parameter {
3
+ id: string;
4
+ flags?: {
5
+ access?: 'ro' | 'rw' | 'wo';
6
+ category?: 'm' | 'o' | 'c';
7
+ pdoMapping?: 't' | 'r' | 'tr';
8
+ safetyMapping?: 'si' | 'so' | 'sio' | 'sp';
9
+ };
10
+ }
11
+ /**
12
+ * Make device parameter id by providing a device serial number and tuple of index and subindex.
13
+ *
14
+ * @param serialNumber - device serial number from the hardware description file
15
+ * @param tuple - an array of index and subindex
16
+ * @throws {Error} if index or subindex are less than 0
17
+ * @returns combined index and subindex in uppercase hexadecimal format, e.g. "0x60FE:02"
18
+ */
19
+ export declare function makeDeviceParameterId(serialNumber: string, tuple: [(number | null | undefined), (number | null | undefined)]): string;
20
+ /**
21
+ * Make device parameter id by providing a device serial number and object which has index and subindex properties.
22
+ *
23
+ * @param serialNumber - device serial number from the hardware description file
24
+ * @param parameter - an object with optional index and subindex properties
25
+ * @throws {Error} if index or subindex are less than 0
26
+ * @returns combined index and subindex in uppercase hexadecimal format, e.g. "0x60FE:02"
27
+ */
28
+ export declare function makeDeviceParameterId(serialNumber: string, parameter: {
29
+ index?: (number | null);
30
+ subindex?: (number | null);
31
+ }): string;
32
+ /**
33
+ * Make parameter id by providing a device serial number and index and subindex.
34
+ *
35
+ * @param serialNumber - device serial number from the hardware description file
36
+ * @param index - from 0x0000 to 0xFFFF for objects defined in ESI and >0xFFFF for custom object
37
+ * @param subindex - defaults to 0 if not provided
38
+ * @throws {Error} if index or subindex are less than 0
39
+ * @returns combined index and subindex in uppercase hexadecimal format, e.g. "0x60FE:02"
40
+ */
41
+ export declare function makeDeviceParameterId(serialNumber: string, index?: (number | null), subindex?: (number | null)): string;
42
+ /**
43
+ * Example of device parameter id is "0x2110:1A.8502-03-0001353-2115" where:
44
+ * - 0x2110 is object index in hexadecimal format
45
+ * - 1A is subindex in hexadecimal format
46
+ * - 8502-03-0001353-2115 is device serial number from hardware description file
47
+ */
48
+ export declare const deviceParameterIdRegExp: RegExp;
49
+ /**
50
+ * Split device parameter id into parts.
51
+ *
52
+ * @param id - device parameter id like "0x2110:1A.8502-03-0001353-2115"
53
+ * @returns tuple of device serial number, index, and subindex
54
+ */
55
+ export declare function splitDeviceParameterId(id: string): [string, number, number];
56
+ export declare function isDeviceParameterId(id: string): boolean;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDeviceParameterId = exports.splitDeviceParameterId = exports.deviceParameterIdRegExp = exports.makeDeviceParameterId = void 0;
4
+ const parameter_1 = require("./parameter");
5
+ function makeDeviceParameterId(serialNumber, a, b) {
6
+ const parameterId = (0, parameter_1.makeParameterId)(a, b);
7
+ return `${parameterId}.${serialNumber}`;
8
+ }
9
+ exports.makeDeviceParameterId = makeDeviceParameterId;
10
+ /**
11
+ * Example of device parameter id is "0x2110:1A.8502-03-0001353-2115" where:
12
+ * - 0x2110 is object index in hexadecimal format
13
+ * - 1A is subindex in hexadecimal format
14
+ * - 8502-03-0001353-2115 is device serial number from hardware description file
15
+ */
16
+ exports.deviceParameterIdRegExp = /^0x([0-9a-fA-F]{4,}):([0-9a-fA-F]{2})\.([\d-]+)$/;
17
+ /**
18
+ * Split device parameter id into parts.
19
+ *
20
+ * @param id - device parameter id like "0x2110:1A.8502-03-0001353-2115"
21
+ * @returns tuple of device serial number, index, and subindex
22
+ */
23
+ function splitDeviceParameterId(id) {
24
+ const match = id.match(exports.deviceParameterIdRegExp);
25
+ if (!match) {
26
+ throw new Error(`Device parameter id "${id}" doesn't match the regular expression: ${exports.deviceParameterIdRegExp}`);
27
+ }
28
+ return [
29
+ match[3],
30
+ parseInt(match[1], 16),
31
+ parseInt(match[2], 16), // subindex
32
+ ];
33
+ }
34
+ exports.splitDeviceParameterId = splitDeviceParameterId;
35
+ function isDeviceParameterId(id) {
36
+ return exports.deviceParameterIdRegExp.test(id);
37
+ }
38
+ exports.isDeviceParameterId = isDeviceParameterId;
39
+ //# sourceMappingURL=device-parameter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-parameter.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/device-parameter.ts"],"names":[],"mappings":";;;AAAA,2CAAyD;AA2CzD,SAAgB,qBAAqB,CAAC,YAAoB,EAAE,CAA0I,EAAE,CAAmB;IACzN,MAAM,WAAW,GAAG,IAAA,2BAAe,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,GAAG,WAAW,IAAI,YAAY,EAAE,CAAC;AAC1C,CAAC;AAHD,sDAGC;AAED;;;;;GAKG;AACU,QAAA,uBAAuB,GAAG,kDAAkD,CAAC;AAE1F;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,EAAU;IAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,+BAAuB,CAAC,CAAC;IAEhD,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,2CAA2C,+BAAuB,EAAE,CAAC,CAAC;KACjH;IAED,OAAO;QACL,KAAK,CAAC,CAAC,CAAC;QACR,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACtB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW;KACpC,CAAC;AACJ,CAAC;AAZD,wDAYC;AAED,SAAgB,mBAAmB,CAAC,EAAU;IAC5C,OAAO,+BAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1C,CAAC;AAFD,kDAEC"}
@@ -0,0 +1,9 @@
1
+ import { HardwareDescription } from "./hardware-description";
2
+ export interface Device {
3
+ id: string;
4
+ deviceAddress: number;
5
+ type?: number;
6
+ position?: number;
7
+ alias?: number;
8
+ hardwareDescription?: HardwareDescription;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/device.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ Object.assign(global, { WebSocket: require('ws') });
5
+ const rxjs_1 = require("rxjs");
6
+ const motion_master_client_1 = require("../motion-master-client");
7
+ const client = (0, motion_master_client_1.createMotionMasterClient)('192.168.1.112');
8
+ (() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
9
+ const devices = yield (0, rxjs_1.lastValueFrom)(client.request.getDevices());
10
+ const versions = yield Promise.all(devices.map((device) => client.request.upload(device.deviceAddress, 0x100A, 0)));
11
+ console.log(versions);
12
+ }))();
13
+ client.request.getDevices().pipe((0, rxjs_1.mergeMap)((devices) => (0, rxjs_1.forkJoin)(devices.map((device) => client.request.getParameterValue(device.deviceAddress, 0x100A, 0))))).subscribe(console.log);
14
+ setTimeout(() => client.closeSockets(), 5000);
15
+ //# sourceMappingURL=get-firmware-version-for-all-devices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-firmware-version-for-all-devices.js","sourceRoot":"","sources":["../../../../../../libs/motion-master-client/src/lib/examples/get-firmware-version-for-all-devices.ts"],"names":[],"mappings":";;;AAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEpD,+BAAyD;AACzD,kEAAmE;AAEnE,MAAM,MAAM,GAAG,IAAA,+CAAwB,EAAC,eAAe,CAAC,CAAC;AAEzD,CAAC,GAAS,EAAE;IACV,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAa,EAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAS,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC,CAAA,CAAC,EAAE,CAAC;AAEL,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAC9B,IAAA,eAAQ,EAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,eAAQ,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAS,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACpI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEzB,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ export interface HardwareComponent {
2
+ name: string;
3
+ version: string;
4
+ serialNumber: string;
5
+ }
6
+ export declare type AssemblyComponent = HardwareComponent;
7
+ export declare type DeviceComponent = HardwareComponent;
8
+ export interface Assembly {
9
+ name: string;
10
+ id: string;
11
+ version: string;
12
+ serialNumber: string;
13
+ components: AssemblyComponent[];
14
+ }
15
+ export interface HardwareDevice {
16
+ name: string;
17
+ id: string;
18
+ version: string;
19
+ keyId: string;
20
+ serialNumber: string;
21
+ macAddress: string;
22
+ components: DeviceComponent[];
23
+ }
24
+ /**
25
+ * @link https://docs.google.com/document/d/1N00-ZjxHkjoWNIsnoTtza9CUHrxm8-e54298DXLuD94
26
+ */
27
+ export interface HardwareDescription {
28
+ fileVersion: string;
29
+ assembly?: Assembly;
30
+ device: HardwareDevice;
31
+ }
32
+ export declare function getIdFromHardwareDescription(hd: HardwareDescription): string;
33
+ export declare function getApiIdentifierFromHardwareDescription(hd: HardwareDescription, skipKeyId?: boolean): string;
34
+ export declare function getNameFromHardwareDescription(hd: HardwareDescription): string;
35
+ export declare function getSerialNumberFromHardwareDescription(hd: HardwareDescription): string;
36
+ export declare function getAllComponentsFromHardwareDescription(hd: HardwareDescription): HardwareComponent[];
37
+ export declare function hardwareComponentsMatch(a: HardwareComponent[], b: HardwareComponent[]): boolean;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hardwareComponentsMatch = exports.getAllComponentsFromHardwareDescription = exports.getSerialNumberFromHardwareDescription = exports.getNameFromHardwareDescription = exports.getApiIdentifierFromHardwareDescription = exports.getIdFromHardwareDescription = void 0;
4
+ const lodash_1 = require("lodash");
5
+ function getIdFromHardwareDescription(hd) {
6
+ return hd.assembly
7
+ ? hd.assembly.id
8
+ : hd.device.id;
9
+ }
10
+ exports.getIdFromHardwareDescription = getIdFromHardwareDescription;
11
+ function getApiIdentifierFromHardwareDescription(hd, skipKeyId = false) {
12
+ let apiId = hd.assembly
13
+ ? `${hd.assembly.id}-${hd.assembly.version}`
14
+ : `${hd.device.id}-${hd.device.version}`;
15
+ if (!skipKeyId && hd.device.keyId) {
16
+ apiId += `-${hd.device.keyId}`;
17
+ }
18
+ return apiId;
19
+ }
20
+ exports.getApiIdentifierFromHardwareDescription = getApiIdentifierFromHardwareDescription;
21
+ function getNameFromHardwareDescription(hd) {
22
+ return hd.assembly
23
+ ? hd.assembly.name
24
+ : hd.device.name;
25
+ }
26
+ exports.getNameFromHardwareDescription = getNameFromHardwareDescription;
27
+ function getSerialNumberFromHardwareDescription(hd) {
28
+ return hd.assembly
29
+ ? hd.assembly.serialNumber
30
+ : hd.device.serialNumber;
31
+ }
32
+ exports.getSerialNumberFromHardwareDescription = getSerialNumberFromHardwareDescription;
33
+ function getAllComponentsFromHardwareDescription(hd) {
34
+ return hd.assembly
35
+ ? [...hd.assembly.components, ...hd.device.components]
36
+ : hd.device.components;
37
+ }
38
+ exports.getAllComponentsFromHardwareDescription = getAllComponentsFromHardwareDescription;
39
+ function hardwareComponentsMatch(a, b) {
40
+ if (a.length === 0 && b.length === 0) {
41
+ return false; // edge case: when both components are empty they don't match since there are no components to compare
42
+ }
43
+ const ac = a.map((c) => `${c.name}-${c.version[0]}`.replace(/\s/g, '').toLocaleLowerCase()).sort();
44
+ const bc = b.map((c) => `${c.name}-${c.version[0]}`.replace(/\s/g, '').toLocaleLowerCase()).sort();
45
+ return (0, lodash_1.isEqual)(ac, bc);
46
+ }
47
+ exports.hardwareComponentsMatch = hardwareComponentsMatch;
48
+ //# sourceMappingURL=hardware-description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hardware-description.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/hardware-description.ts"],"names":[],"mappings":";;;AAAA,mCAAiC;AAsCjC,SAAgB,4BAA4B,CAAC,EAAuB;IAClE,OAAO,EAAE,CAAC,QAAQ;QAChB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;QAChB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC;AAJD,oEAIC;AAED,SAAgB,uCAAuC,CAAC,EAAuB,EAAE,SAAS,GAAG,KAAK;IAChG,IAAI,KAAK,GAAG,EAAE,CAAC,QAAQ;QACrB,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC5C,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAE3C,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;QACjC,KAAK,IAAI,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;KAChC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,0FAUC;AAED,SAAgB,8BAA8B,CAAC,EAAuB;IACpE,OAAO,EAAE,CAAC,QAAQ;QAChB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI;QAClB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAJD,wEAIC;AAED,SAAgB,sCAAsC,CAAC,EAAuB;IAC5E,OAAO,EAAE,CAAC,QAAQ;QAChB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY;QAC1B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC;AAJD,wFAIC;AAED,SAAgB,uCAAuC,CAAC,EAAuB;IAC7E,OAAO,EAAE,CAAC,QAAQ;QAChB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;QACtD,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;AAC3B,CAAC;AAJD,0FAIC;AAED,SAAgB,uBAAuB,CAAC,CAAsB,EAAE,CAAsB;IACpF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACpC,OAAO,KAAK,CAAC,CAAC,sGAAsG;KACrH;IAED,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnG,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnG,OAAO,IAAA,gBAAO,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AATD,0DASC"}
@@ -0,0 +1 @@
1
+ export declare const logger: import("roarr").Logger<import("roarr/dist/src/types").JsonObject>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logger = void 0;
4
+ const roarr_1 = require("roarr");
5
+ exports.logger = roarr_1.Roarr.child({
6
+ package: '@synapticon/motion-master-client'
7
+ });
8
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/logger.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAEjB,QAAA,MAAM,GAAG,aAAK,CAAC,KAAK,CAAC;IAChC,OAAO,EAAE,kCAAkC;CAC5C,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface MonitoringConfig {
2
+ readonly bufferSize?: number;
3
+ readonly distinct?: boolean;
4
+ readonly messageId: string;
5
+ readonly topic: string;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=monitoring-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoring-config.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/monitoring-config.ts"],"names":[],"mappings":""}
@@ -1,10 +1,9 @@
1
1
  import { Observable } from "rxjs";
2
2
  import { MonitoringConfig } from "./monitoring-config";
3
3
  import { MotionMasterMessage, ParameterValueType } from "./types";
4
-
5
4
  export interface MonitoringEntry {
6
- config: MonitoringConfig;
7
- interval: number;
8
- values$: Observable<ParameterValueType[]>;
9
- parameters: MotionMasterMessage.Request.GetDeviceParameterValues.IParameter[];
5
+ config: MonitoringConfig;
6
+ interval: number;
7
+ values$: Observable<ParameterValueType[]>;
8
+ parameters: MotionMasterMessage.Request.GetDeviceParameterValues.IParameter[];
10
9
  }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=monitoring-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoring-entry.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/monitoring-entry.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { Observable } from "rxjs";
2
+ import { MonitoringConfig } from "./monitoring-config";
3
+ import { MotionMasterPubSubClient } from "./motion-master-pub-sub-client";
4
+ import { MotionMasterPubSubSocket } from "./motion-master-pub-sub-socket";
5
+ import { MotionMasterReqResClient } from "./motion-master-req-res-client";
6
+ import { MotionMasterReqResSocket } from "./motion-master-req-res-socket";
7
+ import { DeviceRef, ParameterValueType } from "./types";
8
+ export declare function createMotionMasterClient(hostname: string): MotionMasterClient;
9
+ export declare class MotionMasterClient {
10
+ readonly reqResSocket: MotionMasterReqResSocket;
11
+ readonly pubSubSocket: MotionMasterPubSubSocket;
12
+ readonly request: MotionMasterReqResClient;
13
+ readonly monitor: MotionMasterPubSubClient;
14
+ constructor(reqResSocket: MotionMasterReqResSocket, pubSubSocket: MotionMasterPubSubSocket);
15
+ /**
16
+ * This observable will emit true when both req/res and pub/sub sockets are opened.
17
+ * If any socket gets closed, this observable will emit false.
18
+ * This is a hot observable that will on subscription emit the last value of sockets opened.
19
+ */
20
+ socketsOpened$: Observable<boolean>;
21
+ /**
22
+ * Client is ready when both req/res and pub/sub sockets are opened.
23
+ * If both sockets are already opened, this function will immediately resolve to true.
24
+ * Otherwise, it will wait up to requestTimeout for both sockets to open, or throw an error.
25
+ */
26
+ whenReady(requestTimeout?: number): Promise<true>;
27
+ startMonitoring(ids: string[] | [DeviceRef, number, number][], interval: number, config?: MonitoringConfig, requestTimeout?: number): Observable<ParameterValueType[]>;
28
+ stopMonitoring(messageId: string): void;
29
+ closeSockets(): void;
30
+ }
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MotionMasterClient = exports.createMotionMasterClient = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const rxjs_1 = require("rxjs");
6
+ const uuid_1 = require("uuid");
7
+ const motion_master_pub_sub_client_1 = require("./motion-master-pub-sub-client");
8
+ const motion_master_pub_sub_web_socket_1 = require("./motion-master-pub-sub-web-socket");
9
+ const motion_master_req_res_client_1 = require("./motion-master-req-res-client");
10
+ const motion_master_req_res_web_socket_1 = require("./motion-master-req-res-web-socket");
11
+ const operators_1 = require("./operators");
12
+ function createMotionMasterClient(hostname) {
13
+ const reqResSocket = new motion_master_req_res_web_socket_1.MotionMasterReqResWebSocket();
14
+ const pubSubSocket = new motion_master_pub_sub_web_socket_1.MotionMasterPubSubWebSocket();
15
+ const client = new MotionMasterClient(reqResSocket, pubSubSocket);
16
+ const clientId = (0, uuid_1.v4)();
17
+ reqResSocket.open(`ws://${hostname}:63524?clientId=${clientId}`);
18
+ pubSubSocket.open(`ws://${hostname}:63525?clientId=${clientId}`);
19
+ return client;
20
+ }
21
+ exports.createMotionMasterClient = createMotionMasterClient;
22
+ class MotionMasterClient {
23
+ constructor(reqResSocket, pubSubSocket) {
24
+ this.reqResSocket = reqResSocket;
25
+ this.pubSubSocket = pubSubSocket;
26
+ /**
27
+ * This observable will emit true when both req/res and pub/sub sockets are opened.
28
+ * If any socket gets closed, this observable will emit false.
29
+ * This is a hot observable that will on subscription emit the last value of sockets opened.
30
+ */
31
+ this.socketsOpened$ = (0, rxjs_1.combineLatest)([this.reqResSocket.opened$, this.pubSubSocket.opened$]).pipe((0, rxjs_1.map)(([reqResSocketOpened, pubSubSocketOpened]) => reqResSocketOpened && pubSubSocketOpened));
32
+ this.request = new motion_master_req_res_client_1.MotionMasterReqResClient(this.reqResSocket);
33
+ this.monitor = new motion_master_pub_sub_client_1.MotionMasterPubSubClient(this.pubSubSocket);
34
+ }
35
+ /**
36
+ * Client is ready when both req/res and pub/sub sockets are opened.
37
+ * If both sockets are already opened, this function will immediately resolve to true.
38
+ * Otherwise, it will wait up to requestTimeout for both sockets to open, or throw an error.
39
+ */
40
+ whenReady(requestTimeout = 5000) {
41
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
42
+ return (0, rxjs_1.firstValueFrom)(this.socketsOpened$.pipe((0, rxjs_1.first)(Boolean), (0, rxjs_1.timeout)(requestTimeout)));
43
+ });
44
+ }
45
+ startMonitoring(ids, interval, config, requestTimeout = 5000) {
46
+ return (0, rxjs_1.defer)(() => {
47
+ var _a, _b;
48
+ const topic = (_a = config === null || config === void 0 ? void 0 : config.topic) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)();
49
+ const messageId = (_b = config === null || config === void 0 ? void 0 : config.messageId) !== null && _b !== void 0 ? _b : (0, uuid_1.v4)();
50
+ if (!config) {
51
+ config = { messageId, topic, bufferSize: 1, distinct: false };
52
+ }
53
+ this.request.resolveGetParameterValuesIds(ids).pipe((0, rxjs_1.mergeMap)((refs) => {
54
+ if ((new Set(refs.map(([deviceAddress]) => deviceAddress))).size !== 1) {
55
+ throw new Error('Start monitoring only supports a single device');
56
+ }
57
+ const deviceAddress = refs[0][0];
58
+ const props = {
59
+ getDeviceParameterValues: {
60
+ deviceAddress,
61
+ parameters: refs.map(([, index, subindex]) => ({ index, subindex, loadFromCache: false })),
62
+ sendProgress: false,
63
+ },
64
+ interval,
65
+ topic,
66
+ };
67
+ return this.request.startMonitoringDeviceParameterValues(props, requestTimeout, messageId);
68
+ })).subscribe();
69
+ this.monitor.subscribe(config);
70
+ const values$ = this.monitor.socket.data$.pipe((0, operators_1.selectMotionMasterMessageByTopic)(config.topic), (0, operators_1.mapMonitoringParameterValuesStatusMessageToParameterValues)(), (0, rxjs_1.map)((values) => values.slice(1)));
71
+ return new rxjs_1.Observable((subscriber) => {
72
+ const subscription = values$.subscribe(subscriber);
73
+ return () => {
74
+ subscription.unsubscribe();
75
+ this.stopMonitoring(messageId);
76
+ };
77
+ });
78
+ });
79
+ }
80
+ stopMonitoring(messageId) {
81
+ this.request.stopMonitoringDeviceParameterValues({ startMonitoringRequestId: messageId });
82
+ this.monitor.unsubscribe(messageId);
83
+ }
84
+ closeSockets() {
85
+ this.reqResSocket.close();
86
+ this.pubSubSocket.close();
87
+ }
88
+ }
89
+ exports.MotionMasterClient = MotionMasterClient;
90
+ //# sourceMappingURL=motion-master-client.js.map