From c6b6efc4566721d3f3020e8c02c4b7b6aeae5ed0 Mon Sep 17 00:00:00 2001 From: Syed Fahimuddin Alavi Date: Fri, 6 Mar 2020 15:48:44 +0500 Subject: [PATCH] Added deativation of context associated with profile Added emt method in At cellular context stub file --- UNITTESTS/stubs/AT_CellularContext_stub.cpp | 4 ++++ .../framework/AT/AT_CellularContext.h | 3 ++- .../framework/targets/UBLOX/AT/UBLOX_AT.cpp | 24 ++++++++++--------- .../UBLOX/AT/UBLOX_AT_CellularContext.cpp | 7 ++++++ .../UBLOX/AT/UBLOX_AT_CellularContext.h | 3 +++ 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/UNITTESTS/stubs/AT_CellularContext_stub.cpp b/UNITTESTS/stubs/AT_CellularContext_stub.cpp index 0d7a72cc14..4078bc3567 100644 --- a/UNITTESTS/stubs/AT_CellularContext_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularContext_stub.cpp @@ -199,6 +199,10 @@ void AT_CellularContext::do_connect() { } +void AT_CellularContext::do_disconnect() +{ +} + #if NSAPI_PPP_AVAILABLE nsapi_error_t AT_CellularContext::open_data_channel() { diff --git a/features/cellular/framework/AT/AT_CellularContext.h b/features/cellular/framework/AT/AT_CellularContext.h index 5a2b6c9bb4..162a3479b9 100644 --- a/features/cellular/framework/AT/AT_CellularContext.h +++ b/features/cellular/framework/AT/AT_CellularContext.h @@ -84,6 +84,8 @@ protected: */ virtual void do_connect(); + virtual void do_disconnect(); + /** Get the operation specific timeout. Used in synchronous mode when setting the maximum * waiting time. Modem specific implementation can override this to provide different timeouts. * @@ -121,7 +123,6 @@ private: nsapi_error_t check_operation(nsapi_error_t err, ContextOperation op); void ciot_opt_cb(mbed::CellularNetwork::CIoT_Supported_Opt ciot_opt); virtual void do_connect_with_retry(); - void do_disconnect(); void set_cid(int cid); private: diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp index 4f589d1c5f..afae597fd0 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp @@ -128,22 +128,19 @@ CellularDevice *CellularDevice::get_default_instance() nsapi_error_t UBLOX_AT::init() { setup_at_handler(); - _at.lock(); _at.flush(); _at.at_cmd_discard("", ""); - int value = -1; -#ifdef UBX_MDM_SARA_G3XX - value = 0; -#elif defined(UBX_MDM_SARA_U2XX) || defined(UBX_MDM_SARA_R41XM) - value = 4; -#else - _at.unlock(); - return NSAPI_ERROR_UNSUPPORTED; -#endif +#if defined(UBX_MDM_SARA_U2XX) || defined(UBX_MDM_SARA_G3XX) + nsapi_error_t err = _at.at_cmd_discard("E0", ""); // echo off - nsapi_error_t err = _at.at_cmd_discard("+CFUN", "=", "%d", value); + if (err == NSAPI_ERROR_OK) { + _at.at_cmd_discard("+CMEE", "=1"); // verbose responses + err = _at.at_cmd_discard("+CFUN", "=1"); // set full functionality + } +#elif defined(UBX_MDM_SARA_R41XM) + nsapi_error_t err = _at.at_cmd_discard("+CFUN", "=", "%d", 4); if (err == NSAPI_ERROR_OK) { _at.at_cmd_discard("E0", ""); // echo off @@ -151,6 +148,11 @@ nsapi_error_t UBLOX_AT::init() config_authentication_parameters(); err = _at.at_cmd_discard("+CFUN", "=1"); // set full functionality } +#else + _at.unlock(); + return NSAPI_ERROR_UNSUPPORTED; +#endif + return _at.unlock_return_error(); } diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp index 77c1cb7d10..7f6f7c25e4 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp @@ -113,6 +113,13 @@ void UBLOX_AT_CellularContext::do_connect() _status_cb(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, _connect_status); } } +#ifndef UBX_MDM_SARA_R41XM +void UBLOX_AT_CellularContext::do_disconnect() +{ + disconnect_modem_stack(); + AT_CellularContext::do_disconnect(); +} +#endif #ifndef UBX_MDM_SARA_R41XM nsapi_error_t UBLOX_AT_CellularContext::define_context() diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.h b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.h index 4e2272d42f..23d1131559 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.h +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.h @@ -28,6 +28,9 @@ public: virtual ~UBLOX_AT_CellularContext(); virtual void do_connect(); +#ifndef UBX_MDM_SARA_R41XM + virtual void do_disconnect(); +#endif virtual nsapi_error_t get_gateway(SocketAddress *addr); const char *get_apn(void);