@neurodevs/node-lsl 16.1.0 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/__tests__/AbstractPackageTest.d.ts +1 -1
- package/build/__tests__/AbstractPackageTest.js +1 -1
- package/build/__tests__/AbstractPackageTest.js.map +1 -1
- package/build/__tests__/impl/LslStreamInfo.test.d.ts +1 -0
- package/build/__tests__/impl/LslStreamInfo.test.js +10 -3
- package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamInlet.test.d.ts +3 -2
- package/build/__tests__/impl/LslStreamInlet.test.js +25 -20
- package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
- package/build/__tests__/impl/LslWebSocketBridge.test.js +7 -16
- package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
- package/build/impl/LslStreamInfo.d.ts +4 -1
- package/build/impl/LslStreamInfo.js +11 -1
- package/build/impl/LslStreamInfo.js.map +1 -1
- package/build/impl/LslStreamInlet.d.ts +3 -13
- package/build/impl/LslStreamInlet.js +12 -15
- package/build/impl/LslStreamInlet.js.map +1 -1
- package/build/impl/LslWebSocketBridge.d.ts +2 -8
- package/build/impl/LslWebSocketBridge.js +2 -2
- package/build/impl/LslWebSocketBridge.js.map +1 -1
- package/build/scripts/runOutletToInlet.js +1 -1
- package/build/scripts/runOutletToInlet.js.map +1 -1
- package/build/testDoubles/Liblsl/FakeLiblsl.d.ts +1 -1
- package/build/testDoubles/Liblsl/FakeLiblsl.js +2 -2
- package/build/testDoubles/Liblsl/FakeLiblsl.js.map +1 -1
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js +1 -1
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +1 -1
- package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +0 -1
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js +0 -3
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/AbstractPackageTest.ts +1 -1
- package/src/__tests__/impl/LslStreamInfo.test.ts +14 -3
- package/src/__tests__/impl/LslStreamInlet.test.ts +34 -25
- package/src/__tests__/impl/LslWebSocketBridge.test.ts +8 -24
- package/src/impl/LslStreamInfo.ts +17 -2
- package/src/impl/LslStreamInlet.ts +20 -37
- package/src/impl/LslWebSocketBridge.ts +3 -9
- package/src/scripts/runOutletToInlet.ts +6 -3
- package/src/testDoubles/Liblsl/FakeLiblsl.ts +2 -2
- package/src/testDoubles/StreamInfo/FakeStreamInfo.ts +1 -1
- package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +0 -4
|
@@ -23,5 +23,5 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
23
23
|
protected static readonly chunkSize = 2;
|
|
24
24
|
protected static readonly sampleRateHz: number;
|
|
25
25
|
protected static readonly maxBufferedMs: number;
|
|
26
|
-
protected static LslStreamInlet(options: Partial<StreamInletOptions>, onData: OnDataCallback): import("../impl/LslStreamInlet.js").StreamInlet
|
|
26
|
+
protected static LslStreamInlet(options: Partial<StreamInletOptions>, onData: OnDataCallback): Promise<import("../impl/LslStreamInlet.js").StreamInlet>;
|
|
27
27
|
}
|
|
@@ -73,7 +73,7 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
73
73
|
static chunkSize = 2;
|
|
74
74
|
static sampleRateHz = Math.floor(Math.random() * 100);
|
|
75
75
|
static maxBufferedMs = Math.floor(Math.random() * 1000);
|
|
76
|
-
static LslStreamInlet(options, onData) {
|
|
76
|
+
static async LslStreamInlet(options, onData) {
|
|
77
77
|
const defaultOptions = {
|
|
78
78
|
sampleRateHz: 0,
|
|
79
79
|
channelNames: this.channelNames,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ export default class LslStreamInfoTest extends AbstractPackageTest {
|
|
|
18
18
|
protected static callsBindingsToDestroyStreamInfo(): Promise<void>;
|
|
19
19
|
protected static doesNotCreateNewStreamInfoIfPassedBoundStreamInfo(): Promise<void>;
|
|
20
20
|
protected static setsBoundStreamInfoWhenPassed(): Promise<void>;
|
|
21
|
+
protected static cachesInfoAttributesByBoundStreamInfo(): Promise<void>;
|
|
21
22
|
private static readonly defaultOptions;
|
|
22
23
|
private static LslStreamInfo;
|
|
23
24
|
}
|
|
@@ -129,10 +129,14 @@ export default class LslStreamInfoTest extends AbstractPackageTest {
|
|
|
129
129
|
});
|
|
130
130
|
assert.isEqualDeep(instance.getBoundInfo(), this.instance.getBoundInfo(), 'Should have set bound stream info!');
|
|
131
131
|
}
|
|
132
|
+
static async cachesInfoAttributesByBoundStreamInfo() {
|
|
133
|
+
const cached = LslStreamInfo.From(this.instance.getBoundInfo());
|
|
134
|
+
assert.isEqualDeep(cached, this.instance, 'Should have set bound stream info!');
|
|
135
|
+
}
|
|
132
136
|
static defaultOptions = {
|
|
133
|
-
name: this.
|
|
134
|
-
type: this.
|
|
135
|
-
sourceId: this.
|
|
137
|
+
name: this.name,
|
|
138
|
+
type: this.type,
|
|
139
|
+
sourceId: this.sourceId,
|
|
136
140
|
channelNames: this.channelNames,
|
|
137
141
|
channelFormat: 'float32',
|
|
138
142
|
sampleRateHz: 100 * Math.random(),
|
|
@@ -192,4 +196,7 @@ __decorate([
|
|
|
192
196
|
__decorate([
|
|
193
197
|
test()
|
|
194
198
|
], LslStreamInfoTest, "setsBoundStreamInfoWhenPassed", null);
|
|
199
|
+
__decorate([
|
|
200
|
+
test()
|
|
201
|
+
], LslStreamInfoTest, "cachesInfoAttributesByBoundStreamInfo", null);
|
|
195
202
|
//# sourceMappingURL=LslStreamInfo.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslStreamInfo.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslStreamInfo.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"LslStreamInfo.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslStreamInfo.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,12 @@ import { SpyStreamInlet } from '../../testDoubles/StreamInlet/SpyStreamInlet.js'
|
|
|
3
3
|
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
4
4
|
export default class LslStreamInletTest extends AbstractPackageTest {
|
|
5
5
|
private static instance;
|
|
6
|
+
private static outletInfo;
|
|
7
|
+
private static passedHandle?;
|
|
6
8
|
private static callsToOnData;
|
|
7
9
|
protected static beforeEach(): Promise<void>;
|
|
8
10
|
protected static createsInstance(): Promise<void>;
|
|
9
11
|
protected static createsStreamInfoWithExpectedOptions(): Promise<void>;
|
|
10
|
-
protected static uniqueNameHasSetPrefix(): Promise<void>;
|
|
11
12
|
protected static callsBindingsToCreateStreamInlet(): Promise<void>;
|
|
12
13
|
protected static flushQueueCallsLslBinding(): Promise<void>;
|
|
13
14
|
protected static destroyCallsLslBinding(): Promise<void>;
|
|
@@ -35,5 +36,5 @@ export default class LslStreamInletTest extends AbstractPackageTest {
|
|
|
35
36
|
private static get isRunning();
|
|
36
37
|
private static get boundInlet();
|
|
37
38
|
private static onData;
|
|
38
|
-
protected static LslStreamInlet(options?: Partial<StreamInletOptions>): SpyStreamInlet
|
|
39
|
+
protected static LslStreamInlet(options?: Partial<StreamInletOptions>): Promise<SpyStreamInlet>;
|
|
39
40
|
}
|
|
@@ -5,10 +5,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { test, assert } from '@neurodevs/node-tdd';
|
|
8
|
+
import LslStreamInfo from '../../impl/LslStreamInfo.js';
|
|
9
|
+
import FakeLiblsl from '../../testDoubles/Liblsl/FakeLiblsl.js';
|
|
8
10
|
import FakeStreamInfo from '../../testDoubles/StreamInfo/FakeStreamInfo.js';
|
|
9
11
|
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
10
12
|
export default class LslStreamInletTest extends AbstractPackageTest {
|
|
11
13
|
static instance;
|
|
14
|
+
static outletInfo;
|
|
15
|
+
static passedHandle;
|
|
12
16
|
static callsToOnData;
|
|
13
17
|
static async beforeEach() {
|
|
14
18
|
await super.beforeEach();
|
|
@@ -16,24 +20,28 @@ export default class LslStreamInletTest extends AbstractPackageTest {
|
|
|
16
20
|
this.setFakeStreamInfo();
|
|
17
21
|
this.setSpyStreamInlet();
|
|
18
22
|
this.callsToOnData = [];
|
|
19
|
-
this.
|
|
23
|
+
this.outletInfo = LslStreamInfo.Create({
|
|
24
|
+
sourceId: this.sourceId,
|
|
25
|
+
channelNames: [],
|
|
26
|
+
channelFormat: 'float32',
|
|
27
|
+
sampleRateHz: 0,
|
|
28
|
+
});
|
|
29
|
+
FakeStreamInfo.resetTestDouble();
|
|
30
|
+
FakeLiblsl.fakeStreamInfoHandles = [
|
|
31
|
+
this.outletInfo.boundStreamInfo,
|
|
32
|
+
];
|
|
33
|
+
const From = LslStreamInfo.From.bind(LslStreamInfo);
|
|
34
|
+
LslStreamInfo.From = (handle) => {
|
|
35
|
+
this.passedHandle = handle;
|
|
36
|
+
return From(handle);
|
|
37
|
+
};
|
|
38
|
+
this.instance = await this.LslStreamInlet();
|
|
20
39
|
}
|
|
21
40
|
static async createsInstance() {
|
|
22
41
|
assert.isTruthy(this.instance, 'Failed to create instance!');
|
|
23
42
|
}
|
|
24
43
|
static async createsStreamInfoWithExpectedOptions() {
|
|
25
|
-
assert.isEqualDeep(
|
|
26
|
-
channelNames: this.channelNames,
|
|
27
|
-
channelFormat: 'float32',
|
|
28
|
-
sampleRateHz: 0,
|
|
29
|
-
name: this.name_,
|
|
30
|
-
type: this.type,
|
|
31
|
-
sourceId: this.sourceId,
|
|
32
|
-
}, 'Stream info should have expected options!');
|
|
33
|
-
}
|
|
34
|
-
static async uniqueNameHasSetPrefix() {
|
|
35
|
-
const instance = this.LslStreamInlet({ name: undefined });
|
|
36
|
-
assert.doesInclude(instance.getName(), 'lsl-inlet-', 'Name should have set prefix!');
|
|
44
|
+
assert.isEqualDeep(this.passedHandle, this.outletInfo.boundStreamInfo, 'Stream info should have expected options!');
|
|
37
45
|
}
|
|
38
46
|
static async callsBindingsToCreateStreamInlet() {
|
|
39
47
|
const fakeInfo = this.instance.getStreamInfo();
|
|
@@ -145,7 +153,7 @@ export default class LslStreamInletTest extends AbstractPackageTest {
|
|
|
145
153
|
});
|
|
146
154
|
}
|
|
147
155
|
static async runInletWithOptions(options) {
|
|
148
|
-
const inlet = this.LslStreamInlet(options);
|
|
156
|
+
const inlet = await this.LslStreamInlet(options);
|
|
149
157
|
await this.startThenStop(inlet);
|
|
150
158
|
return inlet;
|
|
151
159
|
}
|
|
@@ -170,10 +178,10 @@ export default class LslStreamInletTest extends AbstractPackageTest {
|
|
|
170
178
|
static onData = (samples, timestamps) => {
|
|
171
179
|
this.callsToOnData.push({ samples, timestamps });
|
|
172
180
|
};
|
|
173
|
-
static LslStreamInlet(options) {
|
|
174
|
-
return AbstractPackageTest.LslStreamInlet({
|
|
181
|
+
static async LslStreamInlet(options) {
|
|
182
|
+
return (await AbstractPackageTest.LslStreamInlet({
|
|
175
183
|
...options,
|
|
176
|
-
}, this.onData);
|
|
184
|
+
}, this.onData));
|
|
177
185
|
}
|
|
178
186
|
}
|
|
179
187
|
__decorate([
|
|
@@ -182,9 +190,6 @@ __decorate([
|
|
|
182
190
|
__decorate([
|
|
183
191
|
test()
|
|
184
192
|
], LslStreamInletTest, "createsStreamInfoWithExpectedOptions", null);
|
|
185
|
-
__decorate([
|
|
186
|
-
test()
|
|
187
|
-
], LslStreamInletTest, "uniqueNameHasSetPrefix", null);
|
|
188
193
|
__decorate([
|
|
189
194
|
test()
|
|
190
195
|
], LslStreamInletTest, "callsBindingsToCreateStreamInlet", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslStreamInlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslStreamInlet.test.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,cAAc,MAAM,gDAAgD,CAAA;AAE3E,OAAO,mBAAmB,MAAM,2BAA2B,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,mBAAmB;IACvD,MAAM,CAAC,QAAQ,CAAgB;
|
|
1
|
+
{"version":3,"file":"LslStreamInlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslStreamInlet.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,21 +20,17 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
20
20
|
this.setFakeWebSocket();
|
|
21
21
|
this.setFakeWebSocketServer();
|
|
22
22
|
this.setSpyLslWebSocketBridge();
|
|
23
|
-
this.instance =
|
|
23
|
+
this.instance =
|
|
24
|
+
(await this.LslWebSocketBridge());
|
|
24
25
|
}
|
|
25
26
|
static async createsInstance() {
|
|
26
27
|
assert.isTruthy(this.instance, 'Failed to create instance!');
|
|
27
28
|
}
|
|
28
29
|
static async createsLslStreamInlet() {
|
|
29
|
-
const {
|
|
30
|
+
const { sourceId, chunkSize } = FakeStreamInlet.callsToConstructor[0]?.options ?? {};
|
|
30
31
|
assert.isEqualDeep({
|
|
31
|
-
channelNames,
|
|
32
|
-
channelFormat,
|
|
33
|
-
sampleRateHz,
|
|
34
|
-
chunkSize,
|
|
35
|
-
name,
|
|
36
|
-
type,
|
|
37
32
|
sourceId,
|
|
33
|
+
chunkSize,
|
|
38
34
|
}, this.inletOptions);
|
|
39
35
|
}
|
|
40
36
|
static async activateCallsStartPullingOnInlet() {
|
|
@@ -122,8 +118,8 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
122
118
|
assert.isEqual(FakeWebSocket.numCallsToClose, this.connectUrls.length, 'Did not close remote WebSockets!');
|
|
123
119
|
}
|
|
124
120
|
static async throwsIfNeitherPortNorRemoteUrlsPassed() {
|
|
125
|
-
assert.
|
|
126
|
-
this.LslWebSocketBridge({
|
|
121
|
+
await assert.doesThrowAsync(async () => {
|
|
122
|
+
await this.LslWebSocketBridge({
|
|
127
123
|
listenPort: undefined,
|
|
128
124
|
connectUrls: undefined,
|
|
129
125
|
});
|
|
@@ -147,13 +143,8 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
147
143
|
static listenPort = randomInt(1000, 5000);
|
|
148
144
|
static connectUrls = [this.generateId(), this.generateId()];
|
|
149
145
|
static inletOptions = {
|
|
150
|
-
channelNames: this.channelNames,
|
|
151
|
-
channelFormat: 'float32',
|
|
152
|
-
sampleRateHz: 100 * Math.random(),
|
|
153
|
-
chunkSize: randomInt(1, 100),
|
|
154
|
-
name: this.generateId(),
|
|
155
|
-
type: this.generateId(),
|
|
156
146
|
sourceId: this.generateId(),
|
|
147
|
+
chunkSize: randomInt(1, 100),
|
|
157
148
|
};
|
|
158
149
|
static baseOptions = {
|
|
159
150
|
...this.inletOptions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslWebSocketBridge.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslWebSocketBridge.test.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,kBAEN,MAAM,kCAAkC,CAAA;AACzC,OAAO,eAAe,MAAM,kDAAkD,CAAA;AAE9E,OAAO,aAAa,MAAM,+CAA+C,CAAA;AACzE,OAAO,mBAAmB,MAAM,qDAAqD,CAAA;AACrF,OAAO,mBAAmB,MAAM,2BAA2B,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,mBAAmB;IAC3D,MAAM,CAAC,QAAQ,CAAuB;IAEpC,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAE/B,IAAI,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"LslWebSocketBridge.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslWebSocketBridge.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BoundStreamInfo, ChannelFormat } from './LiblslAdapter.js';
|
|
2
2
|
export default class LslStreamInfo implements StreamInfo {
|
|
3
3
|
static Class?: StreamInfoConstructor;
|
|
4
|
+
private static instanceCache;
|
|
4
5
|
readonly name: string;
|
|
5
6
|
readonly type: string;
|
|
6
7
|
readonly sourceId: string;
|
|
@@ -17,11 +18,13 @@ export default class LslStreamInfo implements StreamInfo {
|
|
|
17
18
|
private lsl;
|
|
18
19
|
protected constructor(options: StreamInfoOptions);
|
|
19
20
|
static Create(options: StreamInfoOptions): StreamInfo;
|
|
21
|
+
static From(handle: BoundStreamInfo): StreamInfo;
|
|
20
22
|
private createStreamInfo;
|
|
21
23
|
private get lslChannelFormat();
|
|
22
24
|
private appendChannelsToStreamInfo;
|
|
23
25
|
destroy(): void;
|
|
24
26
|
get boundStreamInfo(): BoundStreamInfo;
|
|
27
|
+
set boundStreamInfo(boundInfo: BoundStreamInfo);
|
|
25
28
|
}
|
|
26
29
|
export interface StreamInfo {
|
|
27
30
|
destroy(): void;
|
|
@@ -33,7 +36,7 @@ export interface StreamInfo {
|
|
|
33
36
|
readonly channelCount: number;
|
|
34
37
|
readonly channelFormat: ChannelFormat;
|
|
35
38
|
readonly sampleRateHz: number;
|
|
36
|
-
|
|
39
|
+
boundStreamInfo: BoundStreamInfo;
|
|
37
40
|
}
|
|
38
41
|
type StreamInfoConstructor = new (options: StreamInfoOptions) => StreamInfo;
|
|
39
42
|
export interface StreamInfoOptions {
|
|
@@ -3,6 +3,7 @@ import { CHANNEL_FORMATS_MAP } from '../consts.js';
|
|
|
3
3
|
import LiblslAdapter from './LiblslAdapter.js';
|
|
4
4
|
export default class LslStreamInfo {
|
|
5
5
|
static Class;
|
|
6
|
+
static instanceCache = new Map();
|
|
6
7
|
name;
|
|
7
8
|
type;
|
|
8
9
|
sourceId;
|
|
@@ -36,7 +37,13 @@ export default class LslStreamInfo {
|
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
static Create(options) {
|
|
39
|
-
|
|
40
|
+
const instance = new (this.Class ?? this)(options);
|
|
41
|
+
const { boundStreamInfo: handle } = instance;
|
|
42
|
+
this.instanceCache.set(handle, instance);
|
|
43
|
+
return instance;
|
|
44
|
+
}
|
|
45
|
+
static From(handle) {
|
|
46
|
+
return this.instanceCache.get(handle);
|
|
40
47
|
}
|
|
41
48
|
createStreamInfo() {
|
|
42
49
|
this.boundInfo = this.lsl.createStreamInfo({
|
|
@@ -67,5 +74,8 @@ export default class LslStreamInfo {
|
|
|
67
74
|
get boundStreamInfo() {
|
|
68
75
|
return this.boundInfo;
|
|
69
76
|
}
|
|
77
|
+
set boundStreamInfo(boundInfo) {
|
|
78
|
+
this.boundInfo = boundInfo;
|
|
79
|
+
}
|
|
70
80
|
}
|
|
71
81
|
//# sourceMappingURL=LslStreamInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslStreamInfo.js","sourceRoot":"","sources":["../../src/impl/LslStreamInfo.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAE9C,MAAM,CAAC,OAAO,OAAO,aAAa;IACvB,MAAM,CAAC,KAAK,CAAwB;
|
|
1
|
+
{"version":3,"file":"LslStreamInfo.js","sourceRoot":"","sources":["../../src/impl/LslStreamInfo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { BoundInlet
|
|
1
|
+
import { BoundInlet } from './LiblslAdapter.js';
|
|
2
2
|
import { StreamInfo } from './LslStreamInfo.js';
|
|
3
3
|
export default class LslStreamInlet implements StreamInlet {
|
|
4
4
|
static Class?: StreamInletConstructor;
|
|
5
5
|
isRunning: boolean;
|
|
6
6
|
protected info: StreamInfo;
|
|
7
|
-
protected name: string;
|
|
8
|
-
private channelNames;
|
|
9
7
|
private channelCount;
|
|
10
8
|
private chunkSize;
|
|
11
9
|
private maxBufferedMs;
|
|
@@ -19,11 +17,10 @@ export default class LslStreamInlet implements StreamInlet {
|
|
|
19
17
|
private timestampBufferPtr;
|
|
20
18
|
private errorCodeBuffer;
|
|
21
19
|
private errorCodeBufferPtr;
|
|
22
|
-
private readonly defaultName;
|
|
23
20
|
private readonly sixMinutesInMs;
|
|
24
21
|
private lsl;
|
|
25
22
|
protected constructor(info: StreamInfo, options: StreamInletOptions, onData: OnDataCallback);
|
|
26
|
-
static Create(options: StreamInletOptions, onData: OnDataCallback): StreamInlet
|
|
23
|
+
static Create(options: StreamInletOptions, onData: OnDataCallback): Promise<StreamInlet>;
|
|
27
24
|
private setPullDataMethod;
|
|
28
25
|
private createBoundInlet;
|
|
29
26
|
private get boundStreamInfo();
|
|
@@ -62,16 +59,9 @@ export interface StreamInlet {
|
|
|
62
59
|
}
|
|
63
60
|
export type StreamInletConstructor = new (info: StreamInfo, options: StreamInletOptions, onData: OnDataCallback) => StreamInlet;
|
|
64
61
|
export interface StreamInletOptions {
|
|
65
|
-
|
|
66
|
-
channelFormat: ChannelFormat;
|
|
67
|
-
sampleRateHz: number;
|
|
62
|
+
sourceId: string;
|
|
68
63
|
chunkSize: number;
|
|
69
64
|
maxBufferedMs?: number;
|
|
70
65
|
timeoutMs?: number;
|
|
71
|
-
name?: string;
|
|
72
|
-
type?: string;
|
|
73
|
-
sourceId?: string;
|
|
74
|
-
manufacturer?: string;
|
|
75
|
-
units?: string;
|
|
76
66
|
}
|
|
77
67
|
export type OnDataCallback = (samples: Float32Array, timestamps: Float64Array) => void;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import generateId from '@neurodevs/generate-id';
|
|
2
1
|
import { createPointer, DataType, unwrapPointer } from 'ffi-rs';
|
|
3
2
|
import handleError from '../handleError.js';
|
|
4
3
|
import LiblslAdapter from './LiblslAdapter.js';
|
|
@@ -7,8 +6,6 @@ export default class LslStreamInlet {
|
|
|
7
6
|
static Class;
|
|
8
7
|
isRunning = false;
|
|
9
8
|
info;
|
|
10
|
-
name;
|
|
11
|
-
channelNames;
|
|
12
9
|
channelCount;
|
|
13
10
|
chunkSize;
|
|
14
11
|
maxBufferedMs;
|
|
@@ -22,15 +19,12 @@ export default class LslStreamInlet {
|
|
|
22
19
|
timestampBufferPtr;
|
|
23
20
|
errorCodeBuffer;
|
|
24
21
|
errorCodeBufferPtr;
|
|
25
|
-
defaultName = `lsl-inlet-${generateId()}`;
|
|
26
22
|
sixMinutesInMs = 360 * 1000;
|
|
27
23
|
lsl = LiblslAdapter.getInstance();
|
|
28
24
|
constructor(info, options, onData) {
|
|
29
|
-
const {
|
|
25
|
+
const { chunkSize, maxBufferedMs, timeoutMs } = options ?? {};
|
|
30
26
|
this.info = info;
|
|
31
|
-
this.
|
|
32
|
-
this.channelNames = channelNames;
|
|
33
|
-
this.channelCount = this.channelNames.length;
|
|
27
|
+
this.channelCount = this.info.channelCount;
|
|
34
28
|
this.chunkSize = chunkSize;
|
|
35
29
|
this.maxBufferedMs = maxBufferedMs ?? this.sixMinutesInMs;
|
|
36
30
|
this.timeoutMs = timeoutMs ?? 0;
|
|
@@ -38,11 +32,9 @@ export default class LslStreamInlet {
|
|
|
38
32
|
this.setPullDataMethod();
|
|
39
33
|
this.createBoundInlet();
|
|
40
34
|
}
|
|
41
|
-
static Create(options, onData) {
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
const infoOptions = rest;
|
|
45
|
-
const info = this.LslStreamInfo(infoOptions);
|
|
35
|
+
static async Create(options, onData) {
|
|
36
|
+
const { sourceId } = options;
|
|
37
|
+
const info = await this.LslStreamInfo(sourceId);
|
|
46
38
|
return new (this.Class ?? this)(info, options, onData);
|
|
47
39
|
}
|
|
48
40
|
setPullDataMethod() {
|
|
@@ -181,8 +173,13 @@ export default class LslStreamInlet {
|
|
|
181
173
|
destroyBoundInlet() {
|
|
182
174
|
this.lsl.destroyInlet({ inlet: this.inlet });
|
|
183
175
|
}
|
|
184
|
-
static LslStreamInfo(
|
|
185
|
-
|
|
176
|
+
static async LslStreamInfo(sourceId) {
|
|
177
|
+
const lsl = LiblslAdapter.getInstance();
|
|
178
|
+
const handles = await lsl.resolveByProp({
|
|
179
|
+
prop: 'source_id',
|
|
180
|
+
value: sourceId,
|
|
181
|
+
});
|
|
182
|
+
return LslStreamInfo.From(handles[0]);
|
|
186
183
|
}
|
|
187
184
|
}
|
|
188
185
|
//# 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":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAc,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE3E,OAAO,WAAW,MAAM,mBAAmB,CAAA;AAE3C,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAC9C,OAAO,aAA6B,MAAM,oBAAoB,CAAA;AAE9D,MAAM,CAAC,OAAO,OAAO,cAAc;IACxB,MAAM,CAAC,KAAK,CAAyB;IAErC,SAAS,GAAG,KAAK,CAAA;IAEd,IAAI,CAAY;IAClB,YAAY,CAAQ;IACpB,SAAS,CAAQ;IACjB,aAAa,CAAQ;IACrB,SAAS,CAAQ;IACjB,MAAM,CAAgB;IAEpB,KAAK,CAAa;IAEpB,cAAc,CAGrB;IAEO,UAAU,CAAsB;IAChC,aAAa,CAAa;IAE1B,eAAe,CAAsB;IACrC,kBAAkB,CAAa;IAE/B,eAAe,CAAsB;IACrC,kBAAkB,CAAa;IAEtB,cAAc,GAAG,GAAG,GAAG,IAAI,CAAA;IAEpC,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;IAEzC,YACI,IAAgB,EAChB,OAA2B,EAC3B,MAAsB;QAEtB,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;QAE7D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAA;QAC1C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,IAAI,CAAC,cAAc,CAAA;QACzD,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,CAAA;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAA;IAC3B,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CACtB,OAA2B,EAC3B,MAAsB;QAEtB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1D,CAAC;IAEO,iBAAiB;QACrB,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAA;QACzC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAA;QACxC,CAAC;IACL,CAAC;IAEO,gBAAgB;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YAC9B,IAAI,EAAE,IAAI,CAAC,eAAe;YAC1B,aAAa,EAAE,IAAI,CAAC,aAAa;SACpC,CAAC,CAAA;IACN,CAAC;IAED,IAAY,eAAe;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAA;IACpC,CAAC;IAEM,YAAY;QACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QAErB,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,uBAAuB,EAAE,CAAA;QAE9B,KAAK,IAAI,CAAC,UAAU,EAAE,CAAA;IAC1B,CAAC;IAEO,sBAAsB;QAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAChC,CAAC;IAEO,gBAAgB;QACpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAC1D,CAAA;IACL,CAAC;IAEgB,aAAa,GAAG,CAAC,CAAA;IAE1B,qBAAqB;QACzB,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CACvC,CAAA;IACL,CAAC;IAEgB,cAAc,GAAG,CAAC,CAAA;IAE3B,qBAAqB;QACzB,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACzD,CAAC;IAEgB,WAAW,GAAG,CAAC,CAAA;IAExB,uBAAuB;QAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC1B,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAC/B,IAAI,CAAC,wBAAwB,EAAE,CAAA;IACnC,CAAC;IAEO,mBAAmB;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAC9B,aAAa,CAAC;YACV,UAAU,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC9B,WAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;SACjC,CAAC,CACL,CAAC,CAAC,CAAC,CAAA;IACR,CAAC;IAEO,wBAAwB;QAC5B,IAAI,CAAC,kBAAkB,GAAG,aAAa,CACnC,aAAa,CAAC;YACV,UAAU,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC9B,WAAW,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;SACtC,CAAC,CACL,CAAC,CAAC,CAAC,CAAA;IACR,CAAC;IAEO,wBAAwB;QAC5B,IAAI,CAAC,kBAAkB,GAAG,aAAa,CACnC,aAAa,CAAC;YACV,UAAU,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC9B,WAAW,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;SACtC,CAAC,CACL,CAAC,CAAC,CAAC,CAAA;IACR,CAAC;IAEO,KAAK,CAAC,UAAU;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;YACrD,IAAI,CAAC,wBAAwB,EAAE,CAAA;YAE/B,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;YACpC,CAAC;YAED,YAAY,CAAC,GAAG,EAAE;gBACd,KAAK,IAAI,CAAC,UAAU,EAAE,CAAA;YAC1B,CAAC,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAEO,UAAU;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAE9C,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO;gBACH,OAAO,EAAE,IAAI,CAAC,8BAA8B,EAAE;gBAC9C,UAAU,EAAE,IAAI,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC;aAC5C,CAAA;QACL,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA;IACxD,CAAC;IAEO,qBAAqB;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,kBAAkB,EAAE,IAAI,CAAC,YAAY;YACrC,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI;YAC9B,UAAU,EAAE,IAAI,CAAC,kBAAkB;SACtC,CAAC,CAAA;IACN,CAAC;IAEO,8BAA8B;QAClC,OAAO,IAAI,YAAY,CACnB,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,IAAI,CAAC,UAAU,CAAC,UAAU,EAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CACrC,CAAA;IACL,CAAC;IAEO,SAAS;QACb,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAElD,IAAI,cAAc,EAAE,CAAC;YACjB,OAAO;gBACH,OAAO,EAAE,IAAI,CAAC,8BAA8B,EAAE;gBAC9C,UAAU,EAAE,IAAI,CAAC,oCAAoC,EAAE;aAC1D,CAAA;QACL,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA;IACxD,CAAC;IAEO,oBAAoB;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,kBAAkB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY;YACtD,uBAAuB,EAAE,IAAI,CAAC,SAAS;YACvC,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI;YAC9B,UAAU,EAAE,IAAI,CAAC,kBAAkB;SACtC,CAAC,CAAA;IACN,CAAC;IAEO,oCAAoC;QACxC,OAAO,IAAI,YAAY,CACnB,IAAI,CAAC,eAAe,CAAC,MAAM,EAC3B,IAAI,CAAC,eAAe,CAAC,UAAU,EAC/B,IAAI,CAAC,SAAS,CACjB,CAAA;IACL,CAAC;IAEO,wBAAwB;QAC5B,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAA;IACnD,CAAC;IAEM,WAAW;QACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IAC1B,CAAC;IAEM,UAAU;QACb,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAC9C,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC5B,CAAC;IAEO,iBAAiB;QACrB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAChD,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,QAAgB;QAC/C,MAAM,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;QAEvC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC;YACpC,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,QAAQ;SAClB,CAAC,CAAA;QAEF,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC;CACJ"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import WebSocket, { WebSocketServer } from 'ws';
|
|
2
|
-
import { ChannelFormat } from './LiblslAdapter.js';
|
|
3
2
|
import { StreamInlet } from './LslStreamInlet.js';
|
|
4
3
|
export default class LslWebSocketBridge implements WebSocketBridge {
|
|
5
4
|
static Class?: WebSocketBridgeConstructor;
|
|
@@ -10,7 +9,7 @@ export default class LslWebSocketBridge implements WebSocketBridge {
|
|
|
10
9
|
private remoteSockets?;
|
|
11
10
|
private isDestroyed;
|
|
12
11
|
protected constructor(options: WebSocketBridgeConstructorOptions);
|
|
13
|
-
static Create(options: WebSocketBridgeOptions): WebSocketBridge
|
|
12
|
+
static Create(options: WebSocketBridgeOptions): Promise<WebSocketBridge>;
|
|
14
13
|
private throwIfNoLocalServerOrRemoteSockets;
|
|
15
14
|
private readonly insufficientOptionsError;
|
|
16
15
|
activate(): void;
|
|
@@ -39,13 +38,8 @@ export interface WebSocketBridge {
|
|
|
39
38
|
}
|
|
40
39
|
export type WebSocketBridgeConstructor = new (options: WebSocketBridgeConstructorOptions) => WebSocketBridge;
|
|
41
40
|
export interface WebSocketBridgeOptions {
|
|
42
|
-
|
|
43
|
-
channelFormat: ChannelFormat;
|
|
44
|
-
sampleRateHz: number;
|
|
41
|
+
sourceId: string;
|
|
45
42
|
chunkSize: number;
|
|
46
|
-
name?: string;
|
|
47
|
-
type?: string;
|
|
48
|
-
sourceId?: string;
|
|
49
43
|
listenPort?: number;
|
|
50
44
|
connectUrls?: string | string[];
|
|
51
45
|
}
|
|
@@ -15,12 +15,12 @@ export default class LslWebSocketBridge {
|
|
|
15
15
|
this.remoteSockets = remoteSockets;
|
|
16
16
|
this.throwIfNoLocalServerOrRemoteSockets();
|
|
17
17
|
}
|
|
18
|
-
static Create(options) {
|
|
18
|
+
static async Create(options) {
|
|
19
19
|
const { listenPort, connectUrls, ...rest } = options;
|
|
20
20
|
const inletOptions = rest;
|
|
21
21
|
const localServer = this.WebSocketServer(listenPort);
|
|
22
22
|
const remoteSockets = this.createSocketsFrom(connectUrls);
|
|
23
|
-
const inlet = this.LslStreamInlet(inletOptions, localServer, remoteSockets);
|
|
23
|
+
const inlet = await this.LslStreamInlet(inletOptions, localServer, remoteSockets);
|
|
24
24
|
return new (this.Class ?? this)({
|
|
25
25
|
...options,
|
|
26
26
|
inlet,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslWebSocketBridge.js","sourceRoot":"","sources":["../../src/impl/LslWebSocketBridge.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,eAAe,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"LslWebSocketBridge.js","sourceRoot":"","sources":["../../src/impl/LslWebSocketBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ const inletOptions = {
|
|
|
22
22
|
channelFormat: 'float32',
|
|
23
23
|
chunkSize: 1,
|
|
24
24
|
};
|
|
25
|
-
const inlet = LslStreamInlet.Create(inletOptions, (samples, timestamps) => {
|
|
25
|
+
const inlet = await LslStreamInlet.Create(inletOptions, (samples, timestamps) => {
|
|
26
26
|
console.log('Received samples:', samples, 'at timestamps:', timestamps);
|
|
27
27
|
});
|
|
28
28
|
console.log('Start pulling...');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runOutletToInlet.js","sourceRoot":"","sources":["../../src/scripts/runOutletToInlet.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,2BAA2B,CAAA;AACtD,OAAO,eAAe,MAAM,4BAA4B,CAAA;AAExD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AACjC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,cAAc;IACxB,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACnC,aAAa,EAAE,SAAS;IACxB,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,MAAM;CACvB,CAAC,CAAA;AAEF,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AAEhC,MAAM,YAAY,GAAG;IACjB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,cAAc;IACxB,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACnC,aAAa,EAAE,SAAkB;IACjC,SAAS,EAAE,CAAC;CACf,CAAA;AAED,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"runOutletToInlet.js","sourceRoot":"","sources":["../../src/scripts/runOutletToInlet.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,2BAA2B,CAAA;AACtD,OAAO,eAAe,MAAM,4BAA4B,CAAA;AAExD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AACjC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,cAAc;IACxB,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACnC,aAAa,EAAE,SAAS;IACxB,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,MAAM;CACvB,CAAC,CAAA;AAEF,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AAEhC,MAAM,YAAY,GAAG;IACjB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,cAAc;IACxB,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACnC,aAAa,EAAE,SAAkB;IACjC,SAAS,EAAE,CAAC;CACf,CAAA;AAED,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,CACrC,YAAY,EACZ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAA;AAC3E,CAAC,CACJ,CAAA;AAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;AAC/B,KAAK,CAAC,YAAY,EAAE,CAAA;AAEpB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AACpC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AAExD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACzB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;AAEzD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;AACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACzB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AAC5D,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BoundOutlet, BoundStreamInfo, CreateStreamInfoOptions, AppendChannelsToStreamInfoOptions, CreateOutletOptions, PushSampleFloatTimestampOptions, PushSampleStringTimestampOptions, Liblsl, CreateInletOptions, DestroyInletOptions, BoundInlet, FlushInletOptions, PullChunkOptions, PullSampleOptions, DestroyStreamInfoOptions, ResolveByPropOptions, DestroyOutletOptions } from 'impl/LiblslAdapter.js';
|
|
2
2
|
export default class FakeLiblsl implements Liblsl {
|
|
3
|
-
static
|
|
3
|
+
static fakeStreamInfoHandles: BoundStreamInfo[];
|
|
4
4
|
static fakeSamples: Float32Array[];
|
|
5
5
|
static fakeChunks: Float32Array[];
|
|
6
6
|
static fakeTimestamps: Float64Array[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import generateId from '@neurodevs/generate-id';
|
|
2
2
|
export default class FakeLiblsl {
|
|
3
|
-
static
|
|
3
|
+
static fakeStreamInfoHandles = [];
|
|
4
4
|
static fakeSamples = [
|
|
5
5
|
new Float32Array([1, 2, 3]),
|
|
6
6
|
new Float32Array([4, 5, 6]),
|
|
@@ -54,7 +54,7 @@ export default class FakeLiblsl {
|
|
|
54
54
|
}
|
|
55
55
|
async resolveByProp(options) {
|
|
56
56
|
this.lastResolveByPropOptions = options;
|
|
57
|
-
return FakeLiblsl.
|
|
57
|
+
return FakeLiblsl.fakeStreamInfoHandles;
|
|
58
58
|
}
|
|
59
59
|
pushSampleFloatTimestamp(options) {
|
|
60
60
|
this.lastPushSampleFloatTimestampOptions = options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeLiblsl.js","sourceRoot":"","sources":["../../../src/testDoubles/Liblsl/FakeLiblsl.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAsB/C,MAAM,CAAC,OAAO,OAAO,UAAU;IACpB,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"FakeLiblsl.js","sourceRoot":"","sources":["../../../src/testDoubles/Liblsl/FakeLiblsl.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export default class FakeStreamInfo {
|
|
|
6
6
|
name = generateId();
|
|
7
7
|
type = generateId();
|
|
8
8
|
sourceId = generateId();
|
|
9
|
-
channelNames = [generateId(), generateId()];
|
|
9
|
+
channelNames = [generateId(), generateId(), generateId()];
|
|
10
10
|
channelFormat = 'float32';
|
|
11
11
|
sampleRateHz = 0;
|
|
12
12
|
units = 'N/A';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeStreamInfo.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInfo/FakeStreamInfo.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAK/C,MAAM,CAAC,OAAO,OAAO,cAAc;IACxB,MAAM,CAAC,kBAAkB,GAAwB,EAAE,CAAA;IACnD,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,MAAM,CAAC,eAAe,GAAG,EAAqB,CAAA;IAE9C,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,QAAQ,GAAG,UAAU,EAAE,CAAA;IACvB,YAAY,GAAa,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"FakeStreamInfo.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInfo/FakeStreamInfo.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAK/C,MAAM,CAAC,OAAO,OAAO,cAAc;IACxB,MAAM,CAAC,kBAAkB,GAAwB,EAAE,CAAA;IACnD,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,MAAM,CAAC,eAAe,GAAG,EAAqB,CAAA;IAE9C,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,QAAQ,GAAG,UAAU,EAAE,CAAA;IACvB,YAAY,GAAa,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IACnE,aAAa,GAAG,SAAkB,CAAA;IAClC,YAAY,GAAG,CAAC,CAAA;IAChB,KAAK,GAAG,KAAK,CAAA;IAEpB,YAAmB,OAA0B;QACzC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;IAEM,OAAO;QACV,cAAc,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,cAAc,CAAC,eAAe,CAAA;IACzC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,cAAc,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACtC,cAAc,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACxC,CAAC"}
|
|
@@ -2,7 +2,6 @@ import { StreamInfo } from '../../impl/LslStreamInfo.js';
|
|
|
2
2
|
import LslStreamInlet, { OnDataCallback, StreamInletOptions } from '../../impl/LslStreamInlet.js';
|
|
3
3
|
export declare class SpyStreamInlet extends LslStreamInlet {
|
|
4
4
|
constructor(info: StreamInfo, options: StreamInletOptions, onData: OnDataCallback);
|
|
5
|
-
getName(): string;
|
|
6
5
|
getStreamInfo(): StreamInfo;
|
|
7
6
|
getBoundInlet(): import("../../index.js").BoundInlet;
|
|
8
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpyStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/SpyStreamInlet.ts"],"names":[],"mappings":"AACA,OAAO,cAGN,MAAM,8BAA8B,CAAA;AAErC,MAAM,OAAO,cAAe,SAAQ,cAAc;IAC9C,YACI,IAAgB,EAChB,OAA2B,EAC3B,MAAsB;QAEtB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAChC,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"SpyStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/SpyStreamInlet.ts"],"names":[],"mappings":"AACA,OAAO,cAGN,MAAM,8BAA8B,CAAA;AAErC,MAAM,OAAO,cAAe,SAAQ,cAAc;IAC9C,YACI,IAAgB,EAChB,OAA2B,EAC3B,MAAsB;QAEtB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAChC,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,CAAC,IAAI,CAAA;IACpB,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -97,7 +97,7 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
97
97
|
protected static readonly sampleRateHz = Math.floor(Math.random() * 100)
|
|
98
98
|
protected static readonly maxBufferedMs = Math.floor(Math.random() * 1000)
|
|
99
99
|
|
|
100
|
-
protected static LslStreamInlet(
|
|
100
|
+
protected static async LslStreamInlet(
|
|
101
101
|
options: Partial<StreamInletOptions>,
|
|
102
102
|
onData: OnDataCallback
|
|
103
103
|
) {
|
|
@@ -244,10 +244,21 @@ export default class LslStreamInfoTest extends AbstractPackageTest {
|
|
|
244
244
|
)
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
+
@test()
|
|
248
|
+
protected static async cachesInfoAttributesByBoundStreamInfo() {
|
|
249
|
+
const cached = LslStreamInfo.From(this.instance.getBoundInfo())
|
|
250
|
+
|
|
251
|
+
assert.isEqualDeep(
|
|
252
|
+
cached,
|
|
253
|
+
this.instance,
|
|
254
|
+
'Should have set bound stream info!'
|
|
255
|
+
)
|
|
256
|
+
}
|
|
257
|
+
|
|
247
258
|
private static readonly defaultOptions = {
|
|
248
|
-
name: this.
|
|
249
|
-
type: this.
|
|
250
|
-
sourceId: this.
|
|
259
|
+
name: this.name,
|
|
260
|
+
type: this.type,
|
|
261
|
+
sourceId: this.sourceId,
|
|
251
262
|
channelNames: this.channelNames,
|
|
252
263
|
channelFormat: 'float32',
|
|
253
264
|
sampleRateHz: 100 * Math.random(),
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { test, assert } from '@neurodevs/node-tdd'
|
|
2
|
+
import { BoundStreamInfo } from '../../impl/LiblslAdapter.js'
|
|
3
|
+
import LslStreamInfo, { StreamInfo } from '../../impl/LslStreamInfo.js'
|
|
2
4
|
import { StreamInletOptions } from '../../impl/LslStreamInlet.js'
|
|
5
|
+
import FakeLiblsl from '../../testDoubles/Liblsl/FakeLiblsl.js'
|
|
3
6
|
import FakeStreamInfo from '../../testDoubles/StreamInfo/FakeStreamInfo.js'
|
|
4
7
|
import { SpyStreamInlet } from '../../testDoubles/StreamInlet/SpyStreamInlet.js'
|
|
5
8
|
import AbstractPackageTest from '../AbstractPackageTest.js'
|
|
6
9
|
|
|
7
10
|
export default class LslStreamInletTest extends AbstractPackageTest {
|
|
8
11
|
private static instance: SpyStreamInlet
|
|
12
|
+
private static outletInfo: StreamInfo
|
|
13
|
+
private static passedHandle?: BoundStreamInfo
|
|
9
14
|
|
|
10
15
|
private static callsToOnData: {
|
|
11
16
|
samples: Float32Array
|
|
@@ -21,7 +26,27 @@ export default class LslStreamInletTest extends AbstractPackageTest {
|
|
|
21
26
|
|
|
22
27
|
this.callsToOnData = []
|
|
23
28
|
|
|
24
|
-
this.
|
|
29
|
+
this.outletInfo = LslStreamInfo.Create({
|
|
30
|
+
sourceId: this.sourceId,
|
|
31
|
+
channelNames: [],
|
|
32
|
+
channelFormat: 'float32',
|
|
33
|
+
sampleRateHz: 0,
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
FakeStreamInfo.resetTestDouble()
|
|
37
|
+
|
|
38
|
+
FakeLiblsl.fakeStreamInfoHandles = [
|
|
39
|
+
this.outletInfo.boundStreamInfo as bigint,
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
const From = LslStreamInfo.From.bind(LslStreamInfo)
|
|
43
|
+
|
|
44
|
+
LslStreamInfo.From = (handle: BoundStreamInfo) => {
|
|
45
|
+
this.passedHandle = handle
|
|
46
|
+
return From(handle) as FakeStreamInfo
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
this.instance = await this.LslStreamInlet()
|
|
25
50
|
}
|
|
26
51
|
|
|
27
52
|
@test()
|
|
@@ -32,30 +57,12 @@ export default class LslStreamInletTest extends AbstractPackageTest {
|
|
|
32
57
|
@test()
|
|
33
58
|
protected static async createsStreamInfoWithExpectedOptions() {
|
|
34
59
|
assert.isEqualDeep(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
channelNames: this.channelNames,
|
|
38
|
-
channelFormat: 'float32',
|
|
39
|
-
sampleRateHz: 0,
|
|
40
|
-
name: this.name_,
|
|
41
|
-
type: this.type,
|
|
42
|
-
sourceId: this.sourceId,
|
|
43
|
-
},
|
|
60
|
+
this.passedHandle,
|
|
61
|
+
this.outletInfo.boundStreamInfo,
|
|
44
62
|
'Stream info should have expected options!'
|
|
45
63
|
)
|
|
46
64
|
}
|
|
47
65
|
|
|
48
|
-
@test()
|
|
49
|
-
protected static async uniqueNameHasSetPrefix() {
|
|
50
|
-
const instance = this.LslStreamInlet({ name: undefined })
|
|
51
|
-
|
|
52
|
-
assert.doesInclude(
|
|
53
|
-
instance.getName(),
|
|
54
|
-
'lsl-inlet-',
|
|
55
|
-
'Name should have set prefix!'
|
|
56
|
-
)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
66
|
@test()
|
|
60
67
|
protected static async callsBindingsToCreateStreamInlet() {
|
|
61
68
|
const fakeInfo = this.instance.getStreamInfo()
|
|
@@ -282,7 +289,7 @@ export default class LslStreamInletTest extends AbstractPackageTest {
|
|
|
282
289
|
private static async runInletWithOptions(
|
|
283
290
|
options?: Partial<StreamInletOptions>
|
|
284
291
|
) {
|
|
285
|
-
const inlet = this.LslStreamInlet(options)
|
|
292
|
+
const inlet = await this.LslStreamInlet(options)
|
|
286
293
|
await this.startThenStop(inlet)
|
|
287
294
|
return inlet
|
|
288
295
|
}
|
|
@@ -317,12 +324,14 @@ export default class LslStreamInletTest extends AbstractPackageTest {
|
|
|
317
324
|
this.callsToOnData.push({ samples, timestamps })
|
|
318
325
|
}
|
|
319
326
|
|
|
320
|
-
protected static LslStreamInlet(
|
|
321
|
-
|
|
327
|
+
protected static async LslStreamInlet(
|
|
328
|
+
options?: Partial<StreamInletOptions>
|
|
329
|
+
) {
|
|
330
|
+
return (await AbstractPackageTest.LslStreamInlet(
|
|
322
331
|
{
|
|
323
332
|
...options,
|
|
324
333
|
},
|
|
325
334
|
this.onData
|
|
326
|
-
) as SpyStreamInlet
|
|
335
|
+
)) as SpyStreamInlet
|
|
327
336
|
}
|
|
328
337
|
}
|
|
@@ -23,7 +23,8 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
23
23
|
this.setFakeWebSocketServer()
|
|
24
24
|
this.setSpyLslWebSocketBridge()
|
|
25
25
|
|
|
26
|
-
this.instance =
|
|
26
|
+
this.instance =
|
|
27
|
+
(await this.LslWebSocketBridge()) as SpyLslWebSocketBridge
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
@test()
|
|
@@ -33,25 +34,13 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
33
34
|
|
|
34
35
|
@test()
|
|
35
36
|
protected static async createsLslStreamInlet() {
|
|
36
|
-
const {
|
|
37
|
-
|
|
38
|
-
channelFormat,
|
|
39
|
-
sampleRateHz,
|
|
40
|
-
chunkSize,
|
|
41
|
-
name,
|
|
42
|
-
type,
|
|
43
|
-
sourceId,
|
|
44
|
-
} = FakeStreamInlet.callsToConstructor[0]?.options ?? {}
|
|
37
|
+
const { sourceId, chunkSize } =
|
|
38
|
+
FakeStreamInlet.callsToConstructor[0]?.options ?? {}
|
|
45
39
|
|
|
46
40
|
assert.isEqualDeep(
|
|
47
41
|
{
|
|
48
|
-
channelNames,
|
|
49
|
-
channelFormat,
|
|
50
|
-
sampleRateHz,
|
|
51
|
-
chunkSize,
|
|
52
|
-
name,
|
|
53
|
-
type,
|
|
54
42
|
sourceId,
|
|
43
|
+
chunkSize,
|
|
55
44
|
},
|
|
56
45
|
this.inletOptions
|
|
57
46
|
)
|
|
@@ -254,8 +243,8 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
254
243
|
|
|
255
244
|
@test()
|
|
256
245
|
protected static async throwsIfNeitherPortNorRemoteUrlsPassed() {
|
|
257
|
-
assert.
|
|
258
|
-
this.LslWebSocketBridge({
|
|
246
|
+
await assert.doesThrowAsync(async () => {
|
|
247
|
+
await this.LslWebSocketBridge({
|
|
259
248
|
listenPort: undefined,
|
|
260
249
|
connectUrls: undefined,
|
|
261
250
|
})
|
|
@@ -287,13 +276,8 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
287
276
|
private static readonly connectUrls = [this.generateId(), this.generateId()]
|
|
288
277
|
|
|
289
278
|
private static readonly inletOptions = {
|
|
290
|
-
channelNames: this.channelNames,
|
|
291
|
-
channelFormat: 'float32' as const,
|
|
292
|
-
sampleRateHz: 100 * Math.random(),
|
|
293
|
-
chunkSize: randomInt(1, 100),
|
|
294
|
-
name: this.generateId(),
|
|
295
|
-
type: this.generateId(),
|
|
296
279
|
sourceId: this.generateId(),
|
|
280
|
+
chunkSize: randomInt(1, 100),
|
|
297
281
|
}
|
|
298
282
|
|
|
299
283
|
private static readonly baseOptions = {
|
|
@@ -7,6 +7,8 @@ import LiblslAdapter from './LiblslAdapter.js'
|
|
|
7
7
|
export default class LslStreamInfo implements StreamInfo {
|
|
8
8
|
public static Class?: StreamInfoConstructor
|
|
9
9
|
|
|
10
|
+
private static instanceCache = new Map<BoundStreamInfo, StreamInfo>()
|
|
11
|
+
|
|
10
12
|
public readonly name: string
|
|
11
13
|
public readonly type: string
|
|
12
14
|
public readonly sourceId: string
|
|
@@ -55,7 +57,16 @@ export default class LslStreamInfo implements StreamInfo {
|
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
public static Create(options: StreamInfoOptions) {
|
|
58
|
-
|
|
60
|
+
const instance = new (this.Class ?? this)(options)
|
|
61
|
+
|
|
62
|
+
const { boundStreamInfo: handle } = instance
|
|
63
|
+
this.instanceCache.set(handle, instance)
|
|
64
|
+
|
|
65
|
+
return instance
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public static From(handle: BoundStreamInfo) {
|
|
69
|
+
return this.instanceCache.get(handle)!
|
|
59
70
|
}
|
|
60
71
|
|
|
61
72
|
private createStreamInfo() {
|
|
@@ -91,6 +102,10 @@ export default class LslStreamInfo implements StreamInfo {
|
|
|
91
102
|
public get boundStreamInfo() {
|
|
92
103
|
return this.boundInfo
|
|
93
104
|
}
|
|
105
|
+
|
|
106
|
+
public set boundStreamInfo(boundInfo: BoundStreamInfo) {
|
|
107
|
+
this.boundInfo = boundInfo
|
|
108
|
+
}
|
|
94
109
|
}
|
|
95
110
|
|
|
96
111
|
export interface StreamInfo {
|
|
@@ -103,7 +118,7 @@ export interface StreamInfo {
|
|
|
103
118
|
readonly channelCount: number
|
|
104
119
|
readonly channelFormat: ChannelFormat
|
|
105
120
|
readonly sampleRateHz: number
|
|
106
|
-
|
|
121
|
+
boundStreamInfo: BoundStreamInfo
|
|
107
122
|
}
|
|
108
123
|
|
|
109
124
|
type StreamInfoConstructor = new (options: StreamInfoOptions) => StreamInfo
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import generateId from '@neurodevs/generate-id'
|
|
2
1
|
import { createPointer, DataType, JsExternal, unwrapPointer } from 'ffi-rs'
|
|
3
2
|
|
|
4
3
|
import handleError from '../handleError.js'
|
|
5
|
-
import { BoundInlet
|
|
4
|
+
import { BoundInlet } from './LiblslAdapter.js'
|
|
6
5
|
import LiblslAdapter from './LiblslAdapter.js'
|
|
7
|
-
import LslStreamInfo, {
|
|
8
|
-
StreamInfo,
|
|
9
|
-
StreamInfoOptions,
|
|
10
|
-
} from './LslStreamInfo.js'
|
|
6
|
+
import LslStreamInfo, { StreamInfo } from './LslStreamInfo.js'
|
|
11
7
|
|
|
12
8
|
export default class LslStreamInlet implements StreamInlet {
|
|
13
9
|
public static Class?: StreamInletConstructor
|
|
@@ -15,13 +11,10 @@ export default class LslStreamInlet implements StreamInlet {
|
|
|
15
11
|
public isRunning = false
|
|
16
12
|
|
|
17
13
|
protected info: StreamInfo
|
|
18
|
-
protected name: string
|
|
19
|
-
private channelNames: string[]
|
|
20
14
|
private channelCount: number
|
|
21
15
|
private chunkSize: number
|
|
22
16
|
private maxBufferedMs: number
|
|
23
17
|
private timeoutMs: number
|
|
24
|
-
|
|
25
18
|
private onData: OnDataCallback
|
|
26
19
|
|
|
27
20
|
protected inlet!: BoundInlet
|
|
@@ -40,7 +33,6 @@ export default class LslStreamInlet implements StreamInlet {
|
|
|
40
33
|
private errorCodeBuffer!: Buffer<ArrayBuffer>
|
|
41
34
|
private errorCodeBufferPtr!: JsExternal
|
|
42
35
|
|
|
43
|
-
private readonly defaultName = `lsl-inlet-${generateId()}`
|
|
44
36
|
private readonly sixMinutesInMs = 360 * 1000
|
|
45
37
|
|
|
46
38
|
private lsl = LiblslAdapter.getInstance()
|
|
@@ -50,18 +42,10 @@ export default class LslStreamInlet implements StreamInlet {
|
|
|
50
42
|
options: StreamInletOptions,
|
|
51
43
|
onData: OnDataCallback
|
|
52
44
|
) {
|
|
53
|
-
const {
|
|
54
|
-
name = this.defaultName,
|
|
55
|
-
channelNames,
|
|
56
|
-
chunkSize,
|
|
57
|
-
maxBufferedMs,
|
|
58
|
-
timeoutMs,
|
|
59
|
-
} = options ?? {}
|
|
45
|
+
const { chunkSize, maxBufferedMs, timeoutMs } = options ?? {}
|
|
60
46
|
|
|
61
47
|
this.info = info
|
|
62
|
-
this.
|
|
63
|
-
this.channelNames = channelNames
|
|
64
|
-
this.channelCount = this.channelNames.length
|
|
48
|
+
this.channelCount = this.info.channelCount
|
|
65
49
|
this.chunkSize = chunkSize
|
|
66
50
|
this.maxBufferedMs = maxBufferedMs ?? this.sixMinutesInMs
|
|
67
51
|
this.timeoutMs = timeoutMs ?? 0
|
|
@@ -71,13 +55,12 @@ export default class LslStreamInlet implements StreamInlet {
|
|
|
71
55
|
this.createBoundInlet()
|
|
72
56
|
}
|
|
73
57
|
|
|
74
|
-
public static Create(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const info = this.LslStreamInfo(
|
|
80
|
-
|
|
58
|
+
public static async Create(
|
|
59
|
+
options: StreamInletOptions,
|
|
60
|
+
onData: OnDataCallback
|
|
61
|
+
) {
|
|
62
|
+
const { sourceId } = options
|
|
63
|
+
const info = await this.LslStreamInfo(sourceId)
|
|
81
64
|
return new (this.Class ?? this)(info, options, onData)
|
|
82
65
|
}
|
|
83
66
|
|
|
@@ -267,8 +250,15 @@ export default class LslStreamInlet implements StreamInlet {
|
|
|
267
250
|
this.lsl.destroyInlet({ inlet: this.inlet })
|
|
268
251
|
}
|
|
269
252
|
|
|
270
|
-
private static LslStreamInfo(
|
|
271
|
-
|
|
253
|
+
private static async LslStreamInfo(sourceId: string) {
|
|
254
|
+
const lsl = LiblslAdapter.getInstance()
|
|
255
|
+
|
|
256
|
+
const handles = await lsl.resolveByProp({
|
|
257
|
+
prop: 'source_id',
|
|
258
|
+
value: sourceId,
|
|
259
|
+
})
|
|
260
|
+
|
|
261
|
+
return LslStreamInfo.From(handles[0])
|
|
272
262
|
}
|
|
273
263
|
}
|
|
274
264
|
|
|
@@ -287,17 +277,10 @@ export type StreamInletConstructor = new (
|
|
|
287
277
|
) => StreamInlet
|
|
288
278
|
|
|
289
279
|
export interface StreamInletOptions {
|
|
290
|
-
|
|
291
|
-
channelFormat: ChannelFormat
|
|
292
|
-
sampleRateHz: number
|
|
280
|
+
sourceId: string
|
|
293
281
|
chunkSize: number
|
|
294
282
|
maxBufferedMs?: number
|
|
295
283
|
timeoutMs?: number
|
|
296
|
-
name?: string
|
|
297
|
-
type?: string
|
|
298
|
-
sourceId?: string
|
|
299
|
-
manufacturer?: string
|
|
300
|
-
units?: string
|
|
301
284
|
}
|
|
302
285
|
|
|
303
286
|
export type OnDataCallback = (
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import WebSocket, { WebSocketServer } from 'ws'
|
|
2
|
-
import { ChannelFormat } from './LiblslAdapter.js'
|
|
3
2
|
import LslStreamInlet, {
|
|
4
3
|
StreamInlet,
|
|
5
4
|
StreamInletOptions,
|
|
@@ -26,14 +25,14 @@ export default class LslWebSocketBridge implements WebSocketBridge {
|
|
|
26
25
|
this.throwIfNoLocalServerOrRemoteSockets()
|
|
27
26
|
}
|
|
28
27
|
|
|
29
|
-
public static Create(options: WebSocketBridgeOptions) {
|
|
28
|
+
public static async Create(options: WebSocketBridgeOptions) {
|
|
30
29
|
const { listenPort, connectUrls, ...rest } = options
|
|
31
30
|
const inletOptions: StreamInletOptions = rest
|
|
32
31
|
|
|
33
32
|
const localServer = this.WebSocketServer(listenPort)
|
|
34
33
|
const remoteSockets = this.createSocketsFrom(connectUrls)
|
|
35
34
|
|
|
36
|
-
const inlet = this.LslStreamInlet(
|
|
35
|
+
const inlet = await this.LslStreamInlet(
|
|
37
36
|
inletOptions,
|
|
38
37
|
localServer,
|
|
39
38
|
remoteSockets
|
|
@@ -175,13 +174,8 @@ export type WebSocketBridgeConstructor = new (
|
|
|
175
174
|
) => WebSocketBridge
|
|
176
175
|
|
|
177
176
|
export interface WebSocketBridgeOptions {
|
|
178
|
-
|
|
179
|
-
channelFormat: ChannelFormat
|
|
180
|
-
sampleRateHz: number
|
|
177
|
+
sourceId: string
|
|
181
178
|
chunkSize: number
|
|
182
|
-
name?: string
|
|
183
|
-
type?: string
|
|
184
|
-
sourceId?: string
|
|
185
179
|
listenPort?: number
|
|
186
180
|
connectUrls?: string | string[]
|
|
187
181
|
}
|
|
@@ -26,9 +26,12 @@ const inletOptions = {
|
|
|
26
26
|
chunkSize: 1,
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
const inlet = LslStreamInlet.Create(
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const inlet = await LslStreamInlet.Create(
|
|
30
|
+
inletOptions,
|
|
31
|
+
(samples, timestamps) => {
|
|
32
|
+
console.log('Received samples:', samples, 'at timestamps:', timestamps)
|
|
33
|
+
}
|
|
34
|
+
)
|
|
32
35
|
|
|
33
36
|
console.log('Start pulling...')
|
|
34
37
|
inlet.startPulling()
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from 'impl/LiblslAdapter.js'
|
|
22
22
|
|
|
23
23
|
export default class FakeLiblsl implements Liblsl {
|
|
24
|
-
public static
|
|
24
|
+
public static fakeStreamInfoHandles: BoundStreamInfo[] = []
|
|
25
25
|
|
|
26
26
|
public static fakeSamples: Float32Array[] = [
|
|
27
27
|
new Float32Array([1, 2, 3]),
|
|
@@ -90,7 +90,7 @@ export default class FakeLiblsl implements Liblsl {
|
|
|
90
90
|
|
|
91
91
|
public async resolveByProp(options: ResolveByPropOptions) {
|
|
92
92
|
this.lastResolveByPropOptions = options
|
|
93
|
-
return FakeLiblsl.
|
|
93
|
+
return FakeLiblsl.fakeStreamInfoHandles as bigint[]
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
public pushSampleFloatTimestamp(options: PushSampleFloatTimestampOptions) {
|
|
@@ -12,7 +12,7 @@ export default class FakeStreamInfo implements StreamInfo {
|
|
|
12
12
|
public name = generateId()
|
|
13
13
|
public type = generateId()
|
|
14
14
|
public sourceId = generateId()
|
|
15
|
-
public channelNames: string[] = [generateId(), generateId()]
|
|
15
|
+
public channelNames: string[] = [generateId(), generateId(), generateId()]
|
|
16
16
|
public channelFormat = 'float32' as const
|
|
17
17
|
public sampleRateHz = 0
|
|
18
18
|
public units = 'N/A'
|