diff --git a/Inc/CliCmd.h b/Inc/CliCmd.h index aa1662e..9e6b2b7 100644 --- a/Inc/CliCmd.h +++ b/Inc/CliCmd.h @@ -17,12 +17,14 @@ typedef struct { size_t length; } rxLine; - tSerialPortIO *serialCommandPort; + tSerialPortIO *serialCommandPortIn; + tSerialPortIO *serialCommandPortOut; + } tCliCmd; -void CliCmd_Init(tCliCmd *env, tSerialPortIO *io, uint8_t *data, size_t dataLen); +void CliCmd_Init(tCliCmd *env, tSerialPortIO *io_in, tSerialPortIO *io_out, uint8_t *data, size_t dataLen); -#define CliCmd_InitStatic(ENV, IO, DATA) CliCmd_Init(ENV,IO,DATA,sizeof(DATA)); +#define CliCmd_InitStatic(ENV, IO_IN, IO_OUT, DATA) CliCmd_Init(ENV,IO_IN,IO_OUT,DATA,sizeof(DATA)); void CliCmd_WaitLine(tCliCmd *env); diff --git a/Src/CliCmd.c b/Src/CliCmd.c index 150617c..7b8ce38 100644 --- a/Src/CliCmd.c +++ b/Src/CliCmd.c @@ -7,8 +7,9 @@ #include "AsciiStringAssmeblingUtils.h" #include "SystemDelayInterface.h" -void CliCmd_Init(tCliCmd *env, tSerialPortIO *io, uint8_t *data, size_t dataLen) { - env->serialCommandPort = io; +void CliCmd_Init(tCliCmd *env, tSerialPortIO *io_in, tSerialPortIO *io_out, uint8_t *data, size_t dataLen) { + env->serialCommandPortIn = io_in; + env->serialCommandPortOut = io_out; env->rxLine.limit = dataLen; env->rxLine.data = (char *) data; vAsciiStringInit(env->rxLine.data, &env->rxLine.length, env->rxLine.limit); @@ -20,11 +21,11 @@ void CliCmd_WaitLine(tCliCmd *env) { //получаем строку //печатаем ее в ответ - SerialPortClearRxBuffer(env->serialCommandPort); + SerialPortClearRxBuffer(env->serialCommandPortIn); vAsciiStringClean(env->rxLine.data, &env->rxLine.length); env->rxLine.length = SerialPortReceiveTo( - env->serialCommandPort, + env->serialCommandPortIn, (uint8_t *) env->rxLine.data, env->rxLine.limit, '\n', @@ -43,11 +44,11 @@ void CliCmd_WaitLineDelay(tCliCmd *env, uint32_t delay) { //получаем строку //печатаем ее в ответ - SerialPortClearRxBuffer(env->serialCommandPort); + SerialPortClearRxBuffer(env->serialCommandPortIn); vAsciiStringClean(env->rxLine.data, &env->rxLine.length); env->rxLine.length = SerialPortReceiveTo( - env->serialCommandPort, + env->serialCommandPortIn, (uint8_t *) env->rxLine.data, env->rxLine.limit, '\n', @@ -62,14 +63,14 @@ void CliCmd_WaitLineDelay(tCliCmd *env, uint32_t delay) { } void CliCmd_ClearRx(tCliCmd *env) { - SerialPortClearRxBuffer(env->serialCommandPort); + SerialPortClearRxBuffer(env->serialCommandPortIn); vAsciiStringClean(env->rxLine.data, &env->rxLine.length); } bool CliCmd_HasCompleteLine(tCliCmd *env) { env->rxLine.length = SerialPortReceiveTo( - env->serialCommandPort, + env->serialCommandPortIn, (uint8_t *) env->rxLine.begin, env->rxLine.limit, '\n', @@ -84,7 +85,7 @@ bool CliCmd_HasCompleteLine(tCliCmd *env) { } void CliCmd_Print(tCliCmd *cli, char *text, uint16_t len) { - SerialPortTransmit(cli->serialCommandPort, (uint8_t *) text, len, SystemWaitForever); + SerialPortTransmit(cli->serialCommandPortOut, (uint8_t *) text, len, SystemWaitForever); } void CliCmd_PrintHex(tCliCmd *cli, uint8_t *data, uint16_t byteLen) {