@neurosity/sdk
Version:
Neurosity SDK
37 lines (36 loc) • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.csvBufferToSamples = exports.csvBufferToEpoch = void 0;
const rxjs_1 = require("rxjs");
const operators_1 = require("rxjs/operators");
const pipes_1 = require("../../../utils/pipes");
const EPOCH_BUFFER_SIZE = 16;
const SAMPLING_RATE_FALLBACK = 256; // Crown's sampling rate
/**
* @hidden
*/
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 (0, rxjs_1.pipe)(csvBufferToSamples(), (0, pipes_1.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
}), (0, pipes_1.addInfo)({
channelNames: deviceInfo.channelNames,
samplingRate: deviceInfo.samplingRate
}));
}
exports.csvBufferToEpoch = csvBufferToEpoch;
/**
* @hidden
*/
function csvBufferToSamples() {
return (0, rxjs_1.pipe)((0, operators_1.mergeMap)((samples) => (0, rxjs_1.from)(samples)), (0, operators_1.map)(([timestamp, marker, ...data]) => ({
timestamp,
data
})));
}
exports.csvBufferToSamples = csvBufferToSamples;