@zimo-elektronik/zcan 1.0.0

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 (202) hide show
  1. package/.dockerignore +7 -0
  2. package/.editorconfig +15 -0
  3. package/.eslintignore +7 -0
  4. package/.eslintrc.cjs +17 -0
  5. package/.gitattributes +1 -0
  6. package/.github/workflows/docs.yml +46 -0
  7. package/.github/workflows/library.yml +59 -0
  8. package/.nvmrc +1 -0
  9. package/.prettierignore +14 -0
  10. package/.prettierrc.json +8 -0
  11. package/LICENSE.md +21 -0
  12. package/README.md +8 -0
  13. package/__tests__/connection.test.ts +58 -0
  14. package/__tests__/dataGroup.test.ts +98 -0
  15. package/__tests__/infoGroup.test.ts +30 -0
  16. package/__tests__/lanDataGroup.test.ts +82 -0
  17. package/__tests__/lanInfoGroup.test.ts +41 -0
  18. package/__tests__/systemControlGroup.test.ts +42 -0
  19. package/__tests__/trackCfgGroup.test.ts +43 -0
  20. package/__tests__/util/index.ts +14 -0
  21. package/__tests__/vehicleGroup.test.ts +128 -0
  22. package/dist/@types/communication.d.ts +30 -0
  23. package/dist/@types/communication.js +2 -0
  24. package/dist/@types/communication.js.map +1 -0
  25. package/dist/@types/models.d.ts +172 -0
  26. package/dist/@types/models.js +2 -0
  27. package/dist/@types/models.js.map +1 -0
  28. package/dist/MX10.d.ts +45 -0
  29. package/dist/MX10.js +233 -0
  30. package/dist/MX10.js.map +1 -0
  31. package/dist/docs_entrypoint.d.ts +6 -0
  32. package/dist/docs_entrypoint.js +7 -0
  33. package/dist/docs_entrypoint.js.map +1 -0
  34. package/dist/index.d.ts +6 -0
  35. package/dist/index.js +7 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/internal/bites.d.ts +9 -0
  38. package/dist/internal/bites.js +10 -0
  39. package/dist/internal/bites.js.map +1 -0
  40. package/dist/internal/speedUtils.d.ts +9 -0
  41. package/dist/internal/speedUtils.js +29 -0
  42. package/dist/internal/speedUtils.js.map +1 -0
  43. package/dist/internal/utils.d.ts +1 -0
  44. package/dist/internal/utils.js +4 -0
  45. package/dist/internal/utils.js.map +1 -0
  46. package/dist/util/enums.d.ts +113 -0
  47. package/dist/util/enums.js +137 -0
  48. package/dist/util/enums.js.map +1 -0
  49. package/dist/util/extended-ascii.d.ts +7 -0
  50. package/dist/util/extended-ascii.js +162 -0
  51. package/dist/util/extended-ascii.js.map +1 -0
  52. package/dist/zcan/accessoryCommandGroup.d.ts +6 -0
  53. package/dist/zcan/accessoryCommandGroup.js +9 -0
  54. package/dist/zcan/accessoryCommandGroup.js.map +1 -0
  55. package/dist/zcan/dataGroup.d.ts +31 -0
  56. package/dist/zcan/dataGroup.js +233 -0
  57. package/dist/zcan/dataGroup.js.map +1 -0
  58. package/dist/zcan/fileControlGroup.d.ts +7 -0
  59. package/dist/zcan/fileControlGroup.js +9 -0
  60. package/dist/zcan/fileControlGroup.js.map +1 -0
  61. package/dist/zcan/fileTransferGroup.d.ts +7 -0
  62. package/dist/zcan/fileTransferGroup.js +9 -0
  63. package/dist/zcan/fileTransferGroup.js.map +1 -0
  64. package/dist/zcan/index.d.ts +18 -0
  65. package/dist/zcan/index.js +19 -0
  66. package/dist/zcan/index.js.map +1 -0
  67. package/dist/zcan/infoGroup.d.ts +15 -0
  68. package/dist/zcan/infoGroup.js +64 -0
  69. package/dist/zcan/infoGroup.js.map +1 -0
  70. package/dist/zcan/lanDataGroup.d.ts +23 -0
  71. package/dist/zcan/lanDataGroup.js +226 -0
  72. package/dist/zcan/lanDataGroup.js.map +1 -0
  73. package/dist/zcan/lanInfoGroup.d.ts +11 -0
  74. package/dist/zcan/lanInfoGroup.js +58 -0
  75. package/dist/zcan/lanInfoGroup.js.map +1 -0
  76. package/dist/zcan/lanNetworkGroup.d.ts +11 -0
  77. package/dist/zcan/lanNetworkGroup.js +37 -0
  78. package/dist/zcan/lanNetworkGroup.js.map +1 -0
  79. package/dist/zcan/lanZimoProgrammableScriptGroup.d.ts +7 -0
  80. package/dist/zcan/lanZimoProgrammableScriptGroup.js +9 -0
  81. package/dist/zcan/lanZimoProgrammableScriptGroup.js.map +1 -0
  82. package/dist/zcan/networkGroup.d.ts +10 -0
  83. package/dist/zcan/networkGroup.js +38 -0
  84. package/dist/zcan/networkGroup.js.map +1 -0
  85. package/dist/zcan/propertyConfigGroup.d.ts +7 -0
  86. package/dist/zcan/propertyConfigGroup.js +9 -0
  87. package/dist/zcan/propertyConfigGroup.js.map +1 -0
  88. package/dist/zcan/railwayControlGroup.d.ts +7 -0
  89. package/dist/zcan/railwayControlGroup.js +9 -0
  90. package/dist/zcan/railwayControlGroup.js.map +1 -0
  91. package/dist/zcan/systemControlGroup.d.ts +13 -0
  92. package/dist/zcan/systemControlGroup.js +35 -0
  93. package/dist/zcan/systemControlGroup.js.map +1 -0
  94. package/dist/zcan/trackCfgGroup.d.ts +16 -0
  95. package/dist/zcan/trackCfgGroup.js +77 -0
  96. package/dist/zcan/trackCfgGroup.js.map +1 -0
  97. package/dist/zcan/trainControlGroup.d.ts +8 -0
  98. package/dist/zcan/trainControlGroup.js +19 -0
  99. package/dist/zcan/trainControlGroup.js.map +1 -0
  100. package/dist/zcan/vehicleGroup.d.ts +26 -0
  101. package/dist/zcan/vehicleGroup.js +145 -0
  102. package/dist/zcan/vehicleGroup.js.map +1 -0
  103. package/dist/zcan/zimoProgrammableScriptGroup.d.ts +7 -0
  104. package/dist/zcan/zimoProgrammableScriptGroup.js +9 -0
  105. package/dist/zcan/zimoProgrammableScriptGroup.js.map +1 -0
  106. package/gulpfile.js +37 -0
  107. package/jest.config.js +26 -0
  108. package/package.json +50 -0
  109. package/protocol_docs/README.md +41 -0
  110. package/protocol_docs/babel.config.js +3 -0
  111. package/protocol_docs/docs/command-groups/_category_.json +4 -0
  112. package/protocol_docs/docs/command-groups/accessories/_category_.json +4 -0
  113. package/protocol_docs/docs/command-groups/accessories/accessory-state.md +7 -0
  114. package/protocol_docs/docs/command-groups/command-groups.md +50 -0
  115. package/protocol_docs/docs/command-groups/data/_category_.json +4 -0
  116. package/protocol_docs/docs/command-groups/data/data-name-extended.md +60 -0
  117. package/protocol_docs/docs/command-groups/data/group-count.md +52 -0
  118. package/protocol_docs/docs/command-groups/data/item-fx-info.md +27 -0
  119. package/protocol_docs/docs/command-groups/data/item-image-config.md +44 -0
  120. package/protocol_docs/docs/command-groups/data/item-list-by-index.md +45 -0
  121. package/protocol_docs/docs/command-groups/data/item-list-by-nid.md +43 -0
  122. package/protocol_docs/docs/command-groups/data/remove-train.md +33 -0
  123. package/protocol_docs/docs/command-groups/info/_category_.json +4 -0
  124. package/protocol_docs/docs/command-groups/info/bidi-info.md +34 -0
  125. package/protocol_docs/docs/command-groups/lan-data/_category_.json +4 -0
  126. package/protocol_docs/docs/command-groups/lan-data/data-value-extended.md +65 -0
  127. package/protocol_docs/docs/command-groups/lan-data/loco-gui-extended.md +48 -0
  128. package/protocol_docs/docs/command-groups/lan-info/_category_.json +4 -0
  129. package/protocol_docs/docs/command-groups/lan-info/module-power-info.md +26 -0
  130. package/protocol_docs/docs/command-groups/lan-network/_category_.json +4 -0
  131. package/protocol_docs/docs/command-groups/lan-network/open-port.md +47 -0
  132. package/protocol_docs/docs/command-groups/network/_category_.json +4 -0
  133. package/protocol_docs/docs/command-groups/network/ping.md +49 -0
  134. package/protocol_docs/docs/command-groups/system/_category_.json +4 -0
  135. package/protocol_docs/docs/command-groups/system/system-state.md +59 -0
  136. package/protocol_docs/docs/command-groups/track/_category_.json +4 -0
  137. package/protocol_docs/docs/command-groups/track/tse-prog-read.md +37 -0
  138. package/protocol_docs/docs/command-groups/track/tse-prog-write.md +35 -0
  139. package/protocol_docs/docs/command-groups/train/_category_.json +4 -0
  140. package/protocol_docs/docs/command-groups/train/train-part-find.md +33 -0
  141. package/protocol_docs/docs/command-groups/vehicles/_category_.json +4 -0
  142. package/protocol_docs/docs/command-groups/vehicles/vehicle-function.md +36 -0
  143. package/protocol_docs/docs/command-groups/vehicles/vehicle-mode.md +143 -0
  144. package/protocol_docs/docs/command-groups/vehicles/vehicle-special-function-switch.md +35 -0
  145. package/protocol_docs/docs/command-groups/vehicles/vehicle-speed.md +55 -0
  146. package/protocol_docs/docs/description.md +4 -0
  147. package/protocol_docs/docs/introduction/_category_.json +4 -0
  148. package/protocol_docs/docs/introduction/how-it-works.md +61 -0
  149. package/protocol_docs/docs/introduction/implementation.md +39 -0
  150. package/protocol_docs/docs/introduction/interface.md +62 -0
  151. package/protocol_docs/docs/introduction/introduction.md +82 -0
  152. package/protocol_docs/docusaurus.config.js +111 -0
  153. package/protocol_docs/package-lock.json +25611 -0
  154. package/protocol_docs/package.json +47 -0
  155. package/protocol_docs/sidebars.js +22 -0
  156. package/protocol_docs/src/components/CommandAndGroup/index.tsx +16 -0
  157. package/protocol_docs/src/components/CommandAndGroup/styles.module.css +12 -0
  158. package/protocol_docs/src/components/HomepageFeatures/index.tsx +70 -0
  159. package/protocol_docs/src/components/HomepageFeatures/styles.module.css +11 -0
  160. package/protocol_docs/src/css/custom.css +76 -0
  161. package/protocol_docs/src/pages/index.module.css +23 -0
  162. package/protocol_docs/src/pages/index.tsx +41 -0
  163. package/protocol_docs/src/pages/markdown-page.md +7 -0
  164. package/protocol_docs/static/.nojekyll +0 -0
  165. package/protocol_docs/static/img/docusaurus.png +0 -0
  166. package/protocol_docs/static/img/favicon.ico +0 -0
  167. package/protocol_docs/static/img/undraw_docusaurus_mountain.svg +171 -0
  168. package/protocol_docs/static/img/undraw_docusaurus_react.svg +170 -0
  169. package/protocol_docs/static/img/undraw_docusaurus_tree.svg +40 -0
  170. package/protocol_docs/static/typedoc/index.html +10 -0
  171. package/protocol_docs/tsconfig.json +7 -0
  172. package/src/@types/communication.ts +73 -0
  173. package/src/@types/models.ts +215 -0
  174. package/src/MX10.ts +351 -0
  175. package/src/docs_entrypoint.ts +34 -0
  176. package/src/index.ts +8 -0
  177. package/src/internal/bites.ts +11 -0
  178. package/src/internal/speedUtils.ts +36 -0
  179. package/src/internal/utils.ts +3 -0
  180. package/src/util/enums.ts +147 -0
  181. package/src/util/extended-ascii.ts +179 -0
  182. package/src/zcan/accessoryCommandGroup.ts +24 -0
  183. package/src/zcan/dataGroup.ts +342 -0
  184. package/src/zcan/fileControlGroup.ts +25 -0
  185. package/src/zcan/fileTransferGroup.ts +25 -0
  186. package/src/zcan/index.ts +37 -0
  187. package/src/zcan/infoGroup.ts +90 -0
  188. package/src/zcan/lanDataGroup.ts +361 -0
  189. package/src/zcan/lanInfoGroup.ts +86 -0
  190. package/src/zcan/lanNetworkGroup.ts +70 -0
  191. package/src/zcan/lanZimoProgrammableScriptGroup.ts +25 -0
  192. package/src/zcan/networkGroup.ts +71 -0
  193. package/src/zcan/propertyConfigGroup.ts +25 -0
  194. package/src/zcan/railwayControlGroup.ts +25 -0
  195. package/src/zcan/systemControlGroup.ts +62 -0
  196. package/src/zcan/trackCfgGroup.ts +109 -0
  197. package/src/zcan/trainControlGroup.ts +48 -0
  198. package/src/zcan/vehicleGroup.ts +267 -0
  199. package/src/zcan/zimoProgrammableScriptGroup.ts +25 -0
  200. package/tsconfig.build.json +12 -0
  201. package/tsconfig.json +49 -0
  202. package/tsconfig.test.json +9 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lanDataGroup.js","sourceRoot":"","sources":["../../src/zcan/lanDataGroup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import MX10 from '../MX10';
2
+ import { Subject } from 'rxjs';
3
+ import { ModulePowerInfoData } from '../@types/models';
4
+ export default class LanInfoGroup {
5
+ private mx10;
6
+ readonly onModulePowerInfo: Subject<ModulePowerInfoData>;
7
+ constructor(mx10: MX10);
8
+ parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
9
+ private parseModulePowerInfo;
10
+ private parsePortStatus;
11
+ }
@@ -0,0 +1,58 @@
1
+ import { Subject } from 'rxjs';
2
+ import { TrackMode } from '../util/enums';
3
+ export default class LanInfoGroup {
4
+ mx10;
5
+ onModulePowerInfo = new Subject();
6
+ constructor(mx10) {
7
+ this.mx10 = mx10;
8
+ }
9
+ parse(size, command, mode, nid, buffer) {
10
+ switch (command) {
11
+ case 0x00:
12
+ this.parseModulePowerInfo(size, mode, nid, buffer);
13
+ break;
14
+ }
15
+ }
16
+ parseModulePowerInfo(size, mode, nid, buffer) {
17
+ if (this.onModulePowerInfo.observed) {
18
+ const deviceNID = buffer.readUInt16LE(0);
19
+ const port1 = buffer.readUInt16LE(2);
20
+ const port1Voltage = buffer.readUInt16LE(4);
21
+ const port1Amperage = buffer.readUInt16LE(6);
22
+ const port2 = buffer.readUInt16LE(8);
23
+ const port2Voltage = buffer.readUInt16LE(10);
24
+ const port2Amperage = buffer.readUInt16LE(12);
25
+ const amperage32V = buffer.readUInt16LE(14);
26
+ const amperage12V = buffer.readUInt16LE(16);
27
+ const voltageTotal = buffer.readUInt16LE(18);
28
+ const temperature = buffer.readUInt16LE(20);
29
+ const port1Status = this.parsePortStatus(port1);
30
+ const port2Status = this.parsePortStatus(port2);
31
+ this.onModulePowerInfo.next({
32
+ deviceNID,
33
+ port1Status,
34
+ port1Voltage,
35
+ port1Amperage,
36
+ port2Status,
37
+ port2Voltage,
38
+ port2Amperage,
39
+ amperage32V,
40
+ amperage12V,
41
+ voltageTotal,
42
+ temperature,
43
+ });
44
+ }
45
+ }
46
+ parsePortStatus(state) {
47
+ const offBites = 0b0000000000001;
48
+ const off = (state & offBites) === 1;
49
+ const tmp = (state >> 4) & 0x0f;
50
+ if (off) {
51
+ return TrackMode.OFF;
52
+ }
53
+ else {
54
+ return tmp;
55
+ }
56
+ }
57
+ }
58
+ //# sourceMappingURL=lanInfoGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lanInfoGroup.js","sourceRoot":"","sources":["../../src/zcan/lanInfoGroup.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAMxC,MAAM,CAAC,OAAO,OAAO,YAAY;IACvB,IAAI,CAAO;IAEH,iBAAiB,GAAG,IAAI,OAAO,EAAuB,CAAC;IAEvE,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CACH,IAAY,EACZ,OAAe,EACf,IAAY,EACZ,GAAW,EACX,MAAc;QAEd,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,IAAI;gBACP,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBACnD,MAAM;QACV,CAAC;IACH,CAAC;IAGO,oBAAoB,CAC1B,IAAY,EACZ,IAAY,EACZ,GAAW,EACX,MAAc;QAEd,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAE5C,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEhD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAC1B,SAAS;gBACT,WAAW;gBACX,YAAY;gBACZ,aAAa;gBACb,WAAW;gBACX,YAAY;gBACZ,aAAa;gBACb,WAAW;gBACX,WAAW;gBACX,YAAY;gBACZ,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,KAAa;QACnC,MAAM,QAAQ,GAAG,eAAe,CAAC;QAEjC,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAEhC,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,SAAS,CAAC,GAAG,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,GAAgB,CAAC;QAC1B,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import MX10 from '../MX10';
2
+ import { Subject } from 'rxjs';
3
+ export default class LanNetworkGroup {
4
+ private mx10;
5
+ readonly onPortOpen: Subject<boolean>;
6
+ constructor(mx10: MX10);
7
+ portOpen(): void;
8
+ parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
9
+ parsePortOpen(size: number, mode: number, nid: number, buffer: Buffer): void;
10
+ parseUnknownCommand(size: number, mode: number, nid: number, buffer: Buffer): void;
11
+ }
@@ -0,0 +1,37 @@
1
+ import { Subject } from 'rxjs';
2
+ export default class LanNetworkGroup {
3
+ mx10;
4
+ onPortOpen = new Subject();
5
+ constructor(mx10) {
6
+ this.mx10 = mx10;
7
+ }
8
+ portOpen() {
9
+ this.mx10.sendData(0x1a, 0x06, [
10
+ { value: 1, length: 4 },
11
+ { value: 214748364, length: 4 },
12
+ { value: 'ZIMO APP', length: 20 },
13
+ ], 0b01, this.mx10.myNID, true);
14
+ }
15
+ parse(size, command, mode, nid, buffer) {
16
+ switch (command) {
17
+ case 0x06:
18
+ this.parsePortOpen(size, mode, nid, buffer);
19
+ break;
20
+ case 0x0e:
21
+ this.parseUnknownCommand(size, mode, nid, buffer);
22
+ break;
23
+ default:
24
+ console.warn('command not parsed: ' + command.toString());
25
+ }
26
+ }
27
+ parsePortOpen(size, mode, nid, buffer) {
28
+ if (this.onPortOpen.observed) {
29
+ this.mx10.mx10NID = nid;
30
+ this.mx10.connected = true;
31
+ this.onPortOpen.next(true);
32
+ }
33
+ }
34
+ parseUnknownCommand(size, mode, nid, buffer) {
35
+ }
36
+ }
37
+ //# sourceMappingURL=lanNetworkGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lanNetworkGroup.js","sourceRoot":"","sources":["../../src/zcan/lanNetworkGroup.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAM7B,MAAM,CAAC,OAAO,OAAO,eAAe;IAC1B,IAAI,CAAO;IAEH,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;IAEpD,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,QAAQ,CAChB,IAAI,EACJ,IAAI,EACJ;YACE,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC;YACrB,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAC;YAC7B,EAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAC;SAChC,EACD,IAAI,EACJ,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,IAAI,CACL,CAAC;IACJ,CAAC;IAGD,KAAK,CACH,IAAY,EACZ,OAAe,EACf,IAAY,EACZ,GAAW,EACX,MAAc;QAEd,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,IAAI;gBACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC5C,MAAM;YACR,KAAK,IAAI;gBACP,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAClD,MAAM;YACR;gBAEE,OAAO,CAAC,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,IAAY,EAAE,GAAW,EAAE,MAAc;QACnE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAE3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAGD,mBAAmB,CAAC,IAAY,EAAE,IAAY,EAAE,GAAW,EAAE,MAAc;IAG3E,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import MX10 from '../MX10';
2
+ import { Buffer } from 'buffer';
3
+ export default class LanZimoProgrammableScriptGroup {
4
+ private mx10;
5
+ constructor(mx10: MX10);
6
+ parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
7
+ }
@@ -0,0 +1,9 @@
1
+ export default class LanZimoProgrammableScriptGroup {
2
+ mx10;
3
+ constructor(mx10) {
4
+ this.mx10 = mx10;
5
+ }
6
+ parse(size, command, mode, nid, buffer) {
7
+ }
8
+ }
9
+ //# sourceMappingURL=lanZimoProgrammableScriptGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lanZimoProgrammableScriptGroup.js","sourceRoot":"","sources":["../../src/zcan/lanZimoProgrammableScriptGroup.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,OAAO,8BAA8B;IACzC,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CACH,IAAY,EACZ,OAAe,EACf,IAAY,EACZ,GAAW,EACX,MAAc;IAGhB,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import MX10 from '../MX10';
2
+ import { Buffer } from 'buffer';
3
+ export default class NetworkGroup {
4
+ private mx10;
5
+ constructor(mx10: MX10);
6
+ ping(mode?: number): void;
7
+ portClose(): void;
8
+ parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
9
+ pingResponse(size: number, mode: number, nid: number, _buffer: Buffer): void;
10
+ }
@@ -0,0 +1,38 @@
1
+ export default class NetworkGroup {
2
+ mx10;
3
+ constructor(mx10) {
4
+ this.mx10 = mx10;
5
+ }
6
+ ping(mode = 0b10) {
7
+ this.mx10.sendData(0x0a, 0x00, [
8
+ {
9
+ value: this.mx10.mx10NID,
10
+ length: 2,
11
+ },
12
+ ], mode);
13
+ }
14
+ portClose() {
15
+ this.mx10.sendData(0x0a, 0x07, [{ value: this.mx10.myNID, length: 2 }], 0b01);
16
+ }
17
+ parse(size, command, mode, nid, buffer) {
18
+ switch (command) {
19
+ case 0x00:
20
+ this.pingResponse(size, mode, nid, buffer);
21
+ break;
22
+ }
23
+ }
24
+ pingResponse(size, mode, nid, _buffer) {
25
+ if (size === 8) {
26
+ if (!this.mx10.mx10NID) {
27
+ this.mx10.mx10NID = nid;
28
+ }
29
+ this.mx10.connected = true;
30
+ this.mx10.reconnectLogic();
31
+ }
32
+ else {
33
+ throw new Error('LENGTH ERROR: readCmdGrp_0x0A-0x0A, read length as: ' +
34
+ size.toString());
35
+ }
36
+ }
37
+ }
38
+ //# sourceMappingURL=networkGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkGroup.js","sourceRoot":"","sources":["../../src/zcan/networkGroup.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,OAAO,YAAY;IACvB,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,IAAI,GAAG,IAAI;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAChB,IAAI,EACJ,IAAI,EACJ;YACE;gBACE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;gBACxB,MAAM,EAAE,CAAC;aACV;SACF,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAED,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CACH,IAAY,EACZ,OAAe,EACf,IAAY,EACZ,GAAW,EACX,MAAc;QAEd,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,IAAI;gBACP,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC3C,MAAM;QACV,CAAC;IACH,CAAC;IAGD,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,GAAW,EAAE,OAAe;QACnE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YAGf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAK3B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YAGN,MAAM,IAAI,KAAK,CACb,sDAAsD;gBACpD,IAAI,CAAC,QAAQ,EAAE,CAClB,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import MX10 from '../MX10';
2
+ import { Buffer } from 'buffer';
3
+ export default class PropertyConfigGroup {
4
+ private mx10;
5
+ constructor(mx10: MX10);
6
+ parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
7
+ }
@@ -0,0 +1,9 @@
1
+ export default class PropertyConfigGroup {
2
+ mx10;
3
+ constructor(mx10) {
4
+ this.mx10 = mx10;
5
+ }
6
+ parse(size, command, mode, nid, buffer) {
7
+ }
8
+ }
9
+ //# sourceMappingURL=propertyConfigGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propertyConfigGroup.js","sourceRoot":"","sources":["../../src/zcan/propertyConfigGroup.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC9B,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CACH,IAAY,EACZ,OAAe,EACf,IAAY,EACZ,GAAW,EACX,MAAc;IAGhB,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import { Buffer } from 'buffer';
2
+ import MX10 from '../MX10';
3
+ export default class RailwayControlGroup {
4
+ private mx10;
5
+ constructor(mx10: MX10);
6
+ parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
7
+ }
@@ -0,0 +1,9 @@
1
+ export default class RailwayControlGroup {
2
+ mx10;
3
+ constructor(mx10) {
4
+ this.mx10 = mx10;
5
+ }
6
+ parse(size, command, mode, nid, buffer) {
7
+ }
8
+ }
9
+ //# sourceMappingURL=railwayControlGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"railwayControlGroup.js","sourceRoot":"","sources":["../../src/zcan/railwayControlGroup.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC9B,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CACH,IAAY,EACZ,OAAe,EACf,IAAY,EACZ,GAAW,EACX,MAAc;IAGhB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import MX10 from '../MX10';
2
+ import { SystemStateMode } from '../util/enums';
3
+ import { Buffer } from 'buffer';
4
+ import { Subject } from 'rxjs';
5
+ import { SystemStateData } from '../@types/models';
6
+ export default class SystemControlGroup {
7
+ private mx10;
8
+ readonly onSystemStateChange: Subject<SystemStateData>;
9
+ constructor(mx10: MX10);
10
+ systemState(mode: SystemStateMode, port?: number, device?: number): void;
11
+ parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
12
+ private parseSystemState;
13
+ }
@@ -0,0 +1,35 @@
1
+ import { Subject } from 'rxjs';
2
+ export default class SystemControlGroup {
3
+ mx10;
4
+ onSystemStateChange = new Subject();
5
+ constructor(mx10) {
6
+ this.mx10 = mx10;
7
+ }
8
+ systemState(mode, port = 0xff, device = this.mx10.mx10NID) {
9
+ this.mx10.sendData(0x00, 0x00, [
10
+ { value: device, length: 2 },
11
+ { value: port, length: 1 },
12
+ { value: mode, length: 1 },
13
+ ]);
14
+ }
15
+ parse(size, command, mode, nid, buffer) {
16
+ switch (command) {
17
+ case 0x00:
18
+ this.parseSystemState(size, mode, nid, buffer);
19
+ break;
20
+ }
21
+ }
22
+ parseSystemState(size, mode, nid, buffer) {
23
+ if (this.onSystemStateChange.observed) {
24
+ const deviceNID = buffer.readUInt16LE(0);
25
+ const port = buffer.readUInt8(2);
26
+ const modeState = buffer.readUInt8(3);
27
+ this.onSystemStateChange.next({
28
+ nid: deviceNID,
29
+ port,
30
+ mode: modeState,
31
+ });
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=systemControlGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systemControlGroup.js","sourceRoot":"","sources":["../../src/zcan/systemControlGroup.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAO7B,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAC7B,IAAI,CAAO;IAEH,mBAAmB,GAAG,IAAI,OAAO,EAAmB,CAAC;IAErE,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAGD,WAAW,CAAC,IAAqB,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE;YAC7B,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAC;YAC1B,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAC;YACxB,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAC;SACzB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CACH,IAAY,EACZ,OAAe,EACf,IAAY,EACZ,GAAW,EACX,MAAc;QAEd,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,IAAI;gBACP,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC/C,MAAM;QACV,CAAC;IACH,CAAC;IAEO,gBAAgB,CACtB,IAAY,EACZ,IAAY,EACZ,GAAW,EACX,MAAc;QAEd,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAEtC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;gBAC5B,GAAG,EAAE,SAAS;gBACd,IAAI;gBACJ,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import { TseInfoExtended, TseProgReadExtended, TseProgWriteExtended } from 'src/@types/models';
2
+ import MX10 from '../MX10';
3
+ import { Subject } from 'rxjs';
4
+ export default class TrackCfgGroup {
5
+ readonly onTseInfoExtended: Subject<TseInfoExtended>;
6
+ readonly onTseProgReadExtended: Subject<TseProgReadExtended>;
7
+ readonly onTseProgWriteExtended: Subject<TseProgWriteExtended>;
8
+ private mx10;
9
+ constructor(mx10: MX10);
10
+ tseProgRead(NID: number, CV: number): void;
11
+ tseProgWrite(NID: number, CV: number, value: number): void;
12
+ parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
13
+ parseTseInfo(size: number, mode: number, nid: number, buffer: Buffer): void;
14
+ parseTseProgRead(size: number, mode: number, nid: number, buffer: Buffer): void;
15
+ parseTseProgWrite(size: number, mode: number, nid: number, buffer: Buffer): void;
16
+ }
@@ -0,0 +1,77 @@
1
+ import { Subject } from 'rxjs';
2
+ export default class TrackCfgGroup {
3
+ onTseInfoExtended = new Subject();
4
+ onTseProgReadExtended = new Subject();
5
+ onTseProgWriteExtended = new Subject();
6
+ mx10;
7
+ constructor(mx10) {
8
+ this.mx10 = mx10;
9
+ }
10
+ tseProgRead(NID, CV) {
11
+ this.mx10.sendData(0x16, 0x08, [
12
+ { value: this.mx10.mx10NID, length: 2 },
13
+ { value: NID, length: 2 },
14
+ { value: CV, length: 4 },
15
+ ]);
16
+ }
17
+ tseProgWrite(NID, CV, value) {
18
+ this.mx10.sendData(0x16, 0x09, [
19
+ { value: this.mx10.mx10NID, length: 2 },
20
+ { value: NID, length: 2 },
21
+ { value: CV, length: 4 },
22
+ { value: value, length: 1 },
23
+ ]);
24
+ }
25
+ parse(size, command, mode, nid, buffer) {
26
+ switch (command) {
27
+ case 0x02:
28
+ this.parseTseInfo(size, mode, nid, buffer);
29
+ break;
30
+ case 0x08:
31
+ this.parseTseProgRead(size, mode, nid, buffer);
32
+ break;
33
+ case 0x09:
34
+ this.parseTseProgWrite(size, mode, nid, buffer);
35
+ break;
36
+ }
37
+ }
38
+ parseTseInfo(size, mode, nid, buffer) {
39
+ if (this.onTseInfoExtended.observed) {
40
+ const NID = buffer.readUInt16LE(2);
41
+ const cfgNum = buffer.readUInt32LE(4);
42
+ const cvState = buffer.readUint8(8);
43
+ const cvCode = buffer.readUint8(9);
44
+ this.onTseInfoExtended.next({
45
+ nid: NID,
46
+ cfgNum,
47
+ cvState,
48
+ cvCode,
49
+ });
50
+ }
51
+ }
52
+ parseTseProgRead(size, mode, nid, buffer) {
53
+ if (this.onTseProgReadExtended.observed) {
54
+ const NID = buffer.readUInt16LE(2);
55
+ const cfgNum = buffer.readUInt32LE(4);
56
+ const cvValue = buffer.readUInt16LE(8);
57
+ this.onTseProgReadExtended.next({
58
+ nid: NID,
59
+ cfgNum,
60
+ cvValue,
61
+ });
62
+ }
63
+ }
64
+ parseTseProgWrite(size, mode, nid, buffer) {
65
+ if (this.onTseProgWriteExtended.observed) {
66
+ const NID = buffer.readUInt16LE(0);
67
+ const cfgNum = buffer.readUInt32LE(2);
68
+ const cvValue = buffer.readUint8(6);
69
+ this.onTseProgWriteExtended.next({
70
+ nid: NID,
71
+ cfgNum,
72
+ cvValue,
73
+ });
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=trackCfgGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trackCfgGroup.js","sourceRoot":"","sources":["../../src/zcan/trackCfgGroup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import MX10 from '../MX10';
2
+ export default class TrainControlGroup {
3
+ private mx10;
4
+ constructor(mx10: MX10);
5
+ trainPartFind(NID: number): void;
6
+ parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
7
+ parseTrainPartFind(size: number, mode: number, nid: number, buffer: Buffer): void;
8
+ }
@@ -0,0 +1,19 @@
1
+ export default class TrainControlGroup {
2
+ mx10;
3
+ constructor(mx10) {
4
+ this.mx10 = mx10;
5
+ }
6
+ trainPartFind(NID) {
7
+ this.mx10.sendData(0x05, 0x02, [{ value: NID, length: 2 }], 0b00);
8
+ }
9
+ parse(size, command, mode, nid, buffer) {
10
+ switch (command) {
11
+ case 0x02:
12
+ this.parseTrainPartFind(size, mode, nid, buffer);
13
+ break;
14
+ }
15
+ }
16
+ parseTrainPartFind(size, mode, nid, buffer) {
17
+ }
18
+ }
19
+ //# sourceMappingURL=trainControlGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trainControlGroup.js","sourceRoot":"","sources":["../../src/zcan/trainControlGroup.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAC5B,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,GAAW;QAEvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CACH,IAAY,EACZ,OAAe,EACf,IAAY,EACZ,GAAW,EACX,MAAc;QAEd,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,IAAI;gBACP,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBACjD,MAAM;QACV,CAAC;IACH,CAAC;IAID,kBAAkB,CAAC,IAAY,EAAE,IAAY,EAAE,GAAW,EAAE,MAAc;IAY1E,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ import MX10 from '../MX10';
2
+ import { Subject } from 'rxjs';
3
+ import { CallFunctionData, CallSpecialFunctionData, VehicleStateData, VehicleModeData, VehicleSpeedData } from '../@types/models';
4
+ import { Direction, DirectionDefault, Manual, ShuntingFunction, SpecialFunctionMode } from '../util/enums';
5
+ export default class VehicleGroup {
6
+ private mx10;
7
+ readonly onVehicleState: Subject<VehicleStateData>;
8
+ readonly onVehicleMode: Subject<VehicleModeData>;
9
+ readonly onChangeSpeed: Subject<VehicleSpeedData>;
10
+ readonly onCallFunction: Subject<CallFunctionData>;
11
+ readonly onCallSpecialFunction: Subject<CallSpecialFunctionData>;
12
+ constructor(mx10: MX10);
13
+ vehicleMode(vehicleAddress: number): void;
14
+ changeSpeed(vehicleAddress: number, speedStep: number, forward: boolean, eastWest?: Direction, emergencyStop?: boolean): void;
15
+ callFunction(vehicleAddress: number, functionId: number, functionStatus: boolean): void;
16
+ changeSpecialFunction(vehicleAddress: number, specialFunctionMode: SpecialFunctionMode, specialFunctionStatus: Manual | ShuntingFunction | DirectionDefault): void;
17
+ vehicleState(vehicleAddress: number): void;
18
+ activeModeTrain(vehicleAddress: number): void;
19
+ activeModeTakeOver(vehicleAddress: number): void;
20
+ parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
21
+ private parseVehicleState;
22
+ private parseVehicleMode;
23
+ private parseVehicleSpeed;
24
+ private parseVehicleFunction;
25
+ private parseVehicleSpecialFunction;
26
+ }
@@ -0,0 +1,145 @@
1
+ import { Subject } from 'rxjs';
2
+ import { getOperatingMode, } from '../util/enums';
3
+ import { combineSpeedAndDirection, getSpeedSteps, parseSpeed, } from '../internal/speedUtils';
4
+ export default class VehicleGroup {
5
+ mx10;
6
+ onVehicleState = new Subject();
7
+ onVehicleMode = new Subject();
8
+ onChangeSpeed = new Subject();
9
+ onCallFunction = new Subject();
10
+ onCallSpecialFunction = new Subject();
11
+ constructor(mx10) {
12
+ this.mx10 = mx10;
13
+ }
14
+ vehicleMode(vehicleAddress) {
15
+ this.mx10.sendData(0x02, 0x01, [{ value: vehicleAddress, length: 2 }]);
16
+ }
17
+ changeSpeed(vehicleAddress, speedStep, forward, eastWest, emergencyStop) {
18
+ const speedAndDirection = combineSpeedAndDirection(speedStep, forward, eastWest, emergencyStop);
19
+ this.mx10.sendData(0x02, 0x02, [
20
+ { value: vehicleAddress, length: 2 },
21
+ { value: speedAndDirection, length: 2 },
22
+ { value: 0x0000, length: 2 },
23
+ ]);
24
+ }
25
+ callFunction(vehicleAddress, functionId, functionStatus) {
26
+ this.mx10.sendData(0x02, 0x04, [
27
+ { value: vehicleAddress, length: 2 },
28
+ { value: functionId, length: 2 },
29
+ { value: Number(functionStatus), length: 2 },
30
+ ]);
31
+ }
32
+ changeSpecialFunction(vehicleAddress, specialFunctionMode, specialFunctionStatus) {
33
+ this.mx10.sendData(0x02, 0x05, [
34
+ { value: vehicleAddress, length: 2 },
35
+ { value: specialFunctionMode, length: 2 },
36
+ { value: specialFunctionStatus, length: 2 },
37
+ ]);
38
+ }
39
+ vehicleState(vehicleAddress) {
40
+ return this.mx10.sendData(0x02, 0x00, [{ value: vehicleAddress, length: 2 }], 0b00);
41
+ }
42
+ activeModeTrain(vehicleAddress) {
43
+ return this.mx10.sendData(0x02, 0x10, [
44
+ { value: vehicleAddress, length: 2 },
45
+ { value: 0x01, length: 2 },
46
+ ], 0b01);
47
+ }
48
+ activeModeTakeOver(vehicleAddress) {
49
+ return this.mx10.sendData(0x02, 0x10, [
50
+ { value: vehicleAddress, length: 2 },
51
+ { value: 0x10, length: 2 },
52
+ ], 0b01);
53
+ }
54
+ parse(size, command, mode, nid, buffer) {
55
+ switch (command) {
56
+ case 0x00:
57
+ this.parseVehicleState(size, mode, nid, buffer);
58
+ break;
59
+ case 0x01:
60
+ this.parseVehicleMode(size, mode, nid, buffer);
61
+ break;
62
+ case 0x02:
63
+ this.parseVehicleSpeed(size, mode, nid, buffer);
64
+ break;
65
+ case 0x04:
66
+ this.parseVehicleFunction(size, mode, nid, buffer);
67
+ break;
68
+ case 0x05:
69
+ this.parseVehicleSpecialFunction(size, mode, nid, buffer);
70
+ break;
71
+ }
72
+ }
73
+ parseVehicleState(size, mode, nid, buffer) {
74
+ if (this.onVehicleState.observed) {
75
+ const NID = buffer.readUInt16LE(0);
76
+ const stateFlags = buffer.readUInt16LE(2);
77
+ const ctrlTick = buffer.readUInt16LE(4);
78
+ const ctrlDevice = buffer.readUInt16LE(6);
79
+ this.onVehicleState.next({
80
+ nid: NID,
81
+ ctrlTick,
82
+ ctrlDevice,
83
+ });
84
+ }
85
+ }
86
+ parseVehicleMode(size, mode, nid, buffer) {
87
+ if (this.onVehicleMode.observed) {
88
+ const NID = buffer.readUInt16LE(0);
89
+ const mode1 = buffer.readUInt8(2);
90
+ const mode2 = buffer.readUInt8(3);
91
+ const mode3 = buffer.readUInt8(4);
92
+ const operatingMode = getOperatingMode(mode1);
93
+ const speedSteps = getSpeedSteps(mode1);
94
+ this.onVehicleMode.next({
95
+ nid: NID,
96
+ speedSteps,
97
+ operatingMode,
98
+ mode2,
99
+ mode3,
100
+ });
101
+ }
102
+ }
103
+ parseVehicleSpeed(size, mode, nid, buffer) {
104
+ if (this.onChangeSpeed.observed) {
105
+ const NID = buffer.readUInt16LE(0);
106
+ const speedAndDirection = buffer.readUInt16LE(2);
107
+ const divisor = buffer.readUint8(4);
108
+ const { speedStep, forward, eastWest, emergencyStop } = parseSpeed(speedAndDirection);
109
+ this.onChangeSpeed.next({
110
+ nid: NID,
111
+ divisor,
112
+ speedStep,
113
+ forward,
114
+ eastWest,
115
+ emergencyStop,
116
+ });
117
+ }
118
+ }
119
+ parseVehicleFunction(size, mode, nid, buffer) {
120
+ if (this.onCallFunction.observed) {
121
+ const NID = buffer.readUInt16LE(0);
122
+ const functionNumber = buffer.readUInt16LE(2);
123
+ const functionState = buffer.readUInt16LE(4);
124
+ const functionActive = functionState !== 0x00;
125
+ this.onCallFunction.next({
126
+ nid: NID,
127
+ functionNumber,
128
+ functionState: functionActive,
129
+ });
130
+ }
131
+ }
132
+ parseVehicleSpecialFunction(size, mode, nid, buffer) {
133
+ if (this.onCallSpecialFunction.observed) {
134
+ const NID = buffer.readUInt16LE(0);
135
+ const specialFunctionMode = buffer.readUInt16LE(2);
136
+ const specialFunctionState = buffer.readUInt16LE(4);
137
+ this.onCallSpecialFunction.next({
138
+ nid: NID,
139
+ specialFunctionMode,
140
+ specialFunctionState,
141
+ });
142
+ }
143
+ }
144
+ }
145
+ //# sourceMappingURL=vehicleGroup.js.map