@neurosity/sdk
Version:
Neurosity SDK
32 lines (31 loc) • 1.11 kB
JavaScript
import { pipe, from } from "rxjs";
import { mergeMap, map } from "rxjs/operators";
import { epoch, addInfo } from "../../../utils/pipes";
const EPOCH_BUFFER_SIZE = 16;
const SAMPLING_RATE_FALLBACK = 256; // Crown's sampling rate
/**
* @hidden
*/
export function csvBufferToEpoch(deviceInfo) {
var _a;
if (!(deviceInfo === null || deviceInfo === void 0 ? void 0 : deviceInfo.samplingRate)) {
console.warn(`Didn't receive a sampling rate, defaulting to ${SAMPLING_RATE_FALLBACK}`);
}
return pipe(csvBufferToSamples(), epoch({
duration: EPOCH_BUFFER_SIZE,
interval: EPOCH_BUFFER_SIZE,
samplingRate: (_a = deviceInfo === null || deviceInfo === void 0 ? void 0 : deviceInfo.samplingRate) !== null && _a !== void 0 ? _a : SAMPLING_RATE_FALLBACK
}), addInfo({
channelNames: deviceInfo.channelNames,
samplingRate: deviceInfo.samplingRate
}));
}
/**
* @hidden
*/
export function csvBufferToSamples() {
return pipe(mergeMap((samples) => from(samples)), map(([timestamp, marker, ...data]) => ({
timestamp,
data
})));
}