// // Created by xemon on 07.09.22. // #include "AtCmdCommonProtected.h" #include "SystemDelayInterface.h" void AtCmdInit( tAtCmd *env, tSerialPortIO *io, uint8_t *txBuffer, size_t txBufferSize, uint8_t *rxBuffer, size_t rxBufferSize, uint32_t stdTxTimeout, uint32_t stdRxTimeout ) { env->io = io; env->rxBuffer.data = (char *) rxBuffer; env->rxBuffer.limit = rxBufferSize; env->txBuffer.data = (char *) txBuffer; env->txBuffer.limit = txBufferSize; vAsciiStringInit(env->txBuffer.data, &env->txBuffer.len, env->txBuffer.limit); vAsciiStringInit(env->rxBuffer.data, &env->rxBuffer.len, env->rxBuffer.limit); env->stdRxTimeout = stdRxTimeout; env->stdTxTimeout = stdTxTimeout; env->urcProcessor.process = NULL; env->access= osMutexNew(NULL); env->test = 0; } AtCommandResult AtCmd(tAtCmd *env) { AtCmdPrepare(env); AtCmdSendStatic(env, "AT\r\n"); return AtCmdOkErrAnswer(env, env->stdRxTimeout); } AtCommandResult AtCmdWaitOk(tAtCmd *env, uint32_t retryInterval, uint32_t timeout) { uint32_t endMs = SystemGetMs() + timeout; while (endMs > SystemGetMs()) { if (AtCmd(env) == AT_OK) { return AT_OK; } else { SystemDelayMs(retryInterval); } } return AT_TIMEOUT; }