// // Created by CFIF on 14.11.22. // #ifndef UVEOS_ON_NATION_CLICMD_H #define UVEOS_ON_NATION_CLICMD_H #include "SerialPort.h" #include "stdbool.h" #include "stddef.h" typedef struct { struct { char *data; size_t limit; char *begin; size_t length; } rxLine; tSerialPortIO *serialCommandPort; } tCliCmd; void CliCmd_Init(tCliCmd *env, tSerialPortIO *io, uint8_t *data, size_t dataLen); #define CliCmd_InitStatic(ENV, IO, DATA) CliCmd_Init(ENV,IO,DATA,sizeof(DATA)); void CliCmd_WaitLine(tCliCmd *env); void CliCmd_Print(tCliCmd *cli, char *text, uint16_t len); void CliCmd_PrintHex(tCliCmd *cli, uint8_t *data, uint16_t byteLen); char *CliCmd_RxLineBegin(tCliCmd *cli); char *CliCmd_RxLineEnd(tCliCmd *cli); size_t CliCmd_RxLineLength(tCliCmd *cli); char *CliCmd_RxStartsWith(tCliCmd *cli, char *text, uint16_t len); void CliCmd_RxSkipSpace(tCliCmd *cli); void CliCmd_RxSkipTo(tCliCmd *cli, char *next); void CliCmd_WaitLineDelay(tCliCmd *env, uint32_t delay); void CliCmd_RxSkip(tCliCmd *cli, size_t len); #define CliCmd_PrintStatic(CLI, STR) CliCmd_Print(CLI,STR,sizeof(STR)-1) #define CliCmd_PrintLnStatic(CLI, STR) CliCmd_PrintStatic(CLI,(STR "\r\n")) #define CliCmd_PrintSpStatic(CLI, STR) CliCmd_PrintStatic(CLI,(STR " ")) // 1 если STR присутствует первым блоком в cli->data #define CliCmd_RxStartsWithStatic(CLI, STR) CliCmd_RxStartsWith(CLI,(STR),sizeof(STR) - 1) #endif //UVEOS_ON_NATION_CLICMD_H