V69+: #258 reject and document illegal script commands

This commit is contained in:
joan2937 2019-07-11 10:09:35 +01:00
parent 5b416b699b
commit b407ab741d
5 changed files with 215 additions and 176 deletions

352
command.c
View File

@ -26,7 +26,7 @@ For more information, please refer to <http://unlicense.org/>
*/
/*
This version is for pigpio version 69+
This version is for pigpio version 70+
*/
#include <stdio.h>
@ -41,223 +41,223 @@ This version is for pigpio version 69+
cmdInfo_t cmdInfo[]=
{
/* num str vfyt retv */
/* num str vfyt retv script*/
{PI_CMD_BC1, "BC1", 111, 1}, // gpioWrite_Bits_0_31_Clear
{PI_CMD_BC2, "BC2", 111, 1}, // gpioWrite_Bits_32_53_Clear
{PI_CMD_BC1, "BC1", 111, 1, 1}, // gpioWrite_Bits_0_31_Clear
{PI_CMD_BC2, "BC2", 111, 1, 1}, // gpioWrite_Bits_32_53_Clear
{PI_CMD_BI2CC, "BI2CC", 112, 0}, // bbI2CClose
{PI_CMD_BI2CO, "BI2CO", 131, 0}, // bbI2COpen
{PI_CMD_BI2CZ, "BI2CZ", 193, 6}, // bbI2CZip
{PI_CMD_BI2CC, "BI2CC", 112, 0, 1}, // bbI2CClose
{PI_CMD_BI2CO, "BI2CO", 131, 0, 1}, // bbI2COpen
{PI_CMD_BI2CZ, "BI2CZ", 193, 6, 0}, // bbI2CZip
{PI_CMD_BR1, "BR1", 101, 3}, // gpioRead_Bits_0_31
{PI_CMD_BR2, "BR2", 101, 3}, // gpioRead_Bits_32_53
{PI_CMD_BR1, "BR1", 101, 3, 1}, // gpioRead_Bits_0_31
{PI_CMD_BR2, "BR2", 101, 3, 1}, // gpioRead_Bits_32_53
{PI_CMD_BS1, "BS1", 111, 1}, // gpioWrite_Bits_0_31_Set
{PI_CMD_BS2, "BS2", 111, 1}, // gpioWrite_Bits_32_53_Set
{PI_CMD_BS1, "BS1", 111, 1, 1}, // gpioWrite_Bits_0_31_Set
{PI_CMD_BS2, "BS2", 111, 1, 1}, // gpioWrite_Bits_32_53_Set
{PI_CMD_BSCX, "BSCX", 193, 8}, // bscXfer
{PI_CMD_BSCX, "BSCX", 193, 8, 0}, // bscXfer
{PI_CMD_BSPIC, "BSPIC", 112, 0}, // bbSPIClose
{PI_CMD_BSPIO, "BSPIO", 134, 0}, // bbSPIOpen
{PI_CMD_BSPIX, "BSPIX", 193, 6}, // bbSPIXfer
{PI_CMD_BSPIC, "BSPIC", 112, 0, 1}, // bbSPIClose
{PI_CMD_BSPIO, "BSPIO", 134, 0, 0}, // bbSPIOpen
{PI_CMD_BSPIX, "BSPIX", 193, 6, 0}, // bbSPIXfer
{PI_CMD_CF1, "CF1", 195, 2}, // gpioCustom1
{PI_CMD_CF2, "CF2", 195, 6}, // gpioCustom2
{PI_CMD_CF1, "CF1", 195, 2, 0}, // gpioCustom1
{PI_CMD_CF2, "CF2", 195, 6, 0}, // gpioCustom2
{PI_CMD_CGI, "CGI", 101, 4}, // gpioCfgGetInternals
{PI_CMD_CSI, "CSI", 111, 1}, // gpioCfgSetInternals
{PI_CMD_CGI, "CGI", 101, 4, 1}, // gpioCfgGetInternals
{PI_CMD_CSI, "CSI", 111, 1, 1}, // gpioCfgSetInternals
{PI_CMD_EVM, "EVM", 122, 1}, // eventMonitor
{PI_CMD_EVT, "EVT", 112, 0}, // eventTrigger
{PI_CMD_EVM, "EVM", 122, 1, 1}, // eventMonitor
{PI_CMD_EVT, "EVT", 112, 0, 1}, // eventTrigger
{PI_CMD_FC, "FC", 112, 0}, // fileClose
{PI_CMD_FC, "FC", 112, 0, 1}, // fileClose
{PI_CMD_FG, "FG", 121, 0}, // gpioGlitchFilter
{PI_CMD_FG, "FG", 121, 0, 1}, // gpioGlitchFilter
{PI_CMD_FL, "FL", 127, 6}, // fileList
{PI_CMD_FL, "FL", 127, 6, 0}, // fileList
{PI_CMD_FN, "FN", 131, 0}, // gpioNoiseFilter
{PI_CMD_FN, "FN", 131, 0, 1}, // gpioNoiseFilter
{PI_CMD_FO, "FO", 127, 2}, // fileOpen
{PI_CMD_FR, "FR", 121, 6}, // fileRead
{PI_CMD_FS, "FS", 133, 2}, // fileSeek
{PI_CMD_FW, "FW", 193, 0}, // fileWrite
{PI_CMD_FO, "FO", 127, 2, 0}, // fileOpen
{PI_CMD_FR, "FR", 121, 6, 0}, // fileRead
{PI_CMD_FS, "FS", 133, 2, 1}, // fileSeek
{PI_CMD_FW, "FW", 193, 0, 0}, // fileWrite
{PI_CMD_GDC, "GDC", 112, 2}, // gpioGetPWMdutycycle
{PI_CMD_GPW, "GPW", 112, 2}, // gpioGetServoPulsewidth
{PI_CMD_GDC, "GDC", 112, 2, 1}, // gpioGetPWMdutycycle
{PI_CMD_GPW, "GPW", 112, 2, 1}, // gpioGetServoPulsewidth
{PI_CMD_HELP, "H", 101, 5}, // cmdUsage
{PI_CMD_HELP, "HELP", 101, 5}, // cmdUsage
{PI_CMD_HELP, "H", 101, 5, 0}, // cmdUsage
{PI_CMD_HELP, "HELP", 101, 5, 0}, // cmdUsage
{PI_CMD_HC, "HC", 121, 0}, // gpioHardwareClock
{PI_CMD_HP, "HP", 131, 0}, // gpioHardwarePWM
{PI_CMD_HC, "HC", 121, 0, 1}, // gpioHardwareClock
{PI_CMD_HP, "HP", 131, 0, 1}, // gpioHardwarePWM
{PI_CMD_HWVER, "HWVER", 101, 4}, // gpioHardwareRevision
{PI_CMD_HWVER, "HWVER", 101, 4, 1}, // gpioHardwareRevision
{PI_CMD_I2CC, "I2CC", 112, 0}, // i2cClose
{PI_CMD_I2CO, "I2CO", 131, 2}, // i2cOpen
{PI_CMD_I2CC, "I2CC", 112, 0, 1}, // i2cClose
{PI_CMD_I2CO, "I2CO", 131, 2, 1}, // i2cOpen
{PI_CMD_I2CPC, "I2CPC", 131, 2}, // i2cProcessCall
{PI_CMD_I2CPK, "I2CPK", 194, 6}, // i2cBlockProcessCall
{PI_CMD_I2CPC, "I2CPC", 131, 2, 1}, // i2cProcessCall
{PI_CMD_I2CPK, "I2CPK", 194, 6, 0}, // i2cBlockProcessCall
{PI_CMD_I2CRB, "I2CRB", 121, 2}, // i2cReadByteData
{PI_CMD_I2CRD, "I2CRD", 121, 6}, // i2cReadDevice
{PI_CMD_I2CRI, "I2CRI", 131, 6}, // i2cReadI2CBlockData
{PI_CMD_I2CRK, "I2CRK", 121, 6}, // i2cReadBlockData
{PI_CMD_I2CRS, "I2CRS", 112, 2}, // i2cReadByte
{PI_CMD_I2CRW, "I2CRW", 121, 2}, // i2cReadWordData
{PI_CMD_I2CRB, "I2CRB", 121, 2, 1}, // i2cReadByteData
{PI_CMD_I2CRD, "I2CRD", 121, 6, 0}, // i2cReadDevice
{PI_CMD_I2CRI, "I2CRI", 131, 6, 0}, // i2cReadI2CBlockData
{PI_CMD_I2CRK, "I2CRK", 121, 6, 0}, // i2cReadBlockData
{PI_CMD_I2CRS, "I2CRS", 112, 2, 1}, // i2cReadByte
{PI_CMD_I2CRW, "I2CRW", 121, 2, 1}, // i2cReadWordData
{PI_CMD_I2CWB, "I2CWB", 131, 0}, // i2cWriteByteData
{PI_CMD_I2CWD, "I2CWD", 193, 0}, // i2cWriteDevice
{PI_CMD_I2CWI, "I2CWI", 194, 0}, // i2cWriteI2CBlockData
{PI_CMD_I2CWK, "I2CWK", 194, 0}, // i2cWriteBlockData
{PI_CMD_I2CWQ, "I2CWQ", 121, 0}, // i2cWriteQuick
{PI_CMD_I2CWS, "I2CWS", 121, 0}, // i2cWriteByte
{PI_CMD_I2CWW, "I2CWW", 131, 0}, // i2cWriteWordData
{PI_CMD_I2CWB, "I2CWB", 131, 0, 1}, // i2cWriteByteData
{PI_CMD_I2CWD, "I2CWD", 193, 0, 0}, // i2cWriteDevice
{PI_CMD_I2CWI, "I2CWI", 194, 0, 0}, // i2cWriteI2CBlockData
{PI_CMD_I2CWK, "I2CWK", 194, 0, 0}, // i2cWriteBlockData
{PI_CMD_I2CWQ, "I2CWQ", 121, 0, 1}, // i2cWriteQuick
{PI_CMD_I2CWS, "I2CWS", 121, 0, 1}, // i2cWriteByte
{PI_CMD_I2CWW, "I2CWW", 131, 0, 1}, // i2cWriteWordData
{PI_CMD_I2CZ, "I2CZ", 193, 6}, // i2cZip
{PI_CMD_I2CZ, "I2CZ", 193, 6, 0}, // i2cZip
{PI_CMD_MICS, "MICS", 112, 0}, // gpioDelay
{PI_CMD_MILS, "MILS", 112, 0}, // gpioDelay
{PI_CMD_MICS, "MICS", 112, 0, 1}, // gpioDelay
{PI_CMD_MILS, "MILS", 112, 0, 1}, // gpioDelay
{PI_CMD_MODEG, "MG" , 112, 2}, // gpioGetMode
{PI_CMD_MODEG, "MODEG", 112, 2}, // gpioGetMode
{PI_CMD_MODEG, "MG" , 112, 2, 1}, // gpioGetMode
{PI_CMD_MODEG, "MODEG", 112, 2, 1}, // gpioGetMode
{PI_CMD_MODES, "M", 125, 0}, // gpioSetMode
{PI_CMD_MODES, "MODES", 125, 0}, // gpioSetMode
{PI_CMD_MODES, "M", 125, 0, 1}, // gpioSetMode
{PI_CMD_MODES, "MODES", 125, 0, 1}, // gpioSetMode
{PI_CMD_NB, "NB", 122, 0}, // gpioNotifyBegin
{PI_CMD_NC, "NC", 112, 0}, // gpioNotifyClose
{PI_CMD_NO, "NO", 101, 2}, // gpioNotifyOpen
{PI_CMD_NP, "NP", 112, 0}, // gpioNotifyPause
{PI_CMD_NB, "NB", 122, 0, 1}, // gpioNotifyBegin
{PI_CMD_NC, "NC", 112, 0, 1}, // gpioNotifyClose
{PI_CMD_NO, "NO", 101, 2, 1}, // gpioNotifyOpen
{PI_CMD_NP, "NP", 112, 0, 1}, // gpioNotifyPause
{PI_CMD_PADG, "PADG", 112, 2}, // gpioGetPad
{PI_CMD_PADS, "PADS", 121, 0}, // gpioSetPad
{PI_CMD_PADG, "PADG", 112, 2, 1}, // gpioGetPad
{PI_CMD_PADS, "PADS", 121, 0, 1}, // gpioSetPad
{PI_CMD_PARSE, "PARSE", 115, 0}, // cmdParseScript
{PI_CMD_PARSE, "PARSE", 115, 0, 0}, // cmdParseScript
{PI_CMD_PFG, "PFG", 112, 2}, // gpioGetPWMfrequency
{PI_CMD_PFS, "PFS", 121, 2}, // gpioSetPWMfrequency
{PI_CMD_PFG, "PFG", 112, 2, 1}, // gpioGetPWMfrequency
{PI_CMD_PFS, "PFS", 121, 2, 1}, // gpioSetPWMfrequency
{PI_CMD_PIGPV, "PIGPV", 101, 4}, // gpioVersion
{PI_CMD_PIGPV, "PIGPV", 101, 4, 1}, // gpioVersion
{PI_CMD_PRG, "PRG", 112, 2}, // gpioGetPWMrange
{PI_CMD_PRG, "PRG", 112, 2, 1}, // gpioGetPWMrange
{PI_CMD_PROC, "PROC", 115, 2}, // gpioStoreScript
{PI_CMD_PROCD, "PROCD", 112, 0}, // gpioDeleteScript
{PI_CMD_PROCP, "PROCP", 112, 7}, // gpioScriptStatus
{PI_CMD_PROCR, "PROCR", 191, 0}, // gpioRunScript
{PI_CMD_PROCS, "PROCS", 112, 0}, // gpioStopScript
{PI_CMD_PROCU, "PROCU", 191, 0}, // gpioUpdateScript
{PI_CMD_PROC, "PROC", 115, 2, 0}, // gpioStoreScript
{PI_CMD_PROCD, "PROCD", 112, 0, 0}, // gpioDeleteScript
{PI_CMD_PROCP, "PROCP", 112, 7, 0}, // gpioScriptStatus
{PI_CMD_PROCR, "PROCR", 191, 0, 0}, // gpioRunScript
{PI_CMD_PROCS, "PROCS", 112, 0, 0}, // gpioStopScript
{PI_CMD_PROCU, "PROCU", 191, 0, 0}, // gpioUpdateScript
{PI_CMD_PRRG, "PRRG", 112, 2}, // gpioGetPWMrealRange
{PI_CMD_PRS, "PRS", 121, 2}, // gpioSetPWMrange
{PI_CMD_PRRG, "PRRG", 112, 2, 1}, // gpioGetPWMrealRange
{PI_CMD_PRS, "PRS", 121, 2, 1}, // gpioSetPWMrange
{PI_CMD_PUD, "PUD", 126, 0}, // gpioSetPullUpDown
{PI_CMD_PUD, "PUD", 126, 0, 1}, // gpioSetPullUpDown
{PI_CMD_PWM, "P", 121, 0}, // gpioPWM
{PI_CMD_PWM, "PWM", 121, 0}, // gpioPWM
{PI_CMD_PWM, "P", 121, 0, 1}, // gpioPWM
{PI_CMD_PWM, "PWM", 121, 0, 1}, // gpioPWM
{PI_CMD_READ, "R", 112, 2}, // gpioRead
{PI_CMD_READ, "READ", 112, 2}, // gpioRead
{PI_CMD_READ, "R", 112, 2, 1}, // gpioRead
{PI_CMD_READ, "READ", 112, 2, 1}, // gpioRead
{PI_CMD_SERRB, "SERRB", 112, 2}, // serReadByte
{PI_CMD_SERWB, "SERWB", 121, 0}, // serWriteByte
{PI_CMD_SERC, "SERC", 112, 0}, // serClose
{PI_CMD_SERDA, "SERDA", 112, 2}, // serDataAvailable
{PI_CMD_SERO, "SERO", 132, 2}, // serOpen
{PI_CMD_SERR, "SERR", 121, 6}, // serRead
{PI_CMD_SERW, "SERW", 193, 0}, // serWrite
{PI_CMD_SERC, "SERC", 112, 0, 1}, // serClose
{PI_CMD_SERDA, "SERDA", 112, 2, 1}, // serDataAvailable
{PI_CMD_SERO, "SERO", 132, 2, 0}, // serOpen
{PI_CMD_SERR, "SERR", 121, 6, 0}, // serRead
{PI_CMD_SERRB, "SERRB", 112, 2, 1}, // serReadByte
{PI_CMD_SERW, "SERW", 193, 0, 0}, // serWrite
{PI_CMD_SERWB, "SERWB", 121, 0, 1}, // serWriteByte
{PI_CMD_SERVO, "S", 121, 0}, // gpioServo
{PI_CMD_SERVO, "SERVO", 121, 0}, // gpioServo
{PI_CMD_SERVO, "S", 121, 0, 1}, // gpioServo
{PI_CMD_SERVO, "SERVO", 121, 0, 1}, // gpioServo
{PI_CMD_SHELL, "SHELL", 128, 2}, // shell
{PI_CMD_SHELL, "SHELL", 128, 2, 0}, // shell
{PI_CMD_SLR, "SLR", 121, 6}, // gpioSerialRead
{PI_CMD_SLRC, "SLRC", 112, 0}, // gpioSerialReadClose
{PI_CMD_SLRO, "SLRO", 131, 0}, // gpioSerialReadOpen
{PI_CMD_SLRI, "SLRI", 121, 0}, // gpioSerialReadInvert
{PI_CMD_SLR, "SLR", 121, 6, 0}, // gpioSerialRead
{PI_CMD_SLRC, "SLRC", 112, 0, 1}, // gpioSerialReadClose
{PI_CMD_SLRO, "SLRO", 131, 0, 1}, // gpioSerialReadOpen
{PI_CMD_SLRI, "SLRI", 121, 0, 1}, // gpioSerialReadInvert
{PI_CMD_SPIC, "SPIC", 112, 0}, // spiClose
{PI_CMD_SPIO, "SPIO", 131, 2}, // spiOpen
{PI_CMD_SPIR, "SPIR", 121, 6}, // spiRead
{PI_CMD_SPIW, "SPIW", 193, 0}, // spiWrite
{PI_CMD_SPIX, "SPIX", 193, 6}, // spiXfer
{PI_CMD_SPIC, "SPIC", 112, 0, 1}, // spiClose
{PI_CMD_SPIO, "SPIO", 131, 2, 1}, // spiOpen
{PI_CMD_SPIR, "SPIR", 121, 6, 0}, // spiRead
{PI_CMD_SPIW, "SPIW", 193, 0, 0}, // spiWrite
{PI_CMD_SPIX, "SPIX", 193, 6, 0}, // spiXfer
{PI_CMD_TICK, "T", 101, 4}, // gpioTick
{PI_CMD_TICK, "TICK", 101, 4}, // gpioTick
{PI_CMD_TICK, "T", 101, 4, 1}, // gpioTick
{PI_CMD_TICK, "TICK", 101, 4, 1}, // gpioTick
{PI_CMD_TRIG, "TRIG", 131, 0}, // gpioTrigger
{PI_CMD_TRIG, "TRIG", 131, 0, 1}, // gpioTrigger
{PI_CMD_WDOG, "WDOG", 121, 0}, // gpioSetWatchdog
{PI_CMD_WDOG, "WDOG", 121, 0, 1}, // gpioSetWatchdog
{PI_CMD_WRITE, "W", 121, 0}, // gpioWrite
{PI_CMD_WRITE, "WRITE", 121, 0}, // gpioWrite
{PI_CMD_WRITE, "W", 121, 0, 1}, // gpioWrite
{PI_CMD_WRITE, "WRITE", 121, 0, 1}, // gpioWrite
{PI_CMD_WVAG, "WVAG", 192, 2}, // gpioWaveAddGeneric
{PI_CMD_WVAS, "WVAS", 196, 2}, // gpioWaveAddSerial
{PI_CMD_WVTAT, "WVTAT", 101, 2}, // gpioWaveTxAt
{PI_CMD_WVBSY, "WVBSY", 101, 2}, // gpioWaveTxBusy
{PI_CMD_WVCHA, "WVCHA", 197, 0}, // gpioWaveChain
{PI_CMD_WVCLR, "WVCLR", 101, 0}, // gpioWaveClear
{PI_CMD_WVCRE, "WVCRE", 101, 2}, // gpioWaveCreate
{PI_CMD_WVDEL, "WVDEL", 112, 0}, // gpioWaveDelete
{PI_CMD_WVGO, "WVGO" , 101, 2}, // gpioWaveTxStart
{PI_CMD_WVGOR, "WVGOR", 101, 2}, // gpioWaveTxStart
{PI_CMD_WVHLT, "WVHLT", 101, 0}, // gpioWaveTxStop
{PI_CMD_WVNEW, "WVNEW", 101, 0}, // gpioWaveAddNew
{PI_CMD_WVSC, "WVSC", 112, 2}, // gpioWaveGet*Cbs
{PI_CMD_WVSM, "WVSM", 112, 2}, // gpioWaveGet*Micros
{PI_CMD_WVSP, "WVSP", 112, 2}, // gpioWaveGet*Pulses
{PI_CMD_WVTX, "WVTX", 112, 2}, // gpioWaveTxSend
{PI_CMD_WVTXM, "WVTXM", 121, 2}, // gpioWaveTxSend
{PI_CMD_WVTXR, "WVTXR", 112, 2}, // gpioWaveTxSend
{PI_CMD_WVAG, "WVAG", 192, 2, 0}, // gpioWaveAddGeneric
{PI_CMD_WVAS, "WVAS", 196, 2, 0}, // gpioWaveAddSerial
{PI_CMD_WVBSY, "WVBSY", 101, 2, 1}, // gpioWaveTxBusy
{PI_CMD_WVCHA, "WVCHA", 197, 0, 0}, // gpioWaveChain
{PI_CMD_WVCLR, "WVCLR", 101, 0, 1}, // gpioWaveClear
{PI_CMD_WVCRE, "WVCRE", 101, 2, 1}, // gpioWaveCreate
{PI_CMD_WVDEL, "WVDEL", 112, 0, 1}, // gpioWaveDelete
{PI_CMD_WVGO, "WVGO" , 101, 2, 0}, // gpioWaveTxStart
{PI_CMD_WVGOR, "WVGOR", 101, 2, 0}, // gpioWaveTxStart
{PI_CMD_WVHLT, "WVHLT", 101, 0, 1}, // gpioWaveTxStop
{PI_CMD_WVNEW, "WVNEW", 101, 0, 1}, // gpioWaveAddNew
{PI_CMD_WVSC, "WVSC", 112, 2, 1}, // gpioWaveGet*Cbs
{PI_CMD_WVSM, "WVSM", 112, 2, 1}, // gpioWaveGet*Micros
{PI_CMD_WVSP, "WVSP", 112, 2, 1}, // gpioWaveGet*Pulses
{PI_CMD_WVTAT, "WVTAT", 101, 2, 1}, // gpioWaveTxAt
{PI_CMD_WVTX, "WVTX", 112, 2, 1}, // gpioWaveTxSend
{PI_CMD_WVTXM, "WVTXM", 121, 2, 1}, // gpioWaveTxSend
{PI_CMD_WVTXR, "WVTXR", 112, 2, 1}, // gpioWaveTxSend
{PI_CMD_ADD , "ADD" , 111, 0},
{PI_CMD_AND , "AND" , 111, 0},
{PI_CMD_CALL , "CALL" , 114, 0},
{PI_CMD_CMDR ,"CMDR" , 111, 0},
{PI_CMD_CMDW , "CMDW" , 111, 0},
{PI_CMD_CMP , "CMP" , 111, 0},
{PI_CMD_DCR , "DCR" , 113, 0},
{PI_CMD_DCRA , "DCRA" , 101, 0},
{PI_CMD_DIV , "DIV" , 111, 0},
{PI_CMD_EVTWT, "EVTWT", 111, 0},
{PI_CMD_HALT , "HALT" , 101, 0},
{PI_CMD_INR , "INR" , 113, 0},
{PI_CMD_INRA , "INRA" , 101, 0},
{PI_CMD_JM , "JM" , 114, 0},
{PI_CMD_JMP , "JMP" , 114, 0},
{PI_CMD_JNZ , "JNZ" , 114, 0},
{PI_CMD_JP , "JP" , 114, 0},
{PI_CMD_JZ , "JZ" , 114, 0},
{PI_CMD_LD , "LD" , 123, 0},
{PI_CMD_LDA , "LDA" , 111, 0},
{PI_CMD_LDAB , "LDAB" , 111, 0},
{PI_CMD_MLT , "MLT" , 111, 0},
{PI_CMD_MOD , "MOD" , 111, 0},
{PI_CMD_NOP , "NOP" , 101, 0},
{PI_CMD_OR , "OR" , 111, 0},
{PI_CMD_POP , "POP" , 113, 0},
{PI_CMD_POPA , "POPA" , 101, 0},
{PI_CMD_PUSH , "PUSH" , 113, 0},
{PI_CMD_PUSHA, "PUSHA", 101, 0},
{PI_CMD_RET , "RET" , 101, 0},
{PI_CMD_RL , "RL" , 123, 0},
{PI_CMD_RLA , "RLA" , 111, 0},
{PI_CMD_RR , "RR" , 123, 0},
{PI_CMD_RRA , "RRA" , 111, 0},
{PI_CMD_STA , "STA" , 113, 0},
{PI_CMD_STAB , "STAB" , 111, 0},
{PI_CMD_SUB , "SUB" , 111, 0},
{PI_CMD_SYS , "SYS" , 116, 0},
{PI_CMD_TAG , "TAG" , 114, 0},
{PI_CMD_WAIT , "WAIT" , 111, 0},
{PI_CMD_X , "X" , 124, 0},
{PI_CMD_XA , "XA" , 113, 0},
{PI_CMD_XOR , "XOR" , 111, 0},
{PI_CMD_ADD , "ADD" , 111, 0, 1},
{PI_CMD_AND , "AND" , 111, 0, 1},
{PI_CMD_CALL , "CALL" , 114, 0, 1},
{PI_CMD_CMDR ,"CMDR" , 111, 0, 1},
{PI_CMD_CMDW , "CMDW" , 111, 0, 1},
{PI_CMD_CMP , "CMP" , 111, 0, 1},
{PI_CMD_DCR , "DCR" , 113, 0, 1},
{PI_CMD_DCRA , "DCRA" , 101, 0, 1},
{PI_CMD_DIV , "DIV" , 111, 0, 1},
{PI_CMD_EVTWT, "EVTWT", 111, 0, 1},
{PI_CMD_HALT , "HALT" , 101, 0, 1},
{PI_CMD_INR , "INR" , 113, 0, 1},
{PI_CMD_INRA , "INRA" , 101, 0, 1},
{PI_CMD_JM , "JM" , 114, 0, 1},
{PI_CMD_JMP , "JMP" , 114, 0, 1},
{PI_CMD_JNZ , "JNZ" , 114, 0, 1},
{PI_CMD_JP , "JP" , 114, 0, 1},
{PI_CMD_JZ , "JZ" , 114, 0, 1},
{PI_CMD_LD , "LD" , 123, 0, 1},
{PI_CMD_LDA , "LDA" , 111, 0, 1},
{PI_CMD_LDAB , "LDAB" , 111, 0, 1},
{PI_CMD_MLT , "MLT" , 111, 0, 1},
{PI_CMD_MOD , "MOD" , 111, 0, 1},
{PI_CMD_NOP , "NOP" , 101, 0, 1},
{PI_CMD_OR , "OR" , 111, 0, 1},
{PI_CMD_POP , "POP" , 113, 0, 1},
{PI_CMD_POPA , "POPA" , 101, 0, 1},
{PI_CMD_PUSH , "PUSH" , 113, 0, 1},
{PI_CMD_PUSHA, "PUSHA", 101, 0, 1},
{PI_CMD_RET , "RET" , 101, 0, 1},
{PI_CMD_RL , "RL" , 123, 0, 1},
{PI_CMD_RLA , "RLA" , 111, 0, 1},
{PI_CMD_RR , "RR" , 123, 0, 1},
{PI_CMD_RRA , "RRA" , 111, 0, 1},
{PI_CMD_STA , "STA" , 113, 0, 1},
{PI_CMD_STAB , "STAB" , 111, 0, 1},
{PI_CMD_SUB , "SUB" , 111, 0, 1},
{PI_CMD_SYS , "SYS" , 116, 0, 1},
{PI_CMD_TAG , "TAG" , 114, 0, 1},
{PI_CMD_WAIT , "WAIT" , 111, 0, 1},
{PI_CMD_X , "X" , 124, 0, 1},
{PI_CMD_XA , "XA" , 113, 0, 1},
{PI_CMD_XOR , "XOR" , 111, 0, 1},
};
@ -623,6 +623,7 @@ static int getNum(char *str, uintptr_t *val, int8_t *opt)
}
static char intCmdStr[32];
static int intCmdIdx;
char *cmdStr(void)
{
@ -653,6 +654,8 @@ int cmdParse(
idx = cmdMatch(intCmdStr);
intCmdIdx = idx;
if (idx < 0) return idx;
valid = 0;
@ -1304,6 +1307,13 @@ int cmdParseScript(char *script, cmdScript_t *s, int diags)
{
idx = cmdParse(script, p, CMD_MAX_EXTENSION, v, &ctl);
/* abort if command is illegal in a script */
if ((idx >= 0) || (idx != CMD_UNKNOWN_CMD))
{
if (!cmdInfo[intCmdIdx].cvis) idx = CMD_NOT_IN_SCRIPT;
}
if (idx >= 0)
{
if (p[3])
@ -1356,6 +1366,8 @@ int cmdParseScript(char *script, cmdScript_t *s, int diags)
{
if (idx == CMD_UNKNOWN_CMD)
fprintf(stderr, "Unknown command: %s\n", cmdStr());
else if (idx == CMD_NOT_IN_SCRIPT)
fprintf(stderr, "Command illegal in script: %s\n", cmdStr());
else
fprintf(stderr, "Bad parameter to %s\n", cmdStr());
}

View File

@ -26,7 +26,7 @@ For more information, please refer to <http://unlicense.org/>
*/
/*
This version is for pigpio version 69+
This version is for pigpio version 70+
*/
#ifndef COMMAND_H
@ -43,6 +43,7 @@ This version is for pigpio version 69+
#define CMD_UNKNOWN_CMD -1
#define CMD_BAD_PARAMETER -2
#define CMD_EXT_TOO_SMALL -3
#define CMD_NOT_IN_SCRIPT -4
#define CMD_P_ARR 10
#define CMD_V_ARR 10
@ -76,6 +77,7 @@ typedef struct
char *name; /* command name */
int vt; /* command verification type */
int rv; /* command return value type */
int cvis; /* command valid in a script */
} cmdInfo_t;
typedef struct

View File

@ -25,7 +25,7 @@ OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <http://unlicense.org/>
*/
/* pigpio version 69 */
/* pigpio version 70 */
/* include ------------------------------------------------------- */

View File

@ -30,7 +30,7 @@ For more information, please refer to <http://unlicense.org/>
#include <stdint.h>
#include <pthread.h>
#define PIGPIO_VERSION 6902
#define PIGPIO_VERSION 6906
/*TEXT

31
pigs.1
View File

@ -5755,11 +5755,36 @@ Each script has
.br
.SS Commands
.br
All the normal pigs commands may be used within a script. However
commands which return more than an integer will be of little use.
Many pigpio commands may be used within a script. However
some commands do not work within the script model as designed and
are not permitted.
.br
The following commands are only legal within a script.
The following commands are not permitted within a script:
.br
File - FL FO FR FW
.br
I2C - BI2CZ I2CPK I2CRD I2CRI I2CRK I2CWD I2CWI I2CWK I2CZ
.br
Misc - BSCX CF1 CF2 SHELL
.br
Script control - PARSE PROC PROCD PROCP PROCR PROCS PROCU
.br
Serial - SERO SERR SERW SLR
.br
SPI - BSPIO BSPIX SPIR SPIW SPIX
.br
Waves - WVAG WVAS WVCHA WVGO WVGOR
.br
The following commands are only permitted within a script:
.br