AT locks placed for UBlox AT handling

pull/11306/head
Antti Kauppila 2019-08-29 09:25:18 +03:00
parent d08d55da88
commit 9151606bb2
2 changed files with 14 additions and 8 deletions

View File

@ -94,26 +94,28 @@ nsapi_error_t UBLOX_AT::init()
_at->flush(); _at->flush();
_at->at_cmd_discard("", ""); _at->at_cmd_discard("", "");
#ifdef TARGET_UBLOX_C027 nsapi_error_t err = NSAPI_ERROR_OK;
_at->at_cmd_discard("+CFUN", "=0");
if (_at->get_last_error() == NSAPI_ERROR_OK) { #ifdef TARGET_UBLOX_C027
err = _at->at_cmd_discard("+CFUN", "=0");
if (err == NSAPI_ERROR_OK) {
_at->at_cmd_discard("E0", ""); // echo off _at->at_cmd_discard("E0", ""); // echo off
_at->at_cmd_discard("+CMEE", "=1"); // verbose responses _at->at_cmd_discard("+CMEE", "=1"); // verbose responses
config_authentication_parameters(); config_authentication_parameters();
_at->at_cmd_discard("+CFUN", "=1"); // set full functionality err = _at->at_cmd_discard("+CFUN", "=1"); // set full functionality
} }
#else #else
_at->at_cmd_discard("+CFUN", "=4"); err = _at->at_cmd_discard("+CFUN", "=4");
if (_at->get_last_error() == NSAPI_ERROR_OK) { if (err == NSAPI_ERROR_OK) {
_at->at_cmd_discard("E0", ""); // echo off _at->at_cmd_discard("E0", ""); // echo off
_at->at_cmd_discard("+CMEE", "=1"); // verbose responses _at->at_cmd_discard("+CMEE", "=1"); // verbose responses
config_authentication_parameters(); config_authentication_parameters();
_at->at_cmd_discard("+CFUN", "=1"); // set full functionality err = _at->at_cmd_discard("+CFUN", "=1"); // set full functionality
} }
#endif #endif
return _at->unlock_return_error(); return err;
} }
nsapi_error_t UBLOX_AT::config_authentication_parameters() nsapi_error_t UBLOX_AT::config_authentication_parameters()

View File

@ -113,11 +113,13 @@ nsapi_error_t UBLOX_AT_CellularContext::define_context()
return err; return err;
} }
_at.lock();
_at.cmd_start_stop("+UPSND", "=", "%d%d", PROFILE, 8); _at.cmd_start_stop("+UPSND", "=", "%d%d", PROFILE, 8);
_at.resp_start("+UPSND:"); _at.resp_start("+UPSND:");
_at.skip_param(2); _at.skip_param(2);
active = _at.read_int(); active = _at.read_int();
_at.resp_stop(); _at.resp_stop();
_at.unlock();
if (active == 0) { if (active == 0) {
// If the caller hasn't entered an APN, try to find it // If the caller hasn't entered an APN, try to find it
@ -193,11 +195,13 @@ bool UBLOX_AT_CellularContext::activate_profile(const char *apn,
Timer t1; Timer t1;
t1.start(); t1.start();
while (!(t1.read() >= 180)) { while (!(t1.read() >= 180)) {
_at.lock();
_at.cmd_start_stop("+UPSND", "=", "%d%d", PROFILE, 8); _at.cmd_start_stop("+UPSND", "=", "%d%d", PROFILE, 8);
_at.resp_start("+UPSND:"); _at.resp_start("+UPSND:");
_at.skip_param(2); _at.skip_param(2);
_at.read_int() ? activated = true : activated = false; _at.read_int() ? activated = true : activated = false;
_at.resp_stop(); _at.resp_stop();
_at.unlock();
if (activated) { //If context is activated, exit while loop and return status if (activated) { //If context is activated, exit while loop and return status
break; break;