процедуры получения индификатора модеме и индификатора симЧипа переписаны на блокировку по мьютэксам, причина - добавление потоков одновременно обращяющихся к АТ интерфейсу модема
This commit is contained in:
parent
aef4a5ad65
commit
b1ef6e7e77
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue