diff --git a/features/cellular/TESTS/api/cellular_sms/main.cpp b/features/cellular/TESTS/api/cellular_sms/main.cpp index 89e4760444..7947696dd1 100644 --- a/features/cellular/TESTS/api/cellular_sms/main.cpp +++ b/features/cellular/TESTS/api/cellular_sms/main.cpp @@ -111,20 +111,20 @@ static void test_sms_initialize_pdu_mode() { nsapi_error_t err = sms->initialize(CellularSMS::CellularSMSMmodePDU); TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED || (err == NSAPI_ERROR_DEVICE_ERROR && - ((AT_CellularSMS *)sms)->get_device_error().errCode == SIM_BUSY)); + ((AT_CellularSMS *)sms)->get_device_error().errCode == SIM_BUSY)); } static void test_set_cscs() { nsapi_error_t err = sms->set_cscs("IRA"); TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED || (err == NSAPI_ERROR_DEVICE_ERROR && - ((AT_CellularSMS *)sms)->get_device_error().errCode == SIM_BUSY)); + ((AT_CellularSMS *)sms)->get_device_error().errCode == SIM_BUSY)); err = sms->set_cscs("UCS2"); TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED || (err == NSAPI_ERROR_DEVICE_ERROR && - ((AT_CellularSMS *)sms)->get_device_error().errCode == SIM_BUSY)); + ((AT_CellularSMS *)sms)->get_device_error().errCode == SIM_BUSY)); err = sms->set_cscs("GSM"); TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED || (err == NSAPI_ERROR_DEVICE_ERROR && - ((AT_CellularSMS *)sms)->get_device_error().errCode == SIM_BUSY)); + ((AT_CellularSMS *)sms)->get_device_error().errCode == SIM_BUSY)); } static void test_set_csca() @@ -144,7 +144,7 @@ static void test_set_cpms_me() { nsapi_error_t err = sms->set_cpms("ME", "ME", "ME"); TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED || (err == NSAPI_ERROR_DEVICE_ERROR && - ((AT_CellularSMS *)sms)->get_device_error().errCode == SIM_BUSY)); + ((AT_CellularSMS *)sms)->get_device_error().errCode == SIM_BUSY)); } #ifdef MBED_CONF_APP_CELLULAR_PHONE_NUMBER diff --git a/features/cellular/framework/AT/AT_CellularStack.cpp b/features/cellular/framework/AT/AT_CellularStack.cpp index 8c09f73849..432ca3da66 100644 --- a/features/cellular/framework/AT/AT_CellularStack.cpp +++ b/features/cellular/framework/AT/AT_CellularStack.cpp @@ -132,9 +132,7 @@ nsapi_error_t AT_CellularStack::socket_open(nsapi_socket_t *handle, nsapi_protoc tr_info("Socket %d open", index); // create local socket structure, socket on modem is created when app calls sendto/recvfrom _socket[index] = new CellularSocket; - CellularSocket *psock; - psock = _socket[index]; - memset(psock, 0, sizeof(CellularSocket)); + CellularSocket *psock = _socket[index]; SocketAddress addr(0, get_dynamic_ip_port()); psock->id = index; psock->localAddress = addr; diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp index ebb6c40743..ad33f211ab 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp @@ -296,10 +296,12 @@ nsapi_size_or_error_t UBLOX_AT_CellularStack::socket_recvfrom_impl(CellularSocke _at.read_string(ipAddress, sizeof(ipAddress)); port = _at.read_int(); usorf_sz = _at.read_int(); - if (usorf_sz > size) { usorf_sz = size; } + _at.read_bytes(&ch, 1); + _at.read_bytes((uint8_t *)buffer + count, usorf_sz); + _at.resp_stop(); // Must use what +USORF returns here as it may be less or more than we asked for if (usorf_sz > socket->pending_bytes) { @@ -308,10 +310,6 @@ nsapi_size_or_error_t UBLOX_AT_CellularStack::socket_recvfrom_impl(CellularSocke socket->pending_bytes -= usorf_sz; } - _at.read_bytes(&ch, 1); - _at.read_bytes((uint8_t *)buffer + count, usorf_sz); - _at.resp_stop(); - if (usorf_sz > 0) { count += usorf_sz; size -= usorf_sz; @@ -346,6 +344,12 @@ nsapi_size_or_error_t UBLOX_AT_CellularStack::socket_recvfrom_impl(CellularSocke _at.resp_start("+USORD:"); _at.skip_param(); // receiving socket id usorf_sz = _at.read_int(); + if (usorf_sz > size) { + usorf_sz = size; + } + _at.read_bytes(&ch, 1); + _at.read_bytes((uint8_t *)buffer + count, usorf_sz); + _at.resp_stop(); // Must use what +USORD returns here as it may be less or more than we asked for if (usorf_sz > socket->pending_bytes) { @@ -354,13 +358,6 @@ nsapi_size_or_error_t UBLOX_AT_CellularStack::socket_recvfrom_impl(CellularSocke socket->pending_bytes -= usorf_sz; } - if (usorf_sz > size) { - usorf_sz = size; - } - _at.read_bytes(&ch, 1); - _at.read_bytes((uint8_t *)buffer + count, usorf_sz); - _at.resp_stop(); - if (usorf_sz > 0) { count += usorf_sz; size -= usorf_sz; diff --git a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX.cpp b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX.cpp index 5bfd6ba0dc..0aa1ede2d7 100644 --- a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX.cpp +++ b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX.cpp @@ -66,7 +66,6 @@ AT_CellularSMS *UBLOX_N2XX::open_sms_impl(ATHandler &at) nsapi_error_t UBLOX_N2XX::init() { - _at->set_at_timeout(5000); _at->lock(); _at->flush(); _at->cmd_start("AT"); // echo off @@ -77,11 +76,7 @@ nsapi_error_t UBLOX_N2XX::init() #ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_SIM_PIN set_pin(MBED_CONF_NSAPI_DEFAULT_CELLULAR_SIM_PIN); - wait(1); - _at->cmd_start("AT+CFUN=1"); // set full functionality - _at->cmd_stop_read_resp(); #endif - _at->restore_at_timeout(); return _at->unlock_return_error(); } diff --git a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.cpp b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.cpp index 9730b6dd40..e9d0287aa0 100644 --- a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.cpp +++ b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.cpp @@ -138,7 +138,7 @@ nsapi_size_or_error_t UBLOX_N2XX_CellularStack::socket_sendto_impl(CellularSocke sent_len = _at.read_int(); _at.resp_stop(); - free(dataStr); + delete[] dataStr; if ((_at.get_last_error() == NSAPI_ERROR_OK)) { return sent_len; } @@ -150,7 +150,7 @@ nsapi_size_or_error_t UBLOX_N2XX_CellularStack::socket_recvfrom_impl(CellularSoc void *buffer, nsapi_size_t size) { nsapi_size_or_error_t nsapi_error_size = NSAPI_ERROR_DEVICE_ERROR; - nsapi_size_t read_blk, usorf_sz, count = 0, length = size*2; + nsapi_size_t read_blk, usorf_sz, count = 0, length = size; bool success = true; char ipAddress[NSAPI_IP_SIZE]; int port = 0; @@ -183,7 +183,7 @@ nsapi_size_or_error_t UBLOX_N2XX_CellularStack::socket_recvfrom_impl(CellularSoc if (usorf_sz > length) { usorf_sz = length; } - _at.read_hex_string((char *)buffer + count, usorf_sz*2+1); + _at.read_hex_string((char *)buffer + count, usorf_sz); _at.resp_stop(); // Must use what +NSORF returns here as it may be less or more than we asked for @@ -194,8 +194,8 @@ nsapi_size_or_error_t UBLOX_N2XX_CellularStack::socket_recvfrom_impl(CellularSoc } if (usorf_sz > 0) { - count += (usorf_sz*2); - length -= (usorf_sz*2); + count += (usorf_sz); + length -= (usorf_sz); } else { // read() should not fail success = false; @@ -225,7 +225,7 @@ nsapi_size_or_error_t UBLOX_N2XX_CellularStack::socket_recvfrom_impl(CellularSoc address->set_port(port); } - return nsapi_error_size = count/2; + return nsapi_error_size = count; } nsapi_error_t UBLOX_N2XX_CellularStack::socket_close_impl(int sock_id)