264 lines
14 KiB
C
264 lines
14 KiB
C
//
|
||
// Created by cfif on 26.04.23.
|
||
//
|
||
//
|
||
// Created by cfif on 26.04.23.
|
||
//
|
||
#include "ModemGsm.h"
|
||
#include "AtGsmSim800f.h"
|
||
|
||
#define LOGGER env->logger
|
||
#define LOG_SIGN "GONEC"
|
||
|
||
//
|
||
// Created by cfif on 26.04.23.
|
||
//
|
||
#include "ModemMain.h"
|
||
|
||
|
||
// начало-------------------------- Служебные ----------------------------------------------------------------------
|
||
// начало-------------------------- Служебные ----------------------------------------------------------------------
|
||
// начало-------------------------- Служебные ----------------------------------------------------------------------
|
||
bool GsmGET_CGSN(tModemMain *env, char *acpString, size_t *acpStringLen) {
|
||
|
||
bool result = Gsm_GET_CGSN(&env->modemAtGsm, acpString, acpStringLen);
|
||
|
||
if (!result) {
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Получение IMEI (AT+CGSN)");
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
bool GsmCCID(tModemMain *env, char *acpString, size_t *acpStringLen) {
|
||
AtCommandResult result = Gsm_CCID(&env->modemAtGsm, acpString, acpStringLen);
|
||
|
||
if (!result) {
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Получение Msisdn (AT+CCID)");
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
// конец-------------------------- Служебные ----------------------------------------------------------------------
|
||
// конец-------------------------- Служебные ----------------------------------------------------------------------
|
||
// конец-------------------------- Служебные ----------------------------------------------------------------------
|
||
|
||
|
||
// начало-------------------------- Инициализация ----------------------------------------------------------------------
|
||
// начало-------------------------- Инициализация ----------------------------------------------------------------------
|
||
// начало-------------------------- Инициализация ----------------------------------------------------------------------
|
||
|
||
// Проверка готовности SIM-карты
|
||
bool GsmPINStatus(tModemMain *env, tAtGsm_PINStatus *state) {
|
||
bool result = Gsm_PINStatus(&env->modemAtGsm, state);
|
||
|
||
if (!result) {
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Проверка готовности SIM-карты (AT+CPIN?)");
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
// Уровень сигнала
|
||
bool GsmSignalQualityReport(tModemMain *env, uint32_t *rssi, int *error) {
|
||
bool result = Gsm_SignalQualityReport(&env->modemAtGsm, rssi, error);
|
||
|
||
if (!result) {
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Получение уровня сигнала (AT+CSQ)");
|
||
}
|
||
|
||
|
||
return result;
|
||
}
|
||
|
||
// Проверка наличия регистрации в сети GSM.
|
||
bool GsmNetworkRegistrationStatusGSM(tModemMain *env,
|
||
tAtGsm_NetworkRegistrationReportMode *mode,
|
||
tAtGsm_NetworkRegistrationState *state,
|
||
int *error) {
|
||
bool result = Gsm_NetworkRegistrationStatusGSM(&env->modemAtGsm, mode, state, error);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Проверка наличия регистрации в сети GSM (AT+CREG?)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// Проверка получения доступа к услугам пакетной передачи данных.
|
||
bool GsmAttachOrDetachFromGPRSService(
|
||
tModemMain *env,
|
||
tAtGsm_AttachOrDetachFromGPRSService *state,
|
||
int *error
|
||
) {
|
||
bool result = Gsm_AttachOrDetachFromGPRSService(&env->modemAtGsm, state, error);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Проверка получения доступа к услугам пакетной передачи данных (AT+CGATT?)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// Установка количества соединений с сокетом - 0
|
||
bool GsmStartUpMultiIPConnection(tModemMain *env, uint8_t count) {
|
||
bool result = Gsm_StartUpMultiIPConnection(&env->modemAtGsm, count);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Установка количества соединений с сокетом (AT+CIPMUX)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// Режим передачи данных 0 - Ручной
|
||
bool GsmSelectTCPIPApplicationMode(tModemMain *env, uint8_t mode) {
|
||
bool result = Gsm_SelectTCPIPApplicationMode(&env->modemAtGsm, mode);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Установка режима передачи данных (AT+CIPMODE)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// Режим передачи данных 0 - Ручной
|
||
bool GsmSelectDataTransmittingMode(tModemMain *env, uint8_t mode) {
|
||
bool result = Gsm_SelectDataTransmittingMode(&env->modemAtGsm, mode);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Установка режима передачи данных (AT+CIPQSEND)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// Режим приема данных 1 - Ручной
|
||
bool GsmGetDataFromNetworkManuallySet(tModemMain *env, uint8_t mode) {
|
||
bool result = Gsm_GetDataFromNetworkManuallySet(&env->modemAtGsm, mode);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Установка режима приема данных (AT+CIPRXGET)");
|
||
|
||
return result;
|
||
}
|
||
// конец----------------------------------- Инициализация --------------------------------------------------------------
|
||
// конец----------------------------------- Инициализация --------------------------------------------------------------
|
||
// конец----------------------------------- Инициализация --------------------------------------------------------------
|
||
|
||
|
||
// начало---------------------- Настройка контекста и открытие соединения -----------------------------------
|
||
// начало---------------------- Настройка контекста и открытие соединения -----------------------------------
|
||
// начало---------------------- Настройка контекста и открытие соединения -----------------------------------
|
||
|
||
// Деактивация контекста
|
||
bool GsmDeactivateGPRSPDPContext(tModemMain *env) {
|
||
bool result = Gsm_DeactivateGPRSPDPContext(&env->modemAtGsm);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Деактивация контекста (AT+CIPSHUT)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// Настройка точки доступа APN
|
||
bool GsmStartTaskAndSetAPN(tModemMain *env, char *apn, int apnLen) {
|
||
bool result = Gsm_StartTaskAndSetAPN(&env->modemAtGsm, apn, apnLen);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Настройка точки доступа APN (AT+CSTT)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// Запрос текущего статуса соединения
|
||
bool GsmQueryCurrentConnectionStatus(tModemMain *env, tAtGsm_QueryCurrentConnectionStatus *state) {
|
||
bool result = Gsm_QueryCurrentConnectionStatus(&env->modemAtGsm, state);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Запрос текущего статуса соединения (AT+CIPSTATUS)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// Активация контекста
|
||
bool GsmBringUpWirelessConnectionWithGPRS(tModemMain *env) {
|
||
bool result = Gsm_BringUpWirelessConnectionWithGPRS(&env->modemAtGsm);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Активация контекста (AT+CIICR)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// Установление TCP соединения
|
||
bool GsmStartUpTCPOrUDPConnection(tModemMain *env, char *url, int urlLen, uint16_t port) {
|
||
bool result = Gsm_StartUpTCPOrUDPConnection(&env->modemAtGsm, url, urlLen, port);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Установка соединения (AT+CIPSTART)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// Закрытие соединения
|
||
bool GsmCloseTCPorUDPConnection(tModemMain *env) {
|
||
bool result = Gsm_CloseTCPorUDPConnection(&env->modemAtGsm);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Закрытие соединения (AT+CIPCLOSE)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// конец---------------------------- Настройка контекста и открытие соединения -----------------------------------------
|
||
// конец---------------------------- Настройка контекста и открытие соединения -----------------------------------------
|
||
// конец---------------------------- Настройка контекста и открытие соединения -----------------------------------------
|
||
|
||
|
||
// начало----------------------- Передача данных с подтверждением в командном режиме -----------------------------------
|
||
// начало----------------------- Передача данных с подтверждением в командном режиме -----------------------------------
|
||
// начало----------------------- Передача данных с подтверждением в командном режиме -----------------------------------
|
||
|
||
// Начать отправку данных на сервер
|
||
bool GsmSendDataThroughTCPOrUDPConnection(tModemMain *env, uint8_t *pBuf, uint16_t size) {
|
||
bool result = Gsm_SendDataThroughTCPOrUDPConnection(&env->modemAtGsm, pBuf, size);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Начать отправку данных на сервер (AT+CIPSEND)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// конец----------------------- Передача данных с подтверждением в командном режиме -----------------------------------
|
||
// конец----------------------- Передача данных с подтверждением в командном режиме -----------------------------------
|
||
// конец----------------------- Передача данных с подтверждением в командном режиме -----------------------------------
|
||
|
||
|
||
// начало----------------------- Прием данных в командном режиме, ручной вывод принятых данных -------------------------
|
||
// начало----------------------- Прием данных в командном режиме, ручной вывод принятых данных -------------------------
|
||
// начало----------------------- Прием данных в командном режиме, ручной вывод принятых данных -------------------------
|
||
|
||
// Получить количества данных готовых для чтения
|
||
bool GsmGetDataFromNetworkManuallyGetSize(tModemMain *env, uint16_t *size) {
|
||
bool result = Gsm_GetDataFromNetworkManuallyGetSize(&env->modemAtGsm, size);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Получение количества данных готовых для чтения (AT+CIPRXGET)");
|
||
|
||
return result;
|
||
}
|
||
|
||
// Получить данные готовые для чтения из сокета
|
||
bool GsmGetDataFromNetworkManuallyGet(tModemMain *env, uint8_t *pBuf, uint16_t sizeRead, uint16_t *sizeRealRead) {
|
||
bool result = Gsm_GetDataFromNetworkManuallyGet(&env->modemAtGsm, pBuf, sizeRead, sizeRealRead);
|
||
|
||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||
"Ошибка выполнения команды записи в модем (GSM): Получение данные готовых для чтения (AT+CIPRXGET)");
|
||
|
||
return result;
|
||
}
|
||
// конец----------------------- Прием данных в командном режиме, ручной вывод принятых данных -------------------------
|
||
// конец----------------------- Прием данных в командном режиме, ручной вывод принятых данных -------------------------
|
||
// конец----------------------- Прием данных в командном режиме, ручной вывод принятых данных -------------------------
|