@dg-kit/protocol 1.2.1 → 1.4.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
package/dist/base.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Channel, type DeviceCommand, type DeviceCommandResult, type DeviceState, type WaveFrame } from '@dg-kit/core';
|
|
1
|
+
import { type Channel, type DeviceCommand, type DeviceCommandResult, type DeviceState, type SensorState, type WaveFrame } from '@dg-kit/core';
|
|
2
2
|
import type { BluetoothDeviceLike, BluetoothRemoteGATTCharacteristicLike, BluetoothRemoteGATTServerLike } from './types.js';
|
|
3
3
|
export type StateListener = (state: DeviceState) => void;
|
|
4
4
|
export interface WebBluetoothAvailability {
|
|
@@ -27,6 +27,22 @@ export interface WebBluetoothProtocolAdapter {
|
|
|
27
27
|
*/
|
|
28
28
|
setLimits(limitA: number, limitB: number): Promise<void>;
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Contract for sensor-family devices (paw-prints, civet-edging): they push
|
|
32
|
+
* event/telemetry streams instead of exposing a two-channel strength state,
|
|
33
|
+
* so they get a narrower adapter shape than `WebBluetoothProtocolAdapter`
|
|
34
|
+
* rather than being forced into the stim-specific `DeviceState`/
|
|
35
|
+
* `DeviceCommand` types. `TReading` is the device-specific parsed event
|
|
36
|
+
* union (e.g. a button trigger, a pressure sample).
|
|
37
|
+
*/
|
|
38
|
+
export interface WebBluetoothSensorAdapter<TReading> {
|
|
39
|
+
onConnected(context: WebBluetoothConnectionContext): Promise<void>;
|
|
40
|
+
onDisconnected(): Promise<void>;
|
|
41
|
+
getState(): SensorState;
|
|
42
|
+
/** Subscribe to parsed device readings/events. */
|
|
43
|
+
subscribe(listener: (reading: TReading) => void): () => void;
|
|
44
|
+
onStateChanged(listener: (state: SensorState) => void): () => void;
|
|
45
|
+
}
|
|
30
46
|
export interface ChannelWaveState {
|
|
31
47
|
waveformId?: string;
|
|
32
48
|
frames: WaveFrame[] | null;
|
package/dist/base.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
|
package/dist/base.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createEmptyDeviceState, } from '@dg-kit/core';
|
|
2
|
+
import { writeCharacteristicValue as writeCharacteristicValueShared } from './gatt-utils.js';
|
|
2
3
|
export const INACTIVE_FREQ = [0, 0, 0, 0];
|
|
3
4
|
export const INACTIVE_INT = [0, 0, 0, 101];
|
|
4
5
|
export const SILENT_WAVE_STEP = { freq: 10, int: 0 };
|
|
@@ -288,30 +289,7 @@ export class BaseCoyoteProtocolAdapter {
|
|
|
288
289
|
return this.suppressStaleStopStrengthNotifications && (strengthA !== 0 || strengthB !== 0);
|
|
289
290
|
}
|
|
290
291
|
async writeCharacteristicValue(characteristic, value, options = {}) {
|
|
291
|
-
|
|
292
|
-
? [
|
|
293
|
-
characteristic.writeValueWithResponse?.bind(characteristic),
|
|
294
|
-
characteristic.writeValueWithoutResponse?.bind(characteristic),
|
|
295
|
-
characteristic.writeValue?.bind(characteristic),
|
|
296
|
-
]
|
|
297
|
-
: [
|
|
298
|
-
characteristic.writeValueWithoutResponse?.bind(characteristic),
|
|
299
|
-
characteristic.writeValueWithResponse?.bind(characteristic),
|
|
300
|
-
characteristic.writeValue?.bind(characteristic),
|
|
301
|
-
];
|
|
302
|
-
let lastError = null;
|
|
303
|
-
for (const attempt of attempts) {
|
|
304
|
-
if (!attempt)
|
|
305
|
-
continue;
|
|
306
|
-
try {
|
|
307
|
-
await attempt(value);
|
|
308
|
-
return;
|
|
309
|
-
}
|
|
310
|
-
catch (error) {
|
|
311
|
-
lastError = error;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
throw lastError ?? new Error('Bluetooth characteristic is not writable');
|
|
292
|
+
return writeCharacteristicValueShared(characteristic, value, options);
|
|
315
293
|
}
|
|
316
294
|
emit() {
|
|
317
295
|
const snapshot = this.getState();
|
package/dist/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type SensorState } from '@dg-kit/core';
|
|
2
|
+
import type { WebBluetoothConnectionContext, WebBluetoothSensorAdapter } from './base.js';
|
|
3
|
+
/**
|
|
4
|
+
* Civet Edging Sensor (灵猫边缘控制传感器) — a barometric pressure sensor used
|
|
5
|
+
* for edging control. Single-variant reading type on purpose: unlike
|
|
6
|
+
* paw-prints (which can push several distinct event shapes), this device
|
|
7
|
+
* only ever streams pressure samples. The `type` discriminant is kept anyway
|
|
8
|
+
* so downstream consumers that fan-in readings from multiple sensor kinds
|
|
9
|
+
* can still narrow on it.
|
|
10
|
+
*/
|
|
11
|
+
export interface CivetPressureReading {
|
|
12
|
+
type: 'pressure';
|
|
13
|
+
kPa: number;
|
|
14
|
+
}
|
|
15
|
+
type ReadingListener = (reading: CivetPressureReading) => void;
|
|
16
|
+
type StateListener = (state: SensorState) => void;
|
|
17
|
+
/**
|
|
18
|
+
* Web Bluetooth adapter for the Civet Edging Sensor.
|
|
19
|
+
*
|
|
20
|
+
* Shares the exact same GATT skeleton as Coyote V3 (service 0x180C, write
|
|
21
|
+
* 0x150A, notify 0x150B, battery 0x180A/0x1500) — only the application-layer
|
|
22
|
+
* opcodes differ. See constants.ts for why no new UUIDs are declared.
|
|
23
|
+
*/
|
|
24
|
+
export declare class CivetPressureSensorAdapter implements WebBluetoothSensorAdapter<CivetPressureReading> {
|
|
25
|
+
private readonly readingListeners;
|
|
26
|
+
private readonly stateListeners;
|
|
27
|
+
private state;
|
|
28
|
+
private writeChar;
|
|
29
|
+
private notifyChar;
|
|
30
|
+
/** Tracks whether pressure streaming is currently on, so `setIndicatorColor` can re-send the `0x50` packet without flipping it. */
|
|
31
|
+
private streaming;
|
|
32
|
+
onConnected(context: WebBluetoothConnectionContext): Promise<void>;
|
|
33
|
+
onDisconnected(): Promise<void>;
|
|
34
|
+
getState(): SensorState;
|
|
35
|
+
subscribe(listener: ReadingListener): () => void;
|
|
36
|
+
onStateChanged(listener: StateListener): () => void;
|
|
37
|
+
/** `0x50` pressure-reporting toggle: start streaming pressure notifications. */
|
|
38
|
+
startPressureReporting(color?: number): Promise<void>;
|
|
39
|
+
/** `0x50` pressure-reporting toggle: stop streaming pressure notifications. */
|
|
40
|
+
stopPressureReporting(color?: number): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Change only the indicator color. There is no dedicated "set color"
|
|
43
|
+
* opcode in the documented protocol — `0x50` always carries both the
|
|
44
|
+
* color and the streaming on/off byte together — so this re-sends `0x50`
|
|
45
|
+
* with the current streaming state preserved, rather than the caller
|
|
46
|
+
* having to guess by calling `startPressureReporting`/`stopPressureReporting`
|
|
47
|
+
* (which would unintentionally start or stop the pressure stream as a
|
|
48
|
+
* side effect of what's meant to be a purely cosmetic change).
|
|
49
|
+
*/
|
|
50
|
+
setIndicatorColor(color: number): Promise<void>;
|
|
51
|
+
/** `0x66` calibration: reset the pressure baseline to the current reading. */
|
|
52
|
+
calibrateZero(): Promise<void>;
|
|
53
|
+
/** `0x66` calibration: toggle the on-device screen rotation. */
|
|
54
|
+
toggleRotation(next: 0x01 | 0x03): Promise<void>;
|
|
55
|
+
private buildPressureReportingPacket;
|
|
56
|
+
private write;
|
|
57
|
+
private emitState;
|
|
58
|
+
readonly handleNotification: (event: Event) => void;
|
|
59
|
+
}
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=civet-edging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"civet-edging.d.ts","sourceRoot":"","sources":["../src/civet-edging.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,KAAK,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAe1F;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAC/D,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAElD;;;;;;GAMG;AACH,qBAAa,0BAA2B,YAAW,yBAAyB,CAAC,oBAAoB,CAAC;IAChG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAE3D,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,UAAU,CAAsD;IACxE,mIAAmI;IACnI,OAAO,CAAC,SAAS,CAAS;IAEpB,WAAW,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAwClE,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBrC,QAAQ,IAAI,WAAW;IAIvB,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAOhD,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI;IAOnD,gFAAgF;IAC1E,sBAAsB,CAAC,KAAK,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD,+EAA+E;IACzE,qBAAqB,CAAC,KAAK,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD;;;;;;;;OAQG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,8EAA8E;IACxE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC,gEAAgE;IAC1D,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,OAAO,CAAC,4BAA4B;YAStB,KAAK;IAOnB,OAAO,CAAC,SAAS;IAOjB,QAAQ,CAAC,kBAAkB,GAAI,OAAO,KAAK,KAAG,IAAI,CAWhD;CACH"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { createEmptySensorState } from '@dg-kit/core';
|
|
2
|
+
import { V3_BATTERY_CHAR, V3_BATTERY_SERVICE, V3_NOTIFY_CHAR, V3_PRIMARY_SERVICE, V3_WRITE_CHAR, } from './constants.js';
|
|
3
|
+
import { clampIndicatorColor, performV3FamilyConnectHandshake, writeCharacteristicValue, } from './gatt-utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* Web Bluetooth adapter for the Civet Edging Sensor.
|
|
6
|
+
*
|
|
7
|
+
* Shares the exact same GATT skeleton as Coyote V3 (service 0x180C, write
|
|
8
|
+
* 0x150A, notify 0x150B, battery 0x180A/0x1500) — only the application-layer
|
|
9
|
+
* opcodes differ. See constants.ts for why no new UUIDs are declared.
|
|
10
|
+
*/
|
|
11
|
+
export class CivetPressureSensorAdapter {
|
|
12
|
+
readingListeners = new Set();
|
|
13
|
+
stateListeners = new Set();
|
|
14
|
+
state = createEmptySensorState();
|
|
15
|
+
writeChar = null;
|
|
16
|
+
notifyChar = null;
|
|
17
|
+
/** Tracks whether pressure streaming is currently on, so `setIndicatorColor` can re-send the `0x50` packet without flipping it. */
|
|
18
|
+
streaming = false;
|
|
19
|
+
async onConnected(context) {
|
|
20
|
+
try {
|
|
21
|
+
const primaryService = await context.server.getPrimaryService(V3_PRIMARY_SERVICE);
|
|
22
|
+
this.writeChar = await primaryService.getCharacteristic(V3_WRITE_CHAR);
|
|
23
|
+
this.notifyChar = await primaryService.getCharacteristic(V3_NOTIFY_CHAR);
|
|
24
|
+
await this.notifyChar.startNotifications();
|
|
25
|
+
this.notifyChar.addEventListener('characteristicvaluechanged', this.handleNotification);
|
|
26
|
+
await performV3FamilyConnectHandshake(context.server, this.writeChar);
|
|
27
|
+
let battery = 0;
|
|
28
|
+
try {
|
|
29
|
+
const batteryService = await context.server.getPrimaryService(V3_BATTERY_SERVICE);
|
|
30
|
+
const batteryChar = await batteryService.getCharacteristic(V3_BATTERY_CHAR);
|
|
31
|
+
const value = await batteryChar.readValue();
|
|
32
|
+
battery = value.getUint8(0);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
battery = 0;
|
|
36
|
+
}
|
|
37
|
+
this.state = {
|
|
38
|
+
connected: true,
|
|
39
|
+
deviceName: context.device.name ?? '',
|
|
40
|
+
address: context.device.id ?? '',
|
|
41
|
+
battery,
|
|
42
|
+
};
|
|
43
|
+
this.emitState();
|
|
44
|
+
// Auto-start streaming right after connecting so the adapter is
|
|
45
|
+
// immediately useful, mirroring CoyoteV3ProtocolAdapter's proactive
|
|
46
|
+
// BF write in its own onConnected. The caller has no opportunity to
|
|
47
|
+
// call startPressureReporting() earlier since the write char doesn't
|
|
48
|
+
// exist until this method resolves.
|
|
49
|
+
await this.startPressureReporting();
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
await this.onDisconnected();
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async onDisconnected() {
|
|
57
|
+
if (this.notifyChar) {
|
|
58
|
+
this.notifyChar.removeEventListener('characteristicvaluechanged', this.handleNotification);
|
|
59
|
+
try {
|
|
60
|
+
await this.notifyChar.stopNotifications();
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// best-effort: device may already be gone.
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
this.writeChar = null;
|
|
67
|
+
this.notifyChar = null;
|
|
68
|
+
this.streaming = false;
|
|
69
|
+
this.state = createEmptySensorState();
|
|
70
|
+
this.emitState();
|
|
71
|
+
}
|
|
72
|
+
getState() {
|
|
73
|
+
return { ...this.state };
|
|
74
|
+
}
|
|
75
|
+
subscribe(listener) {
|
|
76
|
+
this.readingListeners.add(listener);
|
|
77
|
+
return () => {
|
|
78
|
+
this.readingListeners.delete(listener);
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
onStateChanged(listener) {
|
|
82
|
+
this.stateListeners.add(listener);
|
|
83
|
+
return () => {
|
|
84
|
+
this.stateListeners.delete(listener);
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/** `0x50` pressure-reporting toggle: start streaming pressure notifications. */
|
|
88
|
+
async startPressureReporting(color = 0x00) {
|
|
89
|
+
await this.write(this.buildPressureReportingPacket(color, 0xd0));
|
|
90
|
+
this.streaming = true;
|
|
91
|
+
}
|
|
92
|
+
/** `0x50` pressure-reporting toggle: stop streaming pressure notifications. */
|
|
93
|
+
async stopPressureReporting(color = 0x00) {
|
|
94
|
+
await this.write(this.buildPressureReportingPacket(color, 0x00));
|
|
95
|
+
this.streaming = false;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Change only the indicator color. There is no dedicated "set color"
|
|
99
|
+
* opcode in the documented protocol — `0x50` always carries both the
|
|
100
|
+
* color and the streaming on/off byte together — so this re-sends `0x50`
|
|
101
|
+
* with the current streaming state preserved, rather than the caller
|
|
102
|
+
* having to guess by calling `startPressureReporting`/`stopPressureReporting`
|
|
103
|
+
* (which would unintentionally start or stop the pressure stream as a
|
|
104
|
+
* side effect of what's meant to be a purely cosmetic change).
|
|
105
|
+
*/
|
|
106
|
+
async setIndicatorColor(color) {
|
|
107
|
+
await this.write(this.buildPressureReportingPacket(color, this.streaming ? 0xd0 : 0x00));
|
|
108
|
+
}
|
|
109
|
+
/** `0x66` calibration: reset the pressure baseline to the current reading. */
|
|
110
|
+
async calibrateZero() {
|
|
111
|
+
// prettier-ignore
|
|
112
|
+
await this.write(new Uint8Array([0x66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x02]));
|
|
113
|
+
}
|
|
114
|
+
/** `0x66` calibration: toggle the on-device screen rotation. */
|
|
115
|
+
async toggleRotation(next) {
|
|
116
|
+
// prettier-ignore
|
|
117
|
+
await this.write(new Uint8Array([0x66, 0, 0, 0, 0, 0, 0, 0, 0, 0, next, 0, 0]));
|
|
118
|
+
}
|
|
119
|
+
buildPressureReportingPacket(color, startStopByte) {
|
|
120
|
+
const buffer = new Uint8Array(17);
|
|
121
|
+
buffer[0] = 0x50;
|
|
122
|
+
buffer[1] = clampIndicatorColor(color);
|
|
123
|
+
buffer[2] = startStopByte;
|
|
124
|
+
// Remaining 14 bytes are zero padding (Uint8Array is zero-initialized).
|
|
125
|
+
return buffer;
|
|
126
|
+
}
|
|
127
|
+
async write(value) {
|
|
128
|
+
if (!this.writeChar) {
|
|
129
|
+
throw new Error('设备未连接');
|
|
130
|
+
}
|
|
131
|
+
await writeCharacteristicValue(this.writeChar, value);
|
|
132
|
+
}
|
|
133
|
+
emitState() {
|
|
134
|
+
const snapshot = this.getState();
|
|
135
|
+
for (const listener of this.stateListeners) {
|
|
136
|
+
listener(snapshot);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
handleNotification = (event) => {
|
|
140
|
+
const target = event.target;
|
|
141
|
+
const value = target?.value;
|
|
142
|
+
if (!value || value.byteLength < 10 || value.getUint8(0) !== 0xd0)
|
|
143
|
+
return;
|
|
144
|
+
// Signed little-endian int16 at byte offset 8-9, in centi-kPa.
|
|
145
|
+
const raw = value.getInt16(8, true);
|
|
146
|
+
const reading = { type: 'pressure', kPa: raw / 100 };
|
|
147
|
+
for (const listener of this.readingListeners) {
|
|
148
|
+
listener(reading);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=civet-edging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"civet-edging.js","sourceRoot":"","sources":["../src/civet-edging.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DeviceKind } from '@dg-kit/core';
|
|
1
2
|
import type { RequestDeviceOptionsLike } from './types.js';
|
|
2
3
|
export declare const V3_DEVICE_NAME_PREFIX = "47L121";
|
|
3
4
|
export declare const V3_SENSOR_NAME_PREFIX = "47L120";
|
|
@@ -6,6 +7,9 @@ export declare const V3_WRITE_CHAR = "0000150a-0000-1000-8000-00805f9b34fb";
|
|
|
6
7
|
export declare const V3_NOTIFY_CHAR = "0000150b-0000-1000-8000-00805f9b34fb";
|
|
7
8
|
export declare const V3_BATTERY_SERVICE = "0000180a-0000-1000-8000-00805f9b34fb";
|
|
8
9
|
export declare const V3_BATTERY_CHAR = "00001500-0000-1000-8000-00805f9b34fb";
|
|
10
|
+
export declare const PAW_PRINTS_DEVICE_NAME_PREFIX = "47L120";
|
|
11
|
+
export declare const CIVET_DEVICE_NAME_PREFIX = "47L124";
|
|
12
|
+
export declare const OPOSSUM_DEVICE_NAME_PREFIX = "47L127";
|
|
9
13
|
export declare const V2_DEVICE_NAME_PREFIX = "D-LAB ESTIM";
|
|
10
14
|
export declare const v2Uuid: (short: string) => string;
|
|
11
15
|
export declare const V2_PRIMARY_SERVICE: string;
|
|
@@ -14,5 +18,25 @@ export declare const V2_WAVE_A_CHAR: string;
|
|
|
14
18
|
export declare const V2_WAVE_B_CHAR: string;
|
|
15
19
|
export declare const V2_BATTERY_SERVICE: string;
|
|
16
20
|
export declare const V2_BATTERY_CHAR: string;
|
|
21
|
+
export declare const V3_INIT_PACKET: Uint8Array<ArrayBuffer>;
|
|
22
|
+
export declare const V3_LEGACY_SERVICE = "0000ff0a-0000-1000-8000-00805f9b34fb";
|
|
23
|
+
export declare const V3_LEGACY_NOTIFY_CHAR = "0000ff00-0000-1000-8000-00805f9b34fb";
|
|
24
|
+
export declare const V3_NORDIC_OTA_SERVICE = "f000ffc0-0451-4000-b000-000000000000";
|
|
25
|
+
export declare const V3_NORDIC_OTA_CHAR = "f000ffc2-0451-4000-b000-000000000000";
|
|
26
|
+
export declare const V3_HANDSHAKE_MTU = 140;
|
|
17
27
|
export declare const COYOTE_REQUEST_DEVICE_OPTIONS: RequestDeviceOptionsLike;
|
|
28
|
+
/**
|
|
29
|
+
* Scan filter covering every known 47L12x-family device plus the legacy V2
|
|
30
|
+
* name. Superset of `COYOTE_REQUEST_DEVICE_OPTIONS` — prefer this one for
|
|
31
|
+
* new scan UIs; the old export is kept for backward compatibility since
|
|
32
|
+
* dropping it would be a breaking change for existing consumers.
|
|
33
|
+
*/
|
|
34
|
+
export declare const DG_LAB_REQUEST_DEVICE_OPTIONS: RequestDeviceOptionsLike;
|
|
35
|
+
/**
|
|
36
|
+
* Identify which 47L12x-family device (or the legacy V2 unit) a scanned/
|
|
37
|
+
* connected BLE device name belongs to. Single source of truth so consumers
|
|
38
|
+
* (DG-MCP's `classifyName`, DG-Chat, DG-Agent) don't each re-implement
|
|
39
|
+
* prefix matching and drift out of sync with each other.
|
|
40
|
+
*/
|
|
41
|
+
export declare function detectDeviceKind(name: string | undefined | null): DeviceKind | 'unknown';
|
|
18
42
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAG3D,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,eAAO,MAAM,kBAAkB,yCAAyC,CAAC;AACzE,eAAO,MAAM,aAAa,yCAAyC,CAAC;AACpE,eAAO,MAAM,cAAc,yCAAyC,CAAC;AACrE,eAAO,MAAM,kBAAkB,yCAAyC,CAAC;AACzE,eAAO,MAAM,eAAe,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAG3D,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,eAAO,MAAM,kBAAkB,yCAAyC,CAAC;AACzE,eAAO,MAAM,aAAa,yCAAyC,CAAC;AACpE,eAAO,MAAM,cAAc,yCAAyC,CAAC;AACrE,eAAO,MAAM,kBAAkB,yCAAyC,CAAC;AACzE,eAAO,MAAM,eAAe,yCAAyC,CAAC;AAOtE,eAAO,MAAM,6BAA6B,WAAwB,CAAC;AACnE,eAAO,MAAM,wBAAwB,WAAW,CAAC;AACjD,eAAO,MAAM,0BAA0B,WAAW,CAAC;AAGnD,eAAO,MAAM,qBAAqB,gBAAgB,CAAC;AACnD,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,KAAG,MAAoD,CAAC;AAC5F,eAAO,MAAM,kBAAkB,QAAiB,CAAC;AACjD,eAAO,MAAM,gBAAgB,QAAiB,CAAC;AAC/C,eAAO,MAAM,cAAc,QAAiB,CAAC;AAC7C,eAAO,MAAM,cAAc,QAAiB,CAAC;AAC7C,eAAO,MAAM,kBAAkB,QAAiB,CAAC;AACjD,eAAO,MAAM,eAAe,QAAiB,CAAC;AAU9C,eAAO,MAAM,cAAc,yBAAsE,CAAC;AAClG,eAAO,MAAM,iBAAiB,yCAAyC,CAAC;AACxE,eAAO,MAAM,qBAAqB,yCAAyC,CAAC;AAC5E,eAAO,MAAM,qBAAqB,yCAAyC,CAAC;AAC5E,eAAO,MAAM,kBAAkB,yCAAyC,CAAC;AACzE,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,6BAA6B,EAAE,wBAc3C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,wBAS3C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,CASxF"}
|
package/dist/constants.js
CHANGED
|
@@ -6,6 +6,14 @@ export const V3_WRITE_CHAR = '0000150a-0000-1000-8000-00805f9b34fb';
|
|
|
6
6
|
export const V3_NOTIFY_CHAR = '0000150b-0000-1000-8000-00805f9b34fb';
|
|
7
7
|
export const V3_BATTERY_SERVICE = '0000180a-0000-1000-8000-00805f9b34fb';
|
|
8
8
|
export const V3_BATTERY_CHAR = '00001500-0000-1000-8000-00805f9b34fb';
|
|
9
|
+
// Other 47L12x-family devices (dungeonlab-open/dglab-bluetooth-protocol).
|
|
10
|
+
// They all share the exact same GATT skeleton as Coyote V3 — service 0x180C,
|
|
11
|
+
// write 0x150A, notify 0x150B, battery 0x180A/0x1500 — only the advertised
|
|
12
|
+
// name prefix and the application-layer opcodes differ, so no new UUID
|
|
13
|
+
// constants are needed, just new prefixes.
|
|
14
|
+
export const PAW_PRINTS_DEVICE_NAME_PREFIX = V3_SENSOR_NAME_PREFIX;
|
|
15
|
+
export const CIVET_DEVICE_NAME_PREFIX = '47L124';
|
|
16
|
+
export const OPOSSUM_DEVICE_NAME_PREFIX = '47L127';
|
|
9
17
|
// V2 (Coyote 2.0)
|
|
10
18
|
export const V2_DEVICE_NAME_PREFIX = 'D-LAB ESTIM';
|
|
11
19
|
export const v2Uuid = (short) => `955a${short}-0fe2-f5aa-a094-84b8d4f3e8ad`;
|
|
@@ -15,6 +23,20 @@ export const V2_WAVE_A_CHAR = v2Uuid('1505');
|
|
|
15
23
|
export const V2_WAVE_B_CHAR = v2Uuid('1506');
|
|
16
24
|
export const V2_BATTERY_SERVICE = v2Uuid('180a');
|
|
17
25
|
export const V2_BATTERY_CHAR = v2Uuid('1500');
|
|
26
|
+
// V3 connect handshake. Reverse-engineering the official app
|
|
27
|
+
// (DeviceManager.initOta(), run on every successful connection, not just
|
|
28
|
+
// before flashing) shows it always sends a fixed 4-step sequence before the
|
|
29
|
+
// device will act on normal B0/BF control writes: an init packet on the
|
|
30
|
+
// write characteristic, best-effort subscription to two legacy/OTA notify
|
|
31
|
+
// channels, and an MTU bump. Newer firmware appears to require this before
|
|
32
|
+
// it accepts control traffic — skipping it (as this library previously did)
|
|
33
|
+
// reads as "device won't respond" after a firmware update.
|
|
34
|
+
export const V3_INIT_PACKET = new Uint8Array([0x50, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
|
|
35
|
+
export const V3_LEGACY_SERVICE = '0000ff0a-0000-1000-8000-00805f9b34fb';
|
|
36
|
+
export const V3_LEGACY_NOTIFY_CHAR = '0000ff00-0000-1000-8000-00805f9b34fb';
|
|
37
|
+
export const V3_NORDIC_OTA_SERVICE = 'f000ffc0-0451-4000-b000-000000000000';
|
|
38
|
+
export const V3_NORDIC_OTA_CHAR = 'f000ffc2-0451-4000-b000-000000000000';
|
|
39
|
+
export const V3_HANDSHAKE_MTU = 140;
|
|
18
40
|
export const COYOTE_REQUEST_DEVICE_OPTIONS = {
|
|
19
41
|
filters: [
|
|
20
42
|
{ namePrefix: V3_DEVICE_NAME_PREFIX },
|
|
@@ -26,6 +48,46 @@ export const COYOTE_REQUEST_DEVICE_OPTIONS = {
|
|
|
26
48
|
V3_BATTERY_SERVICE,
|
|
27
49
|
V2_PRIMARY_SERVICE,
|
|
28
50
|
V2_BATTERY_SERVICE,
|
|
51
|
+
V3_LEGACY_SERVICE,
|
|
52
|
+
V3_NORDIC_OTA_SERVICE,
|
|
29
53
|
],
|
|
30
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* Scan filter covering every known 47L12x-family device plus the legacy V2
|
|
57
|
+
* name. Superset of `COYOTE_REQUEST_DEVICE_OPTIONS` — prefer this one for
|
|
58
|
+
* new scan UIs; the old export is kept for backward compatibility since
|
|
59
|
+
* dropping it would be a breaking change for existing consumers.
|
|
60
|
+
*/
|
|
61
|
+
export const DG_LAB_REQUEST_DEVICE_OPTIONS = {
|
|
62
|
+
filters: [
|
|
63
|
+
{ namePrefix: V3_DEVICE_NAME_PREFIX },
|
|
64
|
+
{ namePrefix: PAW_PRINTS_DEVICE_NAME_PREFIX },
|
|
65
|
+
{ namePrefix: CIVET_DEVICE_NAME_PREFIX },
|
|
66
|
+
{ namePrefix: OPOSSUM_DEVICE_NAME_PREFIX },
|
|
67
|
+
{ namePrefix: V2_DEVICE_NAME_PREFIX },
|
|
68
|
+
],
|
|
69
|
+
optionalServices: [V3_PRIMARY_SERVICE, V3_BATTERY_SERVICE, V2_PRIMARY_SERVICE, V2_BATTERY_SERVICE],
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Identify which 47L12x-family device (or the legacy V2 unit) a scanned/
|
|
73
|
+
* connected BLE device name belongs to. Single source of truth so consumers
|
|
74
|
+
* (DG-MCP's `classifyName`, DG-Chat, DG-Agent) don't each re-implement
|
|
75
|
+
* prefix matching and drift out of sync with each other.
|
|
76
|
+
*/
|
|
77
|
+
export function detectDeviceKind(name) {
|
|
78
|
+
const trimmed = (name ?? '').trim();
|
|
79
|
+
if (!trimmed)
|
|
80
|
+
return 'unknown';
|
|
81
|
+
if (trimmed.startsWith(V3_DEVICE_NAME_PREFIX))
|
|
82
|
+
return 'coyote';
|
|
83
|
+
if (trimmed.startsWith(V2_DEVICE_NAME_PREFIX))
|
|
84
|
+
return 'coyote';
|
|
85
|
+
if (trimmed.startsWith(PAW_PRINTS_DEVICE_NAME_PREFIX))
|
|
86
|
+
return 'paw-prints';
|
|
87
|
+
if (trimmed.startsWith(CIVET_DEVICE_NAME_PREFIX))
|
|
88
|
+
return 'civet-edging';
|
|
89
|
+
if (trimmed.startsWith(OPOSSUM_DEVICE_NAME_PREFIX))
|
|
90
|
+
return 'opossum';
|
|
91
|
+
return 'unknown';
|
|
92
|
+
}
|
|
31
93
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/facade.d.ts
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
import type { DeviceCommand, DeviceCommandResult, DeviceState } from '@dg-kit/core';
|
|
2
2
|
import { type StateListener, type WebBluetoothConnectionContext, type WebBluetoothProtocolAdapter } from './base.js';
|
|
3
3
|
/**
|
|
4
|
-
* Auto-routing protocol adapter. Picks the V2 or V3
|
|
5
|
-
* the connecting device's name prefix
|
|
4
|
+
* Auto-routing protocol adapter — Coyote only. Picks the V2 or V3
|
|
5
|
+
* implementation based on the connecting device's name prefix.
|
|
6
|
+
*
|
|
7
|
+
* This does NOT route paw-prints/civet-edging/opossum devices, even though
|
|
8
|
+
* `DG_LAB_REQUEST_DEVICE_OPTIONS`'s broader scan filter will surface them in
|
|
9
|
+
* the same chooser as Coyote units. Those three device kinds share Coyote
|
|
10
|
+
* V3's exact GATT skeleton but speak a completely different command
|
|
11
|
+
* vocabulary — silently defaulting an unrecognized device to
|
|
12
|
+
* `CoyoteV3ProtocolAdapter` (the previous behavior) would send Coyote B0/BF
|
|
13
|
+
* stim frames to, say, a pressure sensor. `createProtocol()` now throws
|
|
14
|
+
* instead: callers that scan with the broader filter must classify the
|
|
15
|
+
* result with `detectDeviceKind()` first and only hand Coyote-kind devices
|
|
16
|
+
* to this facade, using `PawPrintsSensorAdapter`/`CivetPressureSensorAdapter`/
|
|
17
|
+
* `OpossumVibrateAdapter` directly for the other three kinds.
|
|
6
18
|
*/
|
|
7
19
|
export declare class CoyoteProtocolAdapter implements WebBluetoothProtocolAdapter {
|
|
8
20
|
private readonly listeners;
|
package/dist/facade.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EACjC,MAAM,WAAW,CAAC;AAInB
|
|
1
|
+
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EACjC,MAAM,WAAW,CAAC;AAInB;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAsB,YAAW,2BAA2B;IACvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,cAAc,CAA8D;IACpF,OAAO,CAAC,yBAAyB,CAA6B;;IAM9D,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI;IAOxC,WAAW,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBlE,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,QAAQ,IAAI,WAAW;IAIjB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI7D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,IAAI;CAKb"}
|
package/dist/facade.js
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
import { V2_DEVICE_NAME_PREFIX } from './constants.js';
|
|
1
|
+
import { detectDeviceKind, V2_DEVICE_NAME_PREFIX } from './constants.js';
|
|
2
2
|
import {} from './base.js';
|
|
3
3
|
import { CoyoteV2ProtocolAdapter } from './v2.js';
|
|
4
4
|
import { CoyoteV3ProtocolAdapter } from './v3.js';
|
|
5
5
|
/**
|
|
6
|
-
* Auto-routing protocol adapter. Picks the V2 or V3
|
|
7
|
-
* the connecting device's name prefix
|
|
6
|
+
* Auto-routing protocol adapter — Coyote only. Picks the V2 or V3
|
|
7
|
+
* implementation based on the connecting device's name prefix.
|
|
8
|
+
*
|
|
9
|
+
* This does NOT route paw-prints/civet-edging/opossum devices, even though
|
|
10
|
+
* `DG_LAB_REQUEST_DEVICE_OPTIONS`'s broader scan filter will surface them in
|
|
11
|
+
* the same chooser as Coyote units. Those three device kinds share Coyote
|
|
12
|
+
* V3's exact GATT skeleton but speak a completely different command
|
|
13
|
+
* vocabulary — silently defaulting an unrecognized device to
|
|
14
|
+
* `CoyoteV3ProtocolAdapter` (the previous behavior) would send Coyote B0/BF
|
|
15
|
+
* stim frames to, say, a pressure sensor. `createProtocol()` now throws
|
|
16
|
+
* instead: callers that scan with the broader filter must classify the
|
|
17
|
+
* result with `detectDeviceKind()` first and only hand Coyote-kind devices
|
|
18
|
+
* to this facade, using `PawPrintsSensorAdapter`/`CivetPressureSensorAdapter`/
|
|
19
|
+
* `OpossumVibrateAdapter` directly for the other three kinds.
|
|
8
20
|
*/
|
|
9
21
|
export class CoyoteProtocolAdapter {
|
|
10
22
|
listeners = new Set();
|
|
@@ -57,6 +69,12 @@ export class CoyoteProtocolAdapter {
|
|
|
57
69
|
}
|
|
58
70
|
createProtocol(context) {
|
|
59
71
|
const name = context.device.name ?? '';
|
|
72
|
+
const kind = detectDeviceKind(name);
|
|
73
|
+
if (kind !== 'coyote') {
|
|
74
|
+
throw new Error(`CoyoteProtocolAdapter only supports Coyote devices, but "${name}" was classified as ` +
|
|
75
|
+
`"${kind}". Use PawPrintsSensorAdapter/CivetPressureSensorAdapter/OpossumVibrateAdapter ` +
|
|
76
|
+
'directly for that device kind instead of routing it through this facade.');
|
|
77
|
+
}
|
|
60
78
|
return name.startsWith(V2_DEVICE_NAME_PREFIX)
|
|
61
79
|
? new CoyoteV2ProtocolAdapter()
|
|
62
80
|
: new CoyoteV3ProtocolAdapter();
|
package/dist/facade.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"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"}
|