mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-05-28 16:45:10 +08:00
* Upgrading serialport from v4 to v6 * Correcting baseurl and typeroots for v4 of library * Exporting option interface and moving interfaces to Pascal case * Removing redundent interface export, updating v4 library to fit with interface naming convention, updating firmata package to point to the v4 library.
354 lines
9.9 KiB
TypeScript
354 lines
9.9 KiB
TypeScript
// Type definitions for firmata.js 0.15
|
|
// Project: https://github.com/firmata/firmata.js
|
|
// Definitions by: Troy W. <https://github.com/troywweber7>
|
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
|
|
/// <reference types="node" />
|
|
|
|
import * as SerialPort from 'serialport';
|
|
|
|
export = Board;
|
|
|
|
/**
|
|
* Most of these are generated by observing https://github.com/firmata/firmata.js/blob/v0.15.0/lib/firmata.js.
|
|
*
|
|
* This is a starting point that appeared to work fine for months within a project of my company, but I give no
|
|
* guarantee that it cannot be improved.
|
|
*/
|
|
declare class Board extends NodeJS.EventEmitter {
|
|
constructor(serialPort: string, optionsOrCallback?: Board.Options|((error: any) => void), callback?: (error: any) => void)
|
|
MODES: Board.PinModes;
|
|
STEPPER: Board.StepperConstants;
|
|
I2C_MODES: Board.I2cModes;
|
|
SERIAL_MODES: Board.SerialModes;
|
|
SERIAL_PORT_IDs: Board.SerialPortIds;
|
|
SERIAL_PIN_TYPES: Board.SerialPinTypes;
|
|
HIGH: Board.PIN_STATE;
|
|
LOW: Board.PIN_STATE;
|
|
pins: Board.Pins[];
|
|
ports: number[];
|
|
analogPins: number[];
|
|
version: Board.Version;
|
|
firmware: Board.Firmware;
|
|
settings: Board.Settings;
|
|
protected transport: SerialPort;
|
|
reportVersion(callback: () => void): void;
|
|
queryFirmware(callback: () => void): void;
|
|
analogRead(pin: number, callback: (value: number) => void): void;
|
|
analogWrite(pin: number, value: number): void;
|
|
pwmWrite(pin: number, value: number): void;
|
|
servoConfig(pin: number, min: number, max: number): void;
|
|
servoWrite(pin: number, value: number): void;
|
|
pinMode(pin: number, mode: Board.PIN_MODE): void;
|
|
digitalWrite(pin: number, val: Board.PIN_STATE): void;
|
|
digitalRead(pin: number, callback: (val: Board.PIN_STATE) => void): void;
|
|
queryCapabilities(callback: () => void): void;
|
|
queryAnalogMapping(callback: () => void): void;
|
|
queryPinState(pin: number, callback: () => void): void;
|
|
// TODO untested --- TWW
|
|
sendString(str: string): void;
|
|
// TODO untested --- TWW
|
|
sendI2CConfig(delay: number): void;
|
|
// TODO untested --- TWW
|
|
i2cConfig(options: number|{ delay: number }): void;
|
|
// TODO untested --- TWW
|
|
sendI2CWriteRequest(slaveAddress: number, bytes: number[]): void;
|
|
// TODO untested --- TWW
|
|
i2cWrite(address: number, register: number, inBytes: number[]): void;
|
|
i2cWrite(address: number, data: number[]): void;
|
|
// TODO untested --- TWW
|
|
i2cWriteReg(address: number, register: number, byte: number): void;
|
|
// TODO untested --- TWW
|
|
sendI2CReadRequest(address: number, numBytes: number, callback: () => void): void;
|
|
// TODO untested --- TWW
|
|
i2cRead(address: number, register: number, bytesToRead: number, callback: (data: number[]) => void): void;
|
|
i2cRead(address: number, bytesToRead: number, callback: (data: number[]) => void): void;
|
|
// TODO untested --- TWW
|
|
i2cStop(options: number|{ bus: number, address: number }): void;
|
|
// TODO untested --- TWW
|
|
i2cReadOnce(address: number, register: number, bytesToRead: number, callback: (data: number[]) => void): void;
|
|
i2cReadOnce(address: number, bytesToRead: number, callback: (data: number[]) => void): void;
|
|
// TODO untested --- TWW
|
|
sendOneWireConfig(pin: number, enableParasiticPower: boolean): void;
|
|
// TODO untested --- TWW
|
|
sendOneWireSearch(pin: number, callback: () => void): void;
|
|
// TODO untested --- TWW
|
|
sendOneWireAlarmsSearch(pin: number, callback: () => void): void;
|
|
// TODO untested --- TWW
|
|
sendOneWireRead(pin: number, device: number, numBytesToRead: number, callback: () => void): void;
|
|
// TODO untested --- TWW
|
|
sendOneWireReset(pin: number): void;
|
|
// TODO untested --- TWW
|
|
sendOneWireWrite(pin: number, device: number, data: number|number[]): void;
|
|
// TODO untested --- TWW
|
|
sendOneWireDelay(pin: number, delay: number): void;
|
|
// TODO untested --- TWW
|
|
sendOneWireWriteAndRead(
|
|
pin: number,
|
|
device: number,
|
|
data: number|number[],
|
|
numBytesToRead: number,
|
|
callback: (error?: Error, data?: number) => void): void;
|
|
setSamplingInterval(interval: number): void;
|
|
getSamplingInterval(): number;
|
|
reportAnalogPin(pin: number, value: Board.REPORTING): void;
|
|
reportDigitalPin(pin: number, value: Board.REPORTING): void;
|
|
// TODO untested/incomplete --- TWW
|
|
pingRead(opts: any, callback: () => void): void;
|
|
stepperConfig(
|
|
deviceNum: number,
|
|
type: number,
|
|
stepsPerRev: number,
|
|
dirOrMotor1Pin: number,
|
|
stepOrMotor2Pin: number,
|
|
motor3Pin?: number,
|
|
motor4Pin?: number): void;
|
|
stepperStep(
|
|
deviceNum: number,
|
|
direction: Board.STEPPER_DIRECTION,
|
|
steps: number,
|
|
speed: number,
|
|
accel: number|((bool?: boolean) => void),
|
|
decel?: number,
|
|
callback?: (bool?: boolean) => void): void;
|
|
// TODO untested --- TWW
|
|
serialConfig(options: { portId: Board.SERIAL_PORT_ID, baud: number, rxPin?: number, txPin?: number }): void;
|
|
// TODO untested --- TWW
|
|
serialWrite(portId: Board.SERIAL_PORT_ID, inBytes: number[]): void;
|
|
// TODO untested --- TWW
|
|
serialRead(portId: Board.SERIAL_PORT_ID, maxBytesToRead: number, callback: () => void): void;
|
|
// TODO untested --- TWW
|
|
serialStop(portId: Board.SERIAL_PORT_ID): void;
|
|
// TODO untested --- TWW
|
|
serialClose(portId: Board.SERIAL_PORT_ID): void;
|
|
// TODO untested --- TWW
|
|
serialFlush(portId: Board.SERIAL_PORT_ID): void;
|
|
// TODO untested --- TWW
|
|
serialListen(portId: Board.SERIAL_PORT_ID): void;
|
|
// TODO untested --- TWW
|
|
sysexResponse(commandByte: number, handler: (data: number[]) => void): void;
|
|
// TODO untested --- TWW
|
|
sysexCommand(message: number[]): void;
|
|
reset(): void;
|
|
static isAcceptablePort(port: Board.Port): boolean;
|
|
static requestPort(callback: (error: any, port: Board.Port) => any): void;
|
|
// TODO untested --- TWW
|
|
static encode(data: number[]): number[];
|
|
// TODO untested --- TWW
|
|
static decode(data: number[]): number[];
|
|
// TODO untested/incomplete --- TWW
|
|
protected _sendOneWireSearch(type: any, event: any, pin: number, callback: () => void): void;
|
|
// TODO untested/incomplete --- TWW
|
|
protected _sendOneWireRequest(
|
|
pin: number,
|
|
subcommand: any,
|
|
device: any,
|
|
numBytesToRead: any,
|
|
correlationId: any,
|
|
delay: number,
|
|
dataToWrite: any,
|
|
event: any, callback: () => void): void;
|
|
}
|
|
|
|
declare namespace Board {
|
|
// https://github.com/firmata/firmata.js/blob/master/lib/firmata.js#L429-L451
|
|
interface Options {
|
|
reportVersionTimeout?: number;
|
|
samplingInterval?: number;
|
|
serialport?: SerialPort.Options;
|
|
}
|
|
|
|
interface PinModes {
|
|
INPUT: PIN_MODE;
|
|
OUTPUT: PIN_MODE;
|
|
ANALOG: PIN_MODE;
|
|
PWM: PIN_MODE;
|
|
SERVO: PIN_MODE;
|
|
SHIFT: PIN_MODE;
|
|
I2C: PIN_MODE;
|
|
ONEWIRE: PIN_MODE;
|
|
STEPPER: PIN_MODE;
|
|
SERIAL: PIN_MODE;
|
|
PULLUP: PIN_MODE;
|
|
IGNORE: PIN_MODE;
|
|
PING_READ: PIN_MODE;
|
|
UNKOWN: PIN_MODE;
|
|
}
|
|
|
|
interface StepperConstants {
|
|
TYPE: {
|
|
DRIVER: STEPPER_TYPE,
|
|
TWO_WIRE: STEPPER_TYPE,
|
|
FOUR_WIRE: STEPPER_TYPE,
|
|
};
|
|
RUNSTATE: {
|
|
STOP: STEPPER_RUN_STATE,
|
|
ACCEL: STEPPER_RUN_STATE,
|
|
DECEL: STEPPER_RUN_STATE,
|
|
RUN: STEPPER_RUN_STATE,
|
|
};
|
|
DIRECTION: { CCW: STEPPER_DIRECTION, CW: STEPPER_DIRECTION };
|
|
}
|
|
|
|
// tslint:disable-next-line interface-name
|
|
interface I2cModes {
|
|
WRITE: I2C_MODE;
|
|
READ: I2C_MODE;
|
|
CONTINUOUS_READ: I2C_MODE;
|
|
STOP_READING: I2C_MODE;
|
|
}
|
|
|
|
interface SerialModes {
|
|
CONTINUOUS_READ: SERIAL_MODE;
|
|
STOP_READING: SERIAL_MODE;
|
|
}
|
|
|
|
interface SerialPortIds {
|
|
HW_SERIAL0: SERIAL_PORT_ID;
|
|
HW_SERIAL1: SERIAL_PORT_ID;
|
|
HW_SERIAL2: SERIAL_PORT_ID;
|
|
HW_SERIAL3: SERIAL_PORT_ID;
|
|
SW_SERIAL0: SERIAL_PORT_ID;
|
|
SW_SERIAL1: SERIAL_PORT_ID;
|
|
SW_SERIAL2: SERIAL_PORT_ID;
|
|
SW_SERIAL3: SERIAL_PORT_ID;
|
|
DEFAULT: SERIAL_PORT_ID;
|
|
}
|
|
|
|
interface SerialPinTypes {
|
|
RES_RX0: SERIAL_PIN_TYPE;
|
|
RES_TX0: SERIAL_PIN_TYPE;
|
|
RES_RX1: SERIAL_PIN_TYPE;
|
|
RES_TX1: SERIAL_PIN_TYPE;
|
|
RES_RX2: SERIAL_PIN_TYPE;
|
|
RES_TX2: SERIAL_PIN_TYPE;
|
|
RES_RX3: SERIAL_PIN_TYPE;
|
|
RES_TX3: SERIAL_PIN_TYPE;
|
|
}
|
|
|
|
interface Pins {
|
|
mode: PIN_MODE;
|
|
value: PIN_STATE | number;
|
|
supportedModes: PIN_MODE[];
|
|
analogChannel: number;
|
|
report: REPORTING;
|
|
state: PIN_STATE | PULLUP_STATE; // TODO not sure if this exists anymore... --- TWW
|
|
}
|
|
|
|
interface Firmware {
|
|
name: string;
|
|
version: Version;
|
|
}
|
|
|
|
interface Settings {
|
|
reportVersionTimeout: number;
|
|
samplingInterval: number;
|
|
serialport: {
|
|
baudRate: number,
|
|
bufferSize: number,
|
|
};
|
|
}
|
|
|
|
interface Port {
|
|
comName: string;
|
|
}
|
|
|
|
interface Version {
|
|
major: number;
|
|
minor: number;
|
|
}
|
|
|
|
// https://github.com/firmata/firmata.js/blob/v0.15.0/lib/firmata.js#L449-L464
|
|
const enum PIN_MODE {
|
|
INPUT = 0x00,
|
|
OUTPUT = 0x01,
|
|
ANALOG = 0x02,
|
|
PWM = 0x03,
|
|
SERVO = 0x04,
|
|
SHIFT = 0x05,
|
|
I2C = 0x06,
|
|
ONEWIRE = 0x07,
|
|
STEPPER = 0x08,
|
|
SERIAL = 0x0A,
|
|
PULLUP = 0x0B,
|
|
IGNORE = 0x7F,
|
|
PING_READ = 0x75,
|
|
UNKNOWN = 0x10,
|
|
}
|
|
|
|
const enum PIN_STATE {
|
|
LOW = 0,
|
|
HIGH = 1
|
|
}
|
|
|
|
const enum REPORTING {
|
|
ON = 1,
|
|
OFF = 0,
|
|
}
|
|
|
|
const enum PULLUP_STATE {
|
|
ENABLED = 1,
|
|
DISABLED = 0,
|
|
}
|
|
|
|
// https://github.com/firmata/firmata.js/blob/v0.15.0/lib/firmata.js#L474-L478
|
|
const enum STEPPER_TYPE {
|
|
DRIVER = 1,
|
|
TWO_WIRE = 2,
|
|
FOUR_WIRE = 4,
|
|
}
|
|
|
|
// https://github.com/firmata/firmata.js/blob/v0.15.0/lib/firmata.js#L479-L484
|
|
const enum STEPPER_RUN_STATE {
|
|
STOP = 0,
|
|
ACCEL = 1,
|
|
DECEL = 2,
|
|
RUN = 3,
|
|
}
|
|
|
|
// https://github.com/firmata/firmata.js/blob/v0.15.0/lib/firmata.js#L485-L488
|
|
const enum STEPPER_DIRECTION {
|
|
CCW = 0,
|
|
CW = 1,
|
|
}
|
|
|
|
// https://github.com/firmata/firmata.js/blob/v0.15.0/lib/firmata.js#L466-L471
|
|
const enum I2C_MODE {
|
|
WRITE = 0,
|
|
READ = 1,
|
|
CONTINUOUS_READ = 2,
|
|
STOP_READING = 3
|
|
}
|
|
|
|
// https://github.com/firmata/firmata.js/blob/v0.15.0/lib/firmata.js#L491-L494
|
|
const enum SERIAL_MODE {
|
|
CONTINUOUS_READ = 0x00,
|
|
STOP_READING = 0x01,
|
|
}
|
|
|
|
// https://github.com/firmata/firmata.js/blob/v0.15.0/lib/firmata.js#L497-L512
|
|
const enum SERIAL_PORT_ID {
|
|
HW_SERIAL0 = 0x00,
|
|
HW_SERIAL1 = 0x01,
|
|
HW_SERIAL2 = 0x02,
|
|
HW_SERIAL3 = 0x03,
|
|
SW_SERIAL0 = 0x08,
|
|
SW_SERIAL1 = 0x09,
|
|
SW_SERIAL2 = 0x10,
|
|
SW_SERIAL3 = 0x11,
|
|
DEFAULT = 0x08,
|
|
}
|
|
|
|
// https://github.com/firmata/firmata.js/blob/v0.15.0/lib/firmata.js#L515-L524
|
|
const enum SERIAL_PIN_TYPE {
|
|
RES_RX0 = 0x00,
|
|
RES_TX0 = 0x01,
|
|
RES_RX1 = 0x02,
|
|
RES_TX1 = 0x03,
|
|
RES_RX2 = 0x04,
|
|
RES_TX2 = 0x05,
|
|
RES_RX3 = 0x06,
|
|
RES_TX3 = 0x07,
|
|
}
|
|
}
|