@dg-kit/protocol 1.7.1 → 1.8.1

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 CHANGED
@@ -64,9 +64,8 @@ export declare abstract class BaseCoyoteProtocolAdapter implements WebBluetoothP
64
64
  protected readonly burstRestores: Map<Channel, number>;
65
65
  protected state: DeviceState;
66
66
  protected batteryChar: BluetoothRemoteGATTCharacteristicLike | null;
67
- private tickWorker;
68
- private tickInterval;
69
- private tickInFlight;
67
+ private readonly tickLoop;
68
+ private readonly waveCursor;
70
69
  protected tickPaused: boolean;
71
70
  protected suppressStaleStopStrengthNotifications: boolean;
72
71
  subscribe(listener: StateListener): () => void;
@@ -102,7 +101,6 @@ export declare abstract class BaseCoyoteProtocolAdapter implements WebBluetoothP
102
101
  protected emit(): void;
103
102
  private startTickLoop;
104
103
  private stopTickLoop;
105
- private createTickWorker;
106
104
  protected abstract disconnectProtocol(): Promise<void>;
107
105
  abstract onConnected(context: WebBluetoothConnectionContext): Promise<void>;
108
106
  protected abstract resetProtocolState(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
package/dist/base.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { createEmptyDeviceState, } from '@dg-kit/core';
2
- import { writeCharacteristicValue as writeCharacteristicValueShared } from './gatt-utils.js';
2
+ import { clampNumber, writeCharacteristicValue as writeCharacteristicValueShared, } from './gatt-utils.js';
3
+ import { ProtocolTickLoop } from './tick-loop.js';
4
+ import { WaveCursor } from './wave-cursor.js';
3
5
  export const INACTIVE_FREQ = [0, 0, 0, 0];
4
6
  export const INACTIVE_INT = [0, 0, 0, 101];
5
7
  export const SILENT_WAVE_STEP = { freq: 10, int: 0 };
@@ -12,9 +14,11 @@ export class BaseCoyoteProtocolAdapter {
12
14
  burstRestores = new Map();
13
15
  state = createEmptyDeviceState();
14
16
  batteryChar = null;
15
- tickWorker = null;
16
- tickInterval = null;
17
- tickInFlight = false;
17
+ tickLoop = new ProtocolTickLoop();
18
+ waveCursor = new WaveCursor((frame) => ({
19
+ freq: this.clamp(frame[0], SILENT_WAVE_STEP.freq, 240),
20
+ int: this.clamp(frame[1], 0, 100),
21
+ }));
18
22
  tickPaused = false;
19
23
  suppressStaleStopStrengthNotifications = false;
20
24
  subscribe(listener) {
@@ -189,14 +193,13 @@ export class BaseCoyoteProtocolAdapter {
189
193
  }
190
194
  }
191
195
  async onTick() {
192
- if (this.tickPaused || this.tickInFlight || !this.state.connected) {
196
+ // Reentrancy (never overlap two in-flight ticks) is handled by
197
+ // `this.tickLoop` itself; this only needs the adapter-specific
198
+ // pause/connected gate.
199
+ if (this.tickPaused || !this.state.connected) {
193
200
  return;
194
201
  }
195
- this.tickInFlight = true;
196
202
  try {
197
- if (this.tickPaused || !this.state.connected) {
198
- return;
199
- }
200
203
  await this.performTick();
201
204
  if (!this.tickPaused) {
202
205
  this.emit();
@@ -205,44 +208,12 @@ export class BaseCoyoteProtocolAdapter {
205
208
  catch {
206
209
  // GATT disconnected mid-tick; suppress and let disconnect handler clean up.
207
210
  }
208
- finally {
209
- this.tickInFlight = false;
210
- }
211
211
  }
212
212
  async waitForTickIdle() {
213
- while (this.tickInFlight) {
214
- await new Promise((resolve) => setTimeout(resolve, 0));
215
- }
213
+ await this.tickLoop.waitForIdle();
216
214
  }
217
215
  advanceWaveStep(channel) {
218
- const current = this.waveState[channel];
219
- if (!current.active || !current.frames || current.frames.length === 0) {
220
- return null;
221
- }
222
- const length = current.frames.length;
223
- if (current.index >= length) {
224
- if (current.loop) {
225
- current.index = 0;
226
- }
227
- else {
228
- current.active = false;
229
- return null;
230
- }
231
- }
232
- const frame = current.frames[current.index];
233
- if (!frame) {
234
- current.active = false;
235
- return null;
236
- }
237
- current.index += 1;
238
- if (current.index >= length && !current.loop) {
239
- current.active = false;
240
- }
241
- const [rawFreq, rawInt] = frame;
242
- return {
243
- freq: this.clamp(rawFreq, SILENT_WAVE_STEP.freq, 240),
244
- int: this.clamp(rawInt, 0, 100),
245
- };
216
+ return this.waveCursor.advanceStep(this.waveState[channel]);
246
217
  }
247
218
  advanceWavePacket(channel) {
248
219
  const first = this.advanceWaveStep(channel);
@@ -264,10 +235,7 @@ export class BaseCoyoteProtocolAdapter {
264
235
  };
265
236
  }
266
237
  clamp(value, min, max) {
267
- const number = Number(value);
268
- if (!Number.isFinite(number))
269
- return min;
270
- return Math.max(min, Math.min(max, Math.round(number)));
238
+ return clampNumber(value, min, max);
271
239
  }
272
240
  toInt(value, fallback = 0) {
273
241
  const number = typeof value === 'number' ? value : Number(value);
@@ -298,37 +266,10 @@ export class BaseCoyoteProtocolAdapter {
298
266
  }
299
267
  }
300
268
  startTickLoop() {
301
- if (this.tickWorker || this.tickInterval) {
302
- return;
303
- }
304
- try {
305
- this.tickWorker = this.createTickWorker();
306
- this.tickWorker.onmessage = () => {
307
- void this.onTick();
308
- };
309
- this.tickWorker.postMessage('start');
310
- }
311
- catch {
312
- this.tickInterval = setInterval(() => {
313
- void this.onTick();
314
- }, 100);
315
- }
269
+ this.tickLoop.start(() => this.onTick());
316
270
  }
317
271
  stopTickLoop() {
318
- if (this.tickWorker) {
319
- this.tickWorker.postMessage('stop');
320
- this.tickWorker.terminate();
321
- this.tickWorker = null;
322
- }
323
- if (this.tickInterval) {
324
- clearInterval(this.tickInterval);
325
- this.tickInterval = null;
326
- }
327
- }
328
- createTickWorker() {
329
- const code = 'let timer;onmessage=(event)=>{if(event.data==="start"){if(timer)return;timer=setInterval(()=>postMessage(1),100);}else{clearInterval(timer);timer=null;}};';
330
- const blob = new Blob([code], { type: 'application/javascript' });
331
- return new Worker(URL.createObjectURL(blob));
272
+ this.tickLoop.stop();
332
273
  }
333
274
  }
334
275
  //# sourceMappingURL=base.js.map
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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"}
@@ -23,7 +23,7 @@ export declare const V3_LEGACY_SERVICE = "0000ff0a-0000-1000-8000-00805f9b34fb";
23
23
  export declare const V3_LEGACY_NOTIFY_CHAR = "0000ff00-0000-1000-8000-00805f9b34fb";
24
24
  export declare const V3_NORDIC_OTA_SERVICE = "f000ffc0-0451-4000-b000-000000000000";
25
25
  export declare const V3_NORDIC_OTA_CHAR = "f000ffc2-0451-4000-b000-000000000000";
26
- export declare const V3_HANDSHAKE_MTU = 140;
26
+ export declare const V3_HANDSHAKE_MTU = 144;
27
27
  export declare const COYOTE_REQUEST_DEVICE_OPTIONS: RequestDeviceOptionsLike;
28
28
  /**
29
29
  * Scan filter covering every known 47L12x-family device plus the legacy V2
@@ -1 +1 @@
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"}
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;AAIzE,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,6BAA6B,EAAE,wBAc3C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,wBAc3C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,CASxF"}
package/dist/constants.js CHANGED
@@ -36,7 +36,10 @@ export const V3_LEGACY_SERVICE = '0000ff0a-0000-1000-8000-00805f9b34fb';
36
36
  export const V3_LEGACY_NOTIFY_CHAR = '0000ff00-0000-1000-8000-00805f9b34fb';
37
37
  export const V3_NORDIC_OTA_SERVICE = 'f000ffc0-0451-4000-b000-000000000000';
38
38
  export const V3_NORDIC_OTA_CHAR = 'f000ffc2-0451-4000-b000-000000000000';
39
- export const V3_HANDSHAKE_MTU = 140;
39
+ // The opossum doc recommends 144 specifically (vs. the 140 this library
40
+ // previously used); harmless to apply to the whole 47L12x family since
41
+ // requestMTU is a best-effort negotiation, not a hard requirement.
42
+ export const V3_HANDSHAKE_MTU = 144;
40
43
  export const COYOTE_REQUEST_DEVICE_OPTIONS = {
41
44
  filters: [
42
45
  { namePrefix: V3_DEVICE_NAME_PREFIX },
@@ -66,7 +69,12 @@ export const DG_LAB_REQUEST_DEVICE_OPTIONS = {
66
69
  { namePrefix: OPOSSUM_DEVICE_NAME_PREFIX },
67
70
  { namePrefix: V2_DEVICE_NAME_PREFIX },
68
71
  ],
69
- optionalServices: [V3_PRIMARY_SERVICE, V3_BATTERY_SERVICE, V2_PRIMARY_SERVICE, V2_BATTERY_SERVICE],
72
+ optionalServices: [
73
+ V3_PRIMARY_SERVICE,
74
+ V3_BATTERY_SERVICE,
75
+ V2_PRIMARY_SERVICE,
76
+ V2_BATTERY_SERVICE,
77
+ ],
70
78
  };
71
79
  /**
72
80
  * Identify which 47L12x-family device (or the legacy V2 unit) a scanned/
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,13 @@ export declare function performV3FamilyConnectHandshake(server: BluetoothRemoteG
40
40
  * color picker would otherwise reach the wire unclamped).
41
41
  */
42
42
  export declare function clampIndicatorColor(color: number): number;
43
+ /**
44
+ * Generic clamp-to-integer-range, non-finite input falling back to `min`.
45
+ * Shared by `BaseCoyoteProtocolAdapter` and `OpossumVibrateAdapter` — both
46
+ * clamp raw strength/waveform bytes the identical way before they reach the
47
+ * wire.
48
+ */
49
+ export declare function clampNumber(value: number, min: number, max: number): number;
43
50
  export interface SensorGattConnection {
44
51
  writeChar: BluetoothRemoteGATTCharacteristicLike;
45
52
  notifyChar: BluetoothRemoteGATTCharacteristicLike;
@@ -1 +1 @@
1
- {"version":3,"file":"gatt-utils.d.ts","sourceRoot":"","sources":["../src/gatt-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAC;AAc/D,OAAO,KAAK,EAAE,qCAAqC,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAEvG;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,cAAc,EAAE,qCAAqC,EACrD,KAAK,EAAE,eAAe,GAAG,WAAW,EACpC,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,6BAA6B,EACrC,SAAS,EAAE,qCAAqC,GAC/C,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,qCAAqC,CAAC;IACjD,UAAU,EAAE,qCAAqC,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,6BAA6B,EACtC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GACrC,OAAO,CAAC,oBAAoB,CAAC,CA4B/B;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,qCAAqC,GAAG,IAAI,EACxD,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GACrC,OAAO,CAAC,IAAI,CAAC,CAQf"}
1
+ {"version":3,"file":"gatt-utils.d.ts","sourceRoot":"","sources":["../src/gatt-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAC;AAc/D,OAAO,KAAK,EACV,qCAAqC,EACrC,6BAA6B,EAC9B,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,cAAc,EAAE,qCAAqC,EACrD,KAAK,EAAE,eAAe,GAAG,WAAW,EACpC,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,6BAA6B,EACrC,SAAS,EAAE,qCAAqC,GAC/C,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,qCAAqC,CAAC;IACjD,UAAU,EAAE,qCAAqC,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,6BAA6B,EACtC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GACrC,OAAO,CAAC,oBAAoB,CAAC,CA4B/B;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,qCAAqC,GAAG,IAAI,EACxD,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GACrC,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -96,6 +96,18 @@ export function clampIndicatorColor(color) {
96
96
  return 0;
97
97
  return Math.max(0, Math.min(7, Math.round(value)));
98
98
  }
99
+ /**
100
+ * Generic clamp-to-integer-range, non-finite input falling back to `min`.
101
+ * Shared by `BaseCoyoteProtocolAdapter` and `OpossumVibrateAdapter` — both
102
+ * clamp raw strength/waveform bytes the identical way before they reach the
103
+ * wire.
104
+ */
105
+ export function clampNumber(value, min, max) {
106
+ const number = Number(value);
107
+ if (!Number.isFinite(number))
108
+ return min;
109
+ return Math.max(min, Math.min(max, Math.round(number)));
110
+ }
99
111
  /**
100
112
  * Shared connect sequence for the sensor-family adapters (paw-prints,
101
113
  * civet-edging): open the shared 0x180C write/notify characteristics, wire
@@ -1 +1 @@
1
- {"version":3,"file":"gatt-utils.js","sourceRoot":"","sources":["../src/gatt-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gatt-utils.js","sourceRoot":"","sources":["../src/gatt-utils.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,5 +7,5 @@ export { CoyoteV3ProtocolAdapter } from './v3.js';
7
7
  export { CoyoteProtocolAdapter } from './facade.js';
8
8
  export { PawPrintsSensorAdapter, type PawPrintsReading, type PawPrintsReadingListener, type PawPrintsStateListener, } from './paw-prints.js';
9
9
  export { CivetPressureSensorAdapter, type CivetPressureReading } from './civet-edging.js';
10
- export { OpossumVibrateAdapter, createEmptyOpossumState, type OpossumState, type OpossumButton, type OpossumButtonEvent, } from './opossum.js';
10
+ export { OpossumVibrateAdapter, createEmptyOpossumState, OPOSSUM_VIBRATION_PATTERNS, type OpossumState, type OpossumButton, type OpossumButtonEvent, } from './opossum.js';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,GAC/B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,mCAAmC,EACnC,6BAA6B,EAC7B,8BAA8B,EAC9B,iCAAiC,EACjC,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,0BAA0B,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,GAC/B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,mCAAmC,EACnC,6BAA6B,EAC7B,8BAA8B,EAC9B,iCAAiC,EACjC,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,0BAA0B,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -7,5 +7,5 @@ export { CoyoteV3ProtocolAdapter } from './v3.js';
7
7
  export { CoyoteProtocolAdapter } from './facade.js';
8
8
  export { PawPrintsSensorAdapter, } from './paw-prints.js';
9
9
  export { CivetPressureSensorAdapter } from './civet-edging.js';
10
- export { OpossumVibrateAdapter, createEmptyOpossumState, } from './opossum.js';
10
+ export { OpossumVibrateAdapter, createEmptyOpossumState, OPOSSUM_VIBRATION_PATTERNS, } from './opossum.js';
11
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,YAAY,EACZ,gBAAgB,GASjB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,mCAAmC,EACnC,6BAA6B,EAC7B,8BAA8B,EAC9B,iCAAiC,GAElC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,sBAAsB,GAIvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,0BAA0B,EAA6B,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GAIxB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,YAAY,EACZ,gBAAgB,GASjB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,mCAAmC,EACnC,6BAA6B,EAC7B,8BAA8B,EAC9B,iCAAiC,GAElC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,sBAAsB,GAIvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,0BAA0B,EAA6B,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,GAI3B,MAAM,cAAc,CAAC"}
package/dist/opossum.d.ts CHANGED
@@ -20,11 +20,22 @@
20
20
  * advertised BLE name is assumed to be just `47L127000`
21
21
  * (`OPOSSUM_DEVICE_NAME_PREFIX`), not literally starting with "Opossum".
22
22
  *
23
- * Android side note from the doc: MTU should be negotiated up to 144 for
24
- * this device family. That's a transport-layer concern (the caller's BLE
25
- * connect step), out of scope here this file only builds/parses packets.
23
+ * ## Why intensity alone never made the motor spin (fixed here)
24
+ *
25
+ * The doc's B3 command only sets a *displayed* "channel strength" (0-200,
26
+ * same scale as Coyote's strength) — the actual motor drive comes from B0,
27
+ * a 20-byte packet carrying 4×25ms amplitude samples (0-100) per channel
28
+ * that **must be re-sent every 100ms** to keep vibrating; the moment the
29
+ * stream stops, so does the motor. `setIntensity`/`vibrate_start` used to
30
+ * write B3 once and never touch B0 at all — the device updated its
31
+ * strength *state* but the motor never actually received a waveform to
32
+ * play. This adapter now drives an internal 100ms `ProtocolTickLoop`
33
+ * (started/stopped by `setIntensity`/`adjustIntensity`/`emergencyStop`
34
+ * whenever either channel's intensity crosses 0) that streams `writeWaveformFrame()`
35
+ * itself — `vibrate_start`'s external contract (fire-and-forget, no caller
36
+ * tick loop) is unchanged, it just actually works now.
26
37
  */
27
- import type { Channel } from '@dg-kit/core';
38
+ import type { Channel, OpossumVibrationPatternName } from '@dg-kit/core';
28
39
  import type { WebBluetoothConnectionContext } from './base.js';
29
40
  export interface OpossumState {
30
41
  connected: boolean;
@@ -40,15 +51,31 @@ export interface OpossumButtonEvent {
40
51
  sequence: number;
41
52
  pressed: Set<OpossumButton>;
42
53
  }
54
+ /**
55
+ * Named vibration-rhythm envelopes, each element a 0-100 amplitude sample
56
+ * covering 25ms (so a 40-element pattern spans one second), looped forever
57
+ * while a channel is running. Each B0 tick's actual byte is this envelope
58
+ * value scaled by the channel's current intensity (0-200 → 0-100 ceiling),
59
+ * so `pattern` (rhythm/shape) and `intensity` (how strong) compose
60
+ * independently — switching pattern doesn't change perceived peak strength.
61
+ * Kept as named presets rather than letting the LLM submit an arbitrary
62
+ * array: an LLM-generated envelope has no guardrail against e.g. a rapid
63
+ * 0↔100 alternation that reads as "intense" in the abstract but is
64
+ * unpleasant/startling on real skin.
65
+ */
66
+ export declare const OPOSSUM_VIBRATION_PATTERNS: Record<OpossumVibrationPatternName, readonly number[]>;
43
67
  type OpossumStateListener = (state: OpossumState) => void;
44
68
  type OpossumButtonListener = (event: OpossumButtonEvent) => void;
45
69
  export declare class OpossumVibrateAdapter {
46
70
  private state;
47
71
  private writeChar;
48
72
  private notifyChar;
49
- private batteryChar;
50
73
  private readonly stateListeners;
51
74
  private readonly buttonListeners;
75
+ private readonly tickLoop;
76
+ private readonly patternCursor;
77
+ private readonly patterns;
78
+ private readonly patternState;
52
79
  onConnected(context: WebBluetoothConnectionContext): Promise<void>;
53
80
  onDisconnected(): Promise<void>;
54
81
  getState(): OpossumState;
@@ -56,7 +83,9 @@ export declare class OpossumVibrateAdapter {
56
83
  onStateChanged(listener: OpossumStateListener): () => void;
57
84
  /**
58
85
  * 0xB3 direct intensity: A/B in 0-200, or 'unchanged' to leave that
59
- * channel as-is (mapped to the 0xFF sentinel byte).
86
+ * channel as-is (mapped to the 0xFF sentinel byte). Starts/stops the
87
+ * internal B0 tick loop so the motor actually follows — see the file
88
+ * doc comment for why that's necessary.
60
89
  */
61
90
  setIntensity(channelA: number | 'unchanged', channelB: number | 'unchanged'): Promise<void>;
62
91
  /**
@@ -69,12 +98,22 @@ export declare class OpossumVibrateAdapter {
69
98
  * delta instead of compounding.
70
99
  */
71
100
  adjustIntensity(channel: Channel, delta: number): Promise<void>;
101
+ /**
102
+ * Sets which named rhythm envelope a channel's B0 stream follows (see
103
+ * `OPOSSUM_VIBRATION_PATTERNS`). If the channel is currently running
104
+ * (intensity > 0), the new pattern takes over from its own beginning on
105
+ * the next tick — changing rhythm restarts the phase rather than
106
+ * splicing into wherever the old pattern's cursor happened to be, so the
107
+ * new rhythm is predictable. Does not touch intensity.
108
+ */
109
+ setVibrationPattern(channel: Channel, pattern: readonly number[]): void;
72
110
  /**
73
111
  * 0xB0 vibration waveform. This is a single packet builder/writer — the
74
- * device expects it re-sent (~every 100ms) by the CALLER to sustain a
75
- * waveform effect, but that re-send loop is the caller's responsibility;
76
- * this device doesn't need (and this adapter doesn't run) a tick loop
77
- * the way Coyote does, since 0xB3 is a direct "set now" command.
112
+ * device expects it re-sent (~every 100ms) to sustain a waveform effect.
113
+ * `setIntensity`/`adjustIntensity`/`emergencyStop` already drive this
114
+ * automatically via an internal tick loop; call this directly only for
115
+ * advanced one-off frames, and never concurrently with a running channel
116
+ * (intensity > 0) or writes will interleave/race with the internal loop.
78
117
  */
79
118
  writeWaveformFrame(channelA: [number, number, number, number], channelB: [number, number, number, number]): Promise<void>;
80
119
  /** 0x50 LED color + button-state-reporting toggle. */
@@ -85,10 +124,26 @@ export declare class OpossumVibrateAdapter {
85
124
  * enumerates exactly 21 fixed preamble bytes; 1 (opcode) + 21 + 2 (A/B)
86
125
  * is actually 24. Trusting the literal, unambiguous byte enumeration over
87
126
  * the (likely miscounted) total-length label.
127
+ *
128
+ * The doc states the on-device screen only updates when the host
129
+ * actively pushes this after a B3 change — `setIntensity()` and the B3
130
+ * notification handler both call this so the screen and our own state
131
+ * never drift apart regardless of which side initiated the change.
88
132
  */
89
133
  updateDisplay(channelA: number, channelB: number): Promise<void>;
90
134
  /** Best-effort safety call: drive both channels to zero, ignore failures. */
91
135
  emergencyStop(): Promise<void>;
136
+ private applyIntensity;
137
+ private resetPatternCursor;
138
+ private buildQuad;
139
+ private performTick;
140
+ /**
141
+ * Starts the B0 tick loop the moment either channel has intensity > 0,
142
+ * stops it (and writes one final explicit all-zero B0 frame — the same
143
+ * "don't just cease ticking, say stop" principle as Coyote's
144
+ * `emergencyStop`) once both channels are back at 0.
145
+ */
146
+ private syncTickLoop;
92
147
  private readonly handleNotification;
93
148
  private write;
94
149
  private clamp;
@@ -1 +1 @@
1
- {"version":3,"file":"opossum.d.ts","sourceRoot":"","sources":["../src/opossum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAC;AAe/D,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,uBAAuB,IAAI,YAAY,CAEtD;AAED,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,OAAO,GACP,MAAM,GACN,IAAI,GACJ,MAAM,GACN,MAAM,GACN,OAAO,GACP,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;CAC7B;AAiBD,KAAK,oBAAoB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;AAC1D,KAAK,qBAAqB,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAEjE,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,UAAU,CAAsD;IACxE,OAAO,CAAC,WAAW,CAAsD;IAEzE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAClE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoC;IAE9D,WAAW,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IA0ClE,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBrC,QAAQ,IAAI,YAAY;IAIxB,gBAAgB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAO7D,cAAc,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAO1D;;;OAGG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,GAAG,WAAW,EAC9B,QAAQ,EAAE,MAAM,GAAG,WAAW,GAC7B,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;;;;OAQG;IACG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrE;;;;;;OAMG;IACG,kBAAkB,CACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAC1C,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC;IAchB,sDAAsD;IAChD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1E;;;;;;OAMG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IActE,6EAA6E;IACvE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAwBjC;YAEY,KAAK;IAOnB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,eAAe;CAKxB"}
1
+ {"version":3,"file":"opossum.d.ts","sourceRoot":"","sources":["../src/opossum.ts"],"names":[],"mappings":"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"}