Last active
March 17, 2022 12:30
-
-
Save phlegx/45a515a0331bdcc64865a93905ab721b to your computer and use it in GitHub Desktop.
Mbed OS 5.15.8: Add +UMNOPROF set option, set +URAT only if required and add third RAT to RAT list.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"config": { | |
... | |
"cellular-mno": { | |
"help": "Ublox SARA R412M cellular MNO Profile (100: Standard Europe)", | |
"value": 100 | |
}, | |
... | |
}, | |
"target_overrides": { | |
"*": { | |
... | |
"cellular.radio-access-technology": "CellularNetwork::RadioAccessTechnology::RAT_EGPRS", | |
... | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
nsapi_error_t UBLOX_AT_CellularNetwork::set_access_technology_impl(RadioAccessTechnology opRat) | |
{ | |
nsapi_error_t ret = NSAPI_ERROR_OK; | |
CellularNetwork::AttachStatus status; | |
get_attach(status); | |
if (status == Attached) { | |
tr_debug("RAT should only be set in detached state"); | |
return NSAPI_ERROR_UNSUPPORTED; | |
} | |
/* Add +UMNOPROF set option. */ | |
#if defined (UBX_MDM_SARA_R412M) | |
_at.lock(); | |
int mno; | |
_at.at_cmd_int("+UMNOPROF", "?", mno); | |
if (mno != (int)MBED_CONF_APP_CELLULAR_MNO) { | |
_at.at_cmd_discard("+UMNOPROF", "=", "%d", (int)MBED_CONF_APP_CELLULAR_MNO); | |
_at.unlock(); | |
ubx_reboot(); | |
} else { | |
_at.unlock(); | |
} | |
#endif | |
/* End add +UMNOPROF set option. */ | |
_at.lock(); | |
/* Check radio access technology (RAT). If RAT change is required set new RAT. */ | |
int act; | |
CellularNetwork::RadioAccessTechnology rat; | |
_at.at_cmd_int("+URAT", "?", act); | |
switch (act) { | |
case 0: | |
rat = CellularNetwork::RadioAccessTechnology::RAT_GSM; | |
break; | |
case 1: | |
rat = CellularNetwork::RadioAccessTechnology::RAT_GSM; | |
break; | |
case 2: | |
rat = CellularNetwork::RadioAccessTechnology::RAT_UTRAN; | |
break; | |
case 7: | |
rat = CellularNetwork::RadioAccessTechnology::RAT_CATM1; | |
break; | |
case 8: | |
rat = CellularNetwork::RadioAccessTechnology::RAT_NB1; | |
break; | |
case 9: | |
rat = CellularNetwork::RadioAccessTechnology::RAT_EGPRS; | |
break; | |
default: | |
rat = CellularNetwork::RadioAccessTechnology::RAT_UNKNOWN; | |
break; | |
} | |
if (opRat == rat) { | |
_at.unlock(); | |
return (ret); | |
} | |
/* End check radio access technology (RAT). If RAT change is required set new RAT. */ | |
switch (opRat) { | |
case RAT_EGPRS: | |
#if defined (UBX_MDM_SARA_R412M) | |
/* Replace RAT list with additional third RAT. */ | |
/* _at.at_cmd_discard("+URAT", "=", "%d%d", 9, 8); */ | |
_at.at_cmd_discard("+URAT", "=", "%d%d%d", 9, 8, 7); | |
break; | |
#endif | |
#if defined(UBX_MDM_SARA_U201) | |
case RAT_GSM: | |
_at.at_cmd_discard("+URAT", "=", "%d%d", 0, 0); | |
break; | |
case RAT_UTRAN:RAT_EGPRS | |
case RAT_HSDPA: | |
case RAT_HSUPA: | |
case RAT_HSDPA_HSUPA: | |
_at.at_cmd_discard("+URAT", "=", "%d%d", 2, 2); | |
break; | |
#elif defined(UBX_MDM_SARA_R41XM) | |
case RAT_CATM1: | |
/* Replace RAT list with additional third RAT. */ | |
/* _at.at_cmd_discard("+URAT", "=", "%d%d", 7, 8); */ | |
_at.at_cmd_discard("+URAT", "=", "%d%d%d", 7, 8, 9); | |
break; | |
case RAT_NB1: | |
/* Replace RAT list with additional third RAT. */ | |
/* _at.at_cmd_discard("+URAT", "=", "%d%d", 8, 7); */ | |
_at.at_cmd_discard("+URAT", "=", "%d%d%d", 8, 7, 9); | |
break; | |
#endif | |
default: | |
_op_act = RAT_UNKNOWN; | |
ret = NSAPI_ERROR_UNSUPPORTED; | |
break; | |
} | |
_at.unlock(); | |
ubx_reboot(); | |
return (ret); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment