70 lines
2.4 KiB
C
70 lines
2.4 KiB
C
//
|
|
// Created by xemon on 07.09.22.
|
|
//
|
|
|
|
#ifndef GSMCOMMONAT_GSMCOMMONAT_H
|
|
#define GSMCOMMONAT_GSMCOMMONAT_H
|
|
|
|
#include "stdint.h"
|
|
#include "stddef.h"
|
|
#include "SerialPort.h"
|
|
#include "AtCmdBase.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
|
|
);
|
|
|
|
AtCommandResult AtCmd(tAtCmd *env);
|
|
|
|
AtCommandResult AtCmdWaitOk(tAtCmd *env, uint32_t retryInterval, uint32_t timeout);
|
|
|
|
AtCommandResult AtCmdWaitPrefix(tAtCmd *env, uint16_t timeout, char *line, size_t lineLen);
|
|
|
|
AtCommandResult AtCmdWaitChar(tAtCmd *env, uint16_t timeout, char line);
|
|
|
|
#define AtCmdWaitPrefixStatic(ENV, TIMEOUT, STR) AtCmdWaitPrefix(ENV,TIMEOUT,STR, sizeof(STR)-1)
|
|
|
|
void AtCmdSetUrcProcessor(tAtCmd *env, void *urcProcEnv, void *urcProcFunc);
|
|
|
|
void AtCmdClearUrcProcessor(tAtCmd *env);
|
|
|
|
void AtCmdSetAccessMutex(tAtCmd *env, tSystemMutexInterface *accessMutex);
|
|
|
|
void AtCmdClearAccessMutex(tAtCmd *env);
|
|
|
|
void AtCmdProcessUnresolvedLine(tAtCmd *env);
|
|
|
|
void AtCmdProcessUnresolvedLines(tAtCmd *env);
|
|
|
|
//Тут все просто
|
|
//ENV - это наш tAtCmd*
|
|
//PAYLOAD - это код который будет безопасно выполнен
|
|
//TIMEOUT - время ожидания мьютекса, если оно пройдет то PAYLOAD не выполнится
|
|
//(таймаут внутри payload работает отдельно)
|
|
#define AtCmd_RunSafe(ENV, TIMEOUT, PAYLOAD) \
|
|
{ \
|
|
if((ENV)->access){ \
|
|
if (SystemMutex_acquire((ENV)->access, TIMEOUT) == true) { \
|
|
{PAYLOAD} \
|
|
SystemMutex_release((ENV)->access); \
|
|
}else{ \
|
|
\
|
|
} \
|
|
}else{ \
|
|
{PAYLOAD} \
|
|
} \
|
|
}
|
|
|
|
//#include "AtGsmListCurrentCalls.h"
|
|
|
|
#include "AtGsmErrorLogLevel.h"
|
|
|
|
#endif //GSMCOMMONAT_GSMCOMMONAT_H
|