@dg-kit/protocol 1.3.0 → 1.5.0
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/base.d.ts +17 -1
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +2 -24
- package/dist/base.js.map +1 -1
- package/dist/civet-edging.d.ts +61 -0
- package/dist/civet-edging.d.ts.map +1 -0
- package/dist/civet-edging.js +152 -0
- package/dist/civet-edging.js.map +1 -0
- package/dist/constants.d.ts +24 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +62 -0
- package/dist/constants.js.map +1 -1
- package/dist/facade.d.ts +14 -2
- package/dist/facade.d.ts.map +1 -1
- package/dist/facade.js +21 -3
- package/dist/facade.js.map +1 -1
- package/dist/gatt-utils.d.ts +42 -0
- package/dist/gatt-utils.d.ts.map +1 -0
- package/dist/gatt-utils.js +99 -0
- package/dist/gatt-utils.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/opossum.d.ts +99 -0
- package/dist/opossum.d.ts.map +1 -0
- package/dist/opossum.js +238 -0
- package/dist/opossum.js.map +1 -0
- package/dist/paw-prints.d.ts +78 -0
- package/dist/paw-prints.d.ts.map +1 -0
- package/dist/paw-prints.js +243 -0
- package/dist/paw-prints.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/v3.d.ts.map +1 -1
- package/dist/v3.js +2 -0
- package/dist/v3.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protocol adapter for the "Paw-Prints" (爪印) wireless button/motion sensor.
|
|
3
|
+
*
|
|
4
|
+
* Shares the exact GATT skeleton with Coyote V3 (service 0x180C, write
|
|
5
|
+
* 0x150A, notify 0x150B, battery 0x180A/0x1500) — only the application-layer
|
|
6
|
+
* opcodes differ, so the transport wiring below mirrors `v3.ts` but the
|
|
7
|
+
* command/notification framing is Paw-Prints-specific.
|
|
8
|
+
*
|
|
9
|
+
* NOTE: the byte layout below is transcribed from a paraphrased summary of
|
|
10
|
+
* the community protocol doc, not a byte-exact spec or a real device
|
|
11
|
+
* capture. Fields called out with a comment are best-effort interpretations
|
|
12
|
+
* that need confirming against real hardware before being treated as
|
|
13
|
+
* authoritative.
|
|
14
|
+
*/
|
|
15
|
+
import { createEmptySensorState } from '@dg-kit/core';
|
|
16
|
+
import { V3_BATTERY_CHAR, V3_BATTERY_SERVICE, V3_NOTIFY_CHAR, V3_PRIMARY_SERVICE, V3_WRITE_CHAR, } from './constants.js';
|
|
17
|
+
import { clampIndicatorColor, performV3FamilyConnectHandshake, writeCharacteristicValue, } from './gatt-utils.js';
|
|
18
|
+
// Outbound command opcodes.
|
|
19
|
+
const CMD_CONFIGURE_TRIGGER = 0x50;
|
|
20
|
+
const CMD_RESET_PARAMETERS = 0x5f;
|
|
21
|
+
const CMD_START_ANGLE_DETECTION = 0x60;
|
|
22
|
+
const CMD_LED_CONTROL = 0x70;
|
|
23
|
+
// Inbound notification opcodes.
|
|
24
|
+
const NOTIFY_STATUS = 0x51;
|
|
25
|
+
const NOTIFY_TRIGGER = 0x5a;
|
|
26
|
+
const NOTIFY_TRIGGER_CANCEL = 0x5b;
|
|
27
|
+
const NOTIFY_PARAMETER_CHANGE = 0x5c;
|
|
28
|
+
const NOTIFY_PHYSICAL = 0xd0;
|
|
29
|
+
const NOTIFY_AUTO_DETECT_RESULT = 0xf1;
|
|
30
|
+
const AUTO_DETECT_RESULT_MARKER = 0x61;
|
|
31
|
+
export class PawPrintsSensorAdapter {
|
|
32
|
+
state = createEmptySensorState();
|
|
33
|
+
writeChar = null;
|
|
34
|
+
notifyChar = null;
|
|
35
|
+
batteryChar = null;
|
|
36
|
+
readingListeners = new Set();
|
|
37
|
+
stateListeners = new Set();
|
|
38
|
+
async onConnected(context) {
|
|
39
|
+
await this.resetConnection(false);
|
|
40
|
+
try {
|
|
41
|
+
this.state = {
|
|
42
|
+
...createEmptySensorState(),
|
|
43
|
+
connected: true,
|
|
44
|
+
deviceName: context.device.name ?? '',
|
|
45
|
+
address: context.device.id ?? '',
|
|
46
|
+
};
|
|
47
|
+
const primaryService = await context.server.getPrimaryService(V3_PRIMARY_SERVICE);
|
|
48
|
+
this.writeChar = await primaryService.getCharacteristic(V3_WRITE_CHAR);
|
|
49
|
+
this.notifyChar = await primaryService.getCharacteristic(V3_NOTIFY_CHAR);
|
|
50
|
+
await this.notifyChar.startNotifications();
|
|
51
|
+
this.notifyChar.addEventListener('characteristicvaluechanged', this.handleNotification);
|
|
52
|
+
await performV3FamilyConnectHandshake(context.server, this.writeChar);
|
|
53
|
+
// Battery read is best-effort: some firmware/pairing states expose the
|
|
54
|
+
// service but reject the read, so a failure here shouldn't fail the
|
|
55
|
+
// whole connection.
|
|
56
|
+
try {
|
|
57
|
+
const batteryService = await context.server.getPrimaryService(V3_BATTERY_SERVICE);
|
|
58
|
+
this.batteryChar = await batteryService.getCharacteristic(V3_BATTERY_CHAR);
|
|
59
|
+
const value = await this.batteryChar.readValue();
|
|
60
|
+
this.state = { ...this.state, battery: value.getUint8(0) };
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
this.state = { ...this.state, battery: 0 };
|
|
64
|
+
}
|
|
65
|
+
this.emitState();
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
await this.resetConnection(false);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async onDisconnected() {
|
|
73
|
+
await this.resetConnection(true);
|
|
74
|
+
}
|
|
75
|
+
getState() {
|
|
76
|
+
return { ...this.state };
|
|
77
|
+
}
|
|
78
|
+
subscribe(listener) {
|
|
79
|
+
this.readingListeners.add(listener);
|
|
80
|
+
return () => {
|
|
81
|
+
this.readingListeners.delete(listener);
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
onStateChanged(listener) {
|
|
85
|
+
this.stateListeners.add(listener);
|
|
86
|
+
return () => {
|
|
87
|
+
this.stateListeners.delete(listener);
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Sends the 0x50 config/trigger command. `config` is copied into the
|
|
92
|
+
* 14-byte trailing config block (truncated if longer, zero-padded if
|
|
93
|
+
* shorter/omitted).
|
|
94
|
+
*/
|
|
95
|
+
async configureTrigger(mode, color, config) {
|
|
96
|
+
const packet = new Uint8Array(17);
|
|
97
|
+
packet[0] = CMD_CONFIGURE_TRIGGER;
|
|
98
|
+
packet[1] = color;
|
|
99
|
+
packet[2] = mode;
|
|
100
|
+
if (config) {
|
|
101
|
+
packet.set(config.subarray(0, 14), 3);
|
|
102
|
+
}
|
|
103
|
+
await this.writeCommand(packet);
|
|
104
|
+
}
|
|
105
|
+
async resetParameters() {
|
|
106
|
+
await this.writeCommand(Uint8Array.of(CMD_RESET_PARAMETERS));
|
|
107
|
+
}
|
|
108
|
+
async startAngleDetection() {
|
|
109
|
+
await this.writeCommand(Uint8Array.of(CMD_START_ANGLE_DETECTION));
|
|
110
|
+
}
|
|
111
|
+
async setLedSolid(color) {
|
|
112
|
+
await this.writeCommand(Uint8Array.of(CMD_LED_CONTROL, clampIndicatorColor(color)));
|
|
113
|
+
}
|
|
114
|
+
async setLedBlink(color1, color2, speed) {
|
|
115
|
+
await this.writeCommand(Uint8Array.of(CMD_LED_CONTROL, clampIndicatorColor(color1), clampIndicatorColor(color2), speed));
|
|
116
|
+
}
|
|
117
|
+
async resetConnection(emit) {
|
|
118
|
+
if (this.notifyChar) {
|
|
119
|
+
this.notifyChar.removeEventListener('characteristicvaluechanged', this.handleNotification);
|
|
120
|
+
try {
|
|
121
|
+
await this.notifyChar.stopNotifications();
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// best effort — device may already be gone
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
this.writeChar = null;
|
|
128
|
+
this.notifyChar = null;
|
|
129
|
+
this.batteryChar = null;
|
|
130
|
+
const previousDeviceName = this.state.deviceName;
|
|
131
|
+
const previousAddress = this.state.address;
|
|
132
|
+
this.state = {
|
|
133
|
+
...createEmptySensorState(),
|
|
134
|
+
deviceName: previousDeviceName,
|
|
135
|
+
address: previousAddress,
|
|
136
|
+
};
|
|
137
|
+
if (emit) {
|
|
138
|
+
this.emitState();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
emitState() {
|
|
142
|
+
const snapshot = this.getState();
|
|
143
|
+
for (const listener of this.stateListeners) {
|
|
144
|
+
listener(snapshot);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async writeCommand(bytes) {
|
|
148
|
+
if (!this.writeChar) {
|
|
149
|
+
throw new Error('Paw-Prints sensor is not connected');
|
|
150
|
+
}
|
|
151
|
+
await writeCharacteristicValue(this.writeChar, bytes);
|
|
152
|
+
}
|
|
153
|
+
handleNotification = (event) => {
|
|
154
|
+
const target = event.target;
|
|
155
|
+
const value = target?.value;
|
|
156
|
+
if (!value || value.byteLength < 1)
|
|
157
|
+
return;
|
|
158
|
+
const reading = this.parseReading(value);
|
|
159
|
+
if (!reading)
|
|
160
|
+
return;
|
|
161
|
+
for (const listener of this.readingListeners) {
|
|
162
|
+
listener(reading);
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
parseReading(value) {
|
|
166
|
+
const opcode = value.getUint8(0);
|
|
167
|
+
switch (opcode) {
|
|
168
|
+
case NOTIFY_STATUS: {
|
|
169
|
+
if (value.byteLength < 4)
|
|
170
|
+
return null;
|
|
171
|
+
return {
|
|
172
|
+
type: 'status',
|
|
173
|
+
color: value.getUint8(1),
|
|
174
|
+
deviceType: value.getUint8(2),
|
|
175
|
+
battery: value.getUint8(3),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
case NOTIFY_TRIGGER: {
|
|
179
|
+
if (value.byteLength < 4)
|
|
180
|
+
return null;
|
|
181
|
+
return {
|
|
182
|
+
type: 'trigger',
|
|
183
|
+
eventId: value.getUint8(2),
|
|
184
|
+
parameterValue: value.getUint8(3),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
case NOTIFY_TRIGGER_CANCEL: {
|
|
188
|
+
if (value.byteLength < 3)
|
|
189
|
+
return null;
|
|
190
|
+
return {
|
|
191
|
+
type: 'triggerCancel',
|
|
192
|
+
eventId: value.getUint8(2),
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
case NOTIFY_PARAMETER_CHANGE: {
|
|
196
|
+
if (value.byteLength < 4)
|
|
197
|
+
return null;
|
|
198
|
+
return {
|
|
199
|
+
type: 'parameterChange',
|
|
200
|
+
eventId: value.getUint8(2),
|
|
201
|
+
value: value.getUint8(3),
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
case NOTIFY_PHYSICAL: {
|
|
205
|
+
if (value.byteLength < 9)
|
|
206
|
+
return null;
|
|
207
|
+
return {
|
|
208
|
+
type: 'physical',
|
|
209
|
+
sequence: value.getUint8(2),
|
|
210
|
+
pressState: value.getUint8(3),
|
|
211
|
+
// Doc states acceleration nominally ranges 0-400 and extVoltage
|
|
212
|
+
// 0-2.1V, neither of which fits cleanly in a single unsigned byte
|
|
213
|
+
// (0-255). Treating both as raw unsigned bytes for now — the true
|
|
214
|
+
// encoding (likely a scaled or clamped representation) needs
|
|
215
|
+
// confirming against a real device capture.
|
|
216
|
+
acceleration: value.getUint8(4),
|
|
217
|
+
angleX: value.getInt8(5),
|
|
218
|
+
angleY: value.getInt8(6),
|
|
219
|
+
angleZ: value.getInt8(7),
|
|
220
|
+
extVoltage: value.getUint8(8),
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
case NOTIFY_AUTO_DETECT_RESULT: {
|
|
224
|
+
// The doc's parenthetical total of "(10 bytes)" contradicts its own
|
|
225
|
+
// field breakdown: a 2-byte header (opcode + 0x61 marker) plus three
|
|
226
|
+
// 4-byte ranges (each two little-endian int16 values) is 14 bytes,
|
|
227
|
+
// not 10. Trusting the more specific field-by-field breakdown over
|
|
228
|
+
// the summary byte count — needs confirming against a real capture.
|
|
229
|
+
if (value.byteLength < 14 || value.getUint8(1) !== AUTO_DETECT_RESULT_MARKER)
|
|
230
|
+
return null;
|
|
231
|
+
return {
|
|
232
|
+
type: 'autoDetectResult',
|
|
233
|
+
xRange: [value.getInt16(2, true), value.getInt16(4, true)],
|
|
234
|
+
yRange: [value.getInt16(6, true), value.getInt16(8, true)],
|
|
235
|
+
zRange: [value.getInt16(10, true), value.getInt16(12, true)],
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
default:
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=paw-prints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paw-prints.js","sourceRoot":"","sources":["../src/paw-prints.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -27,6 +27,12 @@ export interface BluetoothRemoteGATTServiceLike {
|
|
|
27
27
|
export interface BluetoothRemoteGATTServerLike {
|
|
28
28
|
connected: boolean;
|
|
29
29
|
getPrimaryService(service: string): Promise<BluetoothRemoteGATTServiceLike>;
|
|
30
|
+
/**
|
|
31
|
+
* Negotiate a larger ATT MTU. Optional: Web Bluetooth negotiates MTU
|
|
32
|
+
* automatically with no JS-facing control, so browser transports never
|
|
33
|
+
* implement this. Native transports (Tauri, Node) may.
|
|
34
|
+
*/
|
|
35
|
+
requestMTU?(mtu: number): Promise<number>;
|
|
30
36
|
}
|
|
31
37
|
export interface BluetoothRemoteGATTLike {
|
|
32
38
|
connected: boolean;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,qCAAsC,SAAQ,WAAW;IACxE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,yBAAyB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,sBAAsB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,UAAU,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,kBAAkB,IAAI,OAAO,CAAC,qCAAqC,CAAC,CAAC;IACrE,iBAAiB,IAAI,OAAO,CAAC,qCAAqC,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,8BAA8B;IAC7C,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC;CAC3F;AAED,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,qCAAsC,SAAQ,WAAW;IACxE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,yBAAyB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,sBAAsB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,UAAU,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,kBAAkB,IAAI,OAAO,CAAC,qCAAqC,CAAC,CAAC;IACrE,iBAAiB,IAAI,OAAO,CAAC,qCAAqC,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,8BAA8B;IAC7C,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC;CAC3F;AAED,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC5E;;;;OAIG;IACH,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAClD,UAAU,IAAI,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAChF;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B"}
|
package/dist/v3.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3.d.ts","sourceRoot":"","sources":["../src/v3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQ5C,OAAO,EACL,yBAAyB,EAGzB,KAAK,6BAA6B,EACnC,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"v3.d.ts","sourceRoot":"","sources":["../src/v3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQ5C,OAAO,EACL,yBAAyB,EAGzB,KAAK,6BAA6B,EACnC,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,YAAY,CAAC;AAExE,qBAAa,uBAAwB,SAAQ,yBAAyB;IACpE,SAAS,CAAC,SAAS,EAAE,qCAAqC,GAAG,IAAI,CAAQ;IACzE,SAAS,CAAC,UAAU,EAAE,qCAAqC,GAAG,IAAI,CAAQ;IAE1E,SAAS,CAAC,GAAG,SAAK;IAClB,SAAS,CAAC,WAAW,SAAK;IAC1B,SAAS,CAAC,WAAW,SAAK;IAC1B,SAAS,CAAC,WAAW,SAAK;IAC1B,SAAS,CAAC,WAAW,UAAS;IAExB,WAAW,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;cAoCxD,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAcnD,SAAS,CAAC,kBAAkB,IAAI,IAAI;IASpC,SAAS,CAAC,uBAAuB,IAAI,IAAI;IAQzC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAcpE,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;cAoB/C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;cAK5B,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYzD,OAAO,CAAC,OAAO;IA8Bf,OAAO,CAAC,oCAAoC;IAa5C,OAAO,CAAC,OAAO;YAYD,OAAO;cAKL,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpD,OAAO,CAAC,OAAO;IAIf,QAAQ,CAAC,oBAAoB,GAAI,OAAO,KAAK,KAAG,IAAI,CAuBlD;CACH"}
|
package/dist/v3.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { V3_BATTERY_CHAR, V3_BATTERY_SERVICE, V3_NOTIFY_CHAR, V3_PRIMARY_SERVICE, V3_WRITE_CHAR, } from './constants.js';
|
|
2
2
|
import { BaseCoyoteProtocolAdapter, INACTIVE_FREQ, INACTIVE_INT, } from './base.js';
|
|
3
|
+
import { performV3FamilyConnectHandshake } from './gatt-utils.js';
|
|
3
4
|
export class CoyoteV3ProtocolAdapter extends BaseCoyoteProtocolAdapter {
|
|
4
5
|
writeChar = null;
|
|
5
6
|
notifyChar = null;
|
|
@@ -17,6 +18,7 @@ export class CoyoteV3ProtocolAdapter extends BaseCoyoteProtocolAdapter {
|
|
|
17
18
|
this.notifyChar = await primaryService.getCharacteristic(V3_NOTIFY_CHAR);
|
|
18
19
|
await this.notifyChar.startNotifications();
|
|
19
20
|
this.notifyChar.addEventListener('characteristicvaluechanged', this.handleV3Notification);
|
|
21
|
+
await performV3FamilyConnectHandshake(context.server, this.writeChar);
|
|
20
22
|
try {
|
|
21
23
|
const batteryService = await context.server.getPrimaryService(V3_BATTERY_SERVICE);
|
|
22
24
|
this.batteryChar = await batteryService.getCharacteristic(V3_BATTERY_CHAR);
|
package/dist/v3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3.js","sourceRoot":"","sources":["../src/v3.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,YAAY,GAEb,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"v3.js","sourceRoot":"","sources":["../src/v3.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dg-kit/protocol",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "DG-Lab Coyote V2 / V3 BLE protocol adapters (transport-agnostic)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "0xNullAI",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"access": "public"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@dg-kit/core": "1.
|
|
30
|
+
"@dg-kit/core": "1.5.0"
|
|
31
31
|
},
|
|
32
32
|
"scripts": {
|
|
33
33
|
"build": "tsc -p tsconfig.json",
|