UNPKG

emotiv-ts

Version:

A Typescript library that wraps the Cortex API functionalities to communicate with Emotiv headsets

58 lines (57 loc) 2.21 kB
import { Requests } from "../enums/internal/emotiv.requests"; import { QueryHeadsets } from "../models/requests/headsets/query-headsets"; import { ControlDevice } from "../models/requests/headsets/control-device"; export class HeadsetService { socket; headsetId = ""; constructor(socket) { this.socket = socket; } // TODO: Change the function to query all headsets instead of just the first // This change should be made before making it as a public library getHeadsets() { let context = this; let queryHeadsetRequest = new QueryHeadsets(); return new Promise((resolve, reject) => { context.socket.send(JSON.stringify(queryHeadsetRequest)); context.socket.onmessage = (message) => { try { let data = JSON.parse(message.data); if (data['id'] == Requests.QUERY_HEADSET) { console.debug("QueryHeadsets response:", data); if (data['result'].length > 0) { context.headsetId = data['result'][0]['id']; resolve(context.headsetId); } else { console.log('No headset was found. Please, connect the headset with your pc.'); } } } catch (error) { console.error(error); } }; }); } controlDevice(headsetId) { let context = this; let controlDeviceRequest = new ControlDevice(headsetId); return new Promise(function (resolve, reject) { context.socket.send(JSON.stringify(controlDeviceRequest)); context.socket.onmessage = (message) => { try { if (JSON.parse(message.data)['id'] == Requests.CONTROL_DEVICE) { resolve(message.data); } } catch (error) { console.error(error); } }; }); } getHeadsetId() { return this.headsetId; } }