@neurodevs/node-lsl 23.1.0 → 23.1.2
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/build/__tests__/AbstractPackageTest.js +0 -1
- package/build/__tests__/AbstractPackageTest.js.map +1 -1
- package/build/__tests__/impl/BleGattController.test.d.ts +4 -0
- package/build/__tests__/impl/BleGattController.test.js +27 -5
- package/build/__tests__/impl/BleGattController.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamInlet.test.d.ts +4 -5
- package/build/__tests__/impl/LslStreamInlet.test.js +37 -58
- package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
- package/build/impl/LslStreamInfo.d.ts +3 -3
- package/build/impl/LslStreamInfo.js.map +1 -1
- package/build/impl/LslStreamInlet.d.ts +9 -39
- package/build/impl/LslStreamInlet.js +23 -151
- package/build/impl/LslStreamInlet.js.map +1 -1
- package/build/impl/LslStreamOutlet.d.ts +3 -3
- package/build/impl/LslStreamOutlet.js.map +1 -1
- package/build/impl/clocks/WindowedClockRegressor.d.ts +2 -2
- package/build/impl/clocks/WindowedClockRegressor.js.map +1 -1
- package/build/impl/controllers/BleGattController.d.ts +21 -12
- package/build/impl/controllers/BleGattController.js +22 -30
- package/build/impl/controllers/BleGattController.js.map +1 -1
- package/build/testDoubles/BleGatt/FakeBleGatt.d.ts +3 -2
- package/build/testDoubles/BleGatt/FakeBleGatt.js +6 -4
- package/build/testDoubles/BleGatt/FakeBleGatt.js.map +1 -1
- package/build/testDoubles/BleGatt/SpyBleGatt.d.ts +1 -1
- package/build/testDoubles/BleGatt/SpyBleGatt.js +2 -2
- package/build/testDoubles/BleGatt/SpyBleGatt.js.map +1 -1
- package/build/testDoubles/LslOutlet/FakeLslOutlet.d.ts +1 -1
- package/package.json +3 -4
- package/src/__tests__/AbstractPackageTest.ts +0 -2
- package/src/__tests__/impl/BleGattController.test.ts +48 -6
- package/src/__tests__/impl/LslStreamInlet.test.ts +45 -86
- package/src/impl/LslStreamInfo.ts +3 -3
- package/src/impl/LslStreamInlet.ts +38 -218
- package/src/impl/LslStreamOutlet.ts +3 -3
- package/src/impl/clocks/WindowedClockRegressor.ts +1 -1
- package/src/impl/controllers/BleGattController.ts +35 -37
- package/src/testDoubles/BleGatt/FakeBleGatt.ts +9 -6
- package/src/testDoubles/BleGatt/SpyBleGatt.ts +2 -2
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { unwrapPointer, createPointer, DataType, freePointer, PointerType, } from 'ffi-rs';
|
|
1
|
+
import { LiblslAdapter } from '@neurodevs/ndx-native';
|
|
3
2
|
export default class LslStreamInlet {
|
|
4
3
|
static Class;
|
|
5
4
|
static waitAfterOpenStreamMs = 100;
|
|
6
5
|
static lsl = LiblslAdapter.getInstance();
|
|
7
|
-
static handleLslError = handleLslError;
|
|
8
|
-
static freePointer = freePointer;
|
|
9
6
|
isRunning = false;
|
|
10
7
|
sourceId;
|
|
11
8
|
chunkSize;
|
|
@@ -17,25 +14,9 @@ export default class LslStreamInlet {
|
|
|
17
14
|
onData;
|
|
18
15
|
infoHandle;
|
|
19
16
|
inletHandle;
|
|
20
|
-
channelCount;
|
|
21
17
|
pullMethod;
|
|
22
|
-
sampleBuffer;
|
|
23
|
-
sampleBufferRef;
|
|
24
|
-
sampleBufferPtr;
|
|
25
|
-
timestampBuffer;
|
|
26
|
-
timestampBufferRef;
|
|
27
|
-
timestampBufferPtr;
|
|
28
|
-
pullErrorBuffer;
|
|
29
|
-
pullErrorBufferRef;
|
|
30
|
-
pullErrorBufferPtr;
|
|
31
|
-
openStreamErrorBuffer;
|
|
32
|
-
openStreamErrorBufferRef;
|
|
33
|
-
openStreamErrorBufferPtr;
|
|
34
18
|
sixMinutesInMs = 360 * 1000;
|
|
35
19
|
aboutOneYearInMs = 32000000 * 1000;
|
|
36
|
-
bytesPerFloat = 4;
|
|
37
|
-
bytesPerDouble = 8;
|
|
38
|
-
bytesPerI32 = 4;
|
|
39
20
|
constructor(options, onData) {
|
|
40
21
|
const { sourceId, chunkSize, maxBufferedMs, pullTimeoutMs, openStreamTimeoutMs, waitBetweenPullsMs, flushInletOnStop, } = options ?? {};
|
|
41
22
|
this.sourceId = sourceId;
|
|
@@ -46,6 +27,7 @@ export default class LslStreamInlet {
|
|
|
46
27
|
this.waitBetweenPullsMs = waitBetweenPullsMs ?? 1;
|
|
47
28
|
this.flushInletOnStop = flushInletOnStop ?? true;
|
|
48
29
|
this.onData = onData;
|
|
30
|
+
this.pullMethod = (chunkSize === 1 ? this.pullSample : this.pullChunk).bind(this);
|
|
49
31
|
}
|
|
50
32
|
static async Create(options, onData) {
|
|
51
33
|
return new (this.Class ?? this)(options, onData);
|
|
@@ -62,9 +44,6 @@ export default class LslStreamInlet {
|
|
|
62
44
|
async createInlet() {
|
|
63
45
|
this.infoHandle = this.resolveInfoHandle();
|
|
64
46
|
this.inletHandle = this.doCreateInlet();
|
|
65
|
-
this.channelCount = this.getChannelCount();
|
|
66
|
-
this.allocateWritableBuffers();
|
|
67
|
-
this.setPullMethod();
|
|
68
47
|
this.openStream();
|
|
69
48
|
}
|
|
70
49
|
resolveInfoHandle() {
|
|
@@ -93,106 +72,13 @@ export default class LslStreamInlet {
|
|
|
93
72
|
return this.lsl.createInlet({
|
|
94
73
|
infoHandle: this.infoHandle,
|
|
95
74
|
maxBufferedMs: this.maxBufferedMs,
|
|
75
|
+
chunkSize: this.chunkSize,
|
|
96
76
|
});
|
|
97
77
|
}
|
|
98
|
-
getChannelCount() {
|
|
99
|
-
return this.lsl.getChannelCount({ infoHandle: this.infoHandle });
|
|
100
|
-
}
|
|
101
|
-
allocateWritableBuffers() {
|
|
102
|
-
this.allocateDataBuffer();
|
|
103
|
-
this.allocateTimestampBuffer();
|
|
104
|
-
this.allocatePullErrorBuffer();
|
|
105
|
-
this.allocateOpenStreamErrorBuffer();
|
|
106
|
-
}
|
|
107
|
-
allocateDataBuffer() {
|
|
108
|
-
this.sampleBuffer = Buffer.alloc(this.channelCount * this.chunkSize * this.bytesPerFloat);
|
|
109
|
-
this.sampleBufferRef = createPointer({
|
|
110
|
-
paramsType: [DataType.U8Array],
|
|
111
|
-
paramsValue: [this.sampleBuffer],
|
|
112
|
-
});
|
|
113
|
-
this.sampleBufferPtr = unwrapPointer(this.sampleBufferRef)[0];
|
|
114
|
-
}
|
|
115
|
-
allocateTimestampBuffer() {
|
|
116
|
-
this.timestampBuffer = Buffer.alloc(this.chunkSize * this.bytesPerDouble);
|
|
117
|
-
this.timestampBufferRef = createPointer({
|
|
118
|
-
paramsType: [DataType.U8Array],
|
|
119
|
-
paramsValue: [this.timestampBuffer],
|
|
120
|
-
});
|
|
121
|
-
this.timestampBufferPtr = unwrapPointer(this.timestampBufferRef)[0];
|
|
122
|
-
}
|
|
123
|
-
allocatePullErrorBuffer() {
|
|
124
|
-
this.pullErrorBuffer = Buffer.alloc(this.bytesPerI32);
|
|
125
|
-
this.pullErrorBufferRef = createPointer({
|
|
126
|
-
paramsType: [DataType.U8Array],
|
|
127
|
-
paramsValue: [this.pullErrorBuffer],
|
|
128
|
-
});
|
|
129
|
-
this.pullErrorBufferPtr = unwrapPointer(this.pullErrorBufferRef)[0];
|
|
130
|
-
}
|
|
131
|
-
allocateOpenStreamErrorBuffer() {
|
|
132
|
-
this.openStreamErrorBuffer = Buffer.alloc(this.bytesPerI32);
|
|
133
|
-
this.openStreamErrorBufferRef = createPointer({
|
|
134
|
-
paramsType: [DataType.U8Array],
|
|
135
|
-
paramsValue: [this.openStreamErrorBuffer],
|
|
136
|
-
});
|
|
137
|
-
this.openStreamErrorBufferPtr = unwrapPointer(this.openStreamErrorBufferRef)[0];
|
|
138
|
-
}
|
|
139
|
-
setPullMethod() {
|
|
140
|
-
this.pullMethod =
|
|
141
|
-
this.chunkSize === 1 ? this.pullSample : this.pullChunk;
|
|
142
|
-
}
|
|
143
|
-
pullSample = () => {
|
|
144
|
-
const timestampSec = this.doPullsample();
|
|
145
|
-
if (timestampSec > 0) {
|
|
146
|
-
return {
|
|
147
|
-
samples: this.readSamplesFromBuffer(),
|
|
148
|
-
timestamps: [timestampSec],
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
return { samples: undefined, timestamps: undefined };
|
|
152
|
-
};
|
|
153
|
-
doPullsample() {
|
|
154
|
-
return this.lsl.pullSample({
|
|
155
|
-
inletHandle: this.inletHandle,
|
|
156
|
-
sampleBufferPtr: this.sampleBufferPtr,
|
|
157
|
-
sampleBufferElements: this.channelCount,
|
|
158
|
-
timeoutMs: this.pullTimeoutMs,
|
|
159
|
-
errorCodePtr: this.pullErrorBufferPtr,
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
readSamplesFromBuffer() {
|
|
163
|
-
const floats = new Float32Array(this.sampleBuffer.buffer, this.sampleBuffer.byteOffset, this.chunkSize * this.channelCount);
|
|
164
|
-
return Array.from(floats);
|
|
165
|
-
}
|
|
166
|
-
pullChunk = () => {
|
|
167
|
-
const firstTimestampSec = this.doPullChunk();
|
|
168
|
-
if (firstTimestampSec > 0) {
|
|
169
|
-
return {
|
|
170
|
-
samples: this.readSamplesFromBuffer(),
|
|
171
|
-
timestamps: this.readTimestampsFromBuffer(),
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
return { samples: undefined, timestamps: undefined };
|
|
175
|
-
};
|
|
176
|
-
doPullChunk() {
|
|
177
|
-
return this.lsl.pullChunk({
|
|
178
|
-
inletHandle: this.inletHandle,
|
|
179
|
-
sampleBufferPtr: this.sampleBufferPtr,
|
|
180
|
-
sampleBufferElements: this.chunkSize * this.channelCount,
|
|
181
|
-
timestampBufferPtr: this.timestampBufferPtr,
|
|
182
|
-
timestampBufferElements: this.chunkSize,
|
|
183
|
-
timeoutMs: this.pullTimeoutMs,
|
|
184
|
-
errorCodePtr: this.pullErrorBufferPtr,
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
readTimestampsFromBuffer() {
|
|
188
|
-
const doubles = new Float64Array(this.timestampBuffer.buffer, this.timestampBuffer.byteOffset, this.chunkSize);
|
|
189
|
-
return Array.from(doubles);
|
|
190
|
-
}
|
|
191
78
|
openStream() {
|
|
192
79
|
this.lsl.openStream({
|
|
193
80
|
inletHandle: this.inletHandle,
|
|
194
81
|
timeoutMs: this.openStreamTimeoutMs,
|
|
195
|
-
errorCodePtr: this.openStreamErrorBufferPtr,
|
|
196
82
|
});
|
|
197
83
|
}
|
|
198
84
|
async pullLoop() {
|
|
@@ -202,15 +88,22 @@ export default class LslStreamInlet {
|
|
|
202
88
|
}
|
|
203
89
|
}
|
|
204
90
|
async pullDataOnce() {
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
this.onData(samples, timestamps);
|
|
91
|
+
const pulled = this.pullMethod();
|
|
92
|
+
if (pulled) {
|
|
93
|
+
this.onData(pulled.samples, pulled.timestamps);
|
|
209
94
|
}
|
|
210
95
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
96
|
+
pullSample() {
|
|
97
|
+
return this.lsl.pullSample(this.pullOptions);
|
|
98
|
+
}
|
|
99
|
+
pullChunk() {
|
|
100
|
+
return this.lsl.pullChunk(this.pullOptions);
|
|
101
|
+
}
|
|
102
|
+
get pullOptions() {
|
|
103
|
+
return {
|
|
104
|
+
inletHandle: this.inletHandle,
|
|
105
|
+
timeoutMs: this.pullTimeoutMs,
|
|
106
|
+
};
|
|
214
107
|
}
|
|
215
108
|
async waitBetweenPulls() {
|
|
216
109
|
await new Promise((r) => setTimeout(r, this.waitBetweenPullsMs));
|
|
@@ -232,37 +125,16 @@ export default class LslStreamInlet {
|
|
|
232
125
|
if (this.isRunning) {
|
|
233
126
|
this.stopPulling();
|
|
234
127
|
}
|
|
235
|
-
this.
|
|
236
|
-
this.freeNativePointers();
|
|
237
|
-
}
|
|
238
|
-
doDestroyInlet() {
|
|
239
|
-
this.lsl.destroyInlet({ inletHandle: this.inletHandle });
|
|
128
|
+
this.destroyInletIfCreated();
|
|
240
129
|
}
|
|
241
|
-
|
|
242
|
-
this.
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
DataType.U8Array,
|
|
247
|
-
DataType.U8Array,
|
|
248
|
-
],
|
|
249
|
-
paramsValue: [
|
|
250
|
-
this.openStreamErrorBufferPtr,
|
|
251
|
-
this.sampleBufferPtr,
|
|
252
|
-
this.timestampBufferPtr,
|
|
253
|
-
this.pullErrorBufferPtr,
|
|
254
|
-
],
|
|
255
|
-
pointerType: PointerType.CPointer,
|
|
256
|
-
});
|
|
130
|
+
destroyInletIfCreated() {
|
|
131
|
+
if (this.inletHandle) {
|
|
132
|
+
this.lsl.destroyInlet({ inletHandle: this.inletHandle });
|
|
133
|
+
delete this.inletHandle;
|
|
134
|
+
}
|
|
257
135
|
}
|
|
258
136
|
get lsl() {
|
|
259
137
|
return LslStreamInlet.lsl;
|
|
260
138
|
}
|
|
261
|
-
get handleLslError() {
|
|
262
|
-
return LslStreamInlet.handleLslError;
|
|
263
|
-
}
|
|
264
|
-
get freePointer() {
|
|
265
|
-
return LslStreamInlet.freePointer;
|
|
266
|
-
}
|
|
267
139
|
}
|
|
268
140
|
//# sourceMappingURL=LslStreamInlet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslStreamInlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamInlet.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"LslStreamInlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamInlet.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export default class LslStreamOutlet implements LslOutlet {
|
|
|
7
7
|
readonly name: string;
|
|
8
8
|
readonly type: string;
|
|
9
9
|
readonly sourceId: string;
|
|
10
|
-
readonly channelNames: string[];
|
|
10
|
+
readonly channelNames: readonly string[];
|
|
11
11
|
readonly channelFormat: ChannelFormat;
|
|
12
12
|
readonly channelCount: number;
|
|
13
13
|
readonly sampleRateHz: number;
|
|
@@ -38,7 +38,7 @@ export interface LslOutlet {
|
|
|
38
38
|
readonly name: string;
|
|
39
39
|
readonly type: string;
|
|
40
40
|
readonly sourceId: string;
|
|
41
|
-
readonly channelNames: string[];
|
|
41
|
+
readonly channelNames: readonly string[];
|
|
42
42
|
readonly channelCount: number;
|
|
43
43
|
readonly channelFormat: ChannelFormat;
|
|
44
44
|
readonly sampleRateHz: number;
|
|
@@ -52,7 +52,7 @@ export interface LslOutletOptions {
|
|
|
52
52
|
name: string;
|
|
53
53
|
type: string;
|
|
54
54
|
sourceId: string;
|
|
55
|
-
channelNames: string[];
|
|
55
|
+
channelNames: readonly string[];
|
|
56
56
|
channelFormat: ChannelFormat;
|
|
57
57
|
sampleRateHz: number;
|
|
58
58
|
chunkSize: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslStreamOutlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,aAAa,EAIb,cAAc,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACH,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,GAC1B,MAAM,kBAAkB,CAAA;AACzB,OAAO,aAA0B,MAAM,oBAAoB,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,eAAe;IACzB,MAAM,CAAC,KAAK,CAAuB;IACnC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;IACxC,MAAM,CAAC,cAAc,GAAG,cAAc,CAAA;IAE7B,IAAI,CAAQ;IACZ,IAAI,CAAQ;IACZ,QAAQ,CAAQ;IAChB,YAAY,
|
|
1
|
+
{"version":3,"file":"LslStreamOutlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamOutlet.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ export default class WindowedClockRegressor implements ClockRegressor {
|
|
|
6
6
|
private readonly history;
|
|
7
7
|
private slope;
|
|
8
8
|
protected constructor(nominalHz: number, options?: WindowedClockRegressorOptions);
|
|
9
|
-
static Create(nominalHz: number, options?: WindowedClockRegressorOptions):
|
|
10
|
-
deriveTimestamps(deviceTime: number, earliestLslTime: number, chunkSize: number):
|
|
9
|
+
static Create(nominalHz: number, options?: WindowedClockRegressorOptions): ClockRegressor;
|
|
10
|
+
deriveTimestamps(deviceTime: number, earliestLslTime: number, chunkSize: number): number[];
|
|
11
11
|
private anchorTimeFor;
|
|
12
12
|
private throwIfDeviceTimeDoesNotIncrease;
|
|
13
13
|
private pruneHistoryOutsideWindow;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindowedClockRegressor.js","sourceRoot":"","sources":["../../../src/impl/clocks/WindowedClockRegressor.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,sBAAsB;IAChC,MAAM,CAAC,KAAK,CAA4B;IAE9B,SAAS,CAAQ;IACjB,YAAY,CAAQ;IACpB,mBAAmB,GAAG,EAAE,CAAA;IACxB,OAAO,GAGlB,EAAE,CAAA;IAEA,KAAK,GAAG,CAAC,CAAA,CAAC,qCAAqC;IAEvD,YACI,SAAiB,EACjB,OAAuC;QAEvC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;QAEjE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IACpC,CAAC;IAEM,MAAM,CAAC,MAAM,CAChB,SAAiB,EACjB,OAAuC;QAEvC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACvD,CAAC;IAEM,gBAAgB,CACnB,UAAkB,EAClB,eAAuB,EACvB,SAAiB;QAEjB,IAAI,CAAC,gCAAgC,CAAC,UAAU,CAAC,CAAA;QAEjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAA;QAClD,IAAI,CAAC,yBAAyB,EAAE,CAAA;QAChC,IAAI,CAAC,UAAU,EAAE,CAAA;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAE7C,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"WindowedClockRegressor.js","sourceRoot":"","sources":["../../../src/impl/clocks/WindowedClockRegressor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NativePeripheral } from '@neurodevs/ndx-native';
|
|
2
2
|
export default class BleGattController implements BleGatt {
|
|
3
3
|
static Class?: BleGattConstructor;
|
|
4
4
|
static setTimeout: typeof setTimeout;
|
|
5
5
|
static waitAfterMs: number;
|
|
6
|
-
private static _ndx?;
|
|
7
|
-
static get ndx(): Libndx;
|
|
8
|
-
static set ndx(value: Libndx);
|
|
9
6
|
protected charCallbacks: CharacteristicCallbacks;
|
|
10
7
|
protected rssiIntervalMs?: number;
|
|
11
|
-
protected
|
|
8
|
+
protected state: BleGattState;
|
|
12
9
|
protected log: Console;
|
|
13
|
-
private deviceUuid?;
|
|
14
10
|
private deviceNamePrefix?;
|
|
15
|
-
private deviceName?;
|
|
16
11
|
private onConnected?;
|
|
12
|
+
private readonly ndx;
|
|
17
13
|
protected constructor(options: BleGattOptions);
|
|
18
|
-
static Create(options: BleGattOptions):
|
|
14
|
+
static Create(options: BleGattOptions): BleGatt;
|
|
19
15
|
connect(): Promise<void>;
|
|
20
16
|
private discoverUuid;
|
|
21
17
|
private waitForDiscoveredUuid;
|
|
@@ -30,11 +26,11 @@ export default class BleGattController implements BleGatt {
|
|
|
30
26
|
disconnect(): Promise<void>;
|
|
31
27
|
get uuid(): string;
|
|
32
28
|
get name(): string;
|
|
33
|
-
private
|
|
29
|
+
private requireUuid;
|
|
34
30
|
}
|
|
35
31
|
export interface BleGatt {
|
|
36
|
-
uuid: string;
|
|
37
|
-
name: string;
|
|
32
|
+
readonly uuid: string;
|
|
33
|
+
readonly name: string;
|
|
38
34
|
connect(): Promise<void>;
|
|
39
35
|
subscribeCharacteristics(charCallbacks: CharacteristicCallbacks): Promise<void>;
|
|
40
36
|
writeCharacteristic(charUuid: CharacteristicUuid, value: string): Promise<void>;
|
|
@@ -52,7 +48,20 @@ export type BleGattOptions = {
|
|
|
52
48
|
deviceNamePrefix: string;
|
|
53
49
|
});
|
|
54
50
|
export type BleGattConstructor = new (options: BleGattOptions) => BleGatt;
|
|
55
|
-
export type
|
|
51
|
+
export type BleGattState = {
|
|
52
|
+
status: 'disconnected';
|
|
53
|
+
uuid?: string;
|
|
54
|
+
name?: string;
|
|
55
|
+
} | {
|
|
56
|
+
status: 'connecting';
|
|
57
|
+
uuid: string;
|
|
58
|
+
name?: string;
|
|
59
|
+
} | {
|
|
60
|
+
status: 'connected';
|
|
61
|
+
uuid: string;
|
|
62
|
+
name: string;
|
|
63
|
+
};
|
|
64
|
+
export type CharacteristicCallbacks = readonly {
|
|
56
65
|
charUuid: string;
|
|
57
66
|
charName?: string;
|
|
58
67
|
onData: (data: Buffer, length: number, timestampSec: number) => void;
|
|
@@ -3,27 +3,16 @@ export default class BleGattController {
|
|
|
3
3
|
static Class;
|
|
4
4
|
static setTimeout = setTimeout;
|
|
5
5
|
static waitAfterMs = 1000;
|
|
6
|
-
static _ndx;
|
|
7
|
-
static get ndx() {
|
|
8
|
-
if (!this._ndx) {
|
|
9
|
-
this._ndx = LibndxAdapter.getInstance();
|
|
10
|
-
}
|
|
11
|
-
return this._ndx;
|
|
12
|
-
}
|
|
13
|
-
static set ndx(value) {
|
|
14
|
-
this._ndx = value;
|
|
15
|
-
}
|
|
16
6
|
charCallbacks;
|
|
17
7
|
rssiIntervalMs;
|
|
18
|
-
|
|
8
|
+
state = { status: 'disconnected' };
|
|
19
9
|
log = console;
|
|
20
|
-
deviceUuid;
|
|
21
10
|
deviceNamePrefix;
|
|
22
|
-
deviceName;
|
|
23
11
|
onConnected;
|
|
12
|
+
ndx = LibndxAdapter.getInstance();
|
|
24
13
|
constructor(options) {
|
|
25
14
|
const { deviceUuid, deviceNamePrefix, charCallbacks, onConnected, rssiIntervalMs, } = options;
|
|
26
|
-
this.
|
|
15
|
+
this.state = { status: 'disconnected', uuid: deviceUuid };
|
|
27
16
|
this.deviceNamePrefix = deviceNamePrefix;
|
|
28
17
|
this.charCallbacks = charCallbacks;
|
|
29
18
|
this.onConnected = onConnected;
|
|
@@ -33,9 +22,10 @@ export default class BleGattController {
|
|
|
33
22
|
return new (this.Class ?? this)(options);
|
|
34
23
|
}
|
|
35
24
|
async connect() {
|
|
36
|
-
if (!this.
|
|
25
|
+
if (!this.state.uuid) {
|
|
37
26
|
await this.discoverUuid();
|
|
38
27
|
}
|
|
28
|
+
this.state = { status: 'connecting', uuid: this.uuid };
|
|
39
29
|
this.createBleGattBackend();
|
|
40
30
|
this.startBleGattBackend();
|
|
41
31
|
await this.waitForOnConnected();
|
|
@@ -46,7 +36,7 @@ export default class BleGattController {
|
|
|
46
36
|
const { status, error } = this.ndx.discoverBleUuid({
|
|
47
37
|
namePrefix: this.deviceNamePrefix,
|
|
48
38
|
onDiscovered: (uuid) => {
|
|
49
|
-
this.
|
|
39
|
+
this.state = { status: 'disconnected', uuid };
|
|
50
40
|
},
|
|
51
41
|
});
|
|
52
42
|
this.throwIfError(status, error);
|
|
@@ -55,7 +45,7 @@ export default class BleGattController {
|
|
|
55
45
|
async waitForDiscoveredUuid() {
|
|
56
46
|
await new Promise((resolve) => {
|
|
57
47
|
const checkDiscovered = () => {
|
|
58
|
-
if (this.
|
|
48
|
+
if (this.uuid) {
|
|
59
49
|
resolve();
|
|
60
50
|
}
|
|
61
51
|
else {
|
|
@@ -92,19 +82,18 @@ export default class BleGattController {
|
|
|
92
82
|
deviceUuid: this.uuid,
|
|
93
83
|
onConnected: (peripheral) => {
|
|
94
84
|
const { name } = peripheral;
|
|
95
|
-
this.
|
|
96
|
-
this.connected = true;
|
|
85
|
+
this.state = { status: 'connected', uuid: this.uuid, name };
|
|
97
86
|
this.log.info(`Connected to device ${this.uuid}!`);
|
|
98
87
|
this.onConnected?.(peripheral);
|
|
99
88
|
},
|
|
100
|
-
charCallbacks: this.charCallbacks,
|
|
89
|
+
charCallbacks: [...this.charCallbacks],
|
|
101
90
|
});
|
|
102
91
|
this.throwIfError(status, error);
|
|
103
92
|
}
|
|
104
93
|
async waitForOnConnected() {
|
|
105
94
|
await new Promise((resolve) => {
|
|
106
95
|
const checkConnected = () => {
|
|
107
|
-
if (this.connected) {
|
|
96
|
+
if (this.state.status === 'connected') {
|
|
108
97
|
resolve();
|
|
109
98
|
}
|
|
110
99
|
else {
|
|
@@ -119,7 +108,7 @@ export default class BleGattController {
|
|
|
119
108
|
}
|
|
120
109
|
async writeCharacteristic(charUuid, value) {
|
|
121
110
|
const { status, error } = this.ndx.writeBleGattChar({
|
|
122
|
-
deviceUuid: this.
|
|
111
|
+
deviceUuid: this.requireUuid(),
|
|
123
112
|
charUuid,
|
|
124
113
|
value,
|
|
125
114
|
});
|
|
@@ -127,27 +116,30 @@ export default class BleGattController {
|
|
|
127
116
|
}
|
|
128
117
|
async subscribeCharacteristics(charCallbacks) {
|
|
129
118
|
const { status, error } = this.ndx.registerBleGattCharCallbacks({
|
|
130
|
-
deviceUuid: this.
|
|
131
|
-
charCallbacks,
|
|
119
|
+
deviceUuid: this.requireUuid(),
|
|
120
|
+
charCallbacks: [...charCallbacks],
|
|
132
121
|
});
|
|
133
122
|
this.throwIfError(status, error);
|
|
134
123
|
this.charCallbacks = [...this.charCallbacks, ...charCallbacks];
|
|
135
124
|
}
|
|
136
125
|
async disconnect() {
|
|
137
126
|
const { status, error } = this.ndx.stopBleGattBackend({
|
|
138
|
-
deviceUuid: this.
|
|
127
|
+
deviceUuid: this.requireUuid(),
|
|
139
128
|
});
|
|
140
129
|
this.throwIfError(status, error);
|
|
141
|
-
this.
|
|
130
|
+
this.state = { status: 'disconnected', uuid: this.state.uuid };
|
|
142
131
|
}
|
|
143
132
|
get uuid() {
|
|
144
|
-
return this.
|
|
133
|
+
return this.state.uuid ?? '';
|
|
145
134
|
}
|
|
146
135
|
get name() {
|
|
147
|
-
return this.
|
|
136
|
+
return this.state.name ?? 'N/A';
|
|
148
137
|
}
|
|
149
|
-
|
|
150
|
-
|
|
138
|
+
requireUuid() {
|
|
139
|
+
if (!this.uuid) {
|
|
140
|
+
throw new Error('Device uuid is not resolved yet! Must either pass as option to Create or call connect() first.');
|
|
141
|
+
}
|
|
142
|
+
return this.uuid;
|
|
151
143
|
}
|
|
152
144
|
}
|
|
153
145
|
//# sourceMappingURL=BleGattController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BleGattController.js","sourceRoot":"","sources":["../../../src/impl/controllers/BleGattController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"BleGattController.js","sourceRoot":"","sources":["../../../src/impl/controllers/BleGattController.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,9 @@ export default class FakeBleGatt implements BleGatt {
|
|
|
10
10
|
static numCallsToDisconnect: number;
|
|
11
11
|
static fakeCharacteristics: Record<string, unknown>;
|
|
12
12
|
static fakeName: string;
|
|
13
|
-
|
|
14
|
-
private
|
|
13
|
+
static fakeDiscoveredUuid: string;
|
|
14
|
+
private _uuid?;
|
|
15
|
+
private _name?;
|
|
15
16
|
constructor(options?: BleGattOptions);
|
|
16
17
|
connect(): Promise<void>;
|
|
17
18
|
writeCharacteristic(characteristicUuid: string, value: string): Promise<void>;
|
|
@@ -7,16 +7,18 @@ export default class FakeBleGatt {
|
|
|
7
7
|
static numCallsToDisconnect = 0;
|
|
8
8
|
static fakeCharacteristics = {};
|
|
9
9
|
static fakeName = `fake-${generateId()}`;
|
|
10
|
+
static fakeDiscoveredUuid = `fake-uuid-${generateId()}`;
|
|
10
11
|
_uuid;
|
|
11
12
|
_name;
|
|
12
13
|
constructor(options) {
|
|
13
14
|
const { deviceUuid } = options ?? {};
|
|
14
|
-
this._uuid = deviceUuid
|
|
15
|
-
this._name = FakeBleGatt.fakeName;
|
|
15
|
+
this._uuid = deviceUuid;
|
|
16
16
|
FakeBleGatt.callsToConstructor.push(options);
|
|
17
17
|
}
|
|
18
18
|
async connect() {
|
|
19
19
|
FakeBleGatt.numCallsToConnect++;
|
|
20
|
+
this._uuid = this._uuid ?? FakeBleGatt.fakeDiscoveredUuid;
|
|
21
|
+
this._name = FakeBleGatt.fakeName;
|
|
20
22
|
}
|
|
21
23
|
async writeCharacteristic(characteristicUuid, value) {
|
|
22
24
|
FakeBleGatt.callsToWriteCharacteristic.push({
|
|
@@ -31,10 +33,10 @@ export default class FakeBleGatt {
|
|
|
31
33
|
FakeBleGatt.numCallsToDisconnect++;
|
|
32
34
|
}
|
|
33
35
|
get uuid() {
|
|
34
|
-
return this._uuid;
|
|
36
|
+
return this._uuid ?? '';
|
|
35
37
|
}
|
|
36
38
|
get name() {
|
|
37
|
-
return this._name;
|
|
39
|
+
return this._name ?? 'N/A';
|
|
38
40
|
}
|
|
39
41
|
static resetTestDouble() {
|
|
40
42
|
this.callsToConstructor = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeBleGatt.js","sourceRoot":"","sources":["../../../src/testDoubles/BleGatt/FakeBleGatt.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAO/C,MAAM,CAAC,OAAO,OAAO,WAAW;IACrB,MAAM,CAAC,kBAAkB,GAAmC,EAAE,CAAA;IAE9D,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,MAAM,CAAC,0BAA0B,GAGlC,EAAE,CAAA;IAED,MAAM,CAAC,+BAA+B,GACzC,EAAE,CAAA;IAEC,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAE/B,MAAM,CAAC,mBAAmB,GAA4B,EAAE,CAAA;IACxD,MAAM,CAAC,QAAQ,GAAG,QAAQ,UAAU,EAAE,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"FakeBleGatt.js","sourceRoot":"","sources":["../../../src/testDoubles/BleGatt/FakeBleGatt.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAO/C,MAAM,CAAC,OAAO,OAAO,WAAW;IACrB,MAAM,CAAC,kBAAkB,GAAmC,EAAE,CAAA;IAE9D,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,MAAM,CAAC,0BAA0B,GAGlC,EAAE,CAAA;IAED,MAAM,CAAC,+BAA+B,GACzC,EAAE,CAAA;IAEC,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAE/B,MAAM,CAAC,mBAAmB,GAA4B,EAAE,CAAA;IACxD,MAAM,CAAC,QAAQ,GAAG,QAAQ,UAAU,EAAE,EAAE,CAAA;IACxC,MAAM,CAAC,kBAAkB,GAAG,aAAa,UAAU,EAAE,EAAE,CAAA;IAEtD,KAAK,CAAS;IACd,KAAK,CAAS;IAEtB,YAAmB,OAAwB;QACvC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;QAEpC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAA;QAEvB,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,WAAW,CAAC,iBAAiB,EAAE,CAAA;QAE/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,kBAAkB,CAAA;QACzD,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAA;IACrC,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAC5B,kBAA0B,EAC1B,KAAa;QAEb,WAAW,CAAC,0BAA0B,CAAC,IAAI,CAAC;YACxC,kBAAkB;YAClB,KAAK;SACR,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,wBAAwB,CACjC,aAAsC;QAEtC,WAAW,CAAC,+BAA+B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACnE,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,WAAW,CAAC,oBAAoB,EAAE,CAAA;IACtC,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;IAC3B,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;IAC9B,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;QAC1B,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAA;QACpC,IAAI,CAAC,+BAA+B,GAAG,EAAE,CAAA;QACzC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;IACjC,CAAC"}
|
|
@@ -6,7 +6,7 @@ export default class SpyBleGatt extends BleGattController {
|
|
|
6
6
|
constructor(options: BleGattOptions);
|
|
7
7
|
getCharacteristicCallbacks(): import("../../impl/controllers/BleGattController.js").CharacteristicCallbacks;
|
|
8
8
|
getRssiIntervalMs(): number | undefined;
|
|
9
|
-
|
|
9
|
+
getState(): import("../../impl/controllers/BleGattController.js").BleGattState;
|
|
10
10
|
setLogInfoSpy(): void;
|
|
11
11
|
setLogWarnSpy(): void;
|
|
12
12
|
setLogErrorSpy(): void;
|