процедуры получения индификатора модеме и индификатора симЧипа переписаны на блокировку по мьютэксам, причина - добавление потоков одновременно обращяющихся к АТ интерфейсу модема

This commit is contained in:
parent aef4a5ad65
commit b1ef6e7e77
1 changed files with 35 additions and 65 deletions

View File

@ -278,8 +278,8 @@ AtCommandResult GsmWithGnss_StopRMCThread(tAtCmd *env) {
}
AtCommandResult GsmWithGnss_GetCGSN(tAtCmd *env, char *acpString, size_t *acpStringLen) {
if (osMutexAcquire(env->access, 5000) == osOK) {
AtCmdPrepare(env);
AtCmdTxClear(env);
AtCmdSendStatic(env, "AT#CGSN\r\n");
@ -289,56 +289,22 @@ AtCommandResult GsmWithGnss_GetCGSN(tAtCmd *env, char *acpString, size_t *acpStr
static const uint16_t prefixSize = sizeof("#CGSN: ") - 1;
*acpStringLen = env->rxBuffer.len - (prefixSize + 2);
memcpy(acpString, env->rxBuffer.data + prefixSize, *acpStringLen);
osMutexRelease(env->access);
return AT_OK;
}
if (AtCmdRxBeginWithStatic(env, "ERROR")) {
osMutexRelease(env->access);
return AT_ERROR;
}
}
osMutexRelease(env->access);
}
return AT_TIMEOUT;
}
AtCommandResult GsmWithGnss_GetCCID(tAtCmd *env, char *acpStr, size_t *acpStrLen) {
// AtCmdPrepare(env);
// AtCmdRxClear(env);
// AtCmdSendStatic(env, "AT#CCID\r\n");
//
// uint32_t timeout = 4000;
// uint32_t endMs = SystemGetMs() + timeout;
// uint32_t leftMs = timeout;
//
// while ((AtCmdReceiveNextLine(env, leftMs) == AT_OK) && (SystemGetMs() < endMs)) {
// leftMs = endMs - SystemGetMs();
//
// if (AtCmdRxBeginWithStatic(env, "OK")) {
// AtCmdRxClear(env);
// continue;
//
// } else if (AtCmdRxBeginWithStatic(env, "ERROR")) {
// AtCmdRxClear(env);
// return AT_ERROR;
//
// } else if (AtCmdRxBeginWithStatic(env, "#CCID: ")) {
//
// static const uint16_t prefixSize = sizeof("#CCID: ") - 1;
// *acpStrLen = env->rxBuffer.len - (prefixSize + 2);
// memcpy(acpStr, env->rxBuffer.data+ prefixSize,*acpStrLen);
// AtCmdRxClear(env);
// return AT_OK;
//
// } else {
// AtCmdProcessUnresolvedLine(env);
// AtCmdRxClear(env);
// continue;
// }
// }
// return AT_TIMEOUT;
//
if (osMutexAcquire(env->access, 5000) == osOK) {
AtCmdPrepare(env);
AtCmdTxClear(env);
AtCmdSendStatic(env, "AT#CCID\r\n");
@ -347,13 +313,17 @@ AtCommandResult GsmWithGnss_GetCCID(tAtCmd *env, char *acpStr, size_t *acpStrLen
static const uint16_t prefixSize = sizeof("#CCID: ") - 1;
*acpStrLen = env->rxBuffer.len - (prefixSize + 2);
memcpy(acpStr, env->rxBuffer.data+ prefixSize,*acpStrLen);
osMutexRelease(env->access);
return AT_OK;
}
if (AtCmdRxBeginWithStatic(env, "ERROR")) {
osMutexRelease(env->access);
return AT_ERROR;
}
}
osMutexRelease(env->access);
}
return AT_TIMEOUT;
}