gd-ant-plus
Version:
A node module for ANT+ - forked from longhorn/ant-plus
215 lines (123 loc) • 3.91 kB
Markdown
gd-ant-plus
A node.js module for ANT+
with some small enhancements that enable
- setting up a FitnessEquipment Device
- sending messages from FitnessEquipmentSensor to Device and checking status of these messages
# Prerequisites
Libusb is included as a submodule. On Linux, you'll need libudev to build libusb. On Ubuntu/Debian: `sudo apt-get install build-essential libudev-dev`
## Windows
Use [Zadig](http://sourceforge.net/projects/libwdi/files/zadig/) to install the WinUSB driver for your USB device. Otherwise you will get `LIBUSB_ERROR_NOT_SUPPORTED` when attempting to open devices.
# Install
```sh
npm install gd-ant-plus
```
# usage
```javascript
var Ant = require('gd-ant-plus');
```
### Create USB stick
```javascript
var stick = new Ant.GarminStick3;
```
### Create sensors
```javascript
var sensor = new Ant.HeartRateSensor(stick);
```
### Attach events
```javascript
sensor.on('hbData', function (data) {
console.log(data.DeviceID, data.ComputedHeartRate);
});
stick.on('startup', function () {
sensor.attach(0, 0);
});
```
### Open stick
```javascript
if (!stick.open()) {
console.log('Stick not found!');
}
```
## scanning
```javascript
sensor.on('hbData', function (data) {
console.log(data.DeviceID, data.ComputedHeartRate);
});
stick.on('startup', function () {
sensor.scan();
);
if (!stick.open()) {
console.log('Stick not found!');
}
```
# Important notes
* never attach a sensor before receiveing the startup event
* never attach a new sensor before receiving the attached or detached event of the previous sensor
* never detach a sensor before receiving the attached or detached event of the previous sensor
# Objects
## GarminStick2 and GarminStick3
### properties
#### maxChannels
The maximum number of channels that this stick supports; valid only after startup event fired.
### methods
#### is_present()
Checks if the stick is present. Returns true if it is, false otherwise.
#### open()
Tries to open the stick. Returns false on failure.
#### openAsync(callback)
Tries to open the stick, waiting for it if not available right now. Returns a cancelation token with a method `cancel` you can use to stop waiting.
`callback` is a funcion accepting a single `Error` parameter and it will be called when the stick is open (with the parameter undefined) or in case of failure (with the parameter set to the error).
#### close()
Closes the stick.
### events
#### startup
Fired after the stick is correctly initialized.
#### shutdown
Fired after the stick is correctly closed.
## Common to all Sensors
### methods
#### attach(channel, deviceId)
Attaches the sensors, using the specified channel and deviceId (use 0 to connect to the first device found).
#### detach()
Detaches the sensor.
### events
#### attached
Fired after the sensor is correctly attached.
#### detached
Fired after the sensor is correctly detached.
## Common to all Scanners
### methods
#### scan()
Attaches the sensors and starts scanning for data from every devices in range.
#### detach()
Detaches the sensor.
### events
#### attached
Fired after the sensor is correctly attached.
#### detached
Fired after the sensor is correctly detached.
## HeartRate
### events
#### hbData
Fired when new heartbeat data is received.
## SpeedCadence
### methods
### setWheelCircumference(circumferenceInMeters)
Calibrates the speed sensor. Defaults to an ~ 700c wheel, 2.118
### events
#### speedData
Fired when a new wheel speed is calculated
#### cadenceData
Fired when a new pedal cadence is calculated
## StrideSpeedDistance
### events
#### ssdData
Fired when new data been calculated.
## BicyclePower
### events
#### powerData
Fired when new power has been calculated.
## FitnessEquipment
### events
#### fitnessData
Fired when new data is received.