Skip to content

Instantly share code, notes, and snippets.

@phlegx
Last active March 17, 2022 12:30
Show Gist options
  • Save phlegx/45a515a0331bdcc64865a93905ab721b to your computer and use it in GitHub Desktop.
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.
{
"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",
...
}
}
}
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