@node-pigpio/core
Version:
pigpiod client for node.js
495 lines (493 loc) • 22.2 kB
TypeScript
/**
* pigpio
*
* Oritinal source by http://abyz.me.uk/rpi/pigpio/python.html
* port by s
* It is the same feature as the original except that all requests are asynchronous.
*/
/// <reference types="node" />
export declare let exceptions: boolean;
export declare type Level = 0 | 1;
export declare const OFF = 0;
export declare const LOW = 0;
export declare const CLEAR = 0;
export declare const ON = 1;
export declare const HIGH = 1;
export declare const SET = 1;
export declare const TIMEOUT = 2;
export declare const RISING_EDGE = 0;
export declare const FALLING_EDGE = 1;
export declare const EITHER_EDGE = 2;
export declare const INPUT = 0;
export declare const OUTPUT = 1;
export declare const ALT0 = 4;
export declare const ALT1 = 5;
export declare const ALT2 = 6;
export declare const ALT3 = 7;
export declare const ALT4 = 3;
export declare const ALT5 = 2;
export declare const PUD_OFF = 0;
export declare const PUD_DOWN = 1;
export declare const PUD_UP = 2;
export declare const PI_SCRIPT_INITING = 0;
export declare const PI_SCRIPT_HALTED = 1;
export declare const PI_SCRIPT_RUNNING = 2;
export declare const PI_SCRIPT_WAITING = 3;
export declare const PI_SCRIPT_FAILED = 4;
declare type ScriptStatusType = typeof PI_SCRIPT_INITING | typeof PI_SCRIPT_HALTED | typeof PI_SCRIPT_RUNNING | typeof PI_SCRIPT_WAITING | typeof PI_SCRIPT_FAILED;
export declare const NTFY_FLAGS_EVENT: number;
export declare const NTFY_FLAGS_ALIVE: number;
export declare const NTFY_FLAGS_WDOG: number;
export declare const NTFY_FLAGS_GPIO = 31;
export declare const WAVE_MODE_ONE_SHOT = 0;
export declare const WAVE_MODE_REPEAT = 1;
export declare const WAVE_MODE_ONE_SHOT_SYNC = 2;
export declare const WAVE_MODE_REPEAT_SYNC = 3;
declare type WaveModeType = typeof WAVE_MODE_ONE_SHOT | typeof WAVE_MODE_REPEAT | typeof WAVE_MODE_ONE_SHOT_SYNC | typeof WAVE_MODE_REPEAT_SYNC;
export declare const WAVE_NOT_FOUND = 9998;
export declare const NO_TX_WAVE = 9999;
export declare const FILE_READ = 1;
export declare const FILE_WRITE = 2;
export declare const FILE_RW = 3;
export declare const FILE_APPEND = 4;
export declare const FILE_CREATE = 8;
export declare const FILE_TRUNC = 16;
export declare const FROM_START = 0;
export declare const FROM_CURRENT = 1;
export declare const FROM_END = 2;
export declare const SPI_MODE_0 = 0;
export declare const SPI_MODE_1 = 1;
export declare const SPI_MODE_2 = 2;
export declare const SPI_MODE_3 = 3;
export declare const SPI_CPHA: number;
export declare const SPI_CPOL: number;
export declare const SPI_CS_HIGH_ACTIVE: number;
export declare const SPI_TX_LSBFIRST: number;
export declare const SPI_RX_LSBFIRST: number;
export declare const EVENT_BSC = 31;
export interface Pulse {
/** the GPIO to switch on at the start of the pulse. */
gpio_on: number;
/** the GPIO to switch off at the start of the pulse. */
gpio_off: number;
/** the delay in microseconds before the next pulse. */
delay: number;
}
export interface Event {
tally(): number;
reset_tally(): void;
cancel(): void;
}
export interface Callback {
tally(): number;
reset_tally(): void;
cancel(): void;
}
export interface pigpio {
/** Stop a Pi connection
*
* Release pigpio resources.
* ```
await pi.stop()
* ```
*/
stop(): Promise<void>;
/**
Sets the GPIO mode.
gpio:= 0-53.
mode:= INPUT, OUTPUT, ALT0, ALT1, ALT2, ALT3, ALT4, ALT5.
* ```
await pi.set_mode( 4, pigpio.INPUT) # GPIO 4 as input
await pi.set_mode(17, pigpio.OUTPUT) # GPIO 17 as output
await pi.set_mode(24, pigpio.ALT2) # GPIO 24 as ALT2
* ```
*
*/
set_mode(gpio: number, mode: number): Promise<number>;
/** Get a GPIO mode
*
Returns the GPIO mode.
gpio:= 0-53.
Returns a value as follows
* ```
0 = INPUT
1 = OUTPUT
2 = ALT5
3 = ALT4
4 = ALT0
5 = ALT1
6 = ALT2
7 = ALT3
* ```
* ```
console.log(await pi.get_mode(0))
4
* ```
*/
get_mode(gpio: number): Promise<number>;
/** Set/clear GPIO pull up/down resistor */
set_pull_up_down(gpio: number, pud: number): Promise<number>;
/** Read a GPIO */
read(gpio: number): Promise<number>;
/** Write a GPIO */
write(gpio: number, level: Level): Promise<number>;
/** Start/stop PWM pulses on a GPIO */
set_PWM_dutycycle(user_gpio: number, dutycycle: number): Promise<number>;
/** Set PWM frequency of a GPIO */
set_PWM_frequency(user_gpio: number, frequency: number): Promise<number>;
/** Configure PWM range of a GPIO */
set_PWM_range(user_gpio: number, range: number): Promise<number>;
/** Get PWM dutycycle set on a GPIO */
get_PWM_dutycycle(user_gpio: number): Promise<number>;
/** Get PWM frequency of a GPIO */
get_PWM_frequency(user_gpio: number): Promise<number>;
/** Get configured PWM range of a GPIO */
get_PWM_range(user_gpio: number): Promise<number>;
/** Get underlying PWM range for a GPIO */
get_PWM_real_range(user_gpio: number): Promise<number>;
/** Start/Stop servo pulses on a GPIO */
set_servo_pulsewidth(user_gpio: number, pulsewidth: number): Promise<number>;
/** Get servo pulsewidth set on a GPIO */
get_servo_pulsewidth(user_gpio: number): Promise<number>;
/** Send a trigger pulse to a GPIO */
gpio_trigger(user_gpio: number, pulse_len: number, level: Level): Promise<number>;
/** Set a watchdog on a GPIO */
set_watchdog(user_gpio: number, pulse_len: number, level: Level): Promise<number>;
/** Read all bank 1 GPIO */
read_bank_1(): Promise<number>;
/** Read all bank 2 GPIO */
read_bank_2(): Promise<number>;
/** Clear selected GPIO in bank 1 */
clear_bank_1(bits: number): Promise<number>;
/** Clear selected GPIO in bank 2 */
clear_bank_2(bits: number): Promise<number>;
/** Set selected GPIO in bank 1 */
set_bank_1(bits: number): Promise<number>;
/** Set selected GPIO in bank 2 */
set_bank_2(bits: number): Promise<number>;
callback(user_gpio: number, edge: typeof RISING_EDGE | typeof FALLING_EDGE | typeof EITHER_EDGE, func: (gpio: number, level: 0 | 1 | 'TIMEOUT', tick: number) => void): Callback;
wait_for_edge(user_gpio: number, edge: typeof RISING_EDGE | typeof FALLING_EDGE | typeof EITHER_EDGE, wait_timeout?: number): Promise<boolean>;
/** Request a notification handle */
notify_open(): Promise<number>;
/** Start notifications for selected GPIO */
notify_begin(handle: number, bits: number): Promise<number>;
/** Pause notifications */
notify_pause(handle: number): Promise<number>;
/** Close a notification */
notify_close(handle: number): Promise<number>;
/** Start hardware clock on supported GPIO */
hardware_clock(gpio: number, clkfreq: number): Promise<number>;
/** Start hardware PWM on supported GPIO */
hardware_PWM(gpio: number, PWMfreq: number, PWMduty: number): Promise<number>;
/** Set a glitch filter on a GPIO */
set_glitch_filter(user_gpio: number, steady: number): Promise<number>;
/** Set a noise filter on a GPIO */
set_noise_filter(user_gpio: number, steady: number, active: number): Promise<number>;
/** Sets a pads drive strength */
set_pad_strength(pad: number, pad_strength: number): Promise<number>;
/** Gets a pads drive strength */
get_pad_strength(pad: number): Promise<number>;
/** Executes a shell command */
shell(shellscr: string, pstring: string): Promise<number>;
/** User custom function 1 */
custom_1(arg1?: number, arg2?: number, argx?: Buffer): Promise<number>;
/** User custom function 2 */
custom_2(arg1?: number, argx?: Buffer, retMax?: number): Promise<[number, Buffer]>;
/** Sets a callback for an event */
event_callback(event: number, func: (event: number, tick: number) => void): Event;
/** Triggers an event */
event_trigger(event: number): Promise<number>;
/** Wait for an event */
wait_for_event(event: number, wait_timeout: number): Promise<boolean>;
/** Store a script */
store_script(script: string): Promise<number>;
/** Run a stored script */
run_script(script_id: number, params: number[]): Promise<number>;
/** Set a scripts parameters */
update_script(script_id: number, params: number[]): Promise<number>;
/** Get script status and parameters */
script_status(script_id: number): Promise<[ScriptStatusType, number[]]>;
/** Stop a running script */
stop_script(script_id: number): Promise<number>;
/** Delete a stored script */
delete_script(script_id: number): Promise<number>;
/** Opens an I2C device */
i2c_open(i2c_bus: number, i2c_address: number, i2c_flags?: number): Promise<number>;
/** Closes an I2C device */
i2c_close(handle: number): Promise<number>;
/** SMBus write quick */
i2c_write_quick(handle: number, bit: 0 | 1): Promise<number>;
/** SMBus read byte */
i2c_read_byte(handle: number): Promise<number>;
/** SMBus write byte */
i2c_write_byte(handle: number, byte_val: number): Promise<number>;
/** SMBus read byte data */
i2c_read_byte_data(handle: number, reg: number): Promise<number>;
/** SMBus write byte data */
i2c_write_byte_data(handle: number, reg: number, byte_val: number): Promise<number>;
/** SMBus read word data */
i2c_read_word_data(handle: number, reg: number): Promise<number>;
/** SMBus write word data */
i2c_write_word_data(handle: number, reg: number, word_val: number): Promise<number>;
/** SMBus read block data */
i2c_read_block_data(handle: number, reg: number): Promise<[number, Buffer]>;
i2c_write_block_data(handle: number, reg: number, data: Buffer): Promise<number>;
/** SMBus read I2C block data */
i2c_read_i2c_block_data(handle: number, reg: number, count: number): Promise<[number, Buffer]>;
/** SMBus write I2C block data */
i2c_write_i2c_block_data(handle: number, reg: number, data: Buffer): Promise<number>;
/** Reads the raw I2C device */
i2c_read_device(handle: number, count: number): Promise<[number, Buffer]>;
/** Writes the raw I2C device */
i2c_write_device(handle: number, data: Buffer): Promise<number>;
/** SMBus process call */
i2c_process_call(handle: number, reg: number, word_val: number): Promise<number>;
/** SMBus block process call */
i2c_block_process_call(handle: number, reg: number, data: Buffer): Promise<[number, Buffer]>;
/** Performs multiple I2C transactions */
i2c_zip(handle: number, data: Buffer): Promise<[number, Buffer]>;
/** I2C BIT BANG
/** Opens GPIO for bit banging I2C */
bb_i2c_open(SDA: number, SCL: number, baud: number): Promise<number>;
/** Closes GPIO for bit banging I2C */
bb_i2c_close(SDA: number): Promise<number>;
/** Performs multiple bit banged I2C transactions */
bb_i2c_zip(SDA: number, data: Buffer): Promise<[number, Buffer]>;
/** I2C/SPI as slave transfer */
bsc_xfer(bsc_control: number, data: Buffer): Promise<[number, number, Buffer]>;
/** I2C as slave transfer */
bsc_i2c(i2c_address: number, data: Buffer): Promise<[number, number, Buffer]>;
/** Opens a serial device
*
*/
serial_open(tty: string, baud: number, ser_flags?: number): Promise<number>;
/** Closes a serial device */
serial_close(handle: number): Promise<number>;
/** Reads a byte from a serial device */
serial_read_byte(handle: number): Promise<number>;
/** Writes a byte to a serial device */
serial_write_byte(handle: number, byte_val: number): Promise<number>;
/** Reads bytes from a serial device */
serial_read(handle: number, count: number): Promise<[number, Buffer]>;
/** Writes bytes to a serial device */
serial_write(handle: number, data: Buffer): Promise<number>;
/** Returns number of bytes ready to be read */
serial_data_available(handle: number): Promise<number>;
/** Open a GPIO for bit bang serial reads */
bb_serial_read_open(user_gpio: number, baud: number, bb_bits: number): Promise<number>;
/** Close a GPIO for bit bang serial reads */
bb_serial_read_close(user_gpio: number): Promise<number>;
/** Invert serial logic (1 invert, 0 normal) */
bb_serial_invert(user_gpio: number, invert: 0 | 1): Promise<number>;
/** Read bit bang serial data from a GPIO */
bb_serial_read(user_gpio: number): Promise<[number, Buffer]>;
/** Opens a SPI device */
spi_open(spi_channel: number, baud: number, spi_flags?: number): Promise<number>;
/** Closes a SPI device */
spi_close(handle: number): Promise<number>;
/** Reads bytes from a SPI device */
spi_read(handle: number, count: number): Promise<[number, Buffer]>;
/** Writes bytes to a SPI device */
spi_write(handle: number, data: Buffer): Promise<number>;
/** Transfers bytes with a SPI device */
spi_xfer(handle: number, data: Buffer): Promise<[number, Buffer]>;
/** Opens GPIO for bit banging SPI */
bb_spi_open(CS: number, MISO: number, MOSI: number, SCLK: number, baud: number, spiFlags?: number): Promise<number>;
/** Closes GPIO for bit banging SPI */
bb_spi_close(CS: number): Promise<number>;
/** Transfers bytes with bit banging SPI */
bb_spi_xfer(CS: number, data: Buffer): Promise<[number, Buffer]>;
/** Opens a file */
file_open(file_name: string, file_mode: number): Promise<number>;
/** Closes a file */
file_close(handle: number): Promise<number>;
/** Reads bytes from a file */
file_read(handle: number, count: number): Promise<[number, Buffer]>;
/** Writes bytes to a file */
file_write(handle: number, data: Buffer): Promise<number>;
/** Seeks to a position within a file */
file_seek(handle: number, seek_offset: number, seek_from: number): Promise<number>;
/** List files which match a pattern */
file_list(file_name: string): Promise<[number, Buffer]>;
/** Deletes all waveforms */
wave_clear(): Promise<number>;
/** Starts a new waveform */
wave_add_new(): Promise<number>;
/** Adds a series of pulses to the waveform */
wave_add_generic(pulses: Pulse[]): Promise<number>;
/** Adds serial data to the waveform */
wave_add_serial(user_gpio: number, baud: number, data: Buffer, offset?: number, bb_bits?: number, bb_stop?: number): Promise<number>;
/** Creates a waveform from added data */
wave_create(): Promise<number>;
/** Creates a waveform of fixed size from added data */
wave_create_and_pad(percent: number): Promise<number>;
/** Deletes a waveform */
wave_delete(wave_id: number): Promise<number>;
/** Transmits a waveform once */
wave_send_once(wave_id: number): Promise<number>;
/** Transmits a waveform repeatedly */
wave_send_repeat(wave_id: number): Promise<number>;
/** Transmits a waveform in the chosen mode */
wave_send_using_mode(wave_id: number, mode: WaveModeType): Promise<number>;
/** Transmits a chain of waveforms */
wave_chain(data: Buffer): Promise<number>;
/** Returns the current transmitting waveform */
wave_tx_at(): Promise<number>;
/** Checks to see if a waveform has ended */
wave_tx_busy(): Promise<number>;
/** Aborts the current waveform */
wave_tx_stop(): Promise<number>;
/** Length in cbs of the current waveform */
wave_get_cbs(): Promise<number>;
/** Absolute maximum allowed cbs */
wave_get_max_cbs(): Promise<number>;
/** Length in microseconds of the current waveform */
wave_get_micros(): Promise<number>;
/** Absolute maximum allowed micros */
wave_get_max_micros(): Promise<number>;
/** Length in pulses of the current waveform */
wave_get_pulses(): Promise<number>;
/** Absolute maximum allowed pulses */
wave_get_max_pulses(): Promise<number>;
/** Get current tick (microseconds) */
get_current_tick(): Promise<number>;
/** Get hardware revision */
get_hardware_revision(): Promise<number>;
/** Get the pigpio version */
get_pigpio_version(): Promise<number>;
/** true if a connection was established, false otherwise. */
connected: boolean;
}
export declare const PI_BAD_USER_GPIO = -2;
export declare const PI_BAD_GPIO = -3;
export declare const PI_BAD_MODE = -4;
export declare const PI_BAD_LEVEL = -5;
export declare const PI_BAD_PUD = -6;
export declare const PI_BAD_PULSEWIDTH = -7;
export declare const PI_BAD_DUTYCYCLE = -8;
export declare const PI_BAD_WDOG_TIMEOUT = -15;
export declare const PI_BAD_DUTYRANGE = -21;
export declare const PI_NO_HANDLE = -24;
export declare const PI_BAD_HANDLE = -25;
export declare const PI_BAD_WAVE_BAUD = -35;
export declare const PI_TOO_MANY_PULSES = -36;
export declare const PI_TOO_MANY_CHARS = -37;
export declare const PI_NOT_SERIAL_GPIO = -38;
export declare const PI_NOT_PERMITTED = -41;
export declare const PI_SOME_PERMITTED = -42;
export declare const PI_BAD_WVSC_COMMND = -43;
export declare const PI_BAD_WVSM_COMMND = -44;
export declare const PI_BAD_WVSP_COMMND = -45;
export declare const PI_BAD_PULSELEN = -46;
export declare const PI_BAD_SCRIPT = -47;
export declare const PI_BAD_SCRIPT_ID = -48;
export declare const PI_BAD_SER_OFFSET = -49;
export declare const PI_GPIO_IN_USE = -50;
export declare const PI_BAD_SERIAL_COUNT = -51;
export declare const PI_BAD_PARAM_NUM = -52;
export declare const PI_DUP_TAG = -53;
export declare const PI_TOO_MANY_TAGS = -54;
export declare const PI_BAD_SCRIPT_CMD = -55;
export declare const PI_BAD_VAR_NUM = -56;
export declare const PI_NO_SCRIPT_ROOM = -57;
export declare const PI_NO_MEMORY = -58;
export declare const PI_SOCK_READ_FAILED = -59;
export declare const PI_SOCK_WRIT_FAILED = -60;
export declare const PI_TOO_MANY_PARAM = -61;
export declare const PI_SCRIPT_NOT_READY = -62;
export declare const PI_BAD_TAG = -63;
export declare const PI_BAD_MICS_DELAY = -64;
export declare const PI_BAD_MILS_DELAY = -65;
export declare const PI_BAD_WAVE_ID = -66;
export declare const PI_TOO_MANY_CBS = -67;
export declare const PI_TOO_MANY_OOL = -68;
export declare const PI_EMPTY_WAVEFORM = -69;
export declare const PI_NO_WAVEFORM_ID = -70;
export declare const PI_I2C_OPEN_FAILED = -71;
export declare const PI_SER_OPEN_FAILED = -72;
export declare const PI_SPI_OPEN_FAILED = -73;
export declare const PI_BAD_I2C_BUS = -74;
export declare const PI_BAD_I2C_ADDR = -75;
export declare const PI_BAD_SPI_CHANNEL = -76;
export declare const PI_BAD_FLAGS = -77;
export declare const PI_BAD_SPI_SPEED = -78;
export declare const PI_BAD_SER_DEVICE = -79;
export declare const PI_BAD_SER_SPEED = -80;
export declare const PI_BAD_PARAM = -81;
export declare const PI_I2C_WRITE_FAILED = -82;
export declare const PI_I2C_READ_FAILED = -83;
export declare const PI_BAD_SPI_COUNT = -84;
export declare const PI_SER_WRITE_FAILED = -85;
export declare const PI_SER_READ_FAILED = -86;
export declare const PI_SER_READ_NO_DATA = -87;
export declare const PI_UNKNOWN_COMMAND = -88;
export declare const PI_SPI_XFER_FAILED = -89;
export declare const PI_NO_AUX_SPI = -91;
export declare const PI_NOT_PWM_GPIO = -92;
export declare const PI_NOT_SERVO_GPIO = -93;
export declare const PI_NOT_HCLK_GPIO = -94;
export declare const PI_NOT_HPWM_GPIO = -95;
export declare const PI_BAD_HPWM_FREQ = -96;
export declare const PI_BAD_HPWM_DUTY = -97;
export declare const PI_BAD_HCLK_FREQ = -98;
export declare const PI_BAD_HCLK_PASS = -99;
export declare const PI_HPWM_ILLEGAL = -100;
export declare const PI_BAD_DATABITS = -101;
export declare const PI_BAD_STOPBITS = -102;
export declare const PI_MSG_TOOBIG = -103;
export declare const PI_BAD_MALLOC_MODE = -104;
export declare const PI_BAD_SMBUS_CMD = -107;
export declare const PI_NOT_I2C_GPIO = -108;
export declare const PI_BAD_I2C_WLEN = -109;
export declare const PI_BAD_I2C_RLEN = -110;
export declare const PI_BAD_I2C_CMD = -111;
export declare const PI_BAD_I2C_BAUD = -112;
export declare const PI_CHAIN_LOOP_CNT = -113;
export declare const PI_BAD_CHAIN_LOOP = -114;
export declare const PI_CHAIN_COUNTER = -115;
export declare const PI_BAD_CHAIN_CMD = -116;
export declare const PI_BAD_CHAIN_DELAY = -117;
export declare const PI_CHAIN_NESTING = -118;
export declare const PI_CHAIN_TOO_BIG = -119;
export declare const PI_DEPRECATED = -120;
export declare const PI_BAD_SER_INVERT = -121;
export declare const PI_BAD_FOREVER = -124;
export declare const PI_BAD_FILTER = -125;
export declare const PI_BAD_PAD = -126;
export declare const PI_BAD_STRENGTH = -127;
export declare const PI_FIL_OPEN_FAILED = -128;
export declare const PI_BAD_FILE_MODE = -129;
export declare const PI_BAD_FILE_FLAG = -130;
export declare const PI_BAD_FILE_READ = -131;
export declare const PI_BAD_FILE_WRITE = -132;
export declare const PI_FILE_NOT_ROPEN = -133;
export declare const PI_FILE_NOT_WOPEN = -134;
export declare const PI_BAD_FILE_SEEK = -135;
export declare const PI_NO_FILE_MATCH = -136;
export declare const PI_NO_FILE_ACCESS = -137;
export declare const PI_FILE_IS_A_DIR = -138;
export declare const PI_BAD_SHELL_STATUS = -139;
export declare const PI_BAD_SCRIPT_NAME = -140;
export declare const PI_BAD_SPI_BAUD = -141;
export declare const PI_NOT_SPI_GPIO = -142;
export declare const PI_BAD_EVENT_ID = -143;
export declare const PI_CMD_INTERRUPTED = -144;
export declare const PI_NOT_ON_BCM2711 = -145;
export declare const PI_ONLY_ON_BCM2711 = -146;
/** Gets error text from error number */
export declare function error_text(errnum: number): string;
/**
* Returns the microsecond difference between two ticks.
* @param t1 - the earlier tick
* @param t2 - the later tick
* ```ts
* console.log(tickDiff(4294967272, 12)) // 36
* ```
*/
export declare function tickDiff(t1: number, t2: number): number;
/** This is low level interface.
* It is the same feature as the original python library except that all requests are asynchronous.
* http://abyz.me.uk/rpi/pigpio/python.html
* */
export declare function pi(host?: string, port?: number): Promise<pigpio>;
export default pigpio;