Skip to content

Releases: JovannMC/haritorax-interpreter

v3.3.0

Choose a tag to compare

@JovannMC JovannMC released this 10 Apr 10:33
7726f4b

The v3.3.0 release of the HaritoraX-Interpreter package is now out to coincide with SlimeTora v1.5.0. This release adds beta support for HaritoraX 2 and other optimizations.

Changelogs

  • Add beta HaritoraX 2 support
  • Better handling with systems without any BT adapters
  • Optimizations
  • Package updates

Installation

npm install haritorax-interpreter

Documentation

Will write actual documentation at some point, for now refer to the source code, examples, and JSDoc comments. You may also see how it's used in SlimeTora!

Supported devices

Device Supported Elbow/Hip support Additional trackers Extensions
HaritoraX 2 Y Y Y Y
HaritoraX Wireless Y Y Y N
HaritoraX 1.1B Y Y N N
HaritoraX 1.1 Y Y N N
HaritoraX 1.0 Y Y N N
Haritora ? ? N N
Communication mode Supported
Bluetooth (Low Energy) Y
Bluetooth Classic (serial) Y
GX6 Communication Dongle Y
GX2 Communication Dongle Y

Example

import { HaritoraX } from "haritorax-interpreter";

// connect to haritorax wireless, enable debug logs, allow printing of processIMUData() logs (lots of spam), print raw unprocessed data (more spam!)
let device = new HaritoraX("wireless", true, true, true);
// start connecting to dongles via GX dongles (COM connection), with the ports COM4, COM5, COM6, and COM7
device.startConnection("com", ["COM4", "COM5", "COM6", "COM7"]);

device.on("imu", (trackerName, rotation, gravity, ankle) => {
    // IMU data received, do stuff
});

setTimeout(() => {
    // apply the following settings to the rightAnkle tracker:
    // sensor mode: 1 (magnetometer enabled)
    // posture data transfer rate: 100FPS
    // sensor auto correction mode: accelerometer and gyroscope
    // ankle motion detection: enabled
    device.setTrackerSettings("rightAnkle", 1, 100, ['accel', 'gyro'], true);
}, 2000)

setTimeout(() => {
    device.stopConnection("com");
}, 10000)

Full Changelog: v3.2.3...v3.3.0

v3.2.3

Choose a tag to compare

@JovannMC JovannMC released this 18 Dec 18:11
9e5b12e

The v3.2.3 release of the HaritoraX-Interpreter package is now out to coincide with SlimeTora v1.5.0. This is another hotfix that fixes messages not being logged when running getAvailableDevices().

Three releases in one day.. i'm so good at development

Changelogs

  • Fix no messages being logged when running getAvailableDevices()

Installation

npm install haritorax-interpreter

Documentation

Will write actual documentation at some point, for now refer to the source code, examples, and JSDoc comments. You may also see how it's used in SlimeTora!

Supported devices

Device Supported Elbow/Hip support
HaritoraX Wireless Y Y
HaritoraX 1.1B Y Y
HaritoraX 1.1 Y Y
HaritoraX 1.0 Y Y
Haritora ? ?
Communication mode Supported
Bluetooth (Low Energy) Y
Bluetooth Classic (COM) Y
GX6 Communication Dongle Y
GX2 Communication Dongle Y

Example

import { HaritoraX } from "haritorax-interpreter";

// connect to haritorax wireless, enable debug logs, allow printing of processIMUData() logs (lots of spam), print raw unprocessed data (more spam!)
let device = new HaritoraX("wireless", true, true, true);
// start connecting to dongles via GX dongles (COM connection), with the ports COM4, COM5, COM6, and COM7
device.startConnection("com", ["COM4", "COM5", "COM6", "COM7"]);

device.on("imu", (trackerName, rotation, gravity, ankle) => {
    // IMU data received, do stuff
});

setTimeout(() => {
    // apply the following settings to the rightAnkle tracker:
    // sensor mode: 1 (magnetometer enabled)
    // posture data transfer rate: 100FPS
    // sensor auto correction mode: accelerometer and gyroscope
    // ankle motion detection: enabled
    device.setTrackerSettings("rightAnkle", 1, 100, ['accel', 'gyro'], true);
}, 2000)

setTimeout(() => {
    device.stopConnection("com");
}, 10000)

Full Changelog: v3.2.2...v3.2.3

v3.2.2

Choose a tag to compare

@JovannMC JovannMC released this 18 Dec 15:51
6debeff

The v3.2.2 release of the HaritoraX-Interpreter package is now out to coincide with SlimeTora v1.5.0. This is a hotfix that makes most of the functions relating to the tracker's settings async to properly wait for the data to be written.

Changelogs

  • Make tracker setting functions async

Installation

npm install haritorax-interpreter

Documentation

Will write actual documentation at some point, for now refer to the source code, examples, and JSDoc comments. You may also see how it's used in SlimeTora!

Supported devices

Device Supported Elbow/Hip support
HaritoraX Wireless Y Y
HaritoraX 1.1B Y Y
HaritoraX 1.1 Y Y
HaritoraX 1.0 Y Y
Haritora ? ?
Communication mode Supported
Bluetooth (Low Energy) Y
Bluetooth Classic (COM) Y
GX6 Communication Dongle Y
GX2 Communication Dongle Y

Example

import { HaritoraX } from "haritorax-interpreter";

// connect to haritorax wireless, enable debug logs, allow printing of processIMUData() logs (lots of spam), print raw unprocessed data (more spam!)
let device = new HaritoraX("wireless", true, true, true);
// start connecting to dongles via GX dongles (COM connection), with the ports COM4, COM5, COM6, and COM7
device.startConnection("com", ["COM4", "COM5", "COM6", "COM7"]);

device.on("imu", (trackerName, rotation, gravity, ankle) => {
    // IMU data received, do stuff
});

setTimeout(() => {
    // apply the following settings to the rightAnkle tracker:
    // sensor mode: 1 (magnetometer enabled)
    // posture data transfer rate: 100FPS
    // sensor auto correction mode: accelerometer and gyroscope
    // ankle motion detection: enabled
    device.setTrackerSettings("rightAnkle", 1, 100, ['accel', 'gyro'], true);
}, 2000)

setTimeout(() => {
    device.stopConnection("com");
}, 10000)

Full Changelog: v3.2.1...v3.2.2

v3.2.1

Choose a tag to compare

@JovannMC JovannMC released this 18 Dec 09:27
2993257

The v3.2.1 release of the HaritoraX-Interpreter package is now out. This is a minor release fixing some major bugs (IS WIRED AUTO DETECTION FIXED??) and allowing the package to automatically reconnect to a COM port if it's available again.

Changelogs

  • Allow package to automatically restart connection if COM port is available again
  • Fix trackers sometimes not turning off when running powerOffTracker()
  • !!! Fix rare possibility of trackers being soft-bricked
    • i have no idea why the trackers have to work like this, but hopefulyl i don't end up soft-bricking more trackers
    • help
  • FIX WIRED AUTO DETECTION MAYBE????????
    • HELP
  • Update packages

Installation

npm install haritorax-interpreter

Documentation

Will write actual documentation at some point, for now refer to the source code, examples, and JSDoc comments. You may also see how it's used in SlimeTora!

Supported devices

Device Supported Elbow/Hip support
HaritoraX Wireless Y Y
HaritoraX 1.1B Y Y
HaritoraX 1.1 Y Y
HaritoraX 1.0 Y Y
Haritora ? ?
Communication mode Supported
Bluetooth (Low Energy) Y
Bluetooth Classic (COM) Y
GX6 Communication Dongle Y
GX2 Communication Dongle Y

Example

import { HaritoraX } from "haritorax-interpreter";

// connect to haritorax wireless, enable debug logs, allow printing of processIMUData() logs (lots of spam), print raw unprocessed data (more spam!)
let device = new HaritoraX("wireless", true, true, true);
// start connecting to dongles via GX dongles (COM connection), with the ports COM4, COM5, COM6, and COM7
device.startConnection("com", ["COM4", "COM5", "COM6", "COM7"]);

device.on("imu", (trackerName, rotation, gravity, ankle) => {
    // IMU data received, do stuff
});

setTimeout(() => {
    // apply the following settings to the rightAnkle tracker:
    // sensor mode: 1 (magnetometer enabled)
    // posture data transfer rate: 100FPS
    // sensor auto correction mode: accelerometer and gyroscope
    // ankle motion detection: enabled
    device.setTrackerSettings("rightAnkle", 1, 100, ['accel', 'gyro'], true);
}, 2000)

setTimeout(() => {
    device.stopConnection("com");
}, 10000)

Full Changelog: v3.2.0...v3.2.1

v3.2.0

Choose a tag to compare

@JovannMC JovannMC released this 18 Nov 14:53
159aa16

The v3.2.0 release of the HaritoraX-Interpreter package is now out to coincide with SlimeTora v1.4.0. This is a minor release adding support for the new part assignments and (hopefully) finally fixing BTSPP/HaritoraX Wired detection.

Changelogs

  • Add support for new part assignments
    • With you being able to buy individual trackers, there are 5 new assignments:
      • L/R wrists, L/R feet, & head
    • Hopefully this should just work, lol
  • Optimized assignment logic for GX dongles
    • Finally removed the janky assignment logic I made before since we can now request info from the dongles!
    • No more weird delay :p
  • Make powerOffTracker() async
    • Should've been async in the first place
    • Instance can get destroyed/interrupted before all commands are run and cause soft bricking (tracker keeps turning off after being powered on)
      • I found this out while implementing the "power off on exit" feature on SlimeTora lol
  • Fix HaritoraX Wired/BTSPP detection (finally?)
    • Unknown for Linux
  • Removed async on getTrackerSettings()
  • Package updates

Installation

npm install haritorax-interpreter

Documentation

Will write actual documentation at some point, for now refer to the source code, examples, and JSDoc comments. You may also see how it's used in SlimeTora!

Supported devices

Device Supported Elbow/Hip support
HaritoraX Wireless Y Y
HaritoraX 1.1B Y Y
HaritoraX 1.1 Y Y
HaritoraX 1.0 Y Y
Haritora ? ?
Communication mode Supported
Bluetooth (Low Energy) Y
Bluetooth Classic (COM) Y
GX6 Communication Dongle Y
GX2 Communication Dongle Y

Example

import { HaritoraX } from "haritorax-interpreter";

// connect to haritorax wireless, enable debug logs, allow printing of processIMUData() logs (lots of spam), print raw unprocessed data (more spam!)
let device = new HaritoraX("wireless", true, true, true);
// start connecting to dongles via GX dongles (COM connection), with the ports COM4, COM5, COM6, and COM7
device.startConnection("com", ["COM4", "COM5", "COM6", "COM7"]);

device.on("imu", (trackerName, rotation, gravity, ankle) => {
    // IMU data received, do stuff
});

setTimeout(() => {
    // apply the following settings to the rightAnkle tracker:
    // sensor mode: 1 (magnetometer enabled)
    // posture data transfer rate: 100FPS
    // sensor auto correction mode: accelerometer and gyroscope
    // ankle motion detection: enabled
    device.setTrackerSettings("rightAnkle", 1, 100, ['accel', 'gyro'], true);
}, 2000)

setTimeout(() => {
    device.stopConnection("com");
}, 10000)

Full Changelog: v3.1.0...v3.2.0

v3.1.0

Choose a tag to compare

@JovannMC JovannMC released this 05 Oct 18:40
5c5d4a7

The v3.1.0 release of the HaritoraX-Interpreter package is now out to coincide with SlimeTora v1.3.0. This is a minor release containing many new features to GX dongles, bugfixes, and full BLE support for Linux via node-ble.

Changelogs

  • Add full support for wireless BT on Linux
  • Add many GX dongle features:
    • Pairing/unpairing trackers (w/ events)
    • Turning off trackers
    • Set COM communication channel
    • Manually request data from dongle
  • Add getting interpreter's com.ts/bluetooth(-linux).ts instances
    • Allows you to run methods inside those files with the instance currently being used by the interpreter
  • Add processing of some wireless BT data when received
  • Add TS types & definitions
  • Add extra failsafes if receiving no data
    • BT code times out if discovery of services/characteristics take too long
    • Data timeouts in listenToDeviceEvents() that removes & disconnects the tracker if no "data" event is fired after 10 seconds
  • Add numerous (un)known UUIDs for wireless BT trackers
  • Increase canSendButtonData timeout to 2000
  • Numerous logging changes
  • Optimizations to writing to COM ports
  • Update packages
  • Fix BTSPP detection on Windows
    • This is something I can't really test, I don't have any BTSPP devices
  • Fix bluetooth initialization errors (even when perfectly fine)
  • Fix GX dongle per-tracker settings
    • Fully stable now, no need to "not recommend" anymore
  • Fix battery processing breaking interpreter if trackers aren't assigned yet
  • Fix removeActiveDevices() returning nothing
  • Fix "null" and "DONGLE" tracker ids
  • Fix "fireEventName()" methods with BT + COM enabled
  • Fix fireTrackerBattery() not processing BT battery & add delay before reading battery for COM
  • Remove "no button pressed" log
  • Fix error printing
  • Other bug fixes & optimizations

Installation

npm install haritorax-interpreter

Documentation

Will write actual documentation at some point, for now refer to the source code, examples, and JSDoc comments. You may also see how it's used in SlimeTora!

Supported devices

Device Supported Elbow/Hip support
HaritoraX Wireless Y Y
HaritoraX 1.1B Y Y
HaritoraX 1.1 Y Y
HaritoraX 1.0 Y Y
Haritora ? ?
Communication mode Supported
Bluetooth (Low Energy) Y
Bluetooth Classic (COM) Y
GX6 Communication Dongle Y
GX2 Communication Dongle Y

Example

import { HaritoraX } from "haritorax-interpreter";

// connect to haritorax wireless, enable debug logs, allow printing of processIMUData() logs (lots of spam), print raw unprocessed data (more spam!)
let device = new HaritoraX("wireless", true, true, true);
// start connecting to dongles via GX dongles (COM connection), with the ports COM4, COM5, COM6, and COM7
device.startConnection("com", ["COM4", "COM5", "COM6", "COM7"]);

device.on("imu", (trackerName, rotation, gravity, ankle) => {
    // IMU data received, do stuff
});

setTimeout(() => {
    // apply the following settings to the rightAnkle tracker:
    // sensor mode: 1 (magnetometer enabled)
    // posture data transfer rate: 100FPS
    // sensor auto correction mode: accelerometer and gyroscope
    // ankle motion detection: enabled
    device.setTrackerSettings("rightAnkle", 1, 100, ['accel', 'gyro'], true);
}, 2000)

setTimeout(() => {
    device.stopConnection("com");
}, 10000)

Full Changelog: v3.0.1...v3.1.0

v3.0.1

Choose a tag to compare

@JovannMC JovannMC released this 20 Aug 17:42

The v3.0.1 release of the HaritoraX-Interpreter package is now out to coincide with SlimeTora v1.2.0. This is a hotfix for COM port auto-detection on Linux.

Changelogs

  • Fix COM port detection on Linux

Installation

npm install haritorax-interpreter

Documentation

Will write actual documentation at some point, for now refer to the source code, examples, and JSDoc comments. You may also see how it's used in SlimeTora!

Supported devices

Device Supported Elbow/Hip support
HaritoraX Wireless Y Y
HaritoraX 1.1B Y Y
HaritoraX 1.1 Y Y
HaritoraX 1.0 Y Y
Haritora ? ?
Communication mode Supported
Bluetooth (Low Energy) Y
Bluetooth Classic (COM) Y
GX6 Communication Dongle Y
GX2 Communication Dongle Y

Example

import { HaritoraX } from "haritorax-interpreter";

// connect to haritorax wireless, enable debug logs, allow printing of processIMUData() logs (lots of spam), print raw unprocessed data (more spam!)
let device = new HaritoraX("wireless", true, true, true);
// start connecting to dongles via GX dongles (COM connection), with the ports COM4, COM5, COM6, and COM7
device.startConnection("com", ["COM4", "COM5", "COM6", "COM7"]);

device.on("imu", (trackerName, rotation, gravity, ankle) => {
    // IMU data received, do stuff
});

setTimeout(() => {
    // apply the following settings to the rightAnkle tracker:
    // sensor mode: 1 (magnetometer enabled)
    // posture data transfer rate: 100FPS
    // sensor auto correction mode: accelerometer and gyroscope
    // ankle motion detection: enabled
    device.setTrackerSettings("rightAnkle", 1, 100, ['accel', 'gyro'], true);
}, 2000)

setTimeout(() => {
    device.stopConnection("com");
}, 10000)

Full Changelog: v3.0.0...v3.0.1

v3.0.0

Choose a tag to compare

@JovannMC JovannMC released this 20 Aug 17:39

The v3.0.0 release of the HaritoraX-Interpreter package is now out. This is a major release containing many updates (some breaking) including better BLE handling, auto-detection, and re-adding removed/missing features.

Changelogs

  • (BREAKING) Rename some functions from get[Event]() to fire[Event]()
  • BLE (wireless) updates
    • Remove artificial delay for BLE info (fixed my flawed code lol)
    • Add missing data/characteristics
    • Fully support wireless BT trackers for battery events (has all info now - percentage, voltage, status)
  • Auto-detect functions
    • Try to automatically find the devices and its connection mode (BLE/COM)
    • Supports wireless (BT/GX) and wired (untested)
    • New HaritoraX functions: getAvailableDevices() & getDevicePorts(device)
  • Update "connect" event
    • "connectionMode" shows what connection mode the tracker was connected by
    • "port" shows what COM port the tracker was from (if provided)
  • Re-add support of "processSettingsData()" for wireless GX trackers
  • "Data queue" system if trackers aren't assigned yet
  • Optimize code for performance and readability (hopefully)
    • Also reduces package dependencies!
  • Error handling & logging updates
    • Throw errors that are "severe" that bypass the "debug" switch
    • Prevent errors when stopping connection (stop processing data when stopping)
    • Add "raw data" logging (tracker name, raw data, (service, characteristic) or com port)
    • Generally better error handling
    • Other general logging tweaks
  • Fix wireless BT trackers JSON errors when reporting its battery
  • Fix processing dongle/null "button" data
  • Update JSDoc/comments
  • More bug fixes, optimizations, and other updates I forgot lol (or too small to mention)

Installation

npm install haritorax-interpreter

Documentation

Will write actual documentation at some point, for now refer to the source code, examples, and JSDoc comments. You may also see how it's used in SlimeTora!

Supported devices

Device Supported Elbow/Hip support
HaritoraX Wireless Y Y
HaritoraX 1.1B Y Y
HaritoraX 1.1 Y Y
HaritoraX 1.0 Y Y
Haritora ? ?
Communication mode Supported
Bluetooth (Low Energy) Y
Bluetooth Classic (COM) Y
GX6 Communication Dongle Y
GX2 Communication Dongle Y

Example

import { HaritoraX } from "haritorax-interpreter";

// connect to haritorax wireless, enable debug logs, allow printing of processIMUData() logs (lots of spam), print raw unprocessed data (more spam!)
let device = new HaritoraX("wireless", true, true, true);
// start connecting to dongles via GX dongles (COM connection), with the ports COM4, COM5, COM6, and COM7
device.startConnection("com", ["COM4", "COM5", "COM6", "COM7"]);

device.on("imu", (trackerName, rotation, gravity, ankle) => {
    // IMU data received, do stuff
});

setTimeout(() => {
    // apply the following settings to the rightAnkle tracker:
    // sensor mode: 1 (magnetometer enabled)
    // posture data transfer rate: 100FPS
    // sensor auto correction mode: accelerometer and gyroscope
    // ankle motion detection: enabled
    device.setTrackerSettings("rightAnkle", 1, 100, ['accel', 'gyro'], true);
}, 2000)

setTimeout(() => {
    device.stopConnection("com");
}, 10000)

Full Changelog: v2.0.1...v3.0.0

v2.0.1

Choose a tag to compare

@JovannMC JovannMC released this 05 Jul 20:32
0183197

The v2.0.1 release of the HaritoraX-Interpreter package is now out. This is a hotfix that fixes my stupidity with search and replace, breaking most stuff with wireless models on BT lol.

Changelogs

  • Fix most of the wireless models (connected via BT) functions being broken lol

Installation

npm install haritorax-interpreter

Documentation

Will write actual documentation at some point, for now refer to the source code, examples, and JSDoc comments.

Supported devices

Device Supported Elbow/Hip support
HaritoraX Wireless Y Y
HaritoraX 1.1B Y Y
HaritoraX 1.1 Y Y
HaritoraX 1.0 Y Y
Haritora X X
Communication mode Supported
Bluetooth (Low Energy) Y
Bluetooth Classic (COM) Y
GX6 Communication Dongle Y
GX2 Communication Dongle Y

Example

import { HaritoraX } from "haritorax-interpreter";

let device = new HaritoraX("wireless", 2, true); // connect to haritorax wireless, enable debug mode w/ function & line info, allow printing of processIMUData() logs (lots of spam!)
device.startConnection("gx", ["COM4", "COM5", "COM6", "COM7"]); // start connecting to dongles via GX dongles (COM connection), with the ports COM4, COM5, COM6, and COM7

device.on("imu", (trackerName, rotation, gravity, ankle) => {
    // IMU data received, do stuff
});

setTimeout(() => {
    // apply the following settings to the rightAnkle tracker:
    // sensor mode: 1 (magnetometer enabled)
    // posture data transfer rate: 100FPS
    // sensor auto correction mode: accelerometer and gyroscope
    // ankle motion detection: enabled
    device.setTrackerSettings("rightAnkle", 1, 100, ['accel', 'gyro'], true);
}, 2000)

setTimeout(() => {
    device.stopConnection("com");
}, 10000)

Full Changelog: v2.0.0...v2.0.1

v2.0.0

Choose a tag to compare

@JovannMC JovannMC released this 24 Jun 14:05

The v2.0.0 major release of the HaritoraX-Interpreter package is now out. An slight overhaul of the package has been done to finally support the HaritoraX Wired (1.1b/1.1/1.0) trackers with many more changes!

Changelogs

  • Overhaul most of the code
  • Add support for HaritoraX Wired trackers
    • 1.1b, 1.1, and 1.0 now supported
    • Most functions implemented (tracker settings, button, mag status, and battery - ankle needs further testing)
    • Per-tracker settings for wired impossible to add
  • Add "heartbeatInterval" for wired
  • Rename "GX" to "COM"
  • Add ability to emulate a "data" event from COM port
  • Update JSDoc (still haven't made actual docs lol)
  • Some bug fixes and optimizations

Installation

npm install haritorax-interpreter

Documentation

Will write actual documentation at some point, for now refer to the source code, examples, and JSDoc comments.

Supported devices

Device Supported Elbow/Hip support
HaritoraX Wireless Y Y
HaritoraX 1.1B Y Y
HaritoraX 1.1 Y Y
HaritoraX 1.0 Y Y
Haritora X X
Communication mode Supported
Bluetooth (Low Energy) Y
Bluetooth Classic (COM) Y
GX6 Communication Dongle Y
GX2 Communication Dongle Y

Example

import { HaritoraX } from "haritorax-interpreter";

let device = new HaritoraX("wireless", 2, true); // connect to haritorax wireless, enable debug mode w/ function & line info, allow printing of processIMUData() logs (lots of spam!)
device.startConnection("gx", ["COM4", "COM5", "COM6", "COM7"]); // start connecting to dongles via GX dongles (COM connection), with the ports COM4, COM5, COM6, and COM7

device.on("imu", (trackerName, rotation, gravity, ankle) => {
    // IMU data received, do stuff
});

setTimeout(() => {
    // apply the following settings to the rightAnkle tracker:
    // sensor mode: 1 (magnetometer enabled)
    // posture data transfer rate: 100FPS
    // sensor auto correction mode: accelerometer and gyroscope
    // ankle motion detection: enabled
    device.setTrackerSettings("rightAnkle", 1, 100, ['accel', 'gyro'], true);
}, 2000)

setTimeout(() => {
    device.stopConnection("com");
}, 10000)

Full Changelog: v1.8.3...v2.0.0