@zimo-elektronik/zcan 1.0.5 → 1.0.6

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.
@@ -0,0 +1,27 @@
1
+ import {createMX10, initConnection} from './util';
2
+ import {afterAll, beforeAll, expect, it} from '@jest/globals';
3
+ import {firstValueFrom} from 'rxjs';
4
+ import {delay} from '../src/internal/utils';
5
+
6
+ describe('LocoState group tests - 0x12', () => {
7
+ const mx10 = createMX10();
8
+ const testNID = 3;
9
+
10
+ beforeAll(async () => {
11
+ await initConnection(mx10);
12
+ });
13
+
14
+ afterAll(() => {
15
+ delay(1000).then(() => {
16
+ mx10.closeSocket();
17
+ });
18
+ });
19
+
20
+ it('0x00 - retrieve loco state', async () => {
21
+ const data = await firstValueFrom(mx10.lanLocoState.onLocoStateExtended);
22
+
23
+ expect(data.nid).toBe(testNID);
24
+ // testing on device ZimoApp
25
+ expect(data.ownerNid).toBe(mx10.myNID);
26
+ });
27
+ });
@@ -177,3 +177,14 @@ export interface TseProgWriteExtended {
177
177
  export interface PingResponseExtended {
178
178
  connected: boolean;
179
179
  }
180
+ export interface LocoStateData {
181
+ nid: number;
182
+ type: number;
183
+ ownerNid: number;
184
+ trainNid: number;
185
+ lastControlledTime: number;
186
+ railComData: number;
187
+ functionsStates: boolean[];
188
+ sentDCCData: number;
189
+ receivedRailcomData: number;
190
+ }
package/dist/MX10.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Subject } from 'rxjs';
2
- import { AccessoryCommandGroup, DataGroup, FileControlGroup, FileTransferGroup, InfoGroup, LanDataGroup, LanInfoGroup, LanNetworkGroup, LanZimoProgrammableScriptGroup, NetworkGroup, PropertyConfigGroup, RailwayControlGroup, SystemControlGroup, TrackCfgGroup, TrainControlGroup, VehicleGroup, ZimoProgrammableScriptGroup } from './zcan';
2
+ import { AccessoryCommandGroup, DataGroup, FileControlGroup, FileTransferGroup, InfoGroup, LanDataGroup, LanInfoGroup, LanNetworkGroup, LanLocoStateGroup, LanZimoProgrammableScriptGroup, NetworkGroup, PropertyConfigGroup, RailwayControlGroup, SystemControlGroup, TrackCfgGroup, TrainControlGroup, VehicleGroup, ZimoProgrammableScriptGroup } from './zcan';
3
3
  import { CreateSocketFunction, NIDGenerator, ZcanDataArray } from './@types/communication';
4
4
  export default class MX10 {
5
5
  myNID: number;
@@ -21,6 +21,7 @@ export default class MX10 {
21
21
  readonly fileTransfer: FileTransferGroup;
22
22
  readonly lanInfo: LanInfoGroup;
23
23
  readonly lanData: LanDataGroup;
24
+ readonly lanLocoState: LanLocoStateGroup;
24
25
  readonly lanNetwork: LanNetworkGroup;
25
26
  readonly lanZimoProgrammableScript: LanZimoProgrammableScriptGroup;
26
27
  readonly errors: Subject<string>;
package/dist/MX10.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Buffer } from 'buffer';
2
2
  import { interval, Subject } from 'rxjs';
3
- import { AccessoryCommandGroup, DataGroup, FileControlGroup, FileTransferGroup, InfoGroup, LanDataGroup, LanInfoGroup, LanNetworkGroup, LanZimoProgrammableScriptGroup, NetworkGroup, PropertyConfigGroup, RailwayControlGroup, SystemControlGroup, TrackCfgGroup, TrainControlGroup, VehicleGroup, ZimoProgrammableScriptGroup, } from './zcan';
3
+ import { AccessoryCommandGroup, DataGroup, FileControlGroup, FileTransferGroup, InfoGroup, LanDataGroup, LanInfoGroup, LanNetworkGroup, LanLocoStateGroup, LanZimoProgrammableScriptGroup, NetworkGroup, PropertyConfigGroup, RailwayControlGroup, SystemControlGroup, TrackCfgGroup, TrainControlGroup, VehicleGroup, ZimoProgrammableScriptGroup, } from './zcan';
4
4
  import { delay } from './internal/utils';
5
5
  import ExtendedASCII from './util/extended-ascii';
6
6
  export default class MX10 {
@@ -23,6 +23,7 @@ export default class MX10 {
23
23
  fileTransfer = new FileTransferGroup(this);
24
24
  lanInfo = new LanInfoGroup(this);
25
25
  lanData = new LanDataGroup(this);
26
+ lanLocoState = new LanLocoStateGroup(this);
26
27
  lanNetwork = new LanNetworkGroup(this);
27
28
  lanZimoProgrammableScript = new LanZimoProgrammableScriptGroup(this);
28
29
  errors = new Subject();
@@ -205,6 +206,9 @@ export default class MX10 {
205
206
  case 0x0f:
206
207
  this.fileTransfer.parse(size, command, mode, nid, buffer);
207
208
  break;
209
+ case 0x12:
210
+ this.lanLocoState.parse(size, command, mode, nid, buffer);
211
+ break;
208
212
  case 0x17:
209
213
  this.lanData.parse(size, command, mode, nid, buffer);
210
214
  break;
package/dist/MX10.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"MX10.js","sourceRoot":"","sources":["../src/MX10.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MX10.js","sourceRoot":"","sources":["../src/MX10.ts"],"names":[],"mappings":"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"}
@@ -15,4 +15,5 @@ import FileTransferGroup from './fileTransferGroup';
15
15
  import LanZimoProgrammableScriptGroup from './lanZimoProgrammableScriptGroup';
16
16
  import LanInfoGroup from './lanInfoGroup';
17
17
  import LanDataGroup from './lanDataGroup';
18
- export { LanNetworkGroup, NetworkGroup, VehicleGroup, SystemControlGroup, AccessoryCommandGroup, TrainControlGroup, TrackCfgGroup, DataGroup, InfoGroup, PropertyConfigGroup, RailwayControlGroup, ZimoProgrammableScriptGroup, FileControlGroup, FileTransferGroup, LanZimoProgrammableScriptGroup, LanInfoGroup, LanDataGroup, };
18
+ import LanLocoStateGroup from './lanLocoStateGroup';
19
+ export { LanNetworkGroup, NetworkGroup, VehicleGroup, SystemControlGroup, AccessoryCommandGroup, TrainControlGroup, TrackCfgGroup, DataGroup, InfoGroup, PropertyConfigGroup, RailwayControlGroup, ZimoProgrammableScriptGroup, FileControlGroup, FileTransferGroup, LanZimoProgrammableScriptGroup, LanInfoGroup, LanDataGroup, LanLocoStateGroup, };
@@ -15,5 +15,6 @@ import FileTransferGroup from './fileTransferGroup';
15
15
  import LanZimoProgrammableScriptGroup from './lanZimoProgrammableScriptGroup';
16
16
  import LanInfoGroup from './lanInfoGroup';
17
17
  import LanDataGroup from './lanDataGroup';
18
- export { LanNetworkGroup, NetworkGroup, VehicleGroup, SystemControlGroup, AccessoryCommandGroup, TrainControlGroup, TrackCfgGroup, DataGroup, InfoGroup, PropertyConfigGroup, RailwayControlGroup, ZimoProgrammableScriptGroup, FileControlGroup, FileTransferGroup, LanZimoProgrammableScriptGroup, LanInfoGroup, LanDataGroup, };
18
+ import LanLocoStateGroup from './lanLocoStateGroup';
19
+ export { LanNetworkGroup, NetworkGroup, VehicleGroup, SystemControlGroup, AccessoryCommandGroup, TrainControlGroup, TrackCfgGroup, DataGroup, InfoGroup, PropertyConfigGroup, RailwayControlGroup, ZimoProgrammableScriptGroup, FileControlGroup, FileTransferGroup, LanZimoProgrammableScriptGroup, LanInfoGroup, LanDataGroup, LanLocoStateGroup, };
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/zcan/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AACxE,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,8BAA8B,MAAM,kCAAkC,CAAC;AAC9E,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EACL,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,iBAAiB,EACjB,8BAA8B,EAC9B,YAAY,EACZ,YAAY,GACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/zcan/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AACxE,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,8BAA8B,MAAM,kCAAkC,CAAC;AAC9E,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,iBAAiB,EACjB,8BAA8B,EAC9B,YAAY,EACZ,YAAY,EACZ,iBAAiB,GAClB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import MX10 from '../MX10';
2
+ import { Subject } from 'rxjs';
3
+ import { LocoStateData } from '../@types/models';
4
+ export default class LanLocoStateGroup {
5
+ private mx10;
6
+ readonly onLocoStateExtended: Subject<LocoStateData>;
7
+ constructor(mx10: MX10);
8
+ parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
9
+ private parseLocoStateExtended;
10
+ }
@@ -0,0 +1,46 @@
1
+ import { Subject } from 'rxjs';
2
+ export default class LanLocoStateGroup {
3
+ mx10;
4
+ onLocoStateExtended = new Subject();
5
+ constructor(mx10) {
6
+ this.mx10 = mx10;
7
+ }
8
+ parse(size, command, mode, nid, buffer) {
9
+ switch (command) {
10
+ case 0x00:
11
+ this.parseLocoStateExtended(size, mode, nid, buffer);
12
+ break;
13
+ }
14
+ }
15
+ parseLocoStateExtended(size, mode, nid, buffer) {
16
+ if (this.onLocoStateExtended.observed) {
17
+ const NID = buffer.readUInt16LE(0);
18
+ const type = buffer.readUInt16LE(2);
19
+ const ownerNid = buffer.readUInt16LE(4);
20
+ const trainNid = buffer.readUInt16LE(6);
21
+ const lastControlledTime = buffer.readUInt32LE(8);
22
+ const railComData = buffer.readUInt32LE(12);
23
+ let functions = buffer.readBigUInt64LE(16);
24
+ const functionsStates = [];
25
+ for (let i = 0; i < 63; i++) {
26
+ const active = (functions & 1n) === 1n;
27
+ functionsStates.push(active);
28
+ functions = functions >> 1n;
29
+ }
30
+ const sentDCCData = buffer.readUInt32LE(24);
31
+ const receivedRailcomData = buffer.readUInt32LE(28);
32
+ this.onLocoStateExtended.next({
33
+ nid: NID,
34
+ type,
35
+ ownerNid,
36
+ trainNid,
37
+ lastControlledTime,
38
+ railComData,
39
+ functionsStates,
40
+ sentDCCData,
41
+ receivedRailcomData,
42
+ });
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=lanLocoStateGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lanLocoStateGroup.js","sourceRoot":"","sources":["../../src/zcan/lanLocoStateGroup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAQ7B,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAC5B,IAAI,CAAO;IAEH,mBAAmB,GAAG,IAAI,OAAO,EAAiB,CAAC;IAEnE,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,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBACrD,MAAM;QACV,CAAC;IACH,CAAC;IAGO,sBAAsB,CAC5B,IAAY,EACZ,IAAY,EACZ,GAAW,EACX,MAAc;QAEd,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAG5C,IAAI,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,eAAe,GAAG,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;gBACvC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7B,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;YAC9B,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC5C,MAAM,mBAAmB,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAEpD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;gBAC5B,GAAG,EAAE,GAAG;gBACR,IAAI;gBACJ,QAAQ;gBACR,QAAQ;gBACR,kBAAkB;gBAClB,WAAW;gBACX,eAAe;gBACf,WAAW;gBACX,mBAAmB;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "MIT",
7
7
  "repository": "https://github.com/ZIMO-Elektronik/zcan",
8
- "version": "1.0.5",
8
+ "version": "1.0.6",
9
9
  "scripts": {
10
10
  "start": "node dist/main.js",
11
11
  "start:dev": "nodemon --ext js,ts,json,env --exec \"node --experimental-specifier-resolution=node --loader ts-node/esm\" src/main.ts",
@@ -14,6 +14,7 @@
14
14
  "test": "jest --forceExit",
15
15
  "test:coverage": "npm run test -- --coverage",
16
16
  "test:ci": "npm run test -- --colors --coverage --ci",
17
+ "test:selected": "jest --forceExit --runTestsByPath D:\\Projects\\zcan\\__tests__\\vehicleGroup.test.ts",
17
18
  "lint": "eslint --ext=.ts,.js .",
18
19
  "format": "prettier \"./**\" --write --ignore-unknown",
19
20
  "format:check": "prettier \"./**\" --ignore-unknown --check",
@@ -221,3 +221,15 @@ export interface TseProgWriteExtended {
221
221
  export interface PingResponseExtended {
222
222
  connected: boolean;
223
223
  }
224
+
225
+ export interface LocoStateData {
226
+ nid: number;
227
+ type: number;
228
+ ownerNid: number;
229
+ trainNid: number;
230
+ lastControlledTime: number;
231
+ railComData: number;
232
+ functionsStates: boolean[];
233
+ sentDCCData: number;
234
+ receivedRailcomData: number;
235
+ }
package/src/MX10.ts CHANGED
@@ -12,6 +12,7 @@ import {
12
12
  LanDataGroup,
13
13
  LanInfoGroup,
14
14
  LanNetworkGroup,
15
+ LanLocoStateGroup,
15
16
  LanZimoProgrammableScriptGroup,
16
17
  NetworkGroup,
17
18
  PropertyConfigGroup,
@@ -56,6 +57,7 @@ export default class MX10 {
56
57
  readonly fileTransfer = new FileTransferGroup(this);
57
58
  readonly lanInfo = new LanInfoGroup(this);
58
59
  readonly lanData = new LanDataGroup(this);
60
+ readonly lanLocoState = new LanLocoStateGroup(this);
59
61
  readonly lanNetwork = new LanNetworkGroup(this);
60
62
  readonly lanZimoProgrammableScript = new LanZimoProgrammableScriptGroup(this);
61
63
 
@@ -308,6 +310,9 @@ export default class MX10 {
308
310
  case 0x0f:
309
311
  this.fileTransfer.parse(size, command, mode, nid, buffer);
310
312
  break;
313
+ case 0x12:
314
+ this.lanLocoState.parse(size, command, mode, nid, buffer);
315
+ break;
311
316
  case 0x17:
312
317
  this.lanData.parse(size, command, mode, nid, buffer);
313
318
  break;
package/src/zcan/index.ts CHANGED
@@ -15,6 +15,7 @@ import FileTransferGroup from './fileTransferGroup';
15
15
  import LanZimoProgrammableScriptGroup from './lanZimoProgrammableScriptGroup';
16
16
  import LanInfoGroup from './lanInfoGroup';
17
17
  import LanDataGroup from './lanDataGroup';
18
+ import LanLocoStateGroup from './lanLocoStateGroup';
18
19
 
19
20
  export {
20
21
  LanNetworkGroup,
@@ -34,4 +35,5 @@ export {
34
35
  LanZimoProgrammableScriptGroup,
35
36
  LanInfoGroup,
36
37
  LanDataGroup,
38
+ LanLocoStateGroup,
37
39
  };
@@ -0,0 +1,74 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import MX10 from '../MX10';
3
+ import {Subject} from 'rxjs';
4
+ import {LocoStateData} from '../@types/models';
5
+ import ExtendedASCII from '../util/extended-ascii';
6
+
7
+ /**
8
+ *
9
+ * @category Groups
10
+ */
11
+ export default class LanLocoStateGroup {
12
+ private mx10: MX10;
13
+
14
+ public readonly onLocoStateExtended = new Subject<LocoStateData>();
15
+
16
+ constructor(mx10: MX10) {
17
+ this.mx10 = mx10;
18
+ }
19
+
20
+ parse(
21
+ size: number,
22
+ command: number,
23
+ mode: number,
24
+ nid: number,
25
+ buffer: Buffer,
26
+ ) {
27
+ switch (command) {
28
+ case 0x00:
29
+ this.parseLocoStateExtended(size, mode, nid, buffer);
30
+ break;
31
+ }
32
+ }
33
+
34
+ // 0x12.0x00
35
+ private parseLocoStateExtended(
36
+ size: number,
37
+ mode: number,
38
+ nid: number,
39
+ buffer: Buffer,
40
+ ) {
41
+ if (this.onLocoStateExtended.observed) {
42
+ const NID = buffer.readUInt16LE(0);
43
+ const type = buffer.readUInt16LE(2);
44
+ const ownerNid = buffer.readUInt16LE(4);
45
+ const trainNid = buffer.readUInt16LE(6);
46
+ const lastControlledTime = buffer.readUInt32LE(8);
47
+ const railComData = buffer.readUInt32LE(12);
48
+ // const functionState = buffer.readBigUint64LE(16);
49
+
50
+ let functions = buffer.readBigUInt64LE(16);
51
+ const functionsStates = [];
52
+ for (let i = 0; i < 63; i++) {
53
+ const active = (functions & 1n) === 1n;
54
+ functionsStates.push(active);
55
+ functions = functions >> 1n;
56
+ }
57
+
58
+ const sentDCCData = buffer.readUInt32LE(24);
59
+ const receivedRailcomData = buffer.readUInt32LE(28);
60
+
61
+ this.onLocoStateExtended.next({
62
+ nid: NID,
63
+ type,
64
+ ownerNid,
65
+ trainNid,
66
+ lastControlledTime,
67
+ railComData,
68
+ functionsStates,
69
+ sentDCCData,
70
+ receivedRailcomData,
71
+ });
72
+ }
73
+ }
74
+ }