UNPKG

@node-pigpio/core

Version:
495 lines (493 loc) 22.2 kB
/** * 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;