@zimo-elektronik/zcan 1.0.32 → 1.0.34

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.
@@ -18,6 +18,7 @@ export declare class Message {
18
18
  data: ZcanDataArray;
19
19
  constructor(header: Header, data?: ZcanDataArray);
20
20
  push(data: ZcanData): void;
21
+ udp(ownNid: number): Buffer;
21
22
  }
22
23
  export declare class Query<T extends Message> {
23
24
  header: Header;
@@ -1,5 +1,7 @@
1
+ import { Buffer } from 'buffer';
1
2
  import { MsgMode } from '../util/enums';
2
3
  import { delay } from '../internal/utils';
4
+ import ExtendedASCII from '../util/extended-ascii';
3
5
  export class Message {
4
6
  header;
5
7
  data;
@@ -10,6 +12,42 @@ export class Message {
10
12
  push(data) {
11
13
  this.data.push(data);
12
14
  }
15
+ udp(ownNid) {
16
+ const size = 2 + this.data.reduce((sum, obj) => sum + obj.length, 0);
17
+ const buffer = Buffer.alloc(size + 8);
18
+ const cmd_md = (this.header.cmd << 2) | this.header.mode;
19
+ buffer.writeUInt16LE(size, 0);
20
+ buffer.writeUInt16LE(0, 2);
21
+ buffer.writeUInt8(this.header.group, 4);
22
+ buffer.writeUInt8(cmd_md, 5);
23
+ buffer.writeUInt16LE(ownNid, 6);
24
+ buffer.writeUInt16LE(this.header.nid, 8);
25
+ let offset = 10;
26
+ this.data.forEach((element) => {
27
+ if (typeof element.value === 'string') {
28
+ ExtendedASCII.str2byte(element.value, buffer, offset, element.length);
29
+ offset += element.length;
30
+ }
31
+ else
32
+ switch (element.length) {
33
+ case 1:
34
+ buffer.writeUInt8(element.value, offset);
35
+ offset += 1;
36
+ break;
37
+ case 2:
38
+ buffer.writeUInt16LE(element.value, offset);
39
+ offset += 2;
40
+ break;
41
+ case 4:
42
+ buffer.writeUInt32LE(element.value, offset);
43
+ offset += 4;
44
+ break;
45
+ default:
46
+ console.warn(`ELEMENT LENGTH NOT DEFINED, ${element}`);
47
+ }
48
+ });
49
+ return buffer;
50
+ }
13
51
  }
14
52
  export class Query {
15
53
  header;
@@ -40,11 +78,10 @@ export class Query {
40
78
  }
41
79
  subscribe() {
42
80
  this.rx = this.subject.subscribe((msg) => {
43
- if (msg.header.mode !== MsgMode.ACK)
81
+ if (msg.header.mode < MsgMode.EVT)
44
82
  return;
45
83
  if (msg.header.nid !== this.header.nid)
46
84
  return;
47
- this.log('query.run.rx: ' + JSON.stringify(msg));
48
85
  if (!this.match(msg))
49
86
  return;
50
87
  this.result = msg;
@@ -1 +1 @@
1
- {"version":3,"file":"communication.js","sourceRoot":"","sources":["../../src/@types/communication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"communication.js","sourceRoot":"","sources":["../../src/@types/communication.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { NameType, Direction, ExternalController, FunctionMode, OperatingMode, SystemStateMode, TrackMode, ImageType, FxConfigType, SpecialFunctionMode, Manual, DirectionDefault, ShuntingFunction, BidiType, ForwardOrReverse, AccessoryMode, FxModeType, ModInfoType, MsgMode } from '../util/enums';
2
2
  import { Header, Message, ZcanDataArray } from './communication';
3
- import { Subject } from 'rxjs';
4
3
  export interface Train {
5
4
  nid: number;
6
5
  subId: number;
@@ -100,11 +99,26 @@ export interface BidiInfoData {
100
99
  type: BidiType;
101
100
  data: BidiDirectionData | number;
102
101
  }
103
- export declare class ModInfoData extends Message {
104
- static readonly rx: Subject<ModInfoData>;
102
+ export declare class MsgModInfo extends Message {
105
103
  static header(mode: MsgMode, nid: number): Header;
106
104
  constructor(header: Header, type: ModInfoType, data?: ZcanDataArray);
107
105
  type(): ModInfoType | undefined;
106
+ info(): number | undefined;
107
+ }
108
+ export declare class MsgCvRead extends Message {
109
+ static header(mode: MsgMode, nid: number): Header;
110
+ constructor(header: Header, trainNid: number, cvNum: number, cvVal?: number | undefined);
111
+ cvVal(): number | undefined;
112
+ cvNum(): number;
113
+ trainNid(): number;
114
+ }
115
+ export declare class MsgCvWrite extends MsgCvRead {
116
+ static header(mode: MsgMode, nid: number): Header;
117
+ constructor(header: Header, trainNid: number, cvNum: number, cvVal: number);
118
+ }
119
+ export declare class MsgCvWrite16 extends MsgCvRead {
120
+ static header(mode: MsgMode, nid: number): Header;
121
+ constructor(header: Header, trainNid: number, cvNum: number, cvVal: number);
108
122
  }
109
123
  export interface BidiDirectionData {
110
124
  direction?: Direction;
@@ -1,7 +1,5 @@
1
1
  import { Message } from './communication';
2
- import { Subject } from 'rxjs';
3
- export class ModInfoData extends Message {
4
- static rx = new Subject();
2
+ export class MsgModInfo extends Message {
5
3
  static header(mode, nid) {
6
4
  return { group: 0x08, cmd: 0x08, mode: mode, nid };
7
5
  }
@@ -9,10 +7,57 @@ export class ModInfoData extends Message {
9
7
  super(header);
10
8
  super.push({ value: type, length: 2 });
11
9
  if (data.length)
12
- this.data.concat(data);
10
+ this.data = this.data.concat(data);
13
11
  }
14
12
  type() {
15
13
  return this.data[0].value;
16
14
  }
15
+ info() {
16
+ if (this.data.length > 1)
17
+ return this.data[1].value;
18
+ return undefined;
19
+ }
20
+ }
21
+ export class MsgCvRead extends Message {
22
+ static header(mode, nid) {
23
+ return { group: 0x16, cmd: 0x08, mode: mode, nid: nid };
24
+ }
25
+ constructor(header, trainNid, cvNum, cvVal = undefined) {
26
+ super(header);
27
+ super.push({ value: trainNid, length: 2 });
28
+ super.push({ value: cvNum, length: 4 });
29
+ if (cvVal !== undefined)
30
+ super.push({ value: cvVal, length: 2 });
31
+ }
32
+ cvVal() {
33
+ if (this.data.length > 2) {
34
+ return this.data[2].value;
35
+ }
36
+ return undefined;
37
+ }
38
+ cvNum() {
39
+ return this.data[1].value;
40
+ }
41
+ trainNid() {
42
+ return this.data[0].value;
43
+ }
44
+ }
45
+ export class MsgCvWrite extends MsgCvRead {
46
+ static header(mode, nid) {
47
+ return { group: 0x16, cmd: 0x09, mode: mode, nid: nid };
48
+ }
49
+ constructor(header, trainNid, cvNum, cvVal) {
50
+ super(header, trainNid, cvNum, cvVal);
51
+ this.data[2].length = 1;
52
+ }
53
+ }
54
+ export class MsgCvWrite16 extends MsgCvRead {
55
+ static header(mode, nid) {
56
+ return { group: 0x16, cmd: 0x0d, mode: mode, nid: nid };
57
+ }
58
+ constructor(header, trainNid, cvNum, cvVal) {
59
+ super(header, trainNid, cvNum, cvVal);
60
+ this.data[1].length = 2;
61
+ }
17
62
  }
18
63
  //# sourceMappingURL=models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/@types/models.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAS,OAAO,EAAgB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAS,OAAO,EAAgB,MAAM,MAAM,CAAC;AAmHpD,MAAM,OAAO,WAAY,SAAQ,OAAO;IAE/B,MAAM,CAAU,EAAE,GAAG,IAAI,OAAO,EAAe,CAAC;IAEhD,MAAM,CAAC,MAAM,CAAC,IAAa,EAAE,GAAW;QAE7C,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC;IACnD,CAAC;IAED,YAAY,MAAc,EAAE,IAAiB,EAAE,OAAsB,EAAE;QAErE,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC,CAAC;QACrC,IAAG,IAAI,CAAC,MAAM;YACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI;QAEF,OAAS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAiC,CAAC;IAO1D,CAAC"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/@types/models.ts"],"names":[],"mappings":"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"}
package/dist/MX10.js CHANGED
@@ -105,7 +105,8 @@ export default class MX10 {
105
105
  }
106
106
  }
107
107
  sendMsg(msg) {
108
- const buffer = this.formatData(msg.header.group, msg.header.cmd, msg.header.mode, msg.header.nid, msg.data);
108
+ const buffer = msg.udp(this.myNID);
109
+ this.log.next("mx10.sendMsg: " + JSON.stringify(buffer));
109
110
  this.send(buffer, false);
110
111
  }
111
112
  sendData(group, cmd, data = [], mode = 0b01, nid = this.myNID, force = false) {
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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"}
@@ -1,15 +1,15 @@
1
1
  import { Buffer } from 'buffer';
2
2
  import MX10 from '../MX10';
3
3
  import { Subject } from 'rxjs';
4
- import { BidiInfoData, ModInfoData } from '../@types/models';
4
+ import { BidiInfoData, MsgModInfo } from '../@types/models';
5
5
  import { ModInfoType } from '../util/enums';
6
6
  export default class InfoGroup {
7
7
  private mx10;
8
8
  readonly onBidiInfoChange: Subject<BidiInfoData>;
9
- readonly onModuleInfoChange: Subject<ModInfoData>;
9
+ readonly onModuleInfoChange: Subject<MsgModInfo>;
10
10
  private modInfoQ;
11
11
  constructor(mx10: MX10);
12
- getModuleInfo(nid: number, type: ModInfoType | number): Promise<ModInfoData | undefined>;
12
+ getModuleInfo(nid: number, type: ModInfoType | number): Promise<MsgModInfo | undefined>;
13
13
  parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
14
14
  private parseModuleInfo;
15
15
  private parseBidiInfo;
@@ -1,6 +1,6 @@
1
1
  import { Subject } from 'rxjs';
2
- import { Message, Query } from '../@types/communication';
3
- import { ModInfoData } from '../@types/models';
2
+ import { Query } from '../@types/communication';
3
+ import { MsgModInfo } from '../@types/models';
4
4
  import { BidiType, Direction, ForwardOrReverse, MsgMode } from '../util/enums';
5
5
  export default class InfoGroup {
6
6
  mx10;
@@ -15,14 +15,12 @@ export default class InfoGroup {
15
15
  this.mx10.log.next("mx10.getModuleInfo: failed to acquire lock");
16
16
  return undefined;
17
17
  }
18
- this.modInfoQ = new Query(ModInfoData.header(MsgMode.REQ, nid), this.onModuleInfoChange);
18
+ this.modInfoQ = new Query(MsgModInfo.header(MsgMode.REQ, nid), this.onModuleInfoChange);
19
19
  this.modInfoQ.log = ((msg) => {
20
20
  this.mx10.log.next(msg);
21
21
  });
22
22
  this.modInfoQ.tx = ((header) => {
23
- const msg = new Message(header);
24
- msg.push({ value: nid, length: 2 });
25
- msg.push({ value: type, length: 2 });
23
+ const msg = new MsgModInfo(header, type);
26
24
  this.mx10.log.next('mx10 query tx: ' + JSON.stringify(msg));
27
25
  this.mx10.sendMsg(msg);
28
26
  });
@@ -53,8 +51,7 @@ export default class InfoGroup {
53
51
  const NID = buffer.readUInt16LE(0);
54
52
  const type = buffer.readUInt16LE(2);
55
53
  const info = buffer.readUInt32LE(4);
56
- const msg = new ModInfoData(ModInfoData.header(mode, NID), type, [{ value: info, length: 4 }]);
57
- this.mx10.log.next('onModuleInfoChange <- ' + JSON.stringify(msg));
54
+ const msg = new MsgModInfo(MsgModInfo.header(mode, NID), type, [{ value: info, length: 4 }]);
58
55
  this.onModuleInfoChange.next(msg);
59
56
  }
60
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"infoGroup.js","sourceRoot":"","sources":["../../src/zcan/infoGroup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"infoGroup.js","sourceRoot":"","sources":["../../src/zcan/infoGroup.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,21 @@
1
- import { TseInfoExtended, TseProgReadExtended, TseProgWriteExtended } from 'src/@types/models';
1
+ import { MsgCvRead, MsgCvWrite, MsgCvWrite16, TseInfoExtended } from '../@types/models';
2
2
  import MX10 from '../MX10';
3
3
  import { Subject } from 'rxjs';
4
4
  export default class TrackCfgGroup {
5
5
  readonly onTseInfoExtended: Subject<TseInfoExtended>;
6
- readonly onTseProgReadExtended: Subject<TseProgReadExtended>;
7
- readonly onTseProgWriteExtended: Subject<TseProgWriteExtended>;
8
- readonly onTseProgWrite16Extended: Subject<TseProgWriteExtended>;
6
+ readonly onTseProgReadExtended: Subject<MsgCvRead>;
7
+ readonly onTseProgWriteExtended: Subject<MsgCvWrite>;
8
+ readonly onTseProgWrite16Extended: Subject<MsgCvWrite>;
9
9
  private mx10;
10
10
  constructor(mx10: MX10);
11
+ private getCvQ;
12
+ private setCvQ;
11
13
  tseProgRead(NID: number, CV: number): void;
12
14
  tseProgWrite(NID: number, CV: number, value: number): void;
13
15
  tseProgWrite16(NID: number, CV: number, value: number): void;
16
+ getCv(trainNid: number, cvNum: number): Promise<MsgCvRead | undefined>;
17
+ setCv(trainNid: number, cvNum: number, cvVal: number): Promise<MsgCvWrite | undefined>;
18
+ setCv16(trainNid: number, cvNum: number, cvVal: number): Promise<MsgCvWrite16 | undefined>;
14
19
  parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
15
20
  parseTseInfo(size: number, mode: number, nid: number, buffer: Buffer): void;
16
21
  parseTseProgRead(size: number, mode: number, nid: number, buffer: Buffer): void;
@@ -1,4 +1,7 @@
1
+ import { MsgCvRead, MsgCvWrite, MsgCvWrite16, } from '../@types/models';
1
2
  import { Subject } from 'rxjs';
3
+ import { Query } from '../docs_entrypoint';
4
+ import { MsgMode } from '../util/enums';
2
5
  export default class TrackCfgGroup {
3
6
  onTseInfoExtended = new Subject();
4
7
  onTseProgReadExtended = new Subject();
@@ -8,6 +11,8 @@ export default class TrackCfgGroup {
8
11
  constructor(mx10) {
9
12
  this.mx10 = mx10;
10
13
  }
14
+ getCvQ = undefined;
15
+ setCvQ = undefined;
11
16
  tseProgRead(NID, CV) {
12
17
  this.mx10.sendData(0x16, 0x08, [
13
18
  { value: this.mx10.mx10NID, length: 2 },
@@ -31,6 +36,72 @@ export default class TrackCfgGroup {
31
36
  { value: value, length: 2 },
32
37
  ]);
33
38
  }
39
+ async getCv(trainNid, cvNum) {
40
+ if (this.getCvQ !== undefined && !await this.getCvQ.lock()) {
41
+ this.mx10.log.next("mx10.getCv: failed to acquire lock");
42
+ return undefined;
43
+ }
44
+ this.getCvQ = new Query(MsgCvRead.header(MsgMode.CMD, this.mx10.mx10NID), this.onTseProgReadExtended);
45
+ this.getCvQ.log = ((msg) => {
46
+ this.mx10.log.next(msg);
47
+ });
48
+ this.getCvQ.tx = ((header) => {
49
+ const msg = new MsgCvRead(header, trainNid, cvNum);
50
+ this.mx10.sendMsg(msg);
51
+ });
52
+ this.getCvQ.match = ((msg) => {
53
+ return (msg.trainNid() === trainNid && msg.cvNum() === cvNum);
54
+ });
55
+ const rv = await this.getCvQ.run();
56
+ this.mx10.log.next("mx10.getCv.rv: " + JSON.stringify(rv));
57
+ this.getCvQ.unlock();
58
+ this.getCvQ = undefined;
59
+ return rv;
60
+ }
61
+ async setCv(trainNid, cvNum, cvVal) {
62
+ if (this.setCvQ !== undefined && !await this.setCvQ.lock()) {
63
+ this.mx10.log.next("mx10.setCv: failed to acquire lock");
64
+ return undefined;
65
+ }
66
+ this.setCvQ = new Query(MsgCvWrite.header(MsgMode.CMD, this.mx10.mx10NID), this.onTseProgWriteExtended);
67
+ this.setCvQ.log = ((msg) => {
68
+ this.mx10.log.next(msg);
69
+ });
70
+ this.setCvQ.tx = ((header) => {
71
+ const msg = new MsgCvWrite(header, trainNid, cvNum, cvVal);
72
+ this.mx10.sendMsg(msg);
73
+ });
74
+ this.setCvQ.match = ((msg) => {
75
+ return (msg.trainNid() === trainNid && msg.cvNum() === cvNum && msg.cvVal() === cvVal);
76
+ });
77
+ const rv = await this.setCvQ.run();
78
+ this.mx10.log.next("mx10.setCv.rv: " + JSON.stringify(rv));
79
+ this.setCvQ.unlock();
80
+ this.setCvQ = undefined;
81
+ return rv;
82
+ }
83
+ async setCv16(trainNid, cvNum, cvVal) {
84
+ if (this.setCvQ !== undefined && !await this.setCvQ.lock()) {
85
+ this.mx10.log.next("mx10.setCv: failed to acquire lock");
86
+ return undefined;
87
+ }
88
+ this.setCvQ = new Query(MsgCvWrite16.header(MsgMode.CMD, this.mx10.mx10NID), this.onTseProgWrite16Extended);
89
+ this.setCvQ.log = ((msg) => {
90
+ this.mx10.log.next(msg);
91
+ });
92
+ this.setCvQ.tx = ((header) => {
93
+ const msg = new MsgCvWrite16(header, trainNid, cvNum, cvVal);
94
+ this.mx10.sendMsg(msg);
95
+ });
96
+ this.setCvQ.match = ((msg) => {
97
+ return (msg.trainNid() === trainNid && msg.cvNum() === cvNum && msg.cvVal() === cvVal);
98
+ });
99
+ const rv = await this.setCvQ.run();
100
+ this.mx10.log.next("mx10.setCv.rv: " + JSON.stringify(rv));
101
+ this.setCvQ.unlock();
102
+ this.setCvQ = undefined;
103
+ return rv;
104
+ }
34
105
  parse(size, command, mode, nid, buffer) {
35
106
  switch (command) {
36
107
  case 0x02:
@@ -66,11 +137,7 @@ export default class TrackCfgGroup {
66
137
  const NID = buffer.readUInt16LE(2);
67
138
  const cfgNum = buffer.readUInt32LE(4);
68
139
  const cvValue = buffer.readUInt16LE(8);
69
- this.onTseProgReadExtended.next({
70
- nid: NID,
71
- cfgNum,
72
- cvValue,
73
- });
140
+ this.onTseProgReadExtended.next(new MsgCvRead(MsgCvRead.header(mode, nid), NID, cfgNum, cvValue));
74
141
  }
75
142
  }
76
143
  parseTseProgWrite(size, mode, nid, buffer) {
@@ -78,25 +145,17 @@ export default class TrackCfgGroup {
78
145
  const NID = buffer.readUInt16LE(0);
79
146
  const cfgNum = buffer.readUInt32LE(2);
80
147
  const cvValue = buffer.readUint8(6);
81
- this.onTseProgWriteExtended.next({
82
- nid: NID,
83
- cfgNum,
84
- cvValue,
85
- });
148
+ this.onTseProgWriteExtended.next(new MsgCvWrite(MsgCvWrite.header(mode, nid), NID, cfgNum, cvValue));
86
149
  }
87
150
  }
88
151
  parseTseProgWrite16(size, mode, nid, buffer) {
89
152
  if (this.onTseProgWrite16Extended.observed) {
90
153
  if (buffer.length < 6)
91
- throw new Error('parseTseProgWrite16 rx: ' + buffer);
154
+ throw new Error('parseTseProgWrite16 rx: ' + JSON.stringify(buffer));
92
155
  const NID = buffer.readUInt16LE(0);
93
156
  const cfgNum = buffer.readUint16LE(2);
94
157
  const cvValue = buffer.readUint16LE(4);
95
- this.onTseProgWrite16Extended.next({
96
- nid: NID,
97
- cfgNum,
98
- cvValue,
99
- });
158
+ this.onTseProgWrite16Extended.next(new MsgCvWrite(MsgCvWrite.header(mode, nid), NID, cfgNum, cvValue));
100
159
  }
101
160
  }
102
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trackCfgGroup.js","sourceRoot":"","sources":["../../src/zcan/trackCfgGroup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trackCfgGroup.js","sourceRoot":"","sources":["../../src/zcan/trackCfgGroup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -5,11 +5,11 @@
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "MIT",
7
7
  "repository": "https://github.com/ZIMO-Elektronik/zcan",
8
- "version": "1.0.32",
8
+ "version": "1.0.34",
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",
12
- "build": "tsc --project tsconfig.build.json",
12
+ "build": "./node_modules/typescript/bin/tsc --project tsconfig.build.json",
13
13
  "build:clean": "rm -rf tsconfig.build.tsbuildinfo && rm -rf ./dist",
14
14
  "test": "jest --forceExit",
15
15
  "test:coverage": "npm run test -- --coverage",
@@ -21,7 +21,7 @@
21
21
  "docs": "gulp documentation"
22
22
  },
23
23
  "dependencies": {
24
- "rxjs": "^7.8.1",
24
+ "rxjs": "^7.8.2",
25
25
  "tslib": "^2.7.0"
26
26
  },
27
27
  "devDependencies": {
@@ -3,6 +3,7 @@ import {Buffer} from 'buffer';
3
3
  import {MsgMode} from '../util/enums';
4
4
  import {delay} from '../internal/utils';
5
5
  import {Subject, Subscription} from 'rxjs';
6
+ import ExtendedASCII from '../util/extended-ascii';
6
7
 
7
8
  export type Header = {
8
9
  group: number,
@@ -33,6 +34,46 @@ export class Message
33
34
  {
34
35
  this.data.push(data);
35
36
  }
37
+
38
+ udp(ownNid: number): Buffer
39
+ {
40
+ const size = 2 + this.data.reduce((sum, obj) => sum + obj.length, 0);
41
+ const buffer = Buffer.alloc(size + 8);
42
+ const cmd_md = (this.header.cmd << 2) | this.header.mode;
43
+
44
+ buffer.writeUInt16LE(size, 0);
45
+ buffer.writeUInt16LE(0, 2); // unused
46
+ buffer.writeUInt8(this.header.group, 4);
47
+ buffer.writeUInt8(cmd_md, 5);
48
+ buffer.writeUInt16LE(ownNid, 6);
49
+ buffer.writeUInt16LE(this.header.nid, 8);
50
+
51
+ let offset = 10;
52
+
53
+ this.data.forEach((element) => {
54
+ if (typeof element.value === 'string') {
55
+ ExtendedASCII.str2byte(element.value, buffer, offset, element.length);
56
+ offset += element.length;
57
+ } else switch (element.length) {
58
+ case 1:
59
+ buffer.writeUInt8(element.value, offset);
60
+ offset += 1;
61
+ break;
62
+ case 2:
63
+ buffer.writeUInt16LE(element.value, offset);
64
+ offset += 2;
65
+ break;
66
+ case 4:
67
+ buffer.writeUInt32LE(element.value, offset);
68
+ offset += 4;
69
+ break;
70
+ default:
71
+ // eslint-disable-next-line no-console
72
+ console.warn(`ELEMENT LENGTH NOT DEFINED, ${element}`);
73
+ }
74
+ });
75
+ return buffer;
76
+ }
36
77
  }
37
78
 
38
79
  export class Query<T extends Message>
@@ -75,11 +116,11 @@ export class Query<T extends Message>
75
116
  {
76
117
  this.rx = this.subject.subscribe((msg: T) =>
77
118
  {
78
- if(msg.header.mode !== MsgMode.ACK)
119
+ if(msg.header.mode < MsgMode.EVT)
79
120
  return;
80
121
  if(msg.header.nid !== this.header.nid)
81
122
  return;
82
- this.log('query.run.rx: ' + JSON.stringify(msg));
123
+ //this.log('query.run.rx: ' + JSON.stringify(msg));
83
124
  if(!this.match(msg))
84
125
  return;
85
126
  this.result = msg;
@@ -20,7 +20,7 @@ import {
20
20
  MsgMode,
21
21
  } from '../util/enums';
22
22
  import {Header, Message, ZcanDataArray} from './communication';
23
- import { delay, Subject, Subscription } from 'rxjs';
23
+ import { Subject } from 'rxjs';
24
24
 
25
25
 
26
26
  export interface Train {
@@ -135,10 +135,8 @@ export interface BidiInfoData {
135
135
  data: BidiDirectionData | number;
136
136
  }
137
137
 
138
- export class ModInfoData extends Message
138
+ export class MsgModInfo extends Message
139
139
  {
140
- public static readonly rx = new Subject<ModInfoData>();
141
-
142
140
  public static header(mode: MsgMode, nid: number): Header
143
141
  {
144
142
  return {group: 0x08, cmd: 0x08, mode: mode, nid};
@@ -148,19 +146,84 @@ export class ModInfoData extends Message
148
146
  {
149
147
  super(header);
150
148
  super.push({value: type, length: 2});
149
+ // data.forEach((data) => super.push(data));
151
150
  if(data.length)
152
- this.data.concat(data);
151
+ this.data = this.data.concat(data);
153
152
  }
154
153
 
155
154
  type(): ModInfoType | undefined
156
155
  {
157
156
  return ((this.data[0].value as unknown) as ModInfoType);
157
+ }
158
+
159
+ info(): number | undefined
160
+ {
161
+ if(this.data.length > 1)
162
+ return (this.data[1].value as number);
163
+ return undefined;
164
+ }
165
+ }
166
+
167
+ export class MsgCvRead extends Message
168
+ {
169
+ public static header(mode: MsgMode, nid: number): Header
170
+ {
171
+ return {group: 0x16, cmd: 0x08, mode: mode, nid: nid};
172
+ }
173
+
174
+ constructor(header: Header, trainNid: number, cvNum: number, cvVal: number | undefined = undefined)
175
+ {
176
+ super(header);
177
+ super.push({value: trainNid, length: 2});
178
+ super.push({value: cvNum, length: 4});
179
+ if(cvVal !== undefined)
180
+ super.push({value: cvVal, length: 2});
181
+ }
182
+
183
+ cvVal(): number | undefined
184
+ {
185
+ if(this.data.length > 2) {
186
+ return (this.data[2].value as number);
187
+ }
188
+ return undefined;
189
+ }
190
+
191
+ cvNum(): number
192
+ {
193
+ return (this.data[1].value as number);
194
+ }
195
+
196
+ trainNid(): number
197
+ {
198
+ return (this.data[0].value as number);
199
+ }
200
+ }
158
201
 
159
- // if((typeof this.data[0].value === 'string'))
160
- // return undefined;
161
- // if(this.data[0].value === 0)
162
- // return undefined;
163
- // return this.data[0].value;
202
+ export class MsgCvWrite extends MsgCvRead
203
+ {
204
+ public static header(mode: MsgMode, nid: number): Header
205
+ {
206
+ return {group: 0x16, cmd: 0x09, mode: mode, nid: nid};
207
+ }
208
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
209
+ constructor(header: Header, trainNid: number, cvNum: number, cvVal: number)
210
+ {
211
+ super(header, trainNid, cvNum, cvVal);
212
+ this.data[2].length = 1; // ;-)
213
+ }
214
+ }
215
+
216
+ export class MsgCvWrite16 extends MsgCvRead
217
+ {
218
+ public static header(mode: MsgMode, nid: number): Header
219
+ {
220
+ return {group: 0x16, cmd: 0x0d, mode: mode, nid: nid};
221
+ }
222
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
223
+ constructor(header: Header, trainNid: number, cvNum: number, cvVal: number)
224
+ {
225
+ super(header, trainNid, cvNum, cvVal);
226
+ this.data[1].length = 2;
164
227
  }
165
228
  }
166
229
 
@@ -240,7 +303,7 @@ export interface ItemFxMode {
240
303
 
241
304
  // export class ItemFxMode extends Message
242
305
  // {
243
- // constructor(header: Header, group: number, mode: FxModeType[] = [])
306
+ // constructor(header: Header, group: number, mode: number)
244
307
  // {
245
308
  // super(header);
246
309
  // super.push({value: group, length: 1});
@@ -255,7 +318,11 @@ export interface ItemFxMode {
255
318
 
256
319
  // mode(): FxModeType[]
257
320
  // {
258
- // return ((this.data[2].value as unknown) as FxModeType[]);
321
+ // const rv: FxModeType[] = [];
322
+ // for(let i=0; i<32; i+=2) {
323
+ // rv.push(((this.data[2].value as number) >> i) & 0b11);
324
+ // }
325
+ // return rv;
259
326
  // }
260
327
 
261
328
  // setMode(index: number, mode: FxModeType)
package/src/MX10.ts CHANGED
@@ -172,7 +172,8 @@ export default class MX10 {
172
172
  }
173
173
 
174
174
  sendMsg(msg: Message) {
175
- const buffer = this.formatData(msg.header.group, msg.header.cmd, msg.header.mode, msg.header.nid, msg.data);
175
+ const buffer = msg.udp(this.myNID);
176
+ this.log.next("mx10.sendMsg: " + JSON.stringify(buffer));
176
177
  this.send(buffer, false);
177
178
  }
178
179
 
@@ -185,6 +186,7 @@ export default class MX10 {
185
186
  force = false,
186
187
  ) {
187
188
  const buffer = this.formatData(group, cmd, mode, nid, data);
189
+ //this.log.next("mx10.sendData: " + JSON.stringify(buffer));
188
190
  this.send(buffer, force);
189
191
  }
190
192
 
@@ -1,8 +1,8 @@
1
1
  import {Buffer} from 'buffer';
2
2
  import MX10 from '../MX10';
3
3
  import {Subject} from 'rxjs';
4
- import {Message, Query} from '../@types/communication';
5
- import {BidiInfoData, BidiDirectionData, ModInfoData} from '../@types/models';
4
+ import {Query} from '../@types/communication';
5
+ import {BidiInfoData, BidiDirectionData, MsgModInfo} from '../@types/models';
6
6
  import {BidiType, Direction, ForwardOrReverse, ModInfoType, MsgMode} from '../util/enums';
7
7
 
8
8
  /**
@@ -13,29 +13,27 @@ export default class InfoGroup {
13
13
  private mx10: MX10;
14
14
 
15
15
  public readonly onBidiInfoChange = new Subject<BidiInfoData>();
16
- public readonly onModuleInfoChange = new Subject<ModInfoData>();
16
+ public readonly onModuleInfoChange = new Subject<MsgModInfo>();
17
17
 
18
- private modInfoQ: Query<ModInfoData> | undefined = undefined;
18
+ private modInfoQ: Query<MsgModInfo> | undefined = undefined;
19
19
 
20
20
  constructor(mx10: MX10) {
21
21
  this.mx10 = mx10;
22
22
  }
23
23
 
24
- async getModuleInfo(nid: number, type: ModInfoType | number): Promise<ModInfoData | undefined>
24
+ async getModuleInfo(nid: number, type: ModInfoType | number): Promise<MsgModInfo | undefined>
25
25
  {
26
26
  if(this.modInfoQ !== undefined && !await this.modInfoQ.lock()) {
27
27
  this.mx10.log.next("mx10.getModuleInfo: failed to acquire lock");
28
28
  return undefined;
29
29
  }
30
30
 
31
- this.modInfoQ = new Query(ModInfoData.header(MsgMode.REQ, nid), this.onModuleInfoChange);
31
+ this.modInfoQ = new Query(MsgModInfo.header(MsgMode.REQ, nid), this.onModuleInfoChange);
32
32
  this.modInfoQ.log = ((msg) => {
33
33
  this.mx10.log.next(msg);
34
34
  });
35
35
  this.modInfoQ.tx = ((header) => {
36
- const msg = new Message(header);
37
- msg.push({value: nid, length: 2});
38
- msg.push({value: type, length: 2});
36
+ const msg = new MsgModInfo(header, type);
39
37
  this.mx10.log.next('mx10 query tx: ' + JSON.stringify(msg));
40
38
  this.mx10.sendMsg(msg);
41
39
  });
@@ -77,14 +75,12 @@ export default class InfoGroup {
77
75
  nid: number,
78
76
  buffer: Buffer,
79
77
  ) {
80
- // const msgMode: MsgMode = mode as MsgMode;
81
- // this.mx10.log.next('parseModuleInfo: ' + msgMode);
82
78
  if (this.onModuleInfoChange.observed) {
83
79
  const NID = buffer.readUInt16LE(0);
84
80
  const type = buffer.readUInt16LE(2);
85
81
  const info = buffer.readUInt32LE(4);
86
- const msg = new ModInfoData(ModInfoData.header(mode, NID), type, [{value: info, length: 4}]);
87
- this.mx10.log.next('onModuleInfoChange <- ' + JSON.stringify(msg));
82
+ const msg = new MsgModInfo(MsgModInfo.header(mode, NID), type, [{value: info, length: 4}]);
83
+ // this.mx10.log.next('onModuleInfoChange <- ' + JSON.stringify(msg));
88
84
  this.onModuleInfoChange.next(msg);
89
85
  }
90
86
  }
@@ -1,10 +1,13 @@
1
1
  import {
2
+ MsgCvRead,
3
+ MsgCvWrite,
4
+ MsgCvWrite16,
2
5
  TseInfoExtended,
3
- TseProgReadExtended,
4
- TseProgWriteExtended,
5
- } from 'src/@types/models';
6
+ } from '../@types/models';
6
7
  import MX10 from '../MX10';
7
8
  import {Subject} from 'rxjs';
9
+ import {Query} from '../docs_entrypoint';
10
+ import {MsgMode} from '../util/enums';
8
11
 
9
12
  /**
10
13
  *
@@ -12,9 +15,9 @@ import {Subject} from 'rxjs';
12
15
  */
13
16
  export default class TrackCfgGroup {
14
17
  public readonly onTseInfoExtended = new Subject<TseInfoExtended>();
15
- public readonly onTseProgReadExtended = new Subject<TseProgReadExtended>();
16
- public readonly onTseProgWriteExtended = new Subject<TseProgWriteExtended>();
17
- public readonly onTseProgWrite16Extended = new Subject<TseProgWriteExtended>();
18
+ public readonly onTseProgReadExtended = new Subject<MsgCvRead>();
19
+ public readonly onTseProgWriteExtended = new Subject<MsgCvWrite>();
20
+ public readonly onTseProgWrite16Extended = new Subject<MsgCvWrite>();
18
21
 
19
22
  private mx10: MX10;
20
23
 
@@ -22,6 +25,9 @@ export default class TrackCfgGroup {
22
25
  this.mx10 = mx10;
23
26
  }
24
27
 
28
+ private getCvQ: Query<MsgCvRead> | undefined = undefined;
29
+ private setCvQ: Query<MsgCvWrite> | undefined = undefined;
30
+
25
31
  tseProgRead(NID: number, CV: number) {
26
32
  this.mx10.sendData(0x16, 0x08, [
27
33
  {value: this.mx10.mx10NID, length: 2},
@@ -48,6 +54,87 @@ export default class TrackCfgGroup {
48
54
  ]);
49
55
  }
50
56
 
57
+ async getCv(trainNid: number, cvNum: number): Promise<MsgCvRead | undefined>
58
+ {
59
+ if(this.getCvQ !== undefined && !await this.getCvQ.lock()) {
60
+ this.mx10.log.next("mx10.getCv: failed to acquire lock");
61
+ return undefined;
62
+ }
63
+
64
+ this.getCvQ = new Query(MsgCvRead.header(MsgMode.CMD, this.mx10.mx10NID), this.onTseProgReadExtended);
65
+ this.getCvQ.log = ((msg) => {
66
+ this.mx10.log.next(msg);
67
+ });
68
+ this.getCvQ.tx = ((header) => {
69
+ const msg = new MsgCvRead(header, trainNid, cvNum);
70
+ // this.mx10.log.next('cv query tx: ' + JSON.stringify(msg));
71
+ this.mx10.sendMsg(msg);
72
+ });
73
+ this.getCvQ.match = ((msg) => {
74
+ // this.mx10.log.next('cv query rx: ' + JSON.stringify(msg));
75
+ return (msg.trainNid() === trainNid && msg.cvNum() === cvNum);
76
+ })
77
+ const rv = await this.getCvQ.run();
78
+ this.mx10.log.next("mx10.getCv.rv: " + JSON.stringify(rv));
79
+ this.getCvQ.unlock();
80
+ this.getCvQ = undefined;
81
+ return rv;
82
+ }
83
+
84
+ async setCv(trainNid: number, cvNum: number, cvVal: number): Promise<MsgCvWrite | undefined>
85
+ {
86
+ if(this.setCvQ !== undefined && !await this.setCvQ.lock()) {
87
+ this.mx10.log.next("mx10.setCv: failed to acquire lock");
88
+ return undefined;
89
+ }
90
+
91
+ this.setCvQ = new Query(MsgCvWrite.header(MsgMode.CMD, this.mx10.mx10NID), this.onTseProgWriteExtended);
92
+ this.setCvQ.log = ((msg) => {
93
+ this.mx10.log.next(msg);
94
+ });
95
+ this.setCvQ.tx = ((header) => {
96
+ const msg = new MsgCvWrite(header, trainNid, cvNum, cvVal);
97
+ // this.mx10.log.next('cv write query tx: ' + JSON.stringify(msg));
98
+ this.mx10.sendMsg(msg);
99
+ });
100
+ this.setCvQ.match = ((msg) => {
101
+ // this.mx10.log.next('cv write query rx: ' + JSON.stringify(msg));
102
+ return (msg.trainNid() === trainNid && msg.cvNum() === cvNum && msg.cvVal() === cvVal);
103
+ })
104
+ const rv = await this.setCvQ.run();
105
+ this.mx10.log.next("mx10.setCv.rv: " + JSON.stringify(rv));
106
+ this.setCvQ.unlock();
107
+ this.setCvQ = undefined;
108
+ return rv;
109
+ }
110
+
111
+ async setCv16(trainNid: number, cvNum: number, cvVal: number): Promise<MsgCvWrite16 | undefined>
112
+ {
113
+ if(this.setCvQ !== undefined && !await this.setCvQ.lock()) {
114
+ this.mx10.log.next("mx10.setCv: failed to acquire lock");
115
+ return undefined;
116
+ }
117
+
118
+ this.setCvQ = new Query(MsgCvWrite16.header(MsgMode.CMD, this.mx10.mx10NID), this.onTseProgWrite16Extended);
119
+ this.setCvQ.log = ((msg) => {
120
+ this.mx10.log.next(msg);
121
+ });
122
+ this.setCvQ.tx = ((header) => {
123
+ const msg = new MsgCvWrite16(header, trainNid, cvNum, cvVal);
124
+ // this.mx10.log.next('cv write query tx: ' + JSON.stringify(msg));
125
+ this.mx10.sendMsg(msg);
126
+ });
127
+ this.setCvQ.match = ((msg) => {
128
+ // this.mx10.log.next('cv write query rx: ' + JSON.stringify(msg));
129
+ return (msg.trainNid() === trainNid && msg.cvNum() === cvNum && msg.cvVal() === cvVal);
130
+ })
131
+ const rv = await this.setCvQ.run();
132
+ this.mx10.log.next("mx10.setCv.rv: " + JSON.stringify(rv));
133
+ this.setCvQ.unlock();
134
+ this.setCvQ = undefined;
135
+ return rv;
136
+ }
137
+
51
138
  parse(
52
139
  size: number,
53
140
  command: number,
@@ -55,6 +142,7 @@ export default class TrackCfgGroup {
55
142
  nid: number,
56
143
  buffer: Buffer,
57
144
  ) {
145
+ // this.mx10.log.next("parseTse: " + command + "." + mode + ":" + nid + " ... " + JSON.stringify(buffer));
58
146
  switch (command) {
59
147
  case 0x02:
60
148
  this.parseTseInfo(size, mode, nid, buffer);
@@ -96,12 +184,11 @@ export default class TrackCfgGroup {
96
184
  const NID = buffer.readUInt16LE(2);
97
185
  const cfgNum = buffer.readUInt32LE(4);
98
186
  const cvValue = buffer.readUInt16LE(8);
187
+ // this.mx10.log.next("parseTseProgRead: " + JSON.stringify(buffer));
99
188
 
100
- this.onTseProgReadExtended.next({
101
- nid: NID,
102
- cfgNum,
103
- cvValue,
104
- });
189
+ this.onTseProgReadExtended.next(
190
+ new MsgCvRead(MsgCvRead.header(mode, nid), NID, cfgNum, cvValue)
191
+ );
105
192
  }
106
193
  }
107
194
 
@@ -111,31 +198,27 @@ export default class TrackCfgGroup {
111
198
  const NID = buffer.readUInt16LE(0);
112
199
  const cfgNum = buffer.readUInt32LE(2);
113
200
  const cvValue = buffer.readUint8(6);
201
+ // this.mx10.log.next("parseTseProgWrite: " + JSON.stringify(buffer));
114
202
 
115
- this.onTseProgWriteExtended.next({
116
- nid: NID,
117
- cfgNum,
118
- cvValue,
119
- });
203
+ this.onTseProgWriteExtended.next(
204
+ new MsgCvWrite(MsgCvWrite.header(mode, nid), NID, cfgNum, cvValue)
205
+ );
120
206
  }
121
207
  }
122
208
 
123
- // 0x16.0x0d
124
- parseTseProgWrite16(size: number, mode: number, nid: number, buffer: Buffer) {
125
- if (this.onTseProgWrite16Extended.observed) {
126
-
127
- if(buffer.length < 6)
128
- throw new Error('parseTseProgWrite16 rx: ' + buffer);
129
-
130
- const NID = buffer.readUInt16LE(0);
131
- const cfgNum = buffer.readUint16LE(2);
132
- const cvValue = buffer.readUint16LE(4);
133
-
134
- this.onTseProgWrite16Extended.next({
135
- nid: NID,
136
- cfgNum,
137
- cvValue,
138
- });
139
- }
209
+ // 0x16.0x0d
210
+ parseTseProgWrite16(size: number, mode: number, nid: number, buffer: Buffer) {
211
+ if (this.onTseProgWrite16Extended.observed) {
212
+
213
+ if(buffer.length < 6)
214
+ throw new Error('parseTseProgWrite16 rx: ' + JSON.stringify(buffer));
215
+
216
+ const NID = buffer.readUInt16LE(0);
217
+ const cfgNum = buffer.readUint16LE(2);
218
+ const cvValue = buffer.readUint16LE(4);
219
+
220
+ this.onTseProgWrite16Extended.next(
221
+ new MsgCvWrite(MsgCvWrite.header(mode, nid), NID, cfgNum, cvValue));
140
222
  }
223
+ }
141
224
  }