emotiv-ts
Version:
A Typescript library that wraps the Cortex API functionalities to communicate with Emotiv headsets
54 lines (46 loc) • 2.08 kB
Markdown
# emotiv-ts
The **emotiv-ts** is a typescript library to communicate with Emotiv headsets.
# Installation
The most recent release can be installed using `npm`:
```shell
npm install emotiv-ts
```
# Getting started
To be able to use the functionalities of an Emotiv headset, you first need to connect to its API using the credentials provided for your app. You can check how to get the credentials in the [Emotiv website](https://www.emotiv.com/developer/).
The simplest way to connect to the Emotiv API using the *emotiv-ts* is via the `EmotivService` class:
```typescript
const socketUrl = "wss://localhost:6868"
const appCredentials = {
clientId: "YOUR_CLIENT_ID",
clientSecret: "YOUR_CLIENT_SECRET"
}
let emotivService = new EmotivService(socketUrl, appCredentials);
emotivService.connect();
```
The line `emotivService.connect()` returns a **Promise**, which means all your logic that requires the Emotiv communication needs to be handled after the Promise is resolved.
A common usage of Emotiv Headsets is the **Mental Command**. For that, you will need basically 2 things: load a profile with trained commands, and subscribe to the `Mental_Command` stream.
```typescript
emotivService.connect().then(() => {
let profileName = 'test'
emotivService.setupProfile(profileName, ProfileActions.LOAD)
emotivService.readData([DataStream.MENTAL_COMMAND], (dataStream) => yourMentalCommandHandler(dataStream))
})
```
After subscribing to the `Mental_Command` stream, you can then verify what command was executed like so:
```typescript
private yourMentalCommandHandler(dataStream: any) {
let commandReceived = dataStream['com']
if (commandReceived) {
switch (commandReceived[0]) {
case MentalCommand.PUSH:
console.log("Command PUSH executed")
// your logic for PUSH command here...
break;
case MentalCommand.PULL:
console.log("Command PULL executed")
// your logic for PULL command here...
break;
}
}
}
```