Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: example-ublox-cellular-psm
Diff: UbloxCellularBase.cpp
- Revision:
- 36:2f8ef6ac16dc
- Parent:
- 34:d239824bfb8f
- Child:
- 37:a2466fcd63c3
--- a/UbloxCellularBase.cpp Tue Nov 05 05:52:00 2019 +0000
+++ b/UbloxCellularBase.cpp Fri Nov 08 12:32:37 2019 +0500
@@ -847,13 +847,14 @@
#ifdef TARGET_UBLOX_C030_R41XM
int mno_profile;
if (get_mno_profile(&mno_profile)) {
-#ifdef MBED_CONF_UBLOX_CELL_DEFAULT_MNO_PROFILE
- if (set_mno_profile((MNOProfile)MBED_CONF_UBLOX_CELL_DEFAULT_MNO_PROFILE)) {
+#ifdef MBED_CONF_APP_DEFAULT_MNO_PROFILE
+ if (mno_profile != MBED_CONF_APP_DEFAULT_MNO_PROFILE && set_mno_profile((MNOProfile)MBED_CONF_APP_DEFAULT_MNO_PROFILE)) {
reboot_modem();
while(is_modem_ready() == false) {
wait_ms(1000);
}
setup_modem();
+ mno_profile = MBED_CONF_APP_DEFAULT_MNO_PROFILE;
}
#endif
if (mno_profile == SW_DEFAULT) {
@@ -871,7 +872,7 @@
_psm_status = ENABLED;
if ( !(set_psm_urcs(true)) ) { //enable PSM URCs
tr_error("Modem does not support PSM URCs, disabling PSM");
- set_power_saving_mode(0, 0);
+ disable_power_saving_mode();
} else if (!_func_psm_going_in){
tr_critical("!!PSM IS ENABLED, CALLBACK NOT ATTACHED. PLEASE REGISTER ONE!!");
}
@@ -881,10 +882,12 @@
tr_critical("!!PSM IS ENABLED, CALLBACK NOT ATTACHED. PLEASE REGISTER ONE!!");
}
#elif TARGET_UBLOX_C030_R410M
- disable_psm(); //PSM is currently not supported by driver for R410M due to lack of URCs
+ disable_power_saving_mode(); //PSM is currently not supported by driver for R410M due to lack of URCs
#endif
- if (_at->is_idle_mode_enabled() == false) {
- set_idle_mode(false); //disable idle mode at start up
+ if (_at->is_idle_mode_enabled() == false || _psm_status == ENABLED) {
+ //application has not yet enabled idle mode so disable it
+ //PSM got enabled by MNO, disable idle mode.
+ set_idle_mode(false);
}
#endif
if (set_device_identity(&_dev_info.dev) && // Set up device identity
@@ -1633,12 +1636,17 @@
return status;
}
-bool UbloxCellularBase::disable_psm()
+bool UbloxCellularBase::disable_power_saving_mode()
{
bool return_value = false;
LOCK();
if (_at->send("AT+CPSMS=0") && _at->recv("OK")) {
+#ifdef TARGET_UBLOX_C030_R412M
+ _at->send("AT+UPSMR=0");
+ _at->recv("OK");
+#endif
+ _psm_status = DISABLED;
return_value = true;
}
UNLOCK();
@@ -1712,7 +1720,7 @@
break;
default:
- value = 0;
+ value = -1;
break;
}
*periodic_time = value;
@@ -1745,7 +1753,7 @@
break;
default:
- value = 0;
+ value = -1;
break;
}
*active_time = value;
@@ -1761,7 +1769,8 @@
bool UbloxCellularBase::set_power_saving_mode(int periodic_time, int active_time)
{
- if (_at->is_idle_mode_enabled() == true && periodic_time != 0 && active_time != 0 ) {
+ if (_at->is_idle_mode_enabled() == true) {
+ tr_error("Please disable idle mode(+UPSV) first");
return false;
}
bool return_val = false;
@@ -1770,14 +1779,7 @@
int at_timeout = _at_timeout;
at_set_timeout(10000); //AT+CPSMS has response time of < 10s
- if (periodic_time == 0 && active_time == 0) {
- // disable PSM
- if (_at->send("AT+CPSMS=0") && _at->recv("OK")) {
- set_psm_urcs(false); //disable the URC
- _psm_status = DISABLED;
- return_val = true;
- }
- } else if (_at->send("AT+UPSMR?") && _at->recv("OK")) { //PSM string encoding code borrowed from AT_CellularPower.cpp
+ if (_at->send("AT+UPSMR?") && _at->recv("OK")) { //PSM string encoding code borrowed from AT_CellularPower.cpp
/**
Table 10.5.163a/3GPP TS 24.008: GPRS Timer 3 information element