gd-ant-plus
Version:
A node module for ANT+ - forked from longhorn/ant-plus
193 lines (192 loc) • 7.21 kB
TypeScript
/// <reference types="node" />
import events = require('events');
import usb = require('usb');
export declare enum Constants {
MESSAGE_TX_SYNC = 164,
DEFAULT_NETWORK_NUMBER = 0,
MESSAGE_CHANNEL_UNASSIGN = 65,
MESSAGE_CHANNEL_ASSIGN = 66,
MESSAGE_CHANNEL_ID = 81,
MESSAGE_CHANNEL_PERIOD = 67,
MESSAGE_CHANNEL_SEARCH_TIMEOUT = 68,
MESSAGE_CHANNEL_FREQUENCY = 69,
MESSAGE_CHANNEL_TX_POWER = 96,
MESSAGE_NETWORK_KEY = 70,
MESSAGE_TX_POWER = 71,
MESSAGE_PROXIMITY_SEARCH = 113,
MESSAGE_ENABLE_RX_EXT = 102,
MESSAGE_LIB_CONFIG = 110,
MESSAGE_CHANNEL_OPEN_RX_SCAN = 91,
MESSAGE_STARTUP = 111,
MESSAGE_SYSTEM_RESET = 74,
MESSAGE_CHANNEL_OPEN = 75,
MESSAGE_CHANNEL_CLOSE = 76,
MESSAGE_CHANNEL_REQUEST = 77,
MESSAGE_CHANNEL_BROADCAST_DATA = 78,
MESSAGE_CHANNEL_ACKNOWLEDGED_DATA = 79,
MESSAGE_CHANNEL_BURST_DATA = 80,
MESSAGE_CHANNEL_EVENT = 64,
MESSAGE_CHANNEL_STATUS = 82,
MESSAGE_VERSION = 62,
MESSAGE_CAPABILITIES = 84,
MESSAGE_SERIAL_NUMBER = 97,
CHANNEL_TYPE_TWOWAY_RECEIVE = 0,
CHANNEL_TYPE_TWOWAY_TRANSMIT = 16,
CHANNEL_TYPE_SHARED_RECEIVE = 32,
CHANNEL_TYPE_SHARED_TRANSMIT = 48,
CHANNEL_TYPE_ONEWAY_RECEIVE = 64,
CHANNEL_TYPE_ONEWAY_TRANSMIT = 80,
RADIO_TX_POWER_MINUS20DB = 0,
RADIO_TX_POWER_MINUS10DB = 1,
RADIO_TX_POWER_0DB = 2,
RADIO_TX_POWER_PLUS4DB = 3,
RESPONSE_NO_ERROR = 0,
EVENT_RX_SEARCH_TIMEOUT = 1,
EVENT_RX_FAIL = 2,
EVENT_TX = 3,
EVENT_TRANSFER_RX_FAILED = 4,
EVENT_TRANSFER_TX_COMPLETED = 5,
EVENT_TRANSFER_TX_FAILED = 6,
EVENT_CHANNEL_CLOSED = 7,
EVENT_RX_FAIL_GO_TO_SEARCH = 8,
EVENT_CHANNEL_COLLISION = 9,
EVENT_TRANSFER_TX_START = 10,
CHANNEL_IN_WRONG_STATE = 21,
CHANNEL_NOT_OPENED = 22,
CHANNEL_ID_NOT_SET = 24,
CLOSE_ALL_CHANNELS = 25,
TRANSFER_IN_PROGRESS = 31,
TRANSFER_SEQUENCE_NUMBER_ERROR = 32,
TRANSFER_IN_ERROR = 33,
MESSAGE_SIZE_EXCEEDS_LIMIT = 39,
INVALID_MESSAGE = 40,
INVALID_NETWORK_NUMBER = 41,
INVALID_LIST_ID = 48,
INVALID_SCAN_TX_CHANNEL = 49,
INVALID_PARAMETER_PROVIDED = 51,
EVENT_QUEUE_OVERFLOW = 53,
USB_STRING_WRITE_FAIL = 112,
CHANNEL_STATE_UNASSIGNED = 0,
CHANNEL_STATE_ASSIGNED = 1,
CHANNEL_STATE_SEARCHING = 2,
CHANNEL_STATE_TRACKING = 3,
CAPABILITIES_NO_RECEIVE_CHANNELS = 1,
CAPABILITIES_NO_TRANSMIT_CHANNELS = 2,
CAPABILITIES_NO_RECEIVE_MESSAGES = 4,
CAPABILITIES_NO_TRANSMIT_MESSAGES = 8,
CAPABILITIES_NO_ACKNOWLEDGED_MESSAGES = 16,
CAPABILITIES_NO_BURST_MESSAGES = 32,
CAPABILITIES_NETWORK_ENABLED = 2,
CAPABILITIES_SERIAL_NUMBER_ENABLED = 8,
CAPABILITIES_PER_CHANNEL_TX_POWER_ENABLED = 16,
CAPABILITIES_LOW_PRIORITY_SEARCH_ENABLED = 32,
CAPABILITIES_SCRIPT_ENABLED = 64,
CAPABILITIES_SEARCH_LIST_ENABLED = 128,
CAPABILITIES_LED_ENABLED = 1,
CAPABILITIES_EXT_MESSAGE_ENABLED = 2,
CAPABILITIES_SCAN_MODE_ENABLED = 4,
CAPABILITIES_PROX_SEARCH_ENABLED = 16,
CAPABILITIES_EXT_ASSIGN_ENABLED = 32,
CAPABILITIES_FS_ANTFS_ENABLED = 64,
TIMEOUT_NEVER = 255
}
export declare class Messages {
static BUFFER_INDEX_MSG_LEN: number;
static BUFFER_INDEX_MSG_TYPE: number;
static BUFFER_INDEX_CHANNEL_NUM: number;
static BUFFER_INDEX_MSG_DATA: number;
static BUFFER_INDEX_EXT_MSG_BEGIN: number;
static resetSystem(): Buffer;
static requestMessage(channel: number, messageID: number): Buffer;
static setNetworkKey(): Buffer;
static assignChannel(channel: number, type?: string): Buffer;
static setDevice(channel: number, deviceID: number, deviceType: number, transmissionType: number): Buffer;
static searchChannel(channel: number, timeout: number): Buffer;
static setPeriod(channel: number, period: number): Buffer;
static setFrequency(channel: number, frequency: number): Buffer;
static setRxExt(): Buffer;
static libConfig(channel: number, how: number): Buffer;
static openRxScan(): Buffer;
static openChannel(channel: number): Buffer;
static closeChannel(channel: number): Buffer;
static unassignChannel(channel: number): Buffer;
static acknowledgedData(payload: number[]): Buffer;
static broadcastData(payload: number[]): Buffer;
static buildMessage(payload?: number[], msgID?: number): Buffer;
static intToLEHexArray(int: number, numBytes?: number): number[];
static decimalToHex(d: number, numDigits: number): string;
static getChecksum(message: any[]): number;
}
export interface ICancellationToken {
cancel(): void;
}
export declare class DeviceInfo extends usb.Device {
inUse: boolean;
}
export declare class USBDriver extends events.EventEmitter {
private idVendor;
private idProduct;
private static deviceInUse;
private device;
private iface;
private detachedKernelDriver;
private inEp;
private outEp;
private leftover;
private usedChannels;
private attachedSensors;
maxChannels: number;
canScan: boolean;
props: any;
waitingForStartup: boolean;
constructor(idVendor: number, idProduct: number, dbgLevel?: number, props?: {});
private getDevices;
static listDevices(filterFn?: (d: usb.Device) => boolean): usb.Device[];
blockDevice(device: usb.Device): void;
unblockDevice(device: usb.Device): void;
is_present(): boolean;
open(): boolean;
openAsync(cb: (err: Error) => void): ICancellationToken;
close(): void;
reset(): void;
isScanning(): boolean;
attach(sensor: BaseSensor, forScan: boolean): boolean;
detach(sensor: BaseSensor): boolean;
detach_all(): void;
write(data: Buffer): void;
read(data: Buffer): void;
}
export declare class GarminStick2 extends USBDriver {
constructor(dbgLevel?: number);
}
export declare class GarminStick3 extends USBDriver {
constructor(dbgLevel?: number);
}
export interface IDecodeDataCallback {
(data: Buffer): void;
}
export declare class BaseSensor extends events.EventEmitter {
private stick;
channel: number;
deviceID: number;
transmissionType: number;
protected decodeDataCbk: IDecodeDataCallback;
constructor(stick: USBDriver);
protected scan(type: string, frequency: number): void;
protected attach(channel: number, type: string, deviceID: number, deviceType: number, transmissionType: number, timeout: number, period: number, frequency: number): void;
detach(): void;
protected write(data: Buffer): void;
private handleEventMessages;
}
export declare class AntPlusBaseSensor extends BaseSensor {
protected scan(type: string): void;
protected attach(channel: number, type: string, deviceID: number, deviceType: number, transmissionType: number, timeout: number, period: number): void;
}
export declare class AntPlusSensor extends AntPlusBaseSensor {
protected scan(): void;
protected attach(channel: number, type: string, deviceID: number, deviceType: number, transmissionType: number, timeout: number, period: number): void;
}
export declare class AntPlusScanner extends AntPlusBaseSensor {
protected scan(type: string): void;
protected attach(): void;
}