52 lines
1.3 KiB
C
52 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;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|