@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 +2 -4
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +17 -76
- package/dist/base.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +10 -2
- package/dist/constants.js.map +1 -1
- package/dist/gatt-utils.d.ts +7 -0
- package/dist/gatt-utils.d.ts.map +1 -1
- package/dist/gatt-utils.js +12 -0
- package/dist/gatt-utils.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/opossum.d.ts +65 -10
- package/dist/opossum.d.ts.map +1 -1
- package/dist/opossum.js +155 -45
- package/dist/opossum.js.map +1 -1
- package/dist/paw-prints.d.ts.map +1 -1
- package/dist/paw-prints.js +17 -0
- package/dist/paw-prints.js.map +1 -1
- package/dist/tick-loop.d.ts +28 -0
- package/dist/tick-loop.d.ts.map +1 -0
- package/dist/tick-loop.js +76 -0
- package/dist/tick-loop.js.map +1 -0
- package/dist/v2.d.ts.map +1 -1
- package/dist/v2.js +8 -0
- package/dist/v2.js.map +1 -1
- package/dist/wave-cursor.d.ts +35 -0
- package/dist/wave-cursor.d.ts.map +1 -0
- package/dist/wave-cursor.js +40 -0
- package/dist/wave-cursor.js.map +1 -0
- package/package.json +2 -2
package/dist/opossum.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { clampIndicatorColor, clampNumber, connectSensorGatt, disconnectSensorGatt, writeCharacteristicValue, } from './gatt-utils.js';
|
|
2
|
+
import { ProtocolTickLoop } from './tick-loop.js';
|
|
3
|
+
import { WaveCursor, createEmptyWaveCursorState } from './wave-cursor.js';
|
|
3
4
|
export function createEmptyOpossumState() {
|
|
4
5
|
return { connected: false, battery: 0, intensityA: 0, intensityB: 0 };
|
|
5
6
|
}
|
|
@@ -17,42 +18,68 @@ const BUTTON_BITS = [
|
|
|
17
18
|
['G', 14],
|
|
18
19
|
['D', 15],
|
|
19
20
|
];
|
|
21
|
+
/**
|
|
22
|
+
* Named vibration-rhythm envelopes, each element a 0-100 amplitude sample
|
|
23
|
+
* covering 25ms (so a 40-element pattern spans one second), looped forever
|
|
24
|
+
* while a channel is running. Each B0 tick's actual byte is this envelope
|
|
25
|
+
* value scaled by the channel's current intensity (0-200 → 0-100 ceiling),
|
|
26
|
+
* so `pattern` (rhythm/shape) and `intensity` (how strong) compose
|
|
27
|
+
* independently — switching pattern doesn't change perceived peak strength.
|
|
28
|
+
* Kept as named presets rather than letting the LLM submit an arbitrary
|
|
29
|
+
* array: an LLM-generated envelope has no guardrail against e.g. a rapid
|
|
30
|
+
* 0↔100 alternation that reads as "intense" in the abstract but is
|
|
31
|
+
* unpleasant/startling on real skin.
|
|
32
|
+
*/
|
|
33
|
+
export const OPOSSUM_VIBRATION_PATTERNS = {
|
|
34
|
+
constant: [100],
|
|
35
|
+
pulse: [...Array(20).fill(100), ...Array(20).fill(0)],
|
|
36
|
+
wave: Array.from({ length: 40 }, (_, i) => Math.round(50 + 50 * Math.sin((i / 40) * 2 * Math.PI))),
|
|
37
|
+
ramp: Array.from({ length: 40 }, (_, i) => Math.round(((i + 1) / 40) * 100)),
|
|
38
|
+
heartbeat: [
|
|
39
|
+
...Array(6).fill(100),
|
|
40
|
+
...Array(6).fill(0),
|
|
41
|
+
...Array(6).fill(80),
|
|
42
|
+
...Array(30).fill(0),
|
|
43
|
+
],
|
|
44
|
+
};
|
|
20
45
|
export class OpossumVibrateAdapter {
|
|
21
46
|
state = createEmptyOpossumState();
|
|
22
47
|
writeChar = null;
|
|
23
48
|
notifyChar = null;
|
|
24
|
-
batteryChar = null;
|
|
25
49
|
stateListeners = new Set();
|
|
26
50
|
buttonListeners = new Set();
|
|
51
|
+
tickLoop = new ProtocolTickLoop();
|
|
52
|
+
patternCursor = new WaveCursor((frame) => clampNumber(frame, 0, 100));
|
|
53
|
+
patterns = {
|
|
54
|
+
A: OPOSSUM_VIBRATION_PATTERNS.constant,
|
|
55
|
+
B: OPOSSUM_VIBRATION_PATTERNS.constant,
|
|
56
|
+
};
|
|
57
|
+
patternState = {
|
|
58
|
+
A: createEmptyWaveCursorState(),
|
|
59
|
+
B: createEmptyWaveCursorState(),
|
|
60
|
+
};
|
|
27
61
|
async onConnected(context) {
|
|
28
62
|
try {
|
|
29
|
-
const
|
|
30
|
-
this.writeChar =
|
|
31
|
-
this.notifyChar =
|
|
32
|
-
await this.notifyChar.startNotifications();
|
|
33
|
-
this.notifyChar.addEventListener('characteristicvaluechanged', this.handleNotification);
|
|
34
|
-
await performV3FamilyConnectHandshake(context.server, this.writeChar);
|
|
35
|
-
let battery = 0;
|
|
36
|
-
try {
|
|
37
|
-
const batteryService = await context.server.getPrimaryService(V3_BATTERY_SERVICE);
|
|
38
|
-
this.batteryChar = await batteryService.getCharacteristic(V3_BATTERY_CHAR);
|
|
39
|
-
const value = await this.batteryChar.readValue();
|
|
40
|
-
battery = value.getUint8(0);
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
// Best-effort: some units don't expose (or fail to read) battery.
|
|
44
|
-
this.batteryChar = null;
|
|
45
|
-
battery = 0;
|
|
46
|
-
}
|
|
63
|
+
const connection = await connectSensorGatt(context, this.handleNotification);
|
|
64
|
+
this.writeChar = connection.writeChar;
|
|
65
|
+
this.notifyChar = connection.notifyChar;
|
|
47
66
|
this.state = {
|
|
48
67
|
connected: true,
|
|
49
|
-
deviceName:
|
|
50
|
-
address:
|
|
51
|
-
battery,
|
|
68
|
+
deviceName: connection.deviceName,
|
|
69
|
+
address: connection.address,
|
|
70
|
+
battery: connection.battery,
|
|
52
71
|
intensityA: 0,
|
|
53
72
|
intensityB: 0,
|
|
54
73
|
};
|
|
74
|
+
this.patterns.A = OPOSSUM_VIBRATION_PATTERNS.constant;
|
|
75
|
+
this.patterns.B = OPOSSUM_VIBRATION_PATTERNS.constant;
|
|
76
|
+
this.patternState.A = createEmptyWaveCursorState();
|
|
77
|
+
this.patternState.B = createEmptyWaveCursorState();
|
|
55
78
|
this.emitState();
|
|
79
|
+
// Connect-time handshake writes an LED-color+button-reporting packet
|
|
80
|
+
// that defaults button reporting OFF — without this, D0 (button)
|
|
81
|
+
// notifications never arrive at all.
|
|
82
|
+
await this.setLed(0x01, true);
|
|
56
83
|
}
|
|
57
84
|
catch (error) {
|
|
58
85
|
// Tear down the same way onDisconnected() does — if startNotifications()
|
|
@@ -65,18 +92,15 @@ export class OpossumVibrateAdapter {
|
|
|
65
92
|
}
|
|
66
93
|
}
|
|
67
94
|
async onDisconnected() {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
await this.notifyChar.stopNotifications();
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
// ignore best effort
|
|
75
|
-
}
|
|
76
|
-
}
|
|
95
|
+
this.tickLoop.stop();
|
|
96
|
+
await this.tickLoop.waitForIdle();
|
|
97
|
+
await disconnectSensorGatt(this.notifyChar, this.handleNotification);
|
|
77
98
|
this.writeChar = null;
|
|
78
99
|
this.notifyChar = null;
|
|
79
|
-
this.
|
|
100
|
+
this.patterns.A = OPOSSUM_VIBRATION_PATTERNS.constant;
|
|
101
|
+
this.patterns.B = OPOSSUM_VIBRATION_PATTERNS.constant;
|
|
102
|
+
this.patternState.A = createEmptyWaveCursorState();
|
|
103
|
+
this.patternState.B = createEmptyWaveCursorState();
|
|
80
104
|
this.state = createEmptyOpossumState();
|
|
81
105
|
this.emitState();
|
|
82
106
|
}
|
|
@@ -97,7 +121,9 @@ export class OpossumVibrateAdapter {
|
|
|
97
121
|
}
|
|
98
122
|
/**
|
|
99
123
|
* 0xB3 direct intensity: A/B in 0-200, or 'unchanged' to leave that
|
|
100
|
-
* channel as-is (mapped to the 0xFF sentinel byte).
|
|
124
|
+
* channel as-is (mapped to the 0xFF sentinel byte). Starts/stops the
|
|
125
|
+
* internal B0 tick loop so the motor actually follows — see the file
|
|
126
|
+
* doc comment for why that's necessary.
|
|
101
127
|
*/
|
|
102
128
|
async setIntensity(channelA, channelB) {
|
|
103
129
|
const byteA = channelA === 'unchanged' ? 0xff : this.clamp(channelA, 0, 200);
|
|
@@ -105,10 +131,12 @@ export class OpossumVibrateAdapter {
|
|
|
105
131
|
const packet = new Uint8Array([0xb3, byteA, byteB]);
|
|
106
132
|
await this.write(packet);
|
|
107
133
|
if (channelA !== 'unchanged')
|
|
108
|
-
this.
|
|
134
|
+
this.applyIntensity('A', byteA);
|
|
109
135
|
if (channelB !== 'unchanged')
|
|
110
|
-
this.
|
|
136
|
+
this.applyIntensity('B', byteB);
|
|
111
137
|
this.emitState();
|
|
138
|
+
await this.syncTickLoop();
|
|
139
|
+
await this.updateDisplay(this.state.intensityA, this.state.intensityB).catch(() => undefined);
|
|
112
140
|
}
|
|
113
141
|
/**
|
|
114
142
|
* Relative adjust for one channel, e.g. for a `vibrate_adjust` tool call.
|
|
@@ -129,12 +157,28 @@ export class OpossumVibrateAdapter {
|
|
|
129
157
|
await this.setIntensity('unchanged', next);
|
|
130
158
|
}
|
|
131
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Sets which named rhythm envelope a channel's B0 stream follows (see
|
|
162
|
+
* `OPOSSUM_VIBRATION_PATTERNS`). If the channel is currently running
|
|
163
|
+
* (intensity > 0), the new pattern takes over from its own beginning on
|
|
164
|
+
* the next tick — changing rhythm restarts the phase rather than
|
|
165
|
+
* splicing into wherever the old pattern's cursor happened to be, so the
|
|
166
|
+
* new rhythm is predictable. Does not touch intensity.
|
|
167
|
+
*/
|
|
168
|
+
setVibrationPattern(channel, pattern) {
|
|
169
|
+
this.patterns[channel] = pattern.length > 0 ? pattern : OPOSSUM_VIBRATION_PATTERNS.constant;
|
|
170
|
+
const running = (channel === 'A' ? this.state.intensityA : this.state.intensityB) > 0;
|
|
171
|
+
if (running) {
|
|
172
|
+
this.resetPatternCursor(channel);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
132
175
|
/**
|
|
133
176
|
* 0xB0 vibration waveform. This is a single packet builder/writer — the
|
|
134
|
-
* device expects it re-sent (~every 100ms)
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
177
|
+
* device expects it re-sent (~every 100ms) to sustain a waveform effect.
|
|
178
|
+
* `setIntensity`/`adjustIntensity`/`emergencyStop` already drive this
|
|
179
|
+
* automatically via an internal tick loop; call this directly only for
|
|
180
|
+
* advanced one-off frames, and never concurrently with a running channel
|
|
181
|
+
* (intensity > 0) or writes will interleave/race with the internal loop.
|
|
138
182
|
*/
|
|
139
183
|
async writeWaveformFrame(channelA, channelB) {
|
|
140
184
|
const packet = new Uint8Array(20);
|
|
@@ -164,6 +208,11 @@ export class OpossumVibrateAdapter {
|
|
|
164
208
|
* enumerates exactly 21 fixed preamble bytes; 1 (opcode) + 21 + 2 (A/B)
|
|
165
209
|
* is actually 24. Trusting the literal, unambiguous byte enumeration over
|
|
166
210
|
* the (likely miscounted) total-length label.
|
|
211
|
+
*
|
|
212
|
+
* The doc states the on-device screen only updates when the host
|
|
213
|
+
* actively pushes this after a B3 change — `setIntensity()` and the B3
|
|
214
|
+
* notification handler both call this so the screen and our own state
|
|
215
|
+
* never drift apart regardless of which side initiated the change.
|
|
167
216
|
*/
|
|
168
217
|
async updateDisplay(channelA, channelB) {
|
|
169
218
|
const preamble = [
|
|
@@ -187,6 +236,68 @@ export class OpossumVibrateAdapter {
|
|
|
187
236
|
// ignore best effort
|
|
188
237
|
}
|
|
189
238
|
}
|
|
239
|
+
applyIntensity(channel, next) {
|
|
240
|
+
const wasStopped = (channel === 'A' ? this.state.intensityA : this.state.intensityB) <= 0;
|
|
241
|
+
if (channel === 'A') {
|
|
242
|
+
this.state.intensityA = next;
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
this.state.intensityB = next;
|
|
246
|
+
}
|
|
247
|
+
// Only a genuine stopped→running transition restarts the pattern phase
|
|
248
|
+
// — an adjustIntensity() call while already running must not stutter
|
|
249
|
+
// the rhythm back to its start on every small step.
|
|
250
|
+
if (wasStopped && next > 0) {
|
|
251
|
+
this.resetPatternCursor(channel);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
resetPatternCursor(channel) {
|
|
255
|
+
this.patternState[channel] = {
|
|
256
|
+
frames: [...this.patterns[channel]],
|
|
257
|
+
index: 0,
|
|
258
|
+
loop: true,
|
|
259
|
+
active: true,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
buildQuad(channel) {
|
|
263
|
+
const intensity = channel === 'A' ? this.state.intensityA : this.state.intensityB;
|
|
264
|
+
if (intensity <= 0)
|
|
265
|
+
return [0, 0, 0, 0];
|
|
266
|
+
// Intensity (0-200, same scale as Coyote strength) becomes the B0
|
|
267
|
+
// ceiling (0-100); the pattern's 0-100 envelope value is a percentage
|
|
268
|
+
// of that ceiling, so pattern and intensity compose independently.
|
|
269
|
+
const ceiling = intensity / 2;
|
|
270
|
+
const state = this.patternState[channel];
|
|
271
|
+
const quad = [];
|
|
272
|
+
for (let i = 0; i < 4; i++) {
|
|
273
|
+
const envelope = this.patternCursor.advanceStep(state) ?? 0;
|
|
274
|
+
quad.push(clampNumber((envelope / 100) * ceiling, 0, 100));
|
|
275
|
+
}
|
|
276
|
+
return quad;
|
|
277
|
+
}
|
|
278
|
+
async performTick() {
|
|
279
|
+
if (!this.writeChar)
|
|
280
|
+
return;
|
|
281
|
+
await this.writeWaveformFrame(this.buildQuad('A'), this.buildQuad('B'));
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Starts the B0 tick loop the moment either channel has intensity > 0,
|
|
285
|
+
* stops it (and writes one final explicit all-zero B0 frame — the same
|
|
286
|
+
* "don't just cease ticking, say stop" principle as Coyote's
|
|
287
|
+
* `emergencyStop`) once both channels are back at 0.
|
|
288
|
+
*/
|
|
289
|
+
async syncTickLoop() {
|
|
290
|
+
const shouldRun = this.state.intensityA > 0 || this.state.intensityB > 0;
|
|
291
|
+
if (shouldRun) {
|
|
292
|
+
this.tickLoop.start(() => this.performTick());
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
this.tickLoop.stop();
|
|
296
|
+
await this.tickLoop.waitForIdle();
|
|
297
|
+
if (this.writeChar) {
|
|
298
|
+
await this.writeWaveformFrame([0, 0, 0, 0], [0, 0, 0, 0]).catch(() => undefined);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
190
301
|
handleNotification = (event) => {
|
|
191
302
|
const target = event.target;
|
|
192
303
|
const value = target?.value;
|
|
@@ -197,6 +308,8 @@ export class OpossumVibrateAdapter {
|
|
|
197
308
|
this.state.intensityA = value.getUint8(1);
|
|
198
309
|
this.state.intensityB = value.getUint8(2);
|
|
199
310
|
this.emitState();
|
|
311
|
+
void this.syncTickLoop();
|
|
312
|
+
void this.updateDisplay(this.state.intensityA, this.state.intensityB).catch(() => undefined);
|
|
200
313
|
return;
|
|
201
314
|
}
|
|
202
315
|
if (opcode === 0xd0 && value.byteLength >= 4) {
|
|
@@ -218,10 +331,7 @@ export class OpossumVibrateAdapter {
|
|
|
218
331
|
await writeCharacteristicValue(this.writeChar, packet);
|
|
219
332
|
}
|
|
220
333
|
clamp(value, min, max) {
|
|
221
|
-
|
|
222
|
-
if (!Number.isFinite(number))
|
|
223
|
-
return min;
|
|
224
|
-
return Math.max(min, Math.min(max, Math.round(number)));
|
|
334
|
+
return clampNumber(value, min, max);
|
|
225
335
|
}
|
|
226
336
|
emitState() {
|
|
227
337
|
const snapshot = this.getState();
|
package/dist/opossum.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opossum.js","sourceRoot":"","sources":["../src/opossum.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"opossum.js","sourceRoot":"","sources":["../src/opossum.ts"],"names":[],"mappings":"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"}
|
package/dist/paw-prints.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paw-prints.d.ts","sourceRoot":"","sources":["../src/paw-prints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,KAAK,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAS1F,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3D;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1B,CAAC;AAEN,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAC3E,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAiBlE,qBAAa,sBAAuB,YAAW,yBAAyB,CAAC,gBAAgB,CAAC;IACxF,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,UAAU,CAAsD;IAExE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IACxE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IAE9D,WAAW,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"paw-prints.d.ts","sourceRoot":"","sources":["../src/paw-prints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,KAAK,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAS1F,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3D;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1B,CAAC;AAEN,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAC3E,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAiBlE,qBAAa,sBAAuB,YAAW,yBAAyB,CAAC,gBAAgB,CAAC;IACxF,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,UAAU,CAAsD;IAExE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IACxE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IAE9D,WAAW,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAyClE,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,QAAQ,IAAI,WAAW;IAIvB,SAAS,CAAC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,IAAI;IAOzD,cAAc,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,IAAI;IAO5D;;;;OAIG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjF,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAWjE,eAAe;IAmB7B,OAAO,CAAC,SAAS;YAOH,YAAY;IAO1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAoBjC;IAEF,OAAO,CAAC,YAAY;CA8ErB"}
|
package/dist/paw-prints.js
CHANGED
|
@@ -56,6 +56,15 @@ export class PawPrintsSensorAdapter {
|
|
|
56
56
|
battery: connection.battery,
|
|
57
57
|
};
|
|
58
58
|
this.emitState();
|
|
59
|
+
// The doc requires this write immediately after connecting ("建议先设置
|
|
60
|
+
// 无任何触发模式") — without it the device may proactively drop the BLE
|
|
61
|
+
// connection on its own. Deliberately not best-effort like the V3
|
|
62
|
+
// handshake steps: if this fails, the connection genuinely isn't in
|
|
63
|
+
// the state the device requires, so surfacing the failure (rolling
|
|
64
|
+
// back via the catch block below, like any other step here) is more
|
|
65
|
+
// honest than reporting a successful connection the device is about
|
|
66
|
+
// to drop anyway.
|
|
67
|
+
await this.configureTrigger(0x00, 0x01);
|
|
59
68
|
}
|
|
60
69
|
catch (error) {
|
|
61
70
|
await this.resetConnection(false);
|
|
@@ -142,6 +151,14 @@ export class PawPrintsSensorAdapter {
|
|
|
142
151
|
const reading = this.parseReading(value);
|
|
143
152
|
if (!reading)
|
|
144
153
|
return;
|
|
154
|
+
// The device has no dedicated battery service (0x180A read at connect
|
|
155
|
+
// time is best-effort and often unavailable) — 0x51 status messages are
|
|
156
|
+
// the actual ongoing battery source, so fold them into state here or the
|
|
157
|
+
// UI's battery reading stays frozen at whatever connect-time guessed.
|
|
158
|
+
if (reading.type === 'status') {
|
|
159
|
+
this.state = { ...this.state, battery: reading.battery };
|
|
160
|
+
this.emitState();
|
|
161
|
+
}
|
|
145
162
|
for (const listener of this.readingListeners) {
|
|
146
163
|
listener(reading);
|
|
147
164
|
}
|
package/dist/paw-prints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paw-prints.js","sourceRoot":"","sources":["../src/paw-prints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,sBAAsB,EAAoB,MAAM,cAAc,CAAC;AAExE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AA4BzB,4BAA4B;AAC5B,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,gCAAgC;AAChC,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAEvC,MAAM,OAAO,sBAAsB;IACzB,KAAK,GAAgB,sBAAsB,EAAE,CAAC;IAC9C,SAAS,GAAiD,IAAI,CAAC;IAC/D,UAAU,GAAiD,IAAI,CAAC;IAEvD,gBAAgB,GAAG,IAAI,GAAG,EAA4B,CAAC;IACvD,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEpE,KAAK,CAAC,WAAW,CAAC,OAAsC;QACtD,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAElC,sEAAsE;QACtE,oEAAoE;QACpE,wEAAwE;QACxE,mEAAmE;QACnE,+BAA+B;QAC/B,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,sBAAsB,EAAE;YAC3B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;YACrC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE;SACjC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7E,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG;gBACX,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"paw-prints.js","sourceRoot":"","sources":["../src/paw-prints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,sBAAsB,EAAoB,MAAM,cAAc,CAAC;AAExE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AA4BzB,4BAA4B;AAC5B,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,gCAAgC;AAChC,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAEvC,MAAM,OAAO,sBAAsB;IACzB,KAAK,GAAgB,sBAAsB,EAAE,CAAC;IAC9C,SAAS,GAAiD,IAAI,CAAC;IAC/D,UAAU,GAAiD,IAAI,CAAC;IAEvD,gBAAgB,GAAG,IAAI,GAAG,EAA4B,CAAC;IACvD,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEpE,KAAK,CAAC,WAAW,CAAC,OAAsC;QACtD,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAElC,sEAAsE;QACtE,oEAAoE;QACpE,wEAAwE;QACxE,mEAAmE;QACnE,+BAA+B;QAC/B,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,sBAAsB,EAAE;YAC3B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;YACrC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE;SACjC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7E,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG;gBACX,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;YAEjB,mEAAmE;YACnE,iEAAiE;YACjE,kEAAkE;YAClE,oEAAoE;YACpE,mEAAmE;YACnE,oEAAoE;YACpE,oEAAoE;YACpE,kBAAkB;YAClB,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,QAAkC;QAC1C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,QAAgC;QAC7C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAE,MAAmB;QACrE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;QAClC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAClB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACjB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc,EAAE,KAAa;QAC7D,MAAM,IAAI,CAAC,YAAY,CACrB,UAAU,CAAC,EAAE,CACX,eAAe,EACf,mBAAmB,CAAC,MAAM,CAAC,EAC3B,mBAAmB,CAAC,MAAM,CAAC,EAC3B,KAAK,CACN,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,IAAa;QACzC,MAAM,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAErE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACjD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,sBAAsB,EAAE;YAC3B,UAAU,EAAE,kBAAkB;YAC9B,OAAO,EAAE,eAAe;SACzB,CAAC;QAEF,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,SAAS;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3C,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAiB;QAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,wBAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAEgB,kBAAkB,GAAG,CAAC,KAAY,EAAQ,EAAE;QAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAsD,CAAC;QAC5E,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC;YAAE,OAAO;QAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,sEAAsE;QACtE,wEAAwE;QACxE,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACzD,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7C,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEM,YAAY,CAAC,KAAe;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEjC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACtC,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACxB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC7B,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;iBAC3B,CAAC;YACJ,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACtC,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC1B,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;iBAClC,CAAC;YACJ,CAAC;YAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACtC,OAAO;oBACL,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;iBAC3B,CAAC;YACJ,CAAC;YAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACtC,OAAO;oBACL,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC1B,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACzB,CAAC;YACJ,CAAC;YAED,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACtC,OAAO;oBACL,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC3B,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC7B,gEAAgE;oBAChE,kEAAkE;oBAClE,kEAAkE;oBAClE,6DAA6D;oBAC7D,4CAA4C;oBAC5C,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC/B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;iBAC9B,CAAC;YACJ,CAAC;YAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;gBAC/B,oEAAoE;gBACpE,qEAAqE;gBACrE,mEAAmE;gBACnE,mEAAmE;gBACnE,oEAAoE;gBACpE,IAAI,KAAK,CAAC,UAAU,GAAG,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,yBAAyB;oBAAE,OAAO,IAAI,CAAC;gBAC1F,OAAO;oBACL,IAAI,EAAE,kBAAkB;oBACxB,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC1D,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC1D,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;iBAC7D,CAAC;YACJ,CAAC;YAED;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared 100ms tick-loop primitive: runs `callback` roughly every 100ms via
|
|
3
|
+
* a Web Worker timer (immune to a backgrounded tab's `setInterval`
|
|
4
|
+
* throttling) with a plain `setInterval` fallback when Workers aren't
|
|
5
|
+
* available (e.g. some Tauri WebViews, or `new Blob()`/`URL.createObjectURL`
|
|
6
|
+
* unsupported). Guarantees no re-entrant overlap: if `callback` is still
|
|
7
|
+
* running when the next tick fires, that tick is skipped rather than
|
|
8
|
+
* queued or run concurrently.
|
|
9
|
+
*
|
|
10
|
+
* Extracted from `BaseCoyoteProtocolAdapter` (the mechanism was originally
|
|
11
|
+
* inline there) so `OpossumVibrateAdapter`'s vibration-pattern tick can
|
|
12
|
+
* reuse the identical Worker/fallback/reentrancy behavior — both device
|
|
13
|
+
* families need the exact same "keep streaming a B0-shaped packet every
|
|
14
|
+
* 100ms, survive backgrounding, never overlap writes" guarantee.
|
|
15
|
+
*/
|
|
16
|
+
export declare class ProtocolTickLoop {
|
|
17
|
+
private worker;
|
|
18
|
+
private interval;
|
|
19
|
+
private inFlight;
|
|
20
|
+
/** No-op if already running (matches the pre-extraction behavior). */
|
|
21
|
+
start(callback: () => Promise<void>): void;
|
|
22
|
+
stop(): void;
|
|
23
|
+
/** Resolves once any in-flight `callback` invocation has finished. */
|
|
24
|
+
waitForIdle(): Promise<void>;
|
|
25
|
+
private runOnce;
|
|
26
|
+
private createWorker;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=tick-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tick-loop.d.ts","sourceRoot":"","sources":["../src/tick-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,QAAQ,CAAS;IAEzB,sEAAsE;IACtE,KAAK,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAkB1C,IAAI,IAAI,IAAI;IAYZ,sEAAsE;IAChE,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;YAMpB,OAAO;IAcrB,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared 100ms tick-loop primitive: runs `callback` roughly every 100ms via
|
|
3
|
+
* a Web Worker timer (immune to a backgrounded tab's `setInterval`
|
|
4
|
+
* throttling) with a plain `setInterval` fallback when Workers aren't
|
|
5
|
+
* available (e.g. some Tauri WebViews, or `new Blob()`/`URL.createObjectURL`
|
|
6
|
+
* unsupported). Guarantees no re-entrant overlap: if `callback` is still
|
|
7
|
+
* running when the next tick fires, that tick is skipped rather than
|
|
8
|
+
* queued or run concurrently.
|
|
9
|
+
*
|
|
10
|
+
* Extracted from `BaseCoyoteProtocolAdapter` (the mechanism was originally
|
|
11
|
+
* inline there) so `OpossumVibrateAdapter`'s vibration-pattern tick can
|
|
12
|
+
* reuse the identical Worker/fallback/reentrancy behavior — both device
|
|
13
|
+
* families need the exact same "keep streaming a B0-shaped packet every
|
|
14
|
+
* 100ms, survive backgrounding, never overlap writes" guarantee.
|
|
15
|
+
*/
|
|
16
|
+
export class ProtocolTickLoop {
|
|
17
|
+
worker = null;
|
|
18
|
+
interval = null;
|
|
19
|
+
inFlight = false;
|
|
20
|
+
/** No-op if already running (matches the pre-extraction behavior). */
|
|
21
|
+
start(callback) {
|
|
22
|
+
if (this.worker || this.interval) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const fire = () => {
|
|
26
|
+
void this.runOnce(callback);
|
|
27
|
+
};
|
|
28
|
+
try {
|
|
29
|
+
this.worker = this.createWorker();
|
|
30
|
+
this.worker.onmessage = fire;
|
|
31
|
+
this.worker.postMessage('start');
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
this.interval = setInterval(fire, 100);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
stop() {
|
|
38
|
+
if (this.worker) {
|
|
39
|
+
this.worker.postMessage('stop');
|
|
40
|
+
this.worker.terminate();
|
|
41
|
+
this.worker = null;
|
|
42
|
+
}
|
|
43
|
+
if (this.interval) {
|
|
44
|
+
clearInterval(this.interval);
|
|
45
|
+
this.interval = null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** Resolves once any in-flight `callback` invocation has finished. */
|
|
49
|
+
async waitForIdle() {
|
|
50
|
+
while (this.inFlight) {
|
|
51
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async runOnce(callback) {
|
|
55
|
+
if (this.inFlight)
|
|
56
|
+
return;
|
|
57
|
+
this.inFlight = true;
|
|
58
|
+
try {
|
|
59
|
+
await callback();
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// A thrown callback error must not kill the loop — the next tick
|
|
63
|
+
// should still fire. Callers are expected to handle/log their own
|
|
64
|
+
// per-tick failures (e.g. a disconnected GATT write).
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
this.inFlight = false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
createWorker() {
|
|
71
|
+
const code = 'let timer;onmessage=(event)=>{if(event.data==="start"){if(timer)return;timer=setInterval(()=>postMessage(1),100);}else{clearInterval(timer);timer=null;}};';
|
|
72
|
+
const blob = new Blob([code], { type: 'application/javascript' });
|
|
73
|
+
return new Worker(URL.createObjectURL(blob));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=tick-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tick-loop.js","sourceRoot":"","sources":["../src/tick-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,GAAkB,IAAI,CAAC;IAC7B,QAAQ,GAA0C,IAAI,CAAC;IACvD,QAAQ,GAAG,KAAK,CAAC;IAEzB,sEAAsE;IACtE,KAAK,CAAC,QAA6B;QACjC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,QAA6B;QACjD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,QAAQ,EAAE,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;YACjE,kEAAkE;YAClE,sDAAsD;QACxD,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,MAAM,IAAI,GACR,4JAA4J,CAAC;QAC/J,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;CACF"}
|
package/dist/v2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2.d.ts","sourceRoot":"","sources":["../src/v2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAS5C,OAAO,EAAE,yBAAyB,EAAE,KAAK,6BAA6B,EAAE,MAAM,WAAW,CAAC;AAC1F,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,YAAY,CAAC;AAExE,qBAAa,uBAAwB,SAAQ,yBAAyB;IACpE,SAAS,CAAC,cAAc,EAAE,qCAAqC,GAAG,IAAI,CAAQ;IAC9E,SAAS,CAAC,WAAW,EAAE,qCAAqC,GAAG,IAAI,CAAQ;IAC3E,SAAS,CAAC,WAAW,EAAE,qCAAqC,GAAG,IAAI,CAAQ;IAC3E,SAAS,CAAC,WAAW,SAAK;IAC1B,SAAS,CAAC,WAAW,SAAK;IAEpB,WAAW,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;cA8CxD,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBnD,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAMpC,SAAS,CAAC,uBAAuB,IAAI,IAAI;IAKzC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAWpE,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;cAQ/C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;cAgD5B,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;cAMpC,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"v2.d.ts","sourceRoot":"","sources":["../src/v2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAS5C,OAAO,EAAE,yBAAyB,EAAE,KAAK,6BAA6B,EAAE,MAAM,WAAW,CAAC;AAC1F,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,YAAY,CAAC;AAExE,qBAAa,uBAAwB,SAAQ,yBAAyB;IACpE,SAAS,CAAC,cAAc,EAAE,qCAAqC,GAAG,IAAI,CAAQ;IAC9E,SAAS,CAAC,WAAW,EAAE,qCAAqC,GAAG,IAAI,CAAQ;IAC3E,SAAS,CAAC,WAAW,EAAE,qCAAqC,GAAG,IAAI,CAAQ;IAC3E,SAAS,CAAC,WAAW,SAAK;IAC1B,SAAS,CAAC,WAAW,SAAK;IAEpB,WAAW,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;cA8CxD,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBnD,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAMpC,SAAS,CAAC,uBAAuB,IAAI,IAAI;IAKzC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAWpE,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;cAQ/C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;cAgD5B,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;cAMpC,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBzD,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAUrB,QAAQ,CAAC,4BAA4B,GAAI,OAAO,KAAK,KAAG,IAAI,CAkB1D;CACH"}
|
package/dist/v2.js
CHANGED
|
@@ -138,6 +138,14 @@ export class CoyoteV2ProtocolAdapter extends BaseCoyoteProtocolAdapter {
|
|
|
138
138
|
// ignore best effort
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
+
// NOTE (unverified, do not "fix" without a real V2 device): the V3 doc's
|
|
142
|
+
// own migration note says "与 V2 协议不同的是,数据无需进行大小端转换"
|
|
143
|
+
// ("unlike V2, this data needs no endian conversion"), implying V2's
|
|
144
|
+
// 3-byte packed values are expected little-endian on the wire. Both
|
|
145
|
+
// encoders below emit big-endian (most-significant byte first). This is
|
|
146
|
+
// long-standing, presumably-working behavior with no V2 hardware
|
|
147
|
+
// available this session to confirm either reading against — flagged
|
|
148
|
+
// here rather than changed.
|
|
141
149
|
encodeV2Strength(a, b) {
|
|
142
150
|
const valueA = Math.round((this.clamp(a, 0, 200) * 2047) / 200);
|
|
143
151
|
const valueB = Math.round((this.clamp(b, 0, 200) * 2047) / 200);
|
package/dist/v2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2.js","sourceRoot":"","sources":["../src/v2.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"v2.js","sourceRoot":"","sources":["../src/v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared per-channel frame-queue stepping mechanics: index/loop/deactivate
|
|
3
|
+
* bookkeeping for a queue that gets consumed one 25ms slot at a time.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from `BaseCoyoteProtocolAdapter.advanceWaveStep` (the logic was
|
|
6
|
+
* originally inline there, operating directly on `ChannelWaveState`) so
|
|
7
|
+
* `OpossumVibrateAdapter`'s vibration-pattern cursor can reuse the identical
|
|
8
|
+
* indexing/looping/deactivation mechanics — both device families step a
|
|
9
|
+
* per-channel frame queue at the same 25ms grid, they just clamp/transform
|
|
10
|
+
* each raw frame differently (Coyote: `[freq,int]` tuple → clamped
|
|
11
|
+
* `WaveStep`; Opossum: a plain 0-100 number, transform is just clamping).
|
|
12
|
+
*
|
|
13
|
+
* Deliberately does NOT own quad-assembly (bundling 4 steps into one 100ms
|
|
14
|
+
* B0 write) — Coyote's `advanceWavePacket` has protocol-specific "channel
|
|
15
|
+
* disable" sentinel behavior on a short/empty queue that doesn't generalize,
|
|
16
|
+
* so quad-assembly stays in each caller.
|
|
17
|
+
*/
|
|
18
|
+
export interface WaveCursorState<TFrame> {
|
|
19
|
+
frames: TFrame[] | null;
|
|
20
|
+
index: number;
|
|
21
|
+
loop: boolean;
|
|
22
|
+
active: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function createEmptyWaveCursorState<TFrame>(): WaveCursorState<TFrame>;
|
|
25
|
+
export declare class WaveCursor<TFrame, TStep = TFrame> {
|
|
26
|
+
private readonly transform;
|
|
27
|
+
constructor(transform: (frame: TFrame) => TStep);
|
|
28
|
+
/**
|
|
29
|
+
* Returns the current frame (transformed) and advances the index, or
|
|
30
|
+
* `null` once the queue is exhausted (marking `state.active = false` for
|
|
31
|
+
* a non-looping queue, or immediately for an empty/inactive one).
|
|
32
|
+
*/
|
|
33
|
+
advanceStep(state: WaveCursorState<TFrame>): TStep | null;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=wave-cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wave-cursor.d.ts","sourceRoot":"","sources":["../src/wave-cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,eAAe,CAAC,MAAM;IACrC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,CAAC,CAE5E;AAED,qBAAa,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK;IAEhE;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI;CA4B1D"}
|