@zimo-elektronik/zcan 1.0.11 → 1.0.13

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.
@@ -197,3 +197,8 @@ export interface AccessoryPortData {
197
197
  mode: number;
198
198
  port: number;
199
199
  }
200
+ export interface AccessoryPinData {
201
+ nid: number;
202
+ pin: number;
203
+ state: number;
204
+ }
@@ -1,14 +1,17 @@
1
1
  import { Subject } from 'rxjs';
2
2
  import MX10 from '../MX10';
3
- import { AccessoryModeData, AccessoryPortData } from '../@types/models';
3
+ import { AccessoryModeData, AccessoryPinData, AccessoryPortData } from '../@types/models';
4
4
  export default class AccessoryCommandGroup {
5
5
  readonly onAccessoryMode: Subject<AccessoryModeData>;
6
6
  readonly onAccessoryPort: Subject<AccessoryPortData>;
7
+ readonly onAccessoryPin: Subject<AccessoryPinData>;
7
8
  private mx10;
8
9
  constructor(mx10: MX10);
9
10
  accessoryModeByNid(nid: number): void;
10
11
  accessoryPortByNid(nid: number): void;
12
+ accessoryPortByPin(nid: number, pin: number, state: number): void;
11
13
  parse(size: number, command: number, mode: number, nid: number, buffer: Buffer): void;
12
14
  parseAccessoryMode(size: number, mode: number, nid: number, buffer: Buffer): void;
13
15
  parseAccessoryPort(size: number, mode: number, nid: number, buffer: Buffer): void;
16
+ parseAccessoryPin(size: number, mode: number, nid: number, buffer: Buffer): void;
14
17
  }
@@ -3,6 +3,7 @@ import { AccessoryMode } from '../util/enums';
3
3
  export default class AccessoryCommandGroup {
4
4
  onAccessoryMode = new Subject();
5
5
  onAccessoryPort = new Subject();
6
+ onAccessoryPin = new Subject();
6
7
  mx10;
7
8
  constructor(mx10) {
8
9
  this.mx10 = mx10;
@@ -16,6 +17,13 @@ export default class AccessoryCommandGroup {
16
17
  { value: 0, length: 2 },
17
18
  ], 0b00);
18
19
  }
20
+ accessoryPortByPin(nid, pin, state) {
21
+ this.mx10.sendData(0x01, 0x04, [
22
+ { value: nid, length: 2 },
23
+ { value: pin, length: 1 },
24
+ { value: state, length: 1 },
25
+ ], 0b01);
26
+ }
19
27
  parse(size, command, mode, nid, buffer) {
20
28
  switch (command) {
21
29
  case 0x01:
@@ -24,6 +32,9 @@ export default class AccessoryCommandGroup {
24
32
  case 0x02:
25
33
  this.parseAccessoryPort(size, mode, nid, buffer);
26
34
  break;
35
+ case 0x04:
36
+ this.parseAccessoryPin(size, mode, nid, buffer);
37
+ break;
27
38
  default:
28
39
  console.warn('command not parsed: ' + command.toString());
29
40
  }
@@ -65,5 +76,19 @@ export default class AccessoryCommandGroup {
65
76
  }
66
77
  }
67
78
  }
79
+ parseAccessoryPin(size, mode, nid, buffer) {
80
+ if (this.onAccessoryPin.observed) {
81
+ const deviceNID = buffer.readUInt16LE(0);
82
+ const pin = buffer.readUInt8(2);
83
+ const state = buffer.readUInt8(3);
84
+ if (deviceNID) {
85
+ this.onAccessoryPin.next({
86
+ nid: deviceNID,
87
+ pin,
88
+ state,
89
+ });
90
+ }
91
+ }
92
+ }
68
93
  }
69
94
  //# sourceMappingURL=accessoryCommandGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accessoryCommandGroup.js","sourceRoot":"","sources":["../../src/zcan/accessoryCommandGroup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accessoryCommandGroup.js","sourceRoot":"","sources":["../../src/zcan/accessoryCommandGroup.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.11",
8
+ "version": "1.0.13",
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",
@@ -244,3 +244,8 @@ export interface AccessoryPortData {
244
244
  mode: number;
245
245
  port: number;
246
246
  }
247
+ export interface AccessoryPinData {
248
+ nid: number;
249
+ pin: number;
250
+ state: number;
251
+ }
@@ -1,7 +1,11 @@
1
1
  /* eslint-disable @typescript-eslint/no-unused-vars */
2
2
  import {Subject} from 'rxjs';
3
3
  import MX10 from '../MX10';
4
- import {AccessoryModeData, AccessoryPortData} from '../@types/models';
4
+ import {
5
+ AccessoryModeData,
6
+ AccessoryPinData,
7
+ AccessoryPortData,
8
+ } from '../@types/models';
5
9
  import {AccessoryMode} from '../util/enums';
6
10
 
7
11
  /**
@@ -11,6 +15,7 @@ import {AccessoryMode} from '../util/enums';
11
15
  export default class AccessoryCommandGroup {
12
16
  public readonly onAccessoryMode = new Subject<AccessoryModeData>();
13
17
  public readonly onAccessoryPort = new Subject<AccessoryPortData>();
18
+ public readonly onAccessoryPin = new Subject<AccessoryPinData>();
14
19
 
15
20
  private mx10: MX10;
16
21
 
@@ -33,6 +38,18 @@ export default class AccessoryCommandGroup {
33
38
  0b00,
34
39
  );
35
40
  }
41
+ accessoryPortByPin(nid: number, pin: number, state: number) {
42
+ this.mx10.sendData(
43
+ 0x01,
44
+ 0x04,
45
+ [
46
+ {value: nid, length: 2},
47
+ {value: pin, length: 1},
48
+ {value: state, length: 1},
49
+ ],
50
+ 0b01,
51
+ );
52
+ }
36
53
 
37
54
  parse(
38
55
  size: number,
@@ -48,6 +65,9 @@ export default class AccessoryCommandGroup {
48
65
  case 0x02:
49
66
  this.parseAccessoryPort(size, mode, nid, buffer);
50
67
  break;
68
+ case 0x04:
69
+ this.parseAccessoryPin(size, mode, nid, buffer);
70
+ break;
51
71
  default:
52
72
  // eslint-disable-next-line no-console
53
73
  console.warn('command not parsed: ' + command.toString());
@@ -95,4 +115,20 @@ export default class AccessoryCommandGroup {
95
115
  }
96
116
  }
97
117
  }
118
+
119
+ parseAccessoryPin(size: number, mode: number, nid: number, buffer: Buffer) {
120
+ if (this.onAccessoryPin.observed) {
121
+ const deviceNID = buffer.readUInt16LE(0);
122
+ const pin = buffer.readUInt8(2);
123
+ const state = buffer.readUInt8(3);
124
+
125
+ if (deviceNID) {
126
+ this.onAccessoryPin.next({
127
+ nid: deviceNID,
128
+ pin,
129
+ state,
130
+ });
131
+ }
132
+ }
133
+ }
98
134
  }