AtCmdCommon/Src/AtCmdCommon.c

54 lines
1.3 KiB
C

//
// 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;
}