emotiv-ts
Version:
A Typescript library that wraps the Cortex API functionalities to communicate with Emotiv headsets
58 lines (57 loc) • 2.21 kB
JavaScript
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;
}
}