@zimo-elektronik/zcan 1.0.0 → 1.0.2
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/@types/models.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { NameType, Direction, ExternalController, FunctionMode, OperatingMode, SystemStateMode, TrackMode, ImageType, FxInfoType, SpecialFunctionMode, Manual, DirectionDefault, ShuntingFunction, BidiType, ForwardOrReverse } from 'src/util/enums';
|
|
2
|
+
import { ZcanDataArray } from './communication';
|
|
2
3
|
export interface Train {
|
|
3
4
|
nid: number;
|
|
4
5
|
subId: number;
|
|
@@ -18,6 +19,9 @@ export interface Train {
|
|
|
18
19
|
}
|
|
19
20
|
export interface LocoGuiMXExtended {
|
|
20
21
|
nid: number;
|
|
22
|
+
name: string;
|
|
23
|
+
image?: string;
|
|
24
|
+
destructuredBuffer: ZcanDataArray;
|
|
21
25
|
functions: TrainFunction[];
|
|
22
26
|
}
|
|
23
27
|
export interface TrainFunction {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import MX10 from '../MX10';
|
|
2
2
|
import { DataValueExtendedData, LocoGuiMXExtended, LocoSpeedTabExtended, Train } from '../@types/models';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
|
+
import { ZcanDataArray } from 'src/@types/communication';
|
|
4
5
|
export default class LanDataGroup {
|
|
5
6
|
readonly onLocoGuiExtended: Subject<Train>;
|
|
6
7
|
readonly onLocoGuiMXExtended: Subject<LocoGuiMXExtended>;
|
|
@@ -12,6 +13,7 @@ export default class LanDataGroup {
|
|
|
12
13
|
locoGuiMXExtended(NID: number): void;
|
|
13
14
|
dataValueExtended(NID: number): void;
|
|
14
15
|
locoSpeedTapExtended(NID: number): void;
|
|
16
|
+
mxUpdateFnIcons(destructuredBuffer: ZcanDataArray): Promise<void>;
|
|
15
17
|
parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
|
|
16
18
|
private parseDataValueExtended;
|
|
17
19
|
private parseLocoGuiExtended;
|
|
@@ -20,4 +22,5 @@ export default class LanDataGroup {
|
|
|
20
22
|
private parseEra;
|
|
21
23
|
private parseFlags;
|
|
22
24
|
private parseDeleted;
|
|
25
|
+
private destructureBuffer;
|
|
23
26
|
}
|
|
@@ -41,6 +41,9 @@ export default class LanDataGroup {
|
|
|
41
41
|
{ value: 0, length: 1 },
|
|
42
42
|
], 0b00);
|
|
43
43
|
}
|
|
44
|
+
async mxUpdateFnIcons(destructuredBuffer) {
|
|
45
|
+
this.mx10.sendData(0x17, 0x28, destructuredBuffer, 0b01);
|
|
46
|
+
}
|
|
44
47
|
parse(size, command, mode, nid, buffer) {
|
|
45
48
|
switch (command) {
|
|
46
49
|
case 0x08:
|
|
@@ -140,6 +143,8 @@ export default class LanDataGroup {
|
|
|
140
143
|
parseLocoGuiMXExtended(size, mode, nid, buffer) {
|
|
141
144
|
if (this.onLocoGuiMXExtended.observed) {
|
|
142
145
|
const NID = buffer.readUInt16LE(0);
|
|
146
|
+
const name = ExtendedASCII.byte2str(buffer.subarray(12, 38));
|
|
147
|
+
const imageId = buffer.readUInt16LE(44);
|
|
143
148
|
const functions = Array();
|
|
144
149
|
for (let i = 0; i < 33; i++) {
|
|
145
150
|
const icon = buffer.readUInt16LE(68 + i * 2);
|
|
@@ -152,6 +157,9 @@ export default class LanDataGroup {
|
|
|
152
157
|
}
|
|
153
158
|
this.onLocoGuiMXExtended.next({
|
|
154
159
|
nid: NID,
|
|
160
|
+
name: name,
|
|
161
|
+
image: imageId == 0 ? undefined : imageId.toString(),
|
|
162
|
+
destructuredBuffer: this.destructureBuffer(buffer),
|
|
155
163
|
functions,
|
|
156
164
|
});
|
|
157
165
|
}
|
|
@@ -222,5 +230,15 @@ export default class LanDataGroup {
|
|
|
222
230
|
parseDeleted(parseDeletedFlag) {
|
|
223
231
|
return parseDeletedFlag === 1;
|
|
224
232
|
}
|
|
233
|
+
destructureBuffer(buffer) {
|
|
234
|
+
const values = [];
|
|
235
|
+
for (let i = 0; i < buffer.length; i += 2) {
|
|
236
|
+
values.push({
|
|
237
|
+
value: buffer.readUInt16LE(i),
|
|
238
|
+
length: 2,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
return values;
|
|
242
|
+
}
|
|
225
243
|
}
|
|
226
244
|
//# sourceMappingURL=lanDataGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lanDataGroup.js","sourceRoot":"","sources":["../../src/zcan/lanDataGroup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,eAAe,CAAC;AAU5E,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"lanDataGroup.js","sourceRoot":"","sources":["../../src/zcan/lanDataGroup.ts"],"names":[],"mappings":"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"}
|
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.
|
|
8
|
+
"version": "1.0.2",
|
|
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/@types/models.ts
CHANGED
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
BidiType,
|
|
16
16
|
ForwardOrReverse,
|
|
17
17
|
} from 'src/util/enums';
|
|
18
|
+
import {ZcanDataArray} from './communication';
|
|
18
19
|
|
|
19
20
|
export interface Train {
|
|
20
21
|
nid: number;
|
|
@@ -36,6 +37,9 @@ export interface Train {
|
|
|
36
37
|
|
|
37
38
|
export interface LocoGuiMXExtended {
|
|
38
39
|
nid: number;
|
|
40
|
+
name: string;
|
|
41
|
+
image?: string;
|
|
42
|
+
destructuredBuffer: ZcanDataArray;
|
|
39
43
|
functions: TrainFunction[];
|
|
40
44
|
}
|
|
41
45
|
|
package/src/zcan/lanDataGroup.ts
CHANGED
|
@@ -14,6 +14,7 @@ import {Subject} from 'rxjs';
|
|
|
14
14
|
import {parseSpeed} from '../internal/speedUtils';
|
|
15
15
|
import ExtendedASCII from '../util/extended-ascii';
|
|
16
16
|
import {manualModeB, shuntingFunctionB} from '../internal/bites';
|
|
17
|
+
import {ZcanDataArray} from 'src/@types/communication';
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
*
|
|
@@ -84,6 +85,10 @@ export default class LanDataGroup {
|
|
|
84
85
|
);
|
|
85
86
|
}
|
|
86
87
|
|
|
88
|
+
async mxUpdateFnIcons(destructuredBuffer: ZcanDataArray) {
|
|
89
|
+
this.mx10.sendData(0x17, 0x28, destructuredBuffer, 0b01);
|
|
90
|
+
}
|
|
91
|
+
|
|
87
92
|
parse(
|
|
88
93
|
size: number,
|
|
89
94
|
command: number,
|
|
@@ -221,6 +226,8 @@ export default class LanDataGroup {
|
|
|
221
226
|
) {
|
|
222
227
|
if (this.onLocoGuiMXExtended.observed) {
|
|
223
228
|
const NID = buffer.readUInt16LE(0);
|
|
229
|
+
const name = ExtendedASCII.byte2str(buffer.subarray(12, 38));
|
|
230
|
+
const imageId = buffer.readUInt16LE(44);
|
|
224
231
|
|
|
225
232
|
// TODO: after documentation
|
|
226
233
|
// const SubID = buffer.readUInt16LE(2);
|
|
@@ -253,9 +260,9 @@ export default class LanDataGroup {
|
|
|
253
260
|
this.onLocoGuiMXExtended.next({
|
|
254
261
|
nid: NID,
|
|
255
262
|
// subId: SubID,
|
|
256
|
-
|
|
263
|
+
name: name,
|
|
257
264
|
// group: vehicleGroup,
|
|
258
|
-
|
|
265
|
+
image: imageId == 0 ? undefined : imageId.toString(),
|
|
259
266
|
// tacho: tacho.toString(),
|
|
260
267
|
// speedFwd: speedFwd,
|
|
261
268
|
// speedRev: speedRev,
|
|
@@ -264,6 +271,7 @@ export default class LanDataGroup {
|
|
|
264
271
|
// driveType: driveType,
|
|
265
272
|
// era: this.parseEra(era),
|
|
266
273
|
// countryCode: countryCode,
|
|
274
|
+
destructuredBuffer: this.destructureBuffer(buffer),
|
|
267
275
|
functions,
|
|
268
276
|
});
|
|
269
277
|
}
|
|
@@ -358,4 +366,15 @@ export default class LanDataGroup {
|
|
|
358
366
|
private parseDeleted(parseDeletedFlag: number) {
|
|
359
367
|
return parseDeletedFlag === 1;
|
|
360
368
|
}
|
|
369
|
+
|
|
370
|
+
private destructureBuffer(buffer: Buffer): ZcanDataArray {
|
|
371
|
+
const values = [];
|
|
372
|
+
for (let i = 0; i < buffer.length; i += 2) {
|
|
373
|
+
values.push({
|
|
374
|
+
value: buffer.readUInt16LE(i),
|
|
375
|
+
length: 2,
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
return values;
|
|
379
|
+
}
|
|
361
380
|
}
|