UNPKG

pigpio-client

Version:

A nodejs client for pigpio socket interface.

304 lines (297 loc) 13.8 kB
// socket interface APIs const CMDS = { MODES: 0, // modeSet MODEG: 1, // modeGet PUD: 2, // pullUpDown READ: 3, // read WRITE: 4, // write PWM: 5, // analogWrite, setPWMdutyCycle PRS: 6, PFS: 7, // setPWMfrequency SERVO: 8, // setServoPulsewidth WDOG: 9, BR1: 10, // bankRead1 BR2: 11, // (internal) BC1: 12, BC2: 13, BS1: 14, BS2: 15, TICK: 16, // getCurrentTick HWVER: 17, // hwver NO: 18, NB: 19, // startNotifications, stopNotifications, notify NP: 20, // pauseNotifications NC: 21, // closeNotifications, end? PRG: 22, PFG: 23, PRRG: 24, HELP: 25, PIGPV: 26, // pigpv WVCLR: 27, // waveClear WVAG: 28, // waveAddPulse WVAS: 29, // waveAddSerial // N/A: 30, // N/A: 31, WVBSY: 32, // waveBusy, waveNotBusy WVHLT: 33, // waveTxStop WVSM: 34, WVSP: 35, WVSC: 36, TRIG: 37, PROC: 38, PROCD: 39, PROCR: 40, PROCS: 41, SLRO: 42, // serialReadOpen SLR: 43, // serialRead SLRC: 44, // serialReadClose PROCP: 45, MICS: 46, MILS: 47, PARSE: 48, WVCRE: 49, // waveCreate WVDEL: 50, // waveDelete WVTX: 51, WVTXR: 52, WVNEW: 53, I2CO: 54, // i2cOpen I2CC: 55, // i2cClose I2CRD: 56, // i2cReadDevice I2CWD: 57, // i2cWriteDevice I2CWQ: 58, I2CRS: 59, I2CWS: 60, I2CRB: 61, I2CWB: 62, I2CRW: 63, I2CWW: 64, I2CRK: 65, I2CWK: 66, I2CRI: 67, I2CWI: 68, I2CPC: 69, I2CPK: 70, SPIO: 71, SPIC: 72, SPIR: 73, SPIW: 74, SPIX: 75, SERO: 76, SERC: 77, SERRB: 78, SERWB: 79, SERR: 80, SERW: 81, SERDA: 82, GDC: 83, // getPWMdutyCycle GPW: 84, // getServoPulsewidth HC: 85, // hwClock HP: 86, // hwPWM CF1: 87, CF2: 88, BI2CC: 89, BI2CO: 90, BI2CZ: 91, I2CZ: 92, WVCHA: 93, // waveChainTx SLRI: 94, // serialReadInvert CGI: 95, CSI: 96, FG: 97, // glitch filter FN: 98, NOIB: 99, // (internal - notify open in-band) WVTXM: 100,// waveSendSync + PI_WAVE_MODE_ONE_SHOT_SYNC, // waveSendOnce + PI_WAVE_MODE_ONE_SHOT WVTAT: 101,// waveTxAt PADS: 102, PADG: 103, FO: 104, FC: 105, FR: 106, FW: 107, FS: 108, FL: 109, SHELL: 110, BSPIC: 111, BSPIO: 112, BSPIX: 113, BSCX: 114, EVM: 115, EVT: 116, PROCU: 117 } exports.Commands = CMDS exports.extReqCmdSet = new Set("WVCHA, WVAG, SLRO, WVAS, HP, \ TRIG, PROC, PROCR, I2CO, I2CWD, I2CWB, I2CWW, I2CRI, I2CWI, I2CPC, I2CPK, I2CWK, \ SPIO, SPIW, SPIX, SERO, SERW, CF1, CF2, BI2CO, BI2CZ, I2CZ, FN, FO, FW, FS, FL, \ SHELL, BSPIO, BSPIX, BSCX, PROCU".split(', ').map(i=> CMDS[i])) exports.extResCmdSet = new Set("SLR, PROCP, I2CRD, I2CRI, I2CPK, SPIR, SPIX, \ SERR, CF2, BI2CZ, I2CZ, FR, FL, BSPIX, BSCX".split(', ').map(i=> CMDS[i])) var apiNames = {} Object.entries(CMDS).forEach( ([key, val]) => { apiNames[val] = key }) exports.APInames = apiNames /* pigpio constants */ exports.Constants = { PUD_OFF: 0, PUD_DOWN: 1, PUD_UP: 2, PI_WAVE_MODE_ONE_SHOT: 0, PI_WAVE_MODE_REPEAT: 1, PI_WAVE_MODE_ONE_SHOT_SYNC: 2, PI_WAVE_MODE_REPEAT_SYNC: 3 } /* Error messages */ exports.PigpioErrors = { '-1': {message: 'gpioInitialise failed', code: 'PI_INIT_FAILED'}, '-2': {message: 'GPIO not 0-31', code: 'PI_BAD_USER_GPIO'}, '-3': {message: 'GPIO not 0-53', code: 'PI_BAD_GPIO'}, '-4': {message: 'mode not 0-7', code: 'PI_BAD_MODE'}, '-5': {message: 'level not 0-1', code: 'PI_BAD_LEVEL'}, '-6': {message: 'pud not 0-2', code: 'PI_BAD_PUD'}, '-7': {message: 'pulsewidth not 0 or 500-2500', code: 'PI_BAD_PULSEWIDTH'}, '-8': {message: 'dutycycle outside set range', code: 'PI_BAD_DUTYCYCLE'}, '-9': {message: 'timer not 0-9', code: 'PI_BAD_TIMER'}, '-10': {message: 'ms not 10-60000', code: 'PI_BAD_MS'}, '-11': {message: 'timetype not 0-1', code: 'PI_BAD_TIMETYPE'}, '-12': {message: 'seconds < 0', code: 'PI_BAD_SECONDS'}, '-13': {message: 'micros not 0-999999', code: 'PI_BAD_MICROS'}, '-14': {message: 'gpioSetTimerFunc failed', code: 'PI_TIMER_FAILED'}, '-15': {message: 'timeout not 0-60000', code: 'PI_BAD_WDOG_TIMEOUT'}, '-16': {message: 'DEPRECATED', code: 'PI_NO_ALERT_FUNC'}, '-17': {message: 'clock peripheral not 0-1', code: 'PI_BAD_CLK_PERIPH'}, '-18': {message: 'DEPRECATED', code: 'PI_BAD_CLK_SOURCE'}, '-19': {message: 'clock micros not 1, 2, 4, 5, 8, or 10', code: 'PI_BAD_CLK_MICROS'}, '-20': {message: 'buf millis not 100-10000', code: 'PI_BAD_BUF_MILLIS'}, '-21': {message: 'dutycycle range not 25-40000', code: 'PI_BAD_DUTYRANGE'}, '-21': {message: 'DEPRECATED (use PI_BAD_DUTYRANGE)', code: 'PI_BAD_DUTY_RANGE'}, '-22': {message: 'signum not 0-63', code: 'PI_BAD_SIGNUM'}, '-23': {message: "can't open pathname", code: 'PI_BAD_PATHNAME'}, '-24': {message: 'no handle available', code: 'PI_NO_HANDLE'}, '-25': {message: 'unknown handle', code: 'PI_BAD_HANDLE'}, '-26': {message: 'ifFlags > 3', code: 'PI_BAD_IF_FLAGS'}, '-27': {message: 'DMA channel not 0-14', code: 'PI_BAD_CHANNEL'}, '-27': {message: 'DMA primary channel not 0-14', code: 'PI_BAD_PRIM_CHANNEL'}, '-28': {message: 'socket port not 1024-32000', code: 'PI_BAD_SOCKET_PORT'}, '-29': {message: 'unrecognized fifo command', code: 'PI_BAD_FIFO_COMMAND'}, '-30': {message: 'DMA secondary channel not 0-6', code: 'PI_BAD_SECO_CHANNEL'}, '-31': {message: 'function called before gpioInitialise', code: 'PI_NOT_INITIALISED'}, '-32': {message: 'function called after gpioInitialise', code: 'PI_INITIALISED'}, '-33': {message: 'waveform mode not 0-3', code: 'PI_BAD_WAVE_MODE'}, '-34': {message: 'bad parameter in gpioCfgInternals call', code: 'PI_BAD_CFG_INTERNAL'}, '-35': {message: 'baud rate not 50-250K(RX)/50-1M(TX)', code: 'PI_BAD_WAVE_BAUD'}, '-36': {message: 'waveform has too many pulses', code: 'PI_TOO_MANY_PULSES'}, '-37': {message: 'waveform has too many chars', code: 'PI_TOO_MANY_CHARS'}, '-38': {message: 'no bit bang serial read on GPIO', code: 'PI_NOT_SERIAL_GPIO'}, '-39': {message: 'bad (null) serial structure parameter', code: 'PI_BAD_SERIAL_STRUC'}, '-40': {message: 'bad (null) serial buf parameter', code: 'PI_BAD_SERIAL_BUF'}, '-41': {message: 'GPIO operation not permitted', code: 'PI_NOT_PERMITTED'}, '-42': {message: 'one or more GPIO not permitted', code: 'PI_SOME_PERMITTED'}, '-43': {message: 'bad WVSC subcommand', code: 'PI_BAD_WVSC_COMMND'}, '-44': {message: 'bad WVSM subcommand', code: 'PI_BAD_WVSM_COMMND'}, '-45': {message: 'bad WVSP subcommand', code: 'PI_BAD_WVSP_COMMND'}, '-46': {message: 'trigger pulse length not 1-100', code: 'PI_BAD_PULSELEN'}, '-47': {message: 'invalid script', code: 'PI_BAD_SCRIPT'}, '-48': {message: 'unknown script id', code: 'PI_BAD_SCRIPT_ID'}, '-49': {message: 'add serial data offset > 30 minutes', code: 'PI_BAD_SER_OFFSET'}, '-50': {message: 'GPIO already in use', code: 'PI_GPIO_IN_USE'}, '-51': {message: 'must read at least a byte at a time', code: 'PI_BAD_SERIAL_COUNT'}, '-52': {message: 'script parameter id not 0-9', code: 'PI_BAD_PARAM_NUM'}, '-53': {message: 'script has duplicate tag', code: 'PI_DUP_TAG'}, '-54': {message: 'script has too many tags', code: 'PI_TOO_MANY_TAGS'}, '-55': {message: 'illegal script command', code: 'PI_BAD_SCRIPT_CMD'}, '-56': {message: 'script variable id not 0-149', code: 'PI_BAD_VAR_NUM'}, '-57': {message: 'no more room for scripts', code: 'PI_NO_SCRIPT_ROOM'}, '-58': {message: "can't allocate temporary memory", code: 'PI_NO_MEMORY'}, '-59': {message: 'socket read failed', code: 'PI_SOCK_READ_FAILED'}, '-60': {message: 'socket write failed', code: 'PI_SOCK_WRIT_FAILED'}, '-61': {message: 'too many script parameters (> 10)', code: 'PI_TOO_MANY_PARAM'}, '-62': {message: 'DEPRECATED', code: 'PI_NOT_HALTED'}, '-62': {message: 'script initialising', code: 'PI_SCRIPT_NOT_READY'}, '-63': {message: 'script has unresolved tag', code: 'PI_BAD_TAG'}, '-64': {message: 'bad MICS delay (too large)', code: 'PI_BAD_MICS_DELAY'}, '-65': {message: 'bad MILS delay (too large)', code: 'PI_BAD_MILS_DELAY'}, '-66': {message: 'non existent wave id', code: 'PI_BAD_WAVE_ID'}, '-67': {message: 'No more CBs for waveform', code: 'PI_TOO_MANY_CBS'}, '-68': {message: 'No more OOL for waveform', code: 'PI_TOO_MANY_OOL'}, '-69': {message: 'attempt to create an empty waveform', code: 'PI_EMPTY_WAVEFORM'}, '-70': {message: 'no more waveforms', code: 'PI_NO_WAVEFORM_ID'}, '-71': {message: "can't open I2C device", code: 'PI_I2C_OPEN_FAILED'}, '-72': {message: "can't open serial device", code: 'PI_SER_OPEN_FAILED'}, '-73': {message: "can't open SPI device", code: 'PI_SPI_OPEN_FAILED'}, '-74': {message: 'bad I2C bus', code: 'PI_BAD_I2C_BUS'}, '-75': {message: 'bad I2C address', code: 'PI_BAD_I2C_ADDR'}, '-76': {message: 'bad SPI channel', code: 'PI_BAD_SPI_CHANNEL'}, '-77': {message: 'bad i2c/spi/ser open flags', code: 'PI_BAD_FLAGS'}, '-78': {message: 'bad SPI speed', code: 'PI_BAD_SPI_SPEED'}, '-79': {message: 'bad serial device name', code: 'PI_BAD_SER_DEVICE'}, '-80': {message: 'bad serial baud rate', code: 'PI_BAD_SER_SPEED'}, '-81': {message: 'bad i2c/spi/ser parameter', code: 'PI_BAD_PARAM'}, '-82': {message: 'i2c write failed', code: 'PI_I2C_WRITE_FAILED'}, '-83': {message: 'i2c read failed', code: 'PI_I2C_READ_FAILED'}, '-84': {message: 'bad SPI count', code: 'PI_BAD_SPI_COUNT'}, '-85': {message: 'ser write failed', code: 'PI_SER_WRITE_FAILED'}, '-86': {message: 'ser read failed', code: 'PI_SER_READ_FAILED'}, '-87': {message: 'ser read no data available', code: 'PI_SER_READ_NO_DATA'}, '-88': {message: 'unknown command', code: 'PI_UNKNOWN_COMMAND'}, '-89': {message: 'spi xfer/read/write failed', code: 'PI_SPI_XFER_FAILED'}, '-90': {message: 'bad (NULL) pointer', code: 'PI_BAD_POINTER'}, '-91': {message: 'no auxiliary SPI on Pi A or B', code: 'PI_NO_AUX_SPI'}, '-92': {message: 'GPIO is not in use for PWM', code: 'PI_NOT_PWM_GPIO'}, '-93': {message: 'GPIO is not in use for servo pulses', code: 'PI_NOT_SERVO_GPIO'}, '-94': {message: 'GPIO has no hardware clock', code: 'PI_NOT_HCLK_GPIO'}, '-95': {message: 'GPIO has no hardware PWM', code: 'PI_NOT_HPWM_GPIO'}, '-96': {message: 'hardware PWM frequency not 1-125M', code: 'PI_BAD_HPWM_FREQ'}, '-97': {message: 'hardware PWM dutycycle not 0-1M', code: 'PI_BAD_HPWM_DUTY'}, '-98': {message: 'hardware clock frequency not 4689-250M', code: 'PI_BAD_HCLK_FREQ'}, '-99': {message: 'need password to use hardware clock 1', code: 'PI_BAD_HCLK_PASS'}, '-100': {message: 'illegal, PWM in use for main clock', code: 'PI_HPWM_ILLEGAL'}, '-101': {message: 'serial data bits not 1-32', code: 'PI_BAD_DATABITS'}, '-102': {message: 'serial (half) stop bits not 2-8', code: 'PI_BAD_STOPBITS'}, '-103': {message: 'socket/pipe message too big', code: 'PI_MSG_TOOBIG'}, '-104': {message: 'bad memory allocation mode', code: 'PI_BAD_MALLOC_MODE'}, '-105': {message: 'too many I2C transaction segments', code: 'PI_TOO_MANY_SEGS'}, '-106': {message: 'an I2C transaction segment failed', code: 'PI_BAD_I2C_SEG'}, '-107': {message: 'SMBus command not supported by driver', code: 'PI_BAD_SMBUS_CMD'}, '-108': {message: 'no bit bang I2C in progress on GPIO', code: 'PI_NOT_I2C_GPIO'}, '-109': {message: 'bad I2C write length', code: 'PI_BAD_I2C_WLEN'}, '-110': {message: 'bad I2C read length', code: 'PI_BAD_I2C_RLEN'}, '-111': {message: 'bad I2C command', code: 'PI_BAD_I2C_CMD'}, '-112': {message: 'bad I2C baud rate, not 50-500k', code: 'PI_BAD_I2C_BAUD'}, '-113': {message: 'bad chain loop count', code: 'PI_CHAIN_LOOP_CNT'}, '-114': {message: 'empty chain loop', code: 'PI_BAD_CHAIN_LOOP'}, '-115': {message: 'too many chain counters', code: 'PI_CHAIN_COUNTER'}, '-116': {message: 'bad chain command', code: 'PI_BAD_CHAIN_CMD'}, '-117': {message: 'bad chain delay micros', code: 'PI_BAD_CHAIN_DELAY'}, '-118': {message: 'chain counters nested too deeply', code: 'PI_CHAIN_NESTING'}, '-119': {message: 'chain is too long', code: 'PI_CHAIN_TOO_BIG'}, '-120': {message: 'deprecated function removed', code: 'PI_DEPRECATED'}, '-121': {message: 'bit bang serial invert not 0 or 1', code: 'PI_BAD_SER_INVERT'}, '-122': {message: 'bad ISR edge value, not 0-2', code: 'PI_BAD_EDGE'}, '-123': {message: 'bad ISR initialisation', code: 'PI_BAD_ISR_INIT'}, '-124': {message: 'loop forever must be last command', code: 'PI_BAD_FOREVER'}, '-125': {message: 'bad filter parameter', code: 'PI_BAD_FILTER'}, '-126': {message: 'bad pad number', code: 'PI_BAD_PAD'}, '-127': {message: 'bad pad drive strength', code: 'PI_BAD_STRENGTH'}, '-128': {message: 'file open failed', code: 'PI_FIL_OPEN_FAILED'}, '-129': {message: 'bad file mode', code: 'PI_BAD_FILE_MODE'}, '-130': {message: 'bad file flag', code: 'PI_BAD_FILE_FLAG'}, '-131': {message: 'bad file read', code: 'PI_BAD_FILE_READ'}, '-132': {message: 'bad file write', code: 'PI_BAD_FILE_WRITE'}, '-133': {message: 'file not open for read', code: 'PI_FILE_NOT_ROPEN'}, '-134': {message: 'file not open for write', code: 'PI_FILE_NOT_WOPEN'}, '-135': {message: 'bad file seek', code: 'PI_BAD_FILE_SEEK'}, '-136': {message: 'no files match pattern', code: 'PI_NO_FILE_MATCH'}, '-137': {message: 'no permission to access file', code: 'PI_NO_FILE_ACCESS'}, '-138': {message: 'file is a directory', code: 'PI_FILE_IS_A_DIR'}, '-139': {message: 'bad shell return status', code: 'PI_BAD_SHELL_STATUS'}, '-140': {message: 'bad script name', code: 'PI_BAD_SCRIPT_NAME'}, '-141': {message: 'bad SPI baud rate, not 50-500k', code: 'PI_BAD_SPI_BAUD'}, '-142': {message: 'no bit bang SPI in progress on GPIO', code: 'PI_NOT_SPI_GPIO'}, '-143': {message: 'bad event id', code: 'PI_BAD_EVENT_ID'}, '-2000': 'PI_PIGIF_ERR_0', '-2099': 'PI_PIGIF_ERR_99', '-3000': 'PI_CUSTOM_ERR_0', '-3999': 'PI_CUSTOM_ERR_999' }