@neurodevs/ndx-native 7.0.1 → 7.1.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/build/__tests__/impl/LibndxAdapter.test.d.ts +25 -13
- package/build/__tests__/impl/LibndxAdapter.test.js +151 -54
- package/build/__tests__/impl/LibndxAdapter.test.js.map +1 -1
- package/build/impl/LibndxAdapter.d.ts +25 -10
- package/build/impl/LibndxAdapter.js +43 -10
- package/build/impl/LibndxAdapter.js.map +1 -1
- package/build/testDoubles/Libndx/FakeLibndx.d.ts +11 -7
- package/build/testDoubles/Libndx/FakeLibndx.js +24 -12
- package/build/testDoubles/Libndx/FakeLibndx.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/impl/LibndxAdapter.test.ts +196 -49
- package/src/impl/LibndxAdapter.ts +113 -20
- package/src/testDoubles/Libndx/FakeLibndx.ts +29 -13
|
@@ -11,6 +11,7 @@ export default class LibndxAdapter {
|
|
|
11
11
|
static onDiscoveredProto;
|
|
12
12
|
static onConnectedProto;
|
|
13
13
|
static onRssiProto;
|
|
14
|
+
static onUsbDataProto;
|
|
14
15
|
static instance;
|
|
15
16
|
libndxPath;
|
|
16
17
|
bindings;
|
|
@@ -38,6 +39,7 @@ export default class LibndxAdapter {
|
|
|
38
39
|
delete this.onDiscoveredProto;
|
|
39
40
|
delete this.onConnectedProto;
|
|
40
41
|
delete this.onRssiProto;
|
|
42
|
+
delete this.onUsbDataProto;
|
|
41
43
|
}
|
|
42
44
|
tryToLoadBindings() {
|
|
43
45
|
try {
|
|
@@ -52,22 +54,28 @@ export default class LibndxAdapter {
|
|
|
52
54
|
LibndxAdapter.getOnDiscoveredProto();
|
|
53
55
|
LibndxAdapter.getOnConnectedProto();
|
|
54
56
|
LibndxAdapter.getOnRssiProto();
|
|
57
|
+
LibndxAdapter.getOnUsbDataProto();
|
|
55
58
|
const lib = LibndxAdapter.koffiLoad(this.libndxPath);
|
|
56
59
|
const wrap1 = (f) => (args) => f(args[0]);
|
|
60
|
+
const wrap2 = (f) => (args) => f(args[0], args[1]);
|
|
57
61
|
const wrap3 = (f) => (args) => f(args[0], args[1], args[2]);
|
|
58
62
|
const wrapStartBle = (f) => (args) => f(args[0], args[1], args[2], args[3]);
|
|
63
|
+
const wrapAddBleCharCallbacks = (f) => (args) => f(args[0], args[1], args[2]);
|
|
59
64
|
const wrapSetBleRssiInterval = (f) => (args) => f(args[0], args[1], args[2]);
|
|
60
65
|
const wrapDiscoverBleUuid = (f) => (args) => f(args[0], args[1]);
|
|
66
|
+
const wrapStartUsb = (f) => (args) => f(args[0], args[1]);
|
|
61
67
|
this.bindings = {
|
|
62
68
|
discover_ble_uuid: wrapDiscoverBleUuid(lib.func('str discover_ble_uuid(str name_prefix, OnDiscoveredFn *on_discovered)')),
|
|
63
69
|
create_ble_backend: wrap1(lib.func('str create_ble_backend(str config)')),
|
|
64
70
|
start_ble_backend: wrapStartBle(lib.func('str start_ble_backend(str uuid, OnConnectedFn *on_connected, CharCallback *callbacks, int num_callbacks)')),
|
|
71
|
+
add_ble_char_callbacks: wrapAddBleCharCallbacks(lib.func('str add_ble_char_callbacks(str uuid, CharCallback *callbacks, int num_callbacks)')),
|
|
65
72
|
write_ble_characteristic: wrap3(lib.func('str write_ble_characteristic(str uuid, str charUuid, str value)')),
|
|
66
73
|
set_ble_rssi_interval: wrapSetBleRssiInterval(lib.func('str set_ble_rssi_interval(str uuid, int interval_ms, OnRssiFn *on_rssi)')),
|
|
67
74
|
stop_ble_backend: wrap1(lib.func('str stop_ble_backend(str uuid)')),
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
75
|
+
create_usb_backend: wrap1(lib.func('str create_usb_backend(str config)')),
|
|
76
|
+
start_usb_backend: wrapStartUsb(lib.func('str start_usb_backend(str serial, OnUsbDataFn *on_data)')),
|
|
77
|
+
write_usb_backend: wrap2(lib.func('str write_usb_backend(str serial, str value)')),
|
|
78
|
+
stop_usb_backend: wrap1(lib.func('str stop_usb_backend(str serial)')),
|
|
71
79
|
};
|
|
72
80
|
}
|
|
73
81
|
throwFailedToLoadLibndx(err) {
|
|
@@ -119,6 +127,20 @@ export default class LibndxAdapter {
|
|
|
119
127
|
this.registeredCallbacks.length,
|
|
120
128
|
]));
|
|
121
129
|
}
|
|
130
|
+
addBleCharCallbacks(options) {
|
|
131
|
+
const { deviceUuid, charCallbacks } = options;
|
|
132
|
+
const registered = charCallbacks.map(({ charUuid, charName, onData }) => ({
|
|
133
|
+
charUuid,
|
|
134
|
+
charName,
|
|
135
|
+
onData: LibndxAdapter.koffiRegister(onData, LibndxAdapter.koffiPointer(LibndxAdapter.getCharCallbackProto())),
|
|
136
|
+
}));
|
|
137
|
+
this.registeredCallbacks.push(...registered);
|
|
138
|
+
return JSON.parse(this.bindings.add_ble_char_callbacks([
|
|
139
|
+
deviceUuid,
|
|
140
|
+
registered,
|
|
141
|
+
registered.length,
|
|
142
|
+
]));
|
|
143
|
+
}
|
|
122
144
|
writeBleCharacteristic(options) {
|
|
123
145
|
const { deviceUuid, charUuid: characteristicUuid, value } = options;
|
|
124
146
|
return JSON.parse(this.bindings.write_ble_characteristic([
|
|
@@ -140,18 +162,23 @@ export default class LibndxAdapter {
|
|
|
140
162
|
const { deviceUuid } = options;
|
|
141
163
|
return JSON.parse(this.bindings.stop_ble_backend([deviceUuid]));
|
|
142
164
|
}
|
|
143
|
-
|
|
165
|
+
createUsbBackend(options) {
|
|
144
166
|
const { serialNumber } = options;
|
|
145
167
|
const configJson = JSON.stringify({ serial_number: serialNumber });
|
|
146
|
-
return JSON.parse(this.bindings.
|
|
168
|
+
return JSON.parse(this.bindings.create_usb_backend([configJson]));
|
|
147
169
|
}
|
|
148
|
-
|
|
149
|
-
const { serialNumber } = options;
|
|
150
|
-
|
|
170
|
+
startUsbBackend(options) {
|
|
171
|
+
const { serialNumber, onData } = options;
|
|
172
|
+
const registeredOnData = LibndxAdapter.koffiRegister(onData ?? (() => { }), LibndxAdapter.koffiPointer(LibndxAdapter.getOnUsbDataProto()));
|
|
173
|
+
return JSON.parse(this.bindings.start_usb_backend([serialNumber, registeredOnData]));
|
|
174
|
+
}
|
|
175
|
+
writeUsbBackend(options) {
|
|
176
|
+
const { serialNumber, value } = options;
|
|
177
|
+
return JSON.parse(this.bindings.write_usb_backend([serialNumber, value]));
|
|
151
178
|
}
|
|
152
|
-
|
|
179
|
+
stopUsbBackend(options) {
|
|
153
180
|
const { serialNumber } = options;
|
|
154
|
-
return JSON.parse(this.bindings.
|
|
181
|
+
return JSON.parse(this.bindings.stop_usb_backend([serialNumber]));
|
|
155
182
|
}
|
|
156
183
|
static getCharCallbackProto() {
|
|
157
184
|
if (!this.charCallbackProto) {
|
|
@@ -171,6 +198,12 @@ export default class LibndxAdapter {
|
|
|
171
198
|
}
|
|
172
199
|
return this.onRssiProto;
|
|
173
200
|
}
|
|
201
|
+
static getOnUsbDataProto() {
|
|
202
|
+
if (!this.onUsbDataProto) {
|
|
203
|
+
this.onUsbDataProto = LibndxAdapter.koffiProto('void OnUsbDataFn(uint8 *data, int length, double timestamp_sec)');
|
|
204
|
+
}
|
|
205
|
+
return this.onUsbDataProto;
|
|
206
|
+
}
|
|
174
207
|
static getOnDiscoveredProto() {
|
|
175
208
|
if (!this.onDiscoveredProto) {
|
|
176
209
|
this.onDiscoveredProto = LibndxAdapter.koffiProto('void OnDiscoveredFn(str uuid)');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibndxAdapter.js","sourceRoot":"","sources":["../../src/impl/LibndxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,CAAC,OAAO,OAAO,aAAa;IACvB,MAAM,CAAC,KAAK,CAAoB;IAChC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,CAAC,YAAY,GAAyB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAEpE,MAAM,CAAC,iBAAiB,CAAiC;IACzD,MAAM,CAAC,kBAAkB,CAAkC;IAC3D,MAAM,CAAC,iBAAiB,CAAiC;IACzD,MAAM,CAAC,gBAAgB,CAAiC;IACxD,MAAM,CAAC,WAAW,CAAiC;
|
|
1
|
+
{"version":3,"file":"LibndxAdapter.js","sourceRoot":"","sources":["../../src/impl/LibndxAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,29 @@
|
|
|
1
|
-
import { BleBackendOptions, WriteBleCharacteristicOptions,
|
|
1
|
+
import { AddBleCharCallbacksOptions, BleBackendOptions, WriteBleCharacteristicOptions, UsbBackendOptions, WriteUsbBackendOptions, Libndx, LibndxAdapterOptions, StartBleBackendOptions, NativeResult, BleRssiOptions, DiscoverBleUuidOptions } from '../../impl/LibndxAdapter.js';
|
|
2
2
|
export default class FakeLibndx implements Libndx {
|
|
3
3
|
static callsToConstructor: (LibndxAdapterOptions | undefined)[];
|
|
4
4
|
static callsToDiscoverBleUuid: DiscoverBleUuidOptions[];
|
|
5
5
|
static callsToCreateBleBackend: BleBackendOptions[];
|
|
6
6
|
static callsToStartBleBackend: StartBleBackendOptions[];
|
|
7
|
+
static callsToAddBleCharCallbacks: AddBleCharCallbacksOptions[];
|
|
7
8
|
static callsToWriteBleCharacteristic: WriteBleCharacteristicOptions[];
|
|
8
9
|
static callsToStopBleBackend: BleBackendOptions[];
|
|
9
10
|
static callsToSetBleRssiInterval: BleRssiOptions[];
|
|
10
|
-
static
|
|
11
|
-
static
|
|
12
|
-
static
|
|
11
|
+
static callsToCreateUsbBackend: UsbBackendOptions[];
|
|
12
|
+
static callsToStartUsbBackend: UsbBackendOptions[];
|
|
13
|
+
static callsToWriteUsbBackend: WriteUsbBackendOptions[];
|
|
14
|
+
static callsToStopUsbBackend: UsbBackendOptions[];
|
|
13
15
|
static fakeResult: NativeResult;
|
|
14
16
|
constructor(options?: LibndxAdapterOptions);
|
|
15
17
|
discoverBleUuid(options: DiscoverBleUuidOptions): NativeResult;
|
|
16
18
|
createBleBackend(options: BleBackendOptions): NativeResult;
|
|
17
19
|
startBleBackend(options: StartBleBackendOptions): NativeResult;
|
|
20
|
+
addBleCharCallbacks(options: AddBleCharCallbacksOptions): NativeResult;
|
|
18
21
|
writeBleCharacteristic(options: WriteBleCharacteristicOptions): NativeResult;
|
|
19
22
|
setBleRssiInterval(options: BleRssiOptions): NativeResult;
|
|
20
23
|
stopBleBackend(options: BleBackendOptions): NativeResult;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
createUsbBackend(options: UsbBackendOptions): NativeResult;
|
|
25
|
+
startUsbBackend(options: UsbBackendOptions): NativeResult;
|
|
26
|
+
writeUsbBackend(options: WriteUsbBackendOptions): NativeResult;
|
|
27
|
+
stopUsbBackend(options: UsbBackendOptions): NativeResult;
|
|
24
28
|
static resetTestDouble(): void;
|
|
25
29
|
}
|
|
@@ -3,12 +3,14 @@ export default class FakeLibndx {
|
|
|
3
3
|
static callsToDiscoverBleUuid = [];
|
|
4
4
|
static callsToCreateBleBackend = [];
|
|
5
5
|
static callsToStartBleBackend = [];
|
|
6
|
+
static callsToAddBleCharCallbacks = [];
|
|
6
7
|
static callsToWriteBleCharacteristic = [];
|
|
7
8
|
static callsToStopBleBackend = [];
|
|
8
9
|
static callsToSetBleRssiInterval = [];
|
|
9
|
-
static
|
|
10
|
-
static
|
|
11
|
-
static
|
|
10
|
+
static callsToCreateUsbBackend = [];
|
|
11
|
+
static callsToStartUsbBackend = [];
|
|
12
|
+
static callsToWriteUsbBackend = [];
|
|
13
|
+
static callsToStopUsbBackend = [];
|
|
12
14
|
static fakeResult = { status: 200 };
|
|
13
15
|
constructor(options) {
|
|
14
16
|
FakeLibndx.callsToConstructor.push(options);
|
|
@@ -25,6 +27,10 @@ export default class FakeLibndx {
|
|
|
25
27
|
FakeLibndx.callsToStartBleBackend.push(options);
|
|
26
28
|
return FakeLibndx.fakeResult;
|
|
27
29
|
}
|
|
30
|
+
addBleCharCallbacks(options) {
|
|
31
|
+
FakeLibndx.callsToAddBleCharCallbacks.push(options);
|
|
32
|
+
return FakeLibndx.fakeResult;
|
|
33
|
+
}
|
|
28
34
|
writeBleCharacteristic(options) {
|
|
29
35
|
FakeLibndx.callsToWriteBleCharacteristic.push(options);
|
|
30
36
|
return FakeLibndx.fakeResult;
|
|
@@ -37,16 +43,20 @@ export default class FakeLibndx {
|
|
|
37
43
|
FakeLibndx.callsToStopBleBackend.push(options);
|
|
38
44
|
return FakeLibndx.fakeResult;
|
|
39
45
|
}
|
|
40
|
-
|
|
41
|
-
FakeLibndx.
|
|
46
|
+
createUsbBackend(options) {
|
|
47
|
+
FakeLibndx.callsToCreateUsbBackend.push(options);
|
|
48
|
+
return FakeLibndx.fakeResult;
|
|
49
|
+
}
|
|
50
|
+
startUsbBackend(options) {
|
|
51
|
+
FakeLibndx.callsToStartUsbBackend.push(options);
|
|
42
52
|
return FakeLibndx.fakeResult;
|
|
43
53
|
}
|
|
44
|
-
|
|
45
|
-
FakeLibndx.
|
|
54
|
+
writeUsbBackend(options) {
|
|
55
|
+
FakeLibndx.callsToWriteUsbBackend.push(options);
|
|
46
56
|
return FakeLibndx.fakeResult;
|
|
47
57
|
}
|
|
48
|
-
|
|
49
|
-
FakeLibndx.
|
|
58
|
+
stopUsbBackend(options) {
|
|
59
|
+
FakeLibndx.callsToStopUsbBackend.push(options);
|
|
50
60
|
return FakeLibndx.fakeResult;
|
|
51
61
|
}
|
|
52
62
|
static resetTestDouble() {
|
|
@@ -54,12 +64,14 @@ export default class FakeLibndx {
|
|
|
54
64
|
FakeLibndx.callsToDiscoverBleUuid = [];
|
|
55
65
|
FakeLibndx.callsToCreateBleBackend = [];
|
|
56
66
|
FakeLibndx.callsToStartBleBackend = [];
|
|
67
|
+
FakeLibndx.callsToAddBleCharCallbacks = [];
|
|
57
68
|
FakeLibndx.callsToWriteBleCharacteristic = [];
|
|
58
69
|
FakeLibndx.callsToStopBleBackend = [];
|
|
59
70
|
FakeLibndx.callsToSetBleRssiInterval = [];
|
|
60
|
-
FakeLibndx.
|
|
61
|
-
FakeLibndx.
|
|
62
|
-
FakeLibndx.
|
|
71
|
+
FakeLibndx.callsToCreateUsbBackend = [];
|
|
72
|
+
FakeLibndx.callsToStartUsbBackend = [];
|
|
73
|
+
FakeLibndx.callsToWriteUsbBackend = [];
|
|
74
|
+
FakeLibndx.callsToStopUsbBackend = [];
|
|
63
75
|
}
|
|
64
76
|
}
|
|
65
77
|
//# sourceMappingURL=FakeLibndx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeLibndx.js","sourceRoot":"","sources":["../../../src/testDoubles/Libndx/FakeLibndx.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FakeLibndx.js","sourceRoot":"","sources":["../../../src/testDoubles/Libndx/FakeLibndx.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -25,7 +25,8 @@ export default class LibndxAdapterTest extends AbstractPackageTest {
|
|
|
25
25
|
private static readonly bleValueToWrite = this.generateId()
|
|
26
26
|
private static readonly bleRssiIntervalMs = Math.random()
|
|
27
27
|
|
|
28
|
-
private static readonly
|
|
28
|
+
private static readonly usbSerialNumber = this.generateId()
|
|
29
|
+
private static readonly usbValueToWrite = this.generateId()
|
|
29
30
|
|
|
30
31
|
private static readonly charCallbacks = [
|
|
31
32
|
{
|
|
@@ -53,6 +54,11 @@ export default class LibndxAdapterTest extends AbstractPackageTest {
|
|
|
53
54
|
onConnected: unknown
|
|
54
55
|
charCallbacks: CharacteristicCallback[]
|
|
55
56
|
}[] = []
|
|
57
|
+
private static readonly callsToAddBleCharCallbacks: {
|
|
58
|
+
uuid: string
|
|
59
|
+
charCallbacks: unknown
|
|
60
|
+
numCallbacks: number
|
|
61
|
+
}[] = []
|
|
56
62
|
private static readonly callsToWriteBle: string[][] = []
|
|
57
63
|
private static readonly callsToSetBleRssiInterval: {
|
|
58
64
|
uuid: string
|
|
@@ -61,9 +67,10 @@ export default class LibndxAdapterTest extends AbstractPackageTest {
|
|
|
61
67
|
}[] = []
|
|
62
68
|
private static readonly callsToStopBle: string[][] = []
|
|
63
69
|
|
|
64
|
-
private static readonly
|
|
65
|
-
private static readonly
|
|
66
|
-
private static readonly
|
|
70
|
+
private static readonly callsToCreateUsb: string[][] = []
|
|
71
|
+
private static readonly callsToStartUsb: unknown[][] = []
|
|
72
|
+
private static readonly callsToWriteUsb: string[][] = []
|
|
73
|
+
private static readonly callsToStopUsb: string[][] = []
|
|
67
74
|
|
|
68
75
|
protected static async beforeEach() {
|
|
69
76
|
await super.beforeEach()
|
|
@@ -114,12 +121,14 @@ export default class LibndxAdapterTest extends AbstractPackageTest {
|
|
|
114
121
|
'str discover_ble_uuid(str name_prefix, OnDiscoveredFn *on_discovered)',
|
|
115
122
|
'str create_ble_backend(str config)',
|
|
116
123
|
'str start_ble_backend(str uuid, OnConnectedFn *on_connected, CharCallback *callbacks, int num_callbacks)',
|
|
124
|
+
'str add_ble_char_callbacks(str uuid, CharCallback *callbacks, int num_callbacks)',
|
|
117
125
|
'str write_ble_characteristic(str uuid, str charUuid, str value)',
|
|
118
126
|
'str set_ble_rssi_interval(str uuid, int interval_ms, OnRssiFn *on_rssi)',
|
|
119
127
|
'str stop_ble_backend(str uuid)',
|
|
120
|
-
'str
|
|
121
|
-
'str
|
|
122
|
-
'str
|
|
128
|
+
'str create_usb_backend(str config)',
|
|
129
|
+
'str start_usb_backend(str serial, OnUsbDataFn *on_data)',
|
|
130
|
+
'str write_usb_backend(str serial, str value)',
|
|
131
|
+
'str stop_usb_backend(str serial)',
|
|
123
132
|
],
|
|
124
133
|
'Did not register expected koffi func signatures!'
|
|
125
134
|
)
|
|
@@ -317,6 +326,36 @@ export default class LibndxAdapterTest extends AbstractPackageTest {
|
|
|
317
326
|
)
|
|
318
327
|
}
|
|
319
328
|
|
|
329
|
+
@test()
|
|
330
|
+
protected static async addBleCharCallbacksCallsBindingWithExpectedArgs() {
|
|
331
|
+
this.addBleCharCallbacks()
|
|
332
|
+
|
|
333
|
+
const call = this.callsToAddBleCharCallbacks[0]
|
|
334
|
+
|
|
335
|
+
assert.isEqual(
|
|
336
|
+
call.uuid,
|
|
337
|
+
this.bleDeviceUuid,
|
|
338
|
+
'addBleCharCallbacks did not pass expected uuid to binding!'
|
|
339
|
+
)
|
|
340
|
+
|
|
341
|
+
assert.isEqual(
|
|
342
|
+
call.numCallbacks,
|
|
343
|
+
this.charCallbacks.length,
|
|
344
|
+
'addBleCharCallbacks did not pass expected callback count to binding!'
|
|
345
|
+
)
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
@test()
|
|
349
|
+
protected static async addBleCharCallbacksReturnsJson() {
|
|
350
|
+
const json = this.addBleCharCallbacks()
|
|
351
|
+
|
|
352
|
+
assert.isEqualDeep(
|
|
353
|
+
json,
|
|
354
|
+
this.successfulResult,
|
|
355
|
+
'addBleCharCallbacks did not return a JSON string!'
|
|
356
|
+
)
|
|
357
|
+
}
|
|
358
|
+
|
|
320
359
|
@test()
|
|
321
360
|
protected static async writeBleCharacteristicCallsBindingWithExpectedArgs() {
|
|
322
361
|
this.writeBleCharacteristic()
|
|
@@ -414,68 +453,145 @@ export default class LibndxAdapterTest extends AbstractPackageTest {
|
|
|
414
453
|
}
|
|
415
454
|
|
|
416
455
|
@test()
|
|
417
|
-
protected static async
|
|
418
|
-
this.
|
|
456
|
+
protected static async createUsbBackendCallsBindingWithExpectedArgs() {
|
|
457
|
+
this.createUsbBackend()
|
|
419
458
|
|
|
420
459
|
assert.isEqualDeep(
|
|
421
|
-
this.
|
|
422
|
-
JSON.stringify({ serial_number: this.
|
|
423
|
-
'
|
|
460
|
+
this.callsToCreateUsb[0][0],
|
|
461
|
+
JSON.stringify({ serial_number: this.usbSerialNumber }),
|
|
462
|
+
'createUsbBackend did not call binding with expected args!'
|
|
424
463
|
)
|
|
425
464
|
}
|
|
426
465
|
|
|
427
466
|
@test()
|
|
428
|
-
protected static async
|
|
429
|
-
const json = this.
|
|
467
|
+
protected static async createUsbBackendReturnsJson() {
|
|
468
|
+
const json = this.createUsbBackend()
|
|
430
469
|
|
|
431
470
|
assert.isEqualDeep(
|
|
432
471
|
json,
|
|
433
472
|
this.successfulResult,
|
|
434
|
-
'
|
|
473
|
+
'createUsbBackend did not return a JSON string!'
|
|
474
|
+
)
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
@test()
|
|
478
|
+
protected static async startUsbBackendCallsBindingWithExpectedArgs() {
|
|
479
|
+
this.startUsbBackend()
|
|
480
|
+
|
|
481
|
+
assert.isEqual(
|
|
482
|
+
this.callsToStartUsb[0][0],
|
|
483
|
+
this.usbSerialNumber,
|
|
484
|
+
'startUsbBackend did not call binding with expected args!'
|
|
435
485
|
)
|
|
436
486
|
}
|
|
437
487
|
|
|
438
488
|
@test()
|
|
439
|
-
protected static async
|
|
440
|
-
this.
|
|
489
|
+
protected static async registersExpectedStartUsbBackendSignatureWithOnData() {
|
|
490
|
+
const sig = this.koffiFuncSignatures!.find((s) =>
|
|
491
|
+
s.startsWith('str start_usb_backend(')
|
|
492
|
+
)
|
|
441
493
|
|
|
442
494
|
assert.isEqual(
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
'
|
|
495
|
+
sig,
|
|
496
|
+
'str start_usb_backend(str serial, OnUsbDataFn *on_data)',
|
|
497
|
+
'start_usb_backend was not registered with an onData callback param!'
|
|
446
498
|
)
|
|
447
499
|
}
|
|
448
500
|
|
|
449
501
|
@test()
|
|
450
|
-
protected static async
|
|
451
|
-
|
|
502
|
+
protected static async startUsbBackendPassesOnDataCallbackToBinding() {
|
|
503
|
+
this.startUsbBackend(() => {})
|
|
504
|
+
|
|
505
|
+
assert.isFunction(
|
|
506
|
+
this.callsToStartUsb[0][1],
|
|
507
|
+
'startUsbBackend did not pass an onData callback to the binding!'
|
|
508
|
+
)
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
@test()
|
|
512
|
+
protected static async startUsbBackendInvokesOnDataWithReceivedData() {
|
|
513
|
+
let receivedData: Buffer | undefined
|
|
514
|
+
let receivedLength: number | undefined
|
|
515
|
+
let receivedTimestamp: number | undefined
|
|
516
|
+
|
|
517
|
+
this.startUsbBackend((data, length, timestampSec) => {
|
|
518
|
+
receivedData = data
|
|
519
|
+
receivedLength = length
|
|
520
|
+
receivedTimestamp = timestampSec
|
|
521
|
+
})
|
|
522
|
+
|
|
523
|
+
const registeredOnData = this.callsToStartUsb[0][1] as (
|
|
524
|
+
data: Buffer,
|
|
525
|
+
length: number,
|
|
526
|
+
timestampSec: number
|
|
527
|
+
) => void
|
|
528
|
+
|
|
529
|
+
const fakeData = Buffer.from([1, 2, 3])
|
|
530
|
+
registeredOnData(fakeData, fakeData.length, 123.456)
|
|
531
|
+
|
|
532
|
+
assert.isEqualDeep(
|
|
533
|
+
{ receivedData, receivedLength, receivedTimestamp },
|
|
534
|
+
{
|
|
535
|
+
receivedData: fakeData,
|
|
536
|
+
receivedLength: fakeData.length,
|
|
537
|
+
receivedTimestamp: 123.456,
|
|
538
|
+
},
|
|
539
|
+
'onData was not invoked with expected data, length, and timestampSec!'
|
|
540
|
+
)
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
@test()
|
|
544
|
+
protected static async startUsbBackendReturnsJson() {
|
|
545
|
+
const json = this.startUsbBackend()
|
|
452
546
|
|
|
453
547
|
assert.isEqualDeep(
|
|
454
548
|
json,
|
|
455
549
|
this.successfulResult,
|
|
456
|
-
'
|
|
550
|
+
'startUsbBackend did not return a JSON string!'
|
|
457
551
|
)
|
|
458
552
|
}
|
|
459
553
|
|
|
460
554
|
@test()
|
|
461
|
-
protected static async
|
|
462
|
-
this.
|
|
555
|
+
protected static async writeUsbBackendCallsBindingWithExpectedArgs() {
|
|
556
|
+
this.writeUsbBackend()
|
|
557
|
+
|
|
558
|
+
assert.isEqualDeep(
|
|
559
|
+
this.callsToWriteUsb[0],
|
|
560
|
+
[this.usbSerialNumber, this.usbValueToWrite],
|
|
561
|
+
'writeUsbBackend did not call binding with expected args!'
|
|
562
|
+
)
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
@test()
|
|
566
|
+
protected static async writeUsbBackendReturnsJson() {
|
|
567
|
+
const json = this.writeUsbBackend()
|
|
568
|
+
|
|
569
|
+
assert.isEqualDeep(
|
|
570
|
+
json,
|
|
571
|
+
this.successfulResult,
|
|
572
|
+
'writeUsbBackend did not return a JSON string!'
|
|
573
|
+
)
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
@test()
|
|
577
|
+
protected static async stopUsbBackendCallsBindingWithExpectedArgs() {
|
|
578
|
+
this.stopUsbBackend()
|
|
463
579
|
|
|
464
580
|
assert.isEqual(
|
|
465
|
-
this.
|
|
466
|
-
this.
|
|
467
|
-
'
|
|
581
|
+
this.callsToStopUsb[0][0],
|
|
582
|
+
this.usbSerialNumber,
|
|
583
|
+
'stopUsbBackend did not call binding with expected args!'
|
|
468
584
|
)
|
|
469
585
|
}
|
|
470
586
|
|
|
471
587
|
@test()
|
|
472
|
-
protected static async
|
|
473
|
-
const json = this.
|
|
588
|
+
protected static async stopUsbBackendReturnsJson() {
|
|
589
|
+
const json = this.stopUsbBackend()
|
|
474
590
|
|
|
475
591
|
assert.isEqualDeep(
|
|
476
592
|
json,
|
|
477
593
|
this.successfulResult,
|
|
478
|
-
'
|
|
594
|
+
'stopUsbBackend did not return a JSON string!'
|
|
479
595
|
)
|
|
480
596
|
}
|
|
481
597
|
|
|
@@ -502,6 +618,13 @@ export default class LibndxAdapterTest extends AbstractPackageTest {
|
|
|
502
618
|
})
|
|
503
619
|
}
|
|
504
620
|
|
|
621
|
+
private static addBleCharCallbacks() {
|
|
622
|
+
return this.instance.addBleCharCallbacks({
|
|
623
|
+
deviceUuid: this.bleDeviceUuid,
|
|
624
|
+
charCallbacks: this.charCallbacks,
|
|
625
|
+
})
|
|
626
|
+
}
|
|
627
|
+
|
|
505
628
|
private static writeBleCharacteristic() {
|
|
506
629
|
return this.instance.writeBleCharacteristic({
|
|
507
630
|
deviceUuid: this.bleDeviceUuid,
|
|
@@ -524,21 +647,31 @@ export default class LibndxAdapterTest extends AbstractPackageTest {
|
|
|
524
647
|
})
|
|
525
648
|
}
|
|
526
649
|
|
|
527
|
-
private static
|
|
528
|
-
return this.instance.
|
|
529
|
-
serialNumber: this.
|
|
650
|
+
private static createUsbBackend() {
|
|
651
|
+
return this.instance.createUsbBackend({
|
|
652
|
+
serialNumber: this.usbSerialNumber,
|
|
653
|
+
})
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
private static startUsbBackend(
|
|
657
|
+
onData?: (data: Buffer, length: number, timestampSec: number) => void
|
|
658
|
+
) {
|
|
659
|
+
return this.instance.startUsbBackend({
|
|
660
|
+
serialNumber: this.usbSerialNumber,
|
|
661
|
+
onData,
|
|
530
662
|
})
|
|
531
663
|
}
|
|
532
664
|
|
|
533
|
-
private static
|
|
534
|
-
return this.instance.
|
|
535
|
-
serialNumber: this.
|
|
665
|
+
private static writeUsbBackend() {
|
|
666
|
+
return this.instance.writeUsbBackend({
|
|
667
|
+
serialNumber: this.usbSerialNumber,
|
|
668
|
+
value: this.usbValueToWrite,
|
|
536
669
|
})
|
|
537
670
|
}
|
|
538
671
|
|
|
539
|
-
private static
|
|
540
|
-
return this.instance.
|
|
541
|
-
serialNumber: this.
|
|
672
|
+
private static stopUsbBackend() {
|
|
673
|
+
return this.instance.stopUsbBackend({
|
|
674
|
+
serialNumber: this.usbSerialNumber,
|
|
542
675
|
})
|
|
543
676
|
}
|
|
544
677
|
|
|
@@ -563,6 +696,14 @@ export default class LibndxAdapterTest extends AbstractPackageTest {
|
|
|
563
696
|
})
|
|
564
697
|
return JSON.stringify(this.successfulResult)
|
|
565
698
|
},
|
|
699
|
+
add_ble_char_callbacks: (args: any) => {
|
|
700
|
+
this.callsToAddBleCharCallbacks.push({
|
|
701
|
+
uuid: args[0],
|
|
702
|
+
charCallbacks: args[1],
|
|
703
|
+
numCallbacks: args[2],
|
|
704
|
+
})
|
|
705
|
+
return JSON.stringify(this.successfulResult)
|
|
706
|
+
},
|
|
566
707
|
write_ble_characteristic: (args) => {
|
|
567
708
|
this.callsToWriteBle.push(args)
|
|
568
709
|
return JSON.stringify(this.successfulResult)
|
|
@@ -579,16 +720,20 @@ export default class LibndxAdapterTest extends AbstractPackageTest {
|
|
|
579
720
|
this.callsToStopBle.push(args)
|
|
580
721
|
return JSON.stringify(this.successfulResult)
|
|
581
722
|
},
|
|
582
|
-
|
|
583
|
-
this.
|
|
723
|
+
create_usb_backend: (args) => {
|
|
724
|
+
this.callsToCreateUsb.push(args)
|
|
725
|
+
return JSON.stringify(this.successfulResult)
|
|
726
|
+
},
|
|
727
|
+
start_usb_backend: (args: any) => {
|
|
728
|
+
this.callsToStartUsb.push(args)
|
|
584
729
|
return JSON.stringify(this.successfulResult)
|
|
585
730
|
},
|
|
586
|
-
|
|
587
|
-
this.
|
|
731
|
+
write_usb_backend: (args) => {
|
|
732
|
+
this.callsToWriteUsb.push(args)
|
|
588
733
|
return JSON.stringify(this.successfulResult)
|
|
589
734
|
},
|
|
590
|
-
|
|
591
|
-
this.
|
|
735
|
+
stop_usb_backend: (args) => {
|
|
736
|
+
this.callsToStopUsb.push(args)
|
|
592
737
|
return JSON.stringify(this.successfulResult)
|
|
593
738
|
},
|
|
594
739
|
}
|
|
@@ -598,11 +743,13 @@ export default class LibndxAdapterTest extends AbstractPackageTest {
|
|
|
598
743
|
this.callsToDiscoverBle.length = 0
|
|
599
744
|
this.callsToCreateBle.length = 0
|
|
600
745
|
this.callsToStartBle.length = 0
|
|
746
|
+
this.callsToAddBleCharCallbacks.length = 0
|
|
601
747
|
this.callsToStopBle.length = 0
|
|
602
748
|
this.callsToSetBleRssiInterval.length = 0
|
|
603
|
-
this.
|
|
604
|
-
this.
|
|
605
|
-
this.
|
|
749
|
+
this.callsToCreateUsb.length = 0
|
|
750
|
+
this.callsToStartUsb.length = 0
|
|
751
|
+
this.callsToWriteUsb.length = 0
|
|
752
|
+
this.callsToStopUsb.length = 0
|
|
606
753
|
}
|
|
607
754
|
|
|
608
755
|
private static clearAndFakeFfi() {
|