CliCmd/Inc/CliCmd.h

59 lines
1.5 KiB
C

//
// Created by xemon 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