@zimo-elektronik/zcan 1.0.39 → 1.0.40

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.
package/dist/MX10.d.ts CHANGED
@@ -33,14 +33,16 @@ export default class MX10 {
33
33
  private outgoingPort;
34
34
  private lastPing;
35
35
  private interval;
36
+ private clientName;
37
+ private clientId;
36
38
  private readonly nidGeneratorFunction;
37
39
  private readonly debugCommunication;
38
40
  private readonly reconnectionTime;
39
- constructor(nidGeneratorFunction: NIDGenerator, connectionTimeout?: number, debugCommunication?: boolean);
41
+ constructor(nidGeneratorFunction: NIDGenerator, clientName: string, clientId: number, connectionTimeout?: number, debugCommunication?: boolean);
40
42
  initSocket(createSocketFunction: CreateSocketFunction, ipAddress: string, incomingPort?: number, outgoingPort?: number): Promise<void>;
41
43
  reconnectLogic(): void;
42
- closeSocket(callMx10?: boolean): void;
43
- sendMsg(msg: Message): void;
44
+ closeSocket(callMx10?: boolean): Promise<void>;
45
+ sendMsg(msg: Message, force?: boolean): void;
44
46
  sendData(group: number, cmd: number, data?: ZcanDataArray, mode?: MsgMode, nid?: number, force?: boolean): void;
45
47
  private formatData;
46
48
  private send;
package/dist/MX10.js CHANGED
@@ -34,14 +34,18 @@ export default class MX10 {
34
34
  outgoingPort = 14520;
35
35
  lastPing = 0;
36
36
  interval = undefined;
37
+ clientName;
38
+ clientId;
37
39
  nidGeneratorFunction;
38
40
  debugCommunication;
39
41
  reconnectionTime = 0;
40
- constructor(nidGeneratorFunction, connectionTimeout = 1000, debugCommunication = false) {
42
+ constructor(nidGeneratorFunction, clientName, clientId, connectionTimeout = 1000, debugCommunication = false) {
41
43
  this.nidGeneratorFunction = nidGeneratorFunction;
42
44
  this.connectionTimeout = connectionTimeout;
43
45
  this.debugCommunication = debugCommunication;
44
46
  this.reconnectionTime = connectionTimeout * 4;
47
+ this.clientName = clientName;
48
+ this.clientId = clientId;
45
49
  const pingIntervalMs = 1000;
46
50
  if (this.connected) {
47
51
  this.network.ping();
@@ -57,9 +61,7 @@ export default class MX10 {
57
61
  this.incomingPort = incomingPort;
58
62
  this.outgoingPort = outgoingPort;
59
63
  if (this.mx10Socket == null) {
60
- const socket = (this.mx10Socket = createSocketFunction({
61
- type: 'udp4',
62
- }));
64
+ const socket = (this.mx10Socket = createSocketFunction({ type: 'udp4' }));
63
65
  await new Promise((resolve) => {
64
66
  socket.bind(incomingPort, () => {
65
67
  resolve(null);
@@ -67,10 +69,14 @@ export default class MX10 {
67
69
  });
68
70
  this.mx10Socket.on('message', this.readRawData.bind(this));
69
71
  this.myNID = await this.nidGeneratorFunction();
70
- this.lanNetwork.portOpen();
72
+ const ack = await this.lanNetwork.portOpen(this.clientName, this.clientId);
73
+ if (ack) {
74
+ this.mx10NID = ack.header.nid || 0;
75
+ this.connected = true;
76
+ }
71
77
  await delay(this.connectionTimeout);
72
78
  if (!this.connected) {
73
- this.closeSocket();
79
+ await this.closeSocket();
74
80
  throw new Error('mx10.connection.not_connected');
75
81
  }
76
82
  }
@@ -86,27 +92,31 @@ export default class MX10 {
86
92
  if (!this.connected) {
87
93
  console.log('Reconnecting...');
88
94
  this.network.portClose();
89
- this.lanNetwork.portOpen();
95
+ this.connected = false;
96
+ this.mx10NID = 0;
97
+ this.lanNetwork.portOpen(this.clientName, this.clientId);
90
98
  this.network.ping(0b00);
91
99
  }
92
100
  }, this.reconnectionTime);
93
101
  }
94
102
  this.lastPing = date;
95
103
  }
96
- closeSocket(callMx10 = true) {
104
+ async closeSocket(callMx10 = true) {
97
105
  if (this.mx10Socket != null) {
98
106
  if (this.connected && callMx10) {
99
- this.network.portClose();
107
+ await this.network.portClose();
108
+ this.connected = false;
109
+ this.mx10NID = 0;
100
110
  }
101
111
  this.mx10Socket?.close();
102
112
  this.mx10Socket = null;
103
113
  this.connected = false;
104
114
  }
105
115
  }
106
- sendMsg(msg) {
116
+ sendMsg(msg, force = false) {
107
117
  const buffer = msg.udp(this.myNID);
108
118
  this.log.next("mx10.sendMsg: " + JSON.stringify(buffer));
109
- this.send(buffer, false);
119
+ this.send(buffer, force);
110
120
  }
111
121
  sendData(group, cmd, data = [], mode = MsgMode.CMD, nid = this.myNID, force = false) {
112
122
  const buffer = this.formatData(group, cmd, mode, nid, data);
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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"}
@@ -6,7 +6,7 @@ export type Header = {
6
6
  group: number;
7
7
  cmd: number;
8
8
  mode: MsgMode;
9
- nid: number;
9
+ nid: number | undefined;
10
10
  };
11
11
  export type ZcanData = {
12
12
  length: number;
@@ -22,8 +22,11 @@ export class Message {
22
22
  buffer.writeUInt8(this.header.group, 4);
23
23
  buffer.writeUInt8(cmd_md, 5);
24
24
  buffer.writeUInt16LE(ownNid, 6);
25
- buffer.writeUInt16LE(this.header.nid, 8);
26
- let offset = 10;
25
+ let offset = 8;
26
+ if (this.header.nid !== undefined && this.header.nid !== ownNid) {
27
+ buffer.writeUInt16LE(this.header.nid, offset);
28
+ offset += 2;
29
+ }
27
30
  this.data.forEach((element) => {
28
31
  if (typeof element.value === 'string') {
29
32
  ExtendedASCII.str2byte(element.value, buffer, offset, element.length);
@@ -1 +1 @@
1
- {"version":3,"file":"communication.js","sourceRoot":"","sources":["../../src/common/communication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"communication.js","sourceRoot":"","sources":["../../src/common/communication.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { MsgMode } from "../common/enums";
3
3
  export declare class MsgGroupCount extends Message {
4
4
  static header(mode: MsgMode, nid: number): Header;
5
5
  constructor(header: Header, group?: number, count?: number);
6
- group(): number;
6
+ group(): number | undefined;
7
7
  count(): number;
8
8
  }
9
9
  export declare class MsgItemsByIndexReq extends Message {
@@ -34,7 +34,7 @@ export class MsgVehicleMode extends Message {
34
34
  }
35
35
  }
36
36
  rxDelay(millis) { MsgVehicleMode.rxTiming.set(millis); }
37
- trainNid() { return this.header.nid; }
37
+ trainNid() { return this.header.nid || 0; }
38
38
  mode() {
39
39
  if (this.data.length < 2)
40
40
  return undefined;
@@ -71,7 +71,7 @@ export class MsgVehicleSpeed extends Message {
71
71
  super.push({ value: 0, length: 1 });
72
72
  }
73
73
  rxDelay(millis) { MsgVehicleSpeed.rxTiming.set(millis); }
74
- trainNid() { return this.header.nid; }
74
+ trainNid() { return this.header.nid || 0; }
75
75
  divisor() { return this.data[1].value; }
76
76
  speedStep() { return this.data[0].value & speedBites____; }
77
77
  direction() { return (this.data[0].value & directionBites) === directionBites; }
@@ -1 +1 @@
1
- {"version":3,"file":"vehicleMsg.js","sourceRoot":"","sources":["../../src/loco/vehicleMsg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vehicleMsg.js","sourceRoot":"","sources":["../../src/loco/vehicleMsg.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  import MX10 from '../MX10';
2
2
  import { Subject } from 'rxjs';
3
+ import { MsgPortOpen } from './networkMsg';
3
4
  export default class LanNetworkGroup {
5
+ readonly onPortOpen: Subject<MsgPortOpen>;
6
+ private portOpenQ;
4
7
  private mx10;
5
- readonly onPortOpen: Subject<boolean>;
6
8
  constructor(mx10: MX10);
7
- portOpen(): void;
9
+ portOpen(clientName: string, clientId: number, comFlags?: number): Promise<MsgPortOpen | undefined>;
8
10
  parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
9
11
  parsePortOpen(size: number, mode: number, nid: number, buffer: Buffer): void;
10
12
  parseUnknownCommand(size: number, mode: number, nid: number, buffer: Buffer): void;
@@ -1,20 +1,43 @@
1
+ import { Query } from '../docs_entrypoint';
1
2
  import { Subject } from 'rxjs';
3
+ import { MsgPortOpen } from './networkMsg';
4
+ import { MsgMode } from '../common/enums';
2
5
  export default class LanNetworkGroup {
3
- mx10;
4
6
  onPortOpen = new Subject();
7
+ portOpenQ = undefined;
8
+ mx10;
5
9
  constructor(mx10) {
6
10
  this.mx10 = mx10;
7
11
  }
8
- portOpen() {
9
- this.mx10.sendData(0x1a, 0x06, [
10
- { value: 4294967295, length: 4 },
11
- { value: 1514238064, length: 4 },
12
- { value: 'ZIMO APP', length: 20 },
13
- ], 0b01, this.mx10.myNID, true);
12
+ async portOpen(clientName, clientId, comFlags = 0xffffffff) {
13
+ if (this.portOpenQ !== undefined && !await this.portOpenQ.lock()) {
14
+ this.mx10.log.next("mx10.portOpen: failed to acquire lock");
15
+ return undefined;
16
+ }
17
+ this.portOpenQ = new Query(MsgPortOpen.header(MsgMode.CMD, this.mx10.myNID), this.onPortOpen);
18
+ this.portOpenQ.log = ((msg) => {
19
+ this.mx10.log.next(msg);
20
+ });
21
+ this.portOpenQ.tx = ((header) => {
22
+ const msg = new MsgPortOpen(header, clientId, comFlags, clientName);
23
+ this.mx10.log.next('portOpen query tx: ' + JSON.stringify(msg));
24
+ this.mx10.sendMsg(msg, true);
25
+ });
26
+ this.portOpenQ.match = ((msg) => {
27
+ this.mx10.log.next('portOpen query rx: ' + JSON.stringify(msg));
28
+ return (msg.clientId() === clientId);
29
+ });
30
+ this.portOpenQ.subscribe(false);
31
+ const rv = await this.portOpenQ.run();
32
+ this.mx10.log.next("mx10.portOpen.rv: " + JSON.stringify(rv));
33
+ this.portOpenQ.unlock();
34
+ this.portOpenQ = undefined;
35
+ return rv;
14
36
  }
15
37
  parse(size, command, mode, nid, buffer) {
16
38
  switch (command) {
17
39
  case 0x06:
40
+ this.mx10.log.next('parsePortOpen, nid = ' + nid + ', buf = ' + JSON.stringify(buffer));
18
41
  this.parsePortOpen(size, mode, nid, buffer);
19
42
  break;
20
43
  case 0x0e:
@@ -27,9 +50,9 @@ export default class LanNetworkGroup {
27
50
  parsePortOpen(size, mode, nid, buffer) {
28
51
  if (!this.onPortOpen.observed)
29
52
  return;
30
- this.mx10.mx10NID = nid;
31
- this.mx10.connected = true;
32
- this.onPortOpen.next(true);
53
+ const comFlags = buffer.readUint32LE(0);
54
+ const clientId = buffer.readUint32LE(4);
55
+ this.onPortOpen.next(new MsgPortOpen(MsgPortOpen.header(mode, nid), clientId, comFlags));
33
56
  }
34
57
  parseUnknownCommand(size, mode, nid, buffer) {
35
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lanNetworkGroup.js","sourceRoot":"","sources":["../../src/network/lanNetworkGroup.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAM7B,MAAM,CAAC,OAAO,OAAO,eAAe;IAE3B,IAAI,CAAO;IAEH,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;IAEpD,YAAY,IAAU;QAErB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,QAAQ;QAEP,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE;YAC9B,EAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAC;YAC9B,EAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAC;YAC9B,EAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAC;SAC/B,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAGD,KAAK,CAAC,IAAY,EAAE,OAAe,EAAE,IAAY,EAAE,GAAW,EAAE,MAAc;QAE7E,QAAQ,OAAO,EAAE,CAAC;YACjB,KAAK,IAAI;gBACR,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC5C,MAAM;YACP,KAAK,IAAI;gBACR,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAClD,MAAM;YACP;gBAEC,OAAO,CAAC,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;IACF,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,IAAY,EAAE,GAAW,EAAE,MAAc;QAEpE,IAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ;YAC3B,OAAO;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAGD,mBAAmB,CAAC,IAAY,EAAE,IAAY,EAAE,GAAW,EAAE,MAAc;IAI3E,CAAC;CACD"}
1
+ {"version":3,"file":"lanNetworkGroup.js","sourceRoot":"","sources":["../../src/network/lanNetworkGroup.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,16 @@ import { Subject } from 'rxjs';
2
2
  import MX10 from '../MX10';
3
3
  import { Buffer } from 'buffer';
4
4
  import { PingResponseExtended } from '../common/models';
5
+ import { MsgPortClose } from './networkMsg';
5
6
  export default class NetworkGroup {
6
7
  readonly onPingResponse: Subject<PingResponseExtended>;
8
+ readonly onPortClose: Subject<MsgPortClose>;
9
+ private portCloseQ;
7
10
  private mx10;
8
11
  pingTimeout: NodeJS.Timeout | null;
9
12
  constructor(mx10: MX10);
10
13
  ping(mode?: number): void;
11
- portClose(): void;
14
+ portClose(): Promise<void>;
12
15
  parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
13
16
  pingResponse(size: number, mode: number, nid: number, _buffer: Buffer): void;
14
17
  }
@@ -1,6 +1,8 @@
1
1
  import { Subject } from 'rxjs';
2
2
  export default class NetworkGroup {
3
3
  onPingResponse = new Subject();
4
+ onPortClose = new Subject();
5
+ portCloseQ = undefined;
4
6
  mx10;
5
7
  pingTimeout = null;
6
8
  constructor(mx10) {
@@ -9,8 +11,9 @@ export default class NetworkGroup {
9
11
  ping(mode = 0b10) {
10
12
  this.mx10.sendData(0x0a, 0x00, [{ value: this.mx10.mx10NID, length: 2 }], mode);
11
13
  }
12
- portClose() {
14
+ async portClose() {
13
15
  this.mx10.sendData(0x0a, 0x07, [{ value: this.mx10.myNID, length: 2 }], 0b01);
16
+ this.mx10.mx10NID = 0;
14
17
  }
15
18
  parse(size, command, mode, nid, buffer) {
16
19
  switch (command) {
@@ -1 +1 @@
1
- {"version":3,"file":"networkGroup.js","sourceRoot":"","sources":["../../src/network/networkGroup.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAS7B,MAAM,CAAC,OAAO,OAAO,YAAY;IAEhB,cAAc,GAAG,IAAI,OAAO,EAAwB,CAAC;IAE7D,IAAI,CAAO;IACnB,WAAW,GAA0B,IAAI,CAAC;IAE1C,YAAY,IAAU;QAErB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,IAAI,GAAG,IAAI;QAEf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,SAAS;QAER,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;IAC7E,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,OAAe,EAAE,IAAY,EAAE,GAAW,EAAE,MAAc;QAE7E,QAAQ,OAAO,EAAE,CAAC;YACjB,KAAK,IAAI;gBACR,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC3C,MAAM;QACR,CAAC;IACF,CAAC;IAGD,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,GAAW,EAAE,OAAe;QAEpE,IAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ;YAC/B,OAAO;QAER,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YAGhB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAK3B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAE3B,IAAI,IAAI,CAAC,WAAW;gBACnB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEhC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;oBACxB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;iBAC9B,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACpD,CAAC,EAAE,IAAI,CAAC,CAAC;QACV,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACd,sDAAsD;gBACrD,IAAI,CAAC,QAAQ,EAAE,CAChB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;IAC5D,CAAC;CACD"}
1
+ {"version":3,"file":"networkGroup.js","sourceRoot":"","sources":["../../src/network/networkGroup.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAY7B,MAAM,CAAC,OAAO,OAAO,YAAY;IAEhB,cAAc,GAAG,IAAI,OAAO,EAAwB,CAAC;IACrD,WAAW,GAAG,IAAI,OAAO,EAAgB,CAAC;IAElD,UAAU,GAAoC,SAAS,CAAC;IAExD,IAAI,CAAO;IACnB,WAAW,GAA0B,IAAI,CAAC;IAE1C,YAAY,IAAU;QAErB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,IAAI,GAAG,IAAI;QAEf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,SAAS;QAyBd,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;QAC5E,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,OAAe,EAAE,IAAY,EAAE,GAAW,EAAE,MAAc;QAE7E,QAAQ,OAAO,EAAE,CAAC;YACjB,KAAK,IAAI;gBACR,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC3C,MAAM;QACR,CAAC;IACF,CAAC;IAGD,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,GAAW,EAAE,OAAe;QAEpE,IAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ;YAC/B,OAAO;QAER,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YAGhB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAK3B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAE3B,IAAI,IAAI,CAAC,WAAW;gBACnB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEhC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;oBACxB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;iBAC9B,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACpD,CAAC,EAAE,IAAI,CAAC,CAAC;QACV,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACd,sDAAsD;gBACrD,IAAI,CAAC,QAAQ,EAAE,CAChB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;IAC5D,CAAC;CACD"}
@@ -0,0 +1,13 @@
1
+ import { Header, Message } from "../common/communication";
2
+ import { MsgMode } from "../common/enums";
3
+ export declare class MsgPortOpen extends Message {
4
+ static header(mode: MsgMode, nid: number): Header;
5
+ constructor(header: Header, clientId: number, comFlags?: number, clientName?: string);
6
+ comFlags(): number | undefined;
7
+ clientId(): number;
8
+ clientName(): string | 0;
9
+ }
10
+ export declare class MsgPortClose extends Message {
11
+ static header(mode: MsgMode, nid: number): Header;
12
+ constructor(header: Header, myNid: number);
13
+ }
@@ -0,0 +1,22 @@
1
+ import { Message } from "../common/communication";
2
+ export class MsgPortOpen extends Message {
3
+ static header(mode, nid) { return { group: 0x1a, cmd: 0x6, mode: mode, nid: nid }; }
4
+ constructor(header, clientId, comFlags = 0xffffffff, clientName) {
5
+ super(header);
6
+ super.push({ value: comFlags, length: 4 });
7
+ super.push({ value: clientId, length: 4 });
8
+ if (clientName)
9
+ super.push({ value: clientName, length: 20 });
10
+ }
11
+ comFlags() { return this.data.length ? this.data[0].value : undefined; }
12
+ clientId() { return this.data.length > 1 ? this.data[1].value : 0; }
13
+ clientName() { return this.data.length > 2 ? this.data[2].value : 0; }
14
+ }
15
+ export class MsgPortClose extends Message {
16
+ static header(mode, nid) { return { group: 0xa, cmd: 0x7, mode: mode, nid: nid }; }
17
+ constructor(header, myNid) {
18
+ super(header);
19
+ super.push({ value: myNid, length: 2 });
20
+ }
21
+ }
22
+ //# sourceMappingURL=networkMsg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkMsg.js","sourceRoot":"","sources":["../../src/network/networkMsg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAI1D,MAAM,OAAO,WAAY,SAAQ,OAAO;IAEhC,MAAM,CAAC,MAAM,CAAC,IAAa,EAAE,GAAW,IAC9C,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAC,CAAA,CAAA,CAAC;IAEtD,YAAY,MAAc,EAAE,QAAgB,EAAE,WAAmB,UAAU,EAAE,UAAmB;QAE/F,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC,CAAC;QACzC,IAAG,UAAU;YACZ,KAAK,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,CAAC;IAChF,QAAQ,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;IAC5E,UAAU,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;CAC9E;AAED,MAAM,OAAO,YAAa,SAAQ,OAAO;IAEjC,MAAM,CAAC,MAAM,CAAC,IAAa,EAAE,GAAW,IAC9C,OAAO,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAC,CAAA,CAAA,CAAC;IAErD,YAAY,MAAc,EAAE,KAAa;QAExC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC,CAAC;IACvC,CAAC;CACD"}
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.39",
8
+ "version": "1.0.40",
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",
package/src/MX10.ts CHANGED
@@ -67,18 +67,23 @@ export default class MX10
67
67
  private outgoingPort = 14520;
68
68
  private lastPing = 0;
69
69
  private interval: NodeJS.Timeout | undefined = undefined;
70
+ private clientName: string;
71
+ private clientId: number;
70
72
 
71
73
  private readonly nidGeneratorFunction: NIDGenerator;
72
74
  private readonly debugCommunication: boolean;
73
75
  private readonly reconnectionTime: number = 0;
74
76
 
75
77
 
76
- constructor(nidGeneratorFunction: NIDGenerator, connectionTimeout = 1000, debugCommunication = false)
78
+ constructor(nidGeneratorFunction: NIDGenerator, clientName: string, clientId: number,
79
+ connectionTimeout = 1000, debugCommunication = false)
77
80
  {
78
81
  this.nidGeneratorFunction = nidGeneratorFunction;
79
82
  this.connectionTimeout = connectionTimeout;
80
83
  this.debugCommunication = debugCommunication;
81
84
  this.reconnectionTime = connectionTimeout * 4;
85
+ this.clientName = clientName;
86
+ this.clientId = clientId;
82
87
 
83
88
  const pingIntervalMs = 1000;
84
89
 
@@ -99,10 +104,9 @@ export default class MX10
99
104
  this.incomingPort = incomingPort;
100
105
  this.outgoingPort = outgoingPort;
101
106
 
102
- if (this.mx10Socket == null) {
103
- const socket = (this.mx10Socket = createSocketFunction({
104
- type: 'udp4',
105
- }) as Socket);
107
+ if (this.mx10Socket == null)
108
+ {
109
+ const socket = (this.mx10Socket = createSocketFunction({type: 'udp4'}) as Socket);
106
110
 
107
111
  await new Promise((resolve) => {
108
112
  socket.bind(incomingPort, () => {
@@ -112,11 +116,15 @@ export default class MX10
112
116
 
113
117
  this.mx10Socket.on('message', this.readRawData.bind(this));
114
118
  this.myNID = await this.nidGeneratorFunction();
115
- this.lanNetwork.portOpen();
119
+ const ack = await this.lanNetwork.portOpen(this.clientName, this.clientId);
120
+ if(ack) {
121
+ this.mx10NID = ack.header.nid || 0;
122
+ this.connected = true;
123
+ }
116
124
  await delay(this.connectionTimeout);
117
125
 
118
126
  if (!this.connected) {
119
- this.closeSocket();
127
+ await this.closeSocket();
120
128
  // throw new Error('mx10.connection.timeout');
121
129
  throw new Error('mx10.connection.not_connected');
122
130
  }
@@ -136,7 +144,9 @@ export default class MX10
136
144
  // eslint-disable-next-line no-console
137
145
  console.log('Reconnecting...');
138
146
  this.network.portClose();
139
- this.lanNetwork.portOpen();
147
+ this.connected = false;
148
+ this.mx10NID = 0;
149
+ this.lanNetwork.portOpen(this.clientName, this.clientId);
140
150
  this.network.ping(0b00);
141
151
  }
142
152
  }, this.reconnectionTime);
@@ -144,11 +154,13 @@ export default class MX10
144
154
  this.lastPing = date;
145
155
  }
146
156
 
147
- closeSocket(callMx10: boolean = true)
157
+ async closeSocket(callMx10: boolean = true)
148
158
  {
149
159
  if (this.mx10Socket != null) {
150
160
  if (this.connected && callMx10) {
151
- this.network.portClose();
161
+ await this.network.portClose();
162
+ this.connected = false;
163
+ this.mx10NID = 0;
152
164
  }
153
165
  this.mx10Socket?.close();
154
166
  this.mx10Socket = null;
@@ -156,11 +168,11 @@ export default class MX10
156
168
  }
157
169
  }
158
170
 
159
- sendMsg(msg: Message)
171
+ sendMsg(msg: Message, force = false)
160
172
  {
161
173
  const buffer = msg.udp(this.myNID);
162
174
  this.log.next("mx10.sendMsg: " + JSON.stringify(buffer));
163
- this.send(buffer, false);
175
+ this.send(buffer, force);
164
176
  }
165
177
 
166
178
  sendData(group: number, cmd: number, data: ZcanDataArray = [], mode = MsgMode.CMD, nid = this.myNID, force = false)
@@ -9,7 +9,7 @@ export type Header = {
9
9
  group: number,
10
10
  cmd: number,
11
11
  mode: MsgMode,
12
- nid: number,
12
+ nid: number | undefined,
13
13
  }
14
14
 
15
15
  export type ZcanData = {
@@ -48,9 +48,11 @@ export class Message
48
48
  buffer.writeUInt8(this.header.group, 4);
49
49
  buffer.writeUInt8(cmd_md, 5);
50
50
  buffer.writeUInt16LE(ownNid, 6);
51
- buffer.writeUInt16LE(this.header.nid, 8);
52
-
53
- let offset = 10;
51
+ let offset = 8;
52
+ if(this.header.nid !== undefined && this.header.nid !== ownNid) {
53
+ buffer.writeUInt16LE(this.header.nid, offset);
54
+ offset += 2;
55
+ }
54
56
 
55
57
  this.data.forEach((element) => {
56
58
  if (typeof element.value === 'string') {
@@ -37,7 +37,7 @@ export class MsgVehicleMode extends Message
37
37
  }
38
38
 
39
39
  rxDelay(millis: number) {MsgVehicleMode.rxTiming.set(millis)}
40
- trainNid(): number {return this.header.nid}
40
+ trainNid(): number {return this.header.nid || 0}
41
41
 
42
42
  mode(): number[] | undefined
43
43
  {
@@ -77,7 +77,7 @@ export class MsgVehicleSpeed extends Message
77
77
  }
78
78
 
79
79
  rxDelay(millis: number) {MsgVehicleSpeed.rxTiming.set(millis)}
80
- trainNid(): number {return this.header.nid}
80
+ trainNid(): number {return this.header.nid || 0}
81
81
  divisor(): number {return this.data[1].value as number;}
82
82
  speedStep(): number {return (this.data[0].value as number) & speedBites____;}
83
83
  direction(): boolean {return ((this.data[0].value as number) & directionBites) === directionBites;}
@@ -1,8 +1,11 @@
1
1
  /* eslint-disable @typescript-eslint/no-unused-vars */
2
2
 
3
3
  // 0x1A
4
+ import { Query } from '../docs_entrypoint';
4
5
  import MX10 from '../MX10';
5
6
  import {Subject} from 'rxjs';
7
+ import { MsgPortOpen } from './networkMsg';
8
+ import { MsgMode } from '../common/enums';
6
9
 
7
10
  /**
8
11
  *
@@ -10,22 +13,56 @@ import {Subject} from 'rxjs';
10
13
  */
11
14
  export default class LanNetworkGroup
12
15
  {
16
+ public readonly onPortOpen = new Subject<MsgPortOpen>();
17
+
18
+ private portOpenQ: Query<MsgPortOpen> | undefined = undefined;
19
+
13
20
  private mx10: MX10;
14
21
 
15
- public readonly onPortOpen = new Subject<boolean>();
16
22
 
17
23
  constructor(mx10: MX10)
18
24
  {
19
25
  this.mx10 = mx10;
20
26
  }
21
27
 
22
- portOpen()
28
+ // portOpen()
29
+ // {
30
+ // this.mx10.sendData(0x1a, 0x06, [
31
+ // {value: 0xffffffff, length: 4},
32
+ // {value: 0x5a417070, length: 4},
33
+ // {value: 'ZIMO APP', length: 20},
34
+ // ], 0b01, this.mx10.myNID, true);
35
+ // }
36
+
37
+ async portOpen(clientName: string, clientId: number, comFlags = 0xffffffff): Promise<MsgPortOpen | undefined>
23
38
  {
24
- this.mx10.sendData(0x1a, 0x06, [
25
- {value: 4294967295, length: 4},
26
- {value: 1514238064, length: 4},
27
- {value: 'ZIMO APP', length: 20},
28
- ], 0b01, this.mx10.myNID, true);
39
+ if(this.portOpenQ !== undefined && !await this.portOpenQ.lock()) {
40
+ this.mx10.log.next("mx10.portOpen: failed to acquire lock");
41
+ return undefined;
42
+ }
43
+ this.portOpenQ = new Query(MsgPortOpen.header(MsgMode.CMD, this.mx10.myNID), this.onPortOpen);
44
+ this.portOpenQ.log = ((msg) => {
45
+ this.mx10.log.next(msg);
46
+ });
47
+ this.portOpenQ.tx = ((header) => {
48
+ const msg = new MsgPortOpen(header, clientId, comFlags, clientName);
49
+ this.mx10.log.next('portOpen query tx: ' + JSON.stringify(msg));
50
+ this.mx10.sendMsg(msg, true);
51
+ });
52
+ this.portOpenQ.match = ((msg) => {
53
+ this.mx10.log.next('portOpen query rx: ' + JSON.stringify(msg));
54
+ return (msg.clientId() === clientId);
55
+ });
56
+ this.portOpenQ.subscribe(false);
57
+ const rv = await this.portOpenQ.run();
58
+ // if(rv) {
59
+ // this.mx10.mx10NID = this.portOpenQ.header.nid || 0;
60
+ // this.mx10.connected = true;
61
+ // }
62
+ this.mx10.log.next("mx10.portOpen.rv: " + JSON.stringify(rv));
63
+ this.portOpenQ.unlock();
64
+ this.portOpenQ = undefined;
65
+ return rv;
29
66
  }
30
67
 
31
68
  // Responses
@@ -33,6 +70,7 @@ export default class LanNetworkGroup
33
70
  {
34
71
  switch (command) {
35
72
  case 0x06:
73
+ this.mx10.log.next('parsePortOpen, nid = ' + nid + ', buf = ' + JSON.stringify(buffer))
36
74
  this.parsePortOpen(size, mode, nid, buffer);
37
75
  break;
38
76
  case 0x0e:
@@ -48,9 +86,9 @@ export default class LanNetworkGroup
48
86
  {
49
87
  if(!this.onPortOpen.observed)
50
88
  return;
51
- this.mx10.mx10NID = nid;
52
- this.mx10.connected = true;
53
- this.onPortOpen.next(true);
89
+ const comFlags = buffer.readUint32LE(0);
90
+ const clientId = buffer.readUint32LE(4);
91
+ this.onPortOpen.next(new MsgPortOpen(MsgPortOpen.header(mode, nid), clientId, comFlags));
54
92
  }
55
93
 
56
94
  // 0x1A.0x0e
@@ -3,6 +3,9 @@ import {Subject} from 'rxjs';
3
3
  import MX10 from '../MX10';
4
4
  import {Buffer} from 'buffer';
5
5
  import {PingResponseExtended} from '../common/models';
6
+ import { Query } from '../docs_entrypoint';
7
+ import { MsgPortClose } from './networkMsg';
8
+ import { MsgMode } from '../common/enums';
6
9
 
7
10
  /**
8
11
  *
@@ -11,6 +14,9 @@ import {PingResponseExtended} from '../common/models';
11
14
  export default class NetworkGroup
12
15
  {
13
16
  public readonly onPingResponse = new Subject<PingResponseExtended>();
17
+ public readonly onPortClose = new Subject<MsgPortClose>();
18
+
19
+ private portCloseQ: Query<MsgPortClose> | undefined = undefined;
14
20
 
15
21
  private mx10: MX10;
16
22
  pingTimeout: NodeJS.Timeout | null = null;
@@ -25,9 +31,33 @@ export default class NetworkGroup
25
31
  this.mx10.sendData(0x0a, 0x00, [{value: this.mx10.mx10NID, length: 2}], mode);
26
32
  }
27
33
 
28
- portClose()
34
+ async portClose()
29
35
  {
36
+ // if(this.portCloseQ !== undefined && !await this.portCloseQ.lock()) {
37
+ // this.mx10.log.next("mx10.portClose: failed to acquire lock");
38
+ // return undefined;
39
+ // }
40
+ // this.portCloseQ = new Query(MsgPortClose.header(MsgMode.CMD, this.mx10.mx10NID), this.onPortClose);
41
+ // this.portCloseQ.log = ((msg) => {
42
+ // this.mx10.log.next(msg);
43
+ // });
44
+ // this.portCloseQ.tx = ((header) => {
45
+ // const msg = new MsgPortClose(header, this.mx10.myNID);
46
+ // this.mx10.log.next('portClose query tx: ' + JSON.stringify(msg));
47
+ // this.mx10.sendMsg(msg, true);
48
+ // });
49
+ // this.portCloseQ.match = ((msg) => {
50
+ // this.mx10.log.next('portClose query rx: ' + JSON.stringify(msg));
51
+ // return true;
52
+ // });
53
+ // this.portCloseQ.subscribe(false);
54
+ // const rv = await this.portCloseQ.run();
55
+ // this.mx10.log.next("mx10.portClose.rv: " + JSON.stringify(rv));
56
+ // this.portCloseQ.unlock();
57
+ // this.portCloseQ = undefined;
58
+ // return rv;
30
59
  this.mx10.sendData(0x0a, 0x07, [{value: this.mx10.myNID, length: 2}], 0b01);
60
+ this.mx10.mx10NID = 0;
31
61
  }
32
62
 
33
63
  parse(size: number, command: number, mode: number, nid: number, buffer: Buffer)
@@ -0,0 +1,34 @@
1
+ import { Header, Message } from "../common/communication";
2
+ import { MsgMode } from "../common/enums";
3
+
4
+
5
+ export class MsgPortOpen extends Message
6
+ {
7
+ public static header(mode: MsgMode, nid: number): Header
8
+ {return {group: 0x1a, cmd: 0x6, mode: mode, nid: nid}}
9
+
10
+ constructor(header: Header, clientId: number, comFlags: number = 0xffffffff, clientName?: string)
11
+ {
12
+ super(header);
13
+ super.push({value: comFlags, length: 4});
14
+ super.push({value: clientId, length: 4});
15
+ if(clientName)
16
+ super.push({value: clientName, length: 20});
17
+ }
18
+
19
+ comFlags() {return this.data.length ? this.data[0].value as number : undefined;}
20
+ clientId() {return this.data.length > 1 ? this.data[1].value as number : 0;}
21
+ clientName() {return this.data.length > 2 ? this.data[2].value as string : 0;}
22
+ }
23
+
24
+ export class MsgPortClose extends Message
25
+ {
26
+ public static header(mode: MsgMode, nid: number): Header
27
+ {return {group: 0xa, cmd: 0x7, mode: mode, nid: nid}}
28
+
29
+ constructor(header: Header, myNid: number)
30
+ {
31
+ super(header);
32
+ super.push({value: myNid, length: 2});
33
+ }
34
+ }