@zimo-elektronik/zcan 1.0.25 → 1.0.27

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.
@@ -1,4 +1,4 @@
1
- import { NameType, Direction, ExternalController, FunctionMode, OperatingMode, SystemStateMode, TrackMode, ImageType, FxInfoType, SpecialFunctionMode, Manual, DirectionDefault, ShuntingFunction, BidiType, ForwardOrReverse, AccessoryMode } from 'src/util/enums';
1
+ import { NameType, Direction, ExternalController, FunctionMode, OperatingMode, SystemStateMode, TrackMode, ImageType, FxConfigType, SpecialFunctionMode, Manual, DirectionDefault, ShuntingFunction, BidiType, ForwardOrReverse, AccessoryMode, FxModeType } from 'src/util/enums';
2
2
  import { ZcanDataArray } from './communication';
3
3
  export interface Train {
4
4
  nid: number;
@@ -156,10 +156,15 @@ export interface ItemImageData {
156
156
  type: ImageType;
157
157
  imageId: number;
158
158
  }
159
- export interface ItemFxInfo {
159
+ export interface ItemFxMode {
160
+ nid: number;
161
+ group: number;
162
+ mode: FxModeType[];
163
+ }
164
+ export interface ItemFxConfig {
160
165
  nid: number;
161
166
  function: number;
162
- type: FxInfoType;
167
+ item: FxConfigType;
163
168
  data: number;
164
169
  }
165
170
  export interface TseInfoExtended {
@@ -73,8 +73,20 @@ export declare enum ImageType {
73
73
  VEHICLE_INSTRUMENT_BRAKE_BAR = 10,
74
74
  VEHICLE_INSTRUMENT = 31
75
75
  }
76
- export declare enum FxInfoType {
77
- ICON = 16
76
+ export declare enum FxModeType {
77
+ TOGGLE = 0,
78
+ MOMENT = 1,
79
+ TIMEOUT = 2,
80
+ EXTENDED = 3
81
+ }
82
+ export declare enum FxConfigType {
83
+ REDIRECT_ADDR = 1,
84
+ MODE = 2,
85
+ FREE = 3,
86
+ TIME_VALUE_1 = 4,
87
+ TIME_VALUE_2 = 5,
88
+ ICON = 16,
89
+ SOUND = 17
78
90
  }
79
91
  export declare enum SpecialFunctionMode {
80
92
  MANUAL = 1,
@@ -89,10 +89,23 @@ export var ImageType;
89
89
  ImageType[ImageType["VEHICLE_INSTRUMENT_BRAKE_BAR"] = 10] = "VEHICLE_INSTRUMENT_BRAKE_BAR";
90
90
  ImageType[ImageType["VEHICLE_INSTRUMENT"] = 31] = "VEHICLE_INSTRUMENT";
91
91
  })(ImageType || (ImageType = {}));
92
- export var FxInfoType;
93
- (function (FxInfoType) {
94
- FxInfoType[FxInfoType["ICON"] = 16] = "ICON";
95
- })(FxInfoType || (FxInfoType = {}));
92
+ export var FxModeType;
93
+ (function (FxModeType) {
94
+ FxModeType[FxModeType["TOGGLE"] = 0] = "TOGGLE";
95
+ FxModeType[FxModeType["MOMENT"] = 1] = "MOMENT";
96
+ FxModeType[FxModeType["TIMEOUT"] = 2] = "TIMEOUT";
97
+ FxModeType[FxModeType["EXTENDED"] = 3] = "EXTENDED";
98
+ })(FxModeType || (FxModeType = {}));
99
+ export var FxConfigType;
100
+ (function (FxConfigType) {
101
+ FxConfigType[FxConfigType["REDIRECT_ADDR"] = 1] = "REDIRECT_ADDR";
102
+ FxConfigType[FxConfigType["MODE"] = 2] = "MODE";
103
+ FxConfigType[FxConfigType["FREE"] = 3] = "FREE";
104
+ FxConfigType[FxConfigType["TIME_VALUE_1"] = 4] = "TIME_VALUE_1";
105
+ FxConfigType[FxConfigType["TIME_VALUE_2"] = 5] = "TIME_VALUE_2";
106
+ FxConfigType[FxConfigType["ICON"] = 16] = "ICON";
107
+ FxConfigType[FxConfigType["SOUND"] = 17] = "SOUND";
108
+ })(FxConfigType || (FxConfigType = {}));
96
109
  export var SpecialFunctionMode;
97
110
  (function (SpecialFunctionMode) {
98
111
  SpecialFunctionMode[SpecialFunctionMode["MANUAL"] = 1] = "MANUAL";
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/util/enums.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/util/enums.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,27 @@
1
1
  import MX10 from '../MX10';
2
2
  import { Buffer } from 'buffer';
3
3
  import { Subject } from 'rxjs';
4
- import { RemoveLocomotiveData, DataNameExtended, GroupCountData, ItemFxInfo, ItemImageData, ItemListByIndexData, ItemListByNidData } from '../@types/models';
5
- import { FxInfoType, ImageType } from '../util/enums';
4
+ import { RemoveLocomotiveData, DataNameExtended, GroupCountData, ItemFxMode, ItemFxConfig, ItemImageData, ItemListByIndexData, ItemListByNidData } from '../@types/models';
5
+ import { FxConfigType, FxModeType, ImageType } from '../util/enums';
6
6
  export default class DataGroup {
7
7
  readonly onGroupCount: Subject<GroupCountData>;
8
8
  readonly onListItemsByIndex: Subject<ItemListByIndexData>;
9
9
  readonly onListItemsByNID: Subject<ItemListByNidData>;
10
10
  readonly onRemoveLocomotive: Subject<RemoveLocomotiveData>;
11
11
  readonly onItemImageConfig: Subject<ItemImageData>;
12
- readonly onItemFxInfo: Subject<ItemFxInfo>;
12
+ readonly onItemFxMode: Subject<ItemFxMode>;
13
+ readonly onItemFxConfig: Subject<ItemFxConfig>;
13
14
  readonly onDataNameExtended: Subject<DataNameExtended>;
14
15
  private mx10;
16
+ private fxModeRequest;
15
17
  constructor(mx10: MX10);
16
18
  groupCount(objType?: number): void;
17
19
  listItemsByIndex(groupNID: number, index: number): void;
18
20
  listItemsByNID(searchAfterValue: number): void;
19
21
  removeLocomotive(toRemove: number, removeFrom?: number): void;
20
22
  itemImageConfig(nid: number, type: ImageType, imageId: number): void;
21
- itemFxInfo(nid: number, fx: number, type: FxInfoType, data: number): void;
23
+ itemFxMode(nid: number, group: number, mode: number[]): void;
24
+ itemFxConfig(nid: number, fx: number, item: FxConfigType, data: number): void;
22
25
  dataNameExtended(NID: number, subID: number, name: string): void;
23
26
  parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
24
27
  private parseGroupCount;
@@ -26,6 +29,8 @@ export default class DataGroup {
26
29
  private parseItemListByNid;
27
30
  private parseDataClear;
28
31
  private parseItemImageConfig;
29
- private parseItemFxInfo;
32
+ private parseItemFxMode;
33
+ setItemFxMode(trainNid: number, fxId: number, mode: FxModeType): void;
34
+ private parseItemFxConfig;
30
35
  private parseDataNameExtended;
31
36
  }
@@ -1,4 +1,4 @@
1
- import { Subject } from 'rxjs';
1
+ import { delay, Subject } from 'rxjs';
2
2
  import { NameType } from '../util/enums';
3
3
  import ExtendedASCII from '../util/extended-ascii';
4
4
  export default class DataGroup {
@@ -7,9 +7,11 @@ export default class DataGroup {
7
7
  onListItemsByNID = new Subject();
8
8
  onRemoveLocomotive = new Subject();
9
9
  onItemImageConfig = new Subject();
10
- onItemFxInfo = new Subject();
10
+ onItemFxMode = new Subject();
11
+ onItemFxConfig = new Subject();
11
12
  onDataNameExtended = new Subject();
12
13
  mx10;
14
+ fxModeRequest;
13
15
  constructor(mx10) {
14
16
  this.mx10 = mx10;
15
17
  }
@@ -45,12 +47,22 @@ export default class DataGroup {
45
47
  { value: imageId, length: 2 },
46
48
  ]);
47
49
  }
48
- itemFxInfo(nid, fx, type, data) {
50
+ itemFxMode(nid, group, mode) {
51
+ this.mx10.sendData(0x07, 0x14, [
52
+ { value: nid, length: 2 },
53
+ { value: group, length: 1 },
54
+ { value: 0, length: 1 },
55
+ { value: mode[0] | (mode[1] << 2) | (mode[2] << 4) | (mode[3] << 6), length: 1 },
56
+ { value: mode[4] | (mode[5] << 2) | (mode[6] << 4) | (mode[7] << 6), length: 1 },
57
+ { value: mode[8] | (mode[9] << 2) | (mode[10] << 4) | (mode[11] << 6), length: 1 },
58
+ { value: mode[12] | (mode[13] << 2) | (mode[14] << 4) | (mode[15] << 6), length: 1 },
59
+ ]);
60
+ }
61
+ itemFxConfig(nid, fx, item, data) {
49
62
  this.mx10.sendData(0x07, 0x15, [
50
63
  { value: nid, length: 2 },
51
64
  { value: fx, length: 2 },
52
- { value: 0, length: 1 },
53
- { value: type, length: 1 },
65
+ { value: item, length: 2 },
54
66
  { value: data, length: 2 },
55
67
  ]);
56
68
  }
@@ -78,8 +90,11 @@ export default class DataGroup {
78
90
  case 0x12:
79
91
  this.parseItemImageConfig(size, mode, nid, buffer);
80
92
  break;
93
+ case 0x14:
94
+ this.parseItemFxMode(size, mode, nid, buffer);
95
+ break;
81
96
  case 0x15:
82
- this.parseItemFxInfo(size, mode, nid, buffer);
97
+ this.parseItemFxConfig(size, mode, nid, buffer);
83
98
  break;
84
99
  case 0x1f:
85
100
  this.parseDataClear(size, mode, nid, buffer);
@@ -151,18 +166,61 @@ export default class DataGroup {
151
166
  });
152
167
  }
153
168
  }
154
- parseItemFxInfo(size, mode, nid, buffer) {
155
- if (this.onItemFxInfo.observed) {
169
+ parseItemFxMode(size, mode, nid, buffer) {
170
+ if (this.onItemFxMode.observed) {
171
+ const NID = buffer.readUInt16LE(0);
172
+ const group = buffer.readUInt8(2);
173
+ const modes = buffer.readUInt32LE(4);
174
+ const mode = [];
175
+ for (let i = 0; i < 32; i += 2) {
176
+ mode.push((modes >> i) & 0b11);
177
+ }
178
+ const msg = {
179
+ nid: NID,
180
+ group,
181
+ mode,
182
+ };
183
+ this.mx10.log.next('parseItemFxMode: ' + JSON.stringify(msg));
184
+ this.onItemFxMode.next(msg);
185
+ }
186
+ }
187
+ setItemFxMode(trainNid, fxId, mode) {
188
+ let wait = 50;
189
+ while (this.fxModeRequest !== undefined) {
190
+ delay(10);
191
+ if (!wait--)
192
+ return;
193
+ }
194
+ const group = fxId / 16;
195
+ this.fxModeRequest = { msg: { nid: trainNid, group: group, mode: [] },
196
+ rcv: this.onItemFxMode.subscribe((data) => {
197
+ if (this.fxModeRequest === undefined)
198
+ return;
199
+ if (data.nid !== this.fxModeRequest.msg.nid)
200
+ return;
201
+ if (data.group !== this.fxModeRequest.msg.group)
202
+ return;
203
+ this.fxModeRequest.msg.mode = data.mode;
204
+ this.fxModeRequest.rcv.unsubscribe();
205
+ }) };
206
+ this.fxModeRequest.msg.mode[fxId] = mode;
207
+ this.itemFxMode(trainNid, group, this.fxModeRequest.msg.mode);
208
+ this.fxModeRequest = undefined;
209
+ }
210
+ parseItemFxConfig(size, mode, nid, buffer) {
211
+ if (this.onItemFxConfig.observed) {
156
212
  const NID = buffer.readUInt16LE(0);
157
213
  const fx = buffer.readUInt16LE(2);
158
- const type = buffer.readUInt8(5);
214
+ const item = buffer.readUInt16LE(4);
159
215
  const data = buffer.readUInt16LE(6);
160
- this.onItemFxInfo.next({
216
+ const msg = {
161
217
  nid: NID,
162
218
  function: fx,
163
- type,
219
+ item,
164
220
  data,
165
- });
221
+ };
222
+ this.mx10.log.next('parseItemFxMode: ' + JSON.stringify(msg));
223
+ this.onItemFxConfig.next(msg);
166
224
  }
167
225
  }
168
226
  parseDataNameExtended(size, mode, nid, buffer) {
@@ -1 +1 @@
1
- {"version":3,"file":"dataGroup.js","sourceRoot":"","sources":["../../src/zcan/dataGroup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataGroup.js","sourceRoot":"","sources":["../../src/zcan/dataGroup.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.25",
8
+ "version": "1.0.27",
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",
@@ -7,7 +7,7 @@ import {
7
7
  SystemStateMode,
8
8
  TrackMode,
9
9
  ImageType,
10
- FxInfoType,
10
+ FxConfigType,
11
11
  SpecialFunctionMode,
12
12
  Manual,
13
13
  DirectionDefault,
@@ -15,6 +15,7 @@ import {
15
15
  BidiType,
16
16
  ForwardOrReverse,
17
17
  AccessoryMode,
18
+ FxModeType,
18
19
  } from 'src/util/enums';
19
20
  import {ZcanDataArray} from './communication';
20
21
 
@@ -198,10 +199,16 @@ export interface ItemImageData {
198
199
  imageId: number;
199
200
  }
200
201
 
201
- export interface ItemFxInfo {
202
+ export interface ItemFxMode {
203
+ nid: number;
204
+ group: number;
205
+ mode: FxModeType[];
206
+ }
207
+
208
+ export interface ItemFxConfig {
202
209
  nid: number;
203
210
  function: number;
204
- type: FxInfoType;
211
+ item: FxConfigType;
205
212
  data: number;
206
213
  }
207
214
 
package/src/util/enums.ts CHANGED
@@ -101,8 +101,21 @@ export enum ImageType {
101
101
  VEHICLE_INSTRUMENT = 0x1f,
102
102
  }
103
103
 
104
- export enum FxInfoType {
104
+ export enum FxModeType {
105
+ TOGGLE = 0b00,
106
+ MOMENT = 0b01,
107
+ TIMEOUT = 0b10,
108
+ EXTENDED = 0b11,
109
+ }
110
+
111
+ export enum FxConfigType {
112
+ REDIRECT_ADDR = 0x01,
113
+ MODE = 0x02,
114
+ FREE = 0x03,
115
+ TIME_VALUE_1 = 0x04,
116
+ TIME_VALUE_2 = 0x05,
105
117
  ICON = 0x10,
118
+ SOUND = 0x11,
106
119
  }
107
120
 
108
121
  export enum SpecialFunctionMode {
@@ -1,18 +1,19 @@
1
1
  // 0x07
2
2
  import MX10 from '../MX10';
3
3
  import {Buffer} from 'buffer';
4
- import {Subject} from 'rxjs';
4
+ import {delay, Subject, Subscription} from 'rxjs';
5
5
  import {
6
6
  RemoveLocomotiveData,
7
7
  DataNameExtended,
8
8
  DataNameValue1,
9
9
  GroupCountData,
10
- ItemFxInfo,
10
+ ItemFxMode,
11
+ ItemFxConfig,
11
12
  ItemImageData,
12
13
  ItemListByIndexData,
13
14
  ItemListByNidData,
14
15
  } from '../@types/models';
15
- import {FxInfoType, ImageType, NameType} from '../util/enums';
16
+ import {FxConfigType, FxModeType, ImageType, NameType} from '../util/enums';
16
17
  import ExtendedASCII from '../util/extended-ascii';
17
18
 
18
19
  /**
@@ -25,10 +26,12 @@ export default class DataGroup {
25
26
  public readonly onListItemsByNID = new Subject<ItemListByNidData>();
26
27
  public readonly onRemoveLocomotive = new Subject<RemoveLocomotiveData>();
27
28
  public readonly onItemImageConfig = new Subject<ItemImageData>();
28
- public readonly onItemFxInfo = new Subject<ItemFxInfo>();
29
+ public readonly onItemFxMode = new Subject<ItemFxMode>();
30
+ public readonly onItemFxConfig = new Subject<ItemFxConfig>();
29
31
  public readonly onDataNameExtended = new Subject<DataNameExtended>();
30
32
 
31
33
  private mx10: MX10;
34
+ private fxModeRequest: {msg: ItemFxMode, rcv: Subscription} | undefined;
32
35
 
33
36
  constructor(mx10: MX10) {
34
37
  this.mx10 = mx10;
@@ -86,12 +89,23 @@ export default class DataGroup {
86
89
  ]);
87
90
  }
88
91
 
89
- itemFxInfo(nid: number, fx: number, type: FxInfoType, data: number) {
92
+ itemFxMode(nid: number, group: number, mode: number[]) {
93
+ this.mx10.sendData(0x07, 0x14, [
94
+ {value: nid, length: 2},
95
+ {value: group, length: 1},
96
+ {value: 0, length: 1},
97
+ {value: mode[0] | (mode[1]<<2) | (mode[2]<<4) | (mode[3]<<6), length: 1},
98
+ {value: mode[4] | (mode[5]<<2) | (mode[6]<<4) | (mode[7]<<6), length: 1},
99
+ {value: mode[8] | (mode[9]<<2) | (mode[10]<<4) | (mode[11]<<6), length: 1},
100
+ {value: mode[12] | (mode[13]<<2) | (mode[14]<<4) | (mode[15]<<6), length: 1},
101
+ ]);
102
+ }
103
+
104
+ itemFxConfig(nid: number, fx: number, item: FxConfigType, data: number) {
90
105
  this.mx10.sendData(0x07, 0x15, [
91
106
  {value: nid, length: 2},
92
107
  {value: fx, length: 2},
93
- {value: 0, length: 1},
94
- {value: type, length: 1},
108
+ {value: item, length: 2},
95
109
  {value: data, length: 2},
96
110
  ]);
97
111
  }
@@ -132,8 +146,11 @@ export default class DataGroup {
132
146
  case 0x12:
133
147
  this.parseItemImageConfig(size, mode, nid, buffer);
134
148
  break;
149
+ case 0x14:
150
+ this.parseItemFxMode(size, mode, nid, buffer);
151
+ break;
135
152
  case 0x15:
136
- this.parseItemFxInfo(size, mode, nid, buffer);
153
+ this.parseItemFxConfig(size, mode, nid, buffer);
137
154
  break;
138
155
  case 0x1f:
139
156
  this.parseDataClear(size, mode, nid, buffer);
@@ -246,25 +263,82 @@ export default class DataGroup {
246
263
  }
247
264
  }
248
265
 
249
- private parseItemFxInfo(
266
+ // 0x07.0x14
267
+ private parseItemFxMode(
250
268
  size: number,
251
269
  mode: number,
252
270
  nid: number,
253
271
  buffer: Buffer,
254
272
  ) {
255
- if (this.onItemFxInfo.observed) {
273
+ if (this.onItemFxMode.observed) {
274
+ const NID = buffer.readUInt16LE(0);
275
+ const group = buffer.readUInt8(2);
276
+ const modes = buffer.readUInt32LE(4);
277
+
278
+ const mode: FxModeType[] = [];
279
+ for(let i=0; i<32; i+=2) {
280
+ mode.push((modes>>i)&0b11);
281
+ }
282
+
283
+ const msg: ItemFxMode = {
284
+ nid: NID,
285
+ group,
286
+ mode,
287
+ };
288
+ this.mx10.log.next('parseItemFxMode: ' + JSON.stringify(msg));
289
+ this.onItemFxMode.next(msg);
290
+ }
291
+ }
292
+
293
+ setItemFxMode(trainNid: number, fxId: number, mode: FxModeType)
294
+ {
295
+ let wait = 50;
296
+ while(this.fxModeRequest !== undefined)
297
+ {
298
+ delay(10);
299
+ if(!wait--)
300
+ return;
301
+ }
302
+
303
+ const group = fxId / 16;
304
+ this.fxModeRequest = {msg: {nid: trainNid, group: group, mode: []},
305
+ rcv: this.onItemFxMode.subscribe((data: ItemFxMode) => {
306
+ if(this.fxModeRequest === undefined)
307
+ return;
308
+ if(data.nid !== this.fxModeRequest.msg.nid)
309
+ return;
310
+ if(data.group !== this.fxModeRequest.msg.group)
311
+ return;
312
+ this.fxModeRequest.msg.mode = data.mode;
313
+ this.fxModeRequest.rcv.unsubscribe();
314
+ })};
315
+
316
+ this.fxModeRequest.msg.mode[fxId] = mode;
317
+ this.itemFxMode(trainNid, group, this.fxModeRequest.msg.mode);
318
+ this.fxModeRequest = undefined;
319
+ }
320
+
321
+ // 0x07.0x15
322
+ private parseItemFxConfig(
323
+ size: number,
324
+ mode: number,
325
+ nid: number,
326
+ buffer: Buffer,
327
+ ) {
328
+ if (this.onItemFxConfig.observed) {
256
329
  const NID = buffer.readUInt16LE(0);
257
330
  const fx = buffer.readUInt16LE(2);
258
- // const base = buffer.readUInt8(4);
259
- const type = buffer.readUInt8(5);
331
+ const item = buffer.readUInt16LE(4);
260
332
  const data = buffer.readUInt16LE(6);
261
333
 
262
- this.onItemFxInfo.next({
334
+ const msg: ItemFxConfig = {
263
335
  nid: NID,
264
336
  function: fx,
265
- type,
337
+ item,
266
338
  data,
267
- });
339
+ };
340
+ this.mx10.log.next('parseItemFxMode: ' + JSON.stringify(msg));
341
+ this.onItemFxConfig.next(msg);
268
342
  }
269
343
  }
270
344
 
package/tst ADDED
File without changes