in modules/hl7802/cellular_hl7802.c [303:443]
CellularError_t Cellular_ModuleEnableUE( CellularContext_t * pContext )
{
CellularError_t cellularStatus = CELLULAR_SUCCESS;
CellularPktStatus_t pktStatus = CELLULAR_PKT_STATUS_OK;
CellularAtReq_t atReqGetNoResult =
{
NULL,
CELLULAR_AT_NO_RESULT,
NULL,
NULL,
NULL,
0
};
Hl7802BandConfig_t bandCfg = { 0 };
if( pContext != NULL )
{
/* Disable echo. */
atReqGetNoResult.pAtCmd = "ATE0";
cellularStatus = sendAtCommandWithRetryTimeout( pContext, &atReqGetNoResult,
CELLULAR_HL7802_AT_TIMEOUT_2_SECONDS_MS );
if( cellularStatus == CELLULAR_SUCCESS )
{
/* Disable DTR function. */
atReqGetNoResult.pAtCmd = "AT&D0";
pktStatus = _Cellular_TimeoutAtcmdRequestWithCallback( pContext, atReqGetNoResult,
CELLULAR_HL7802_AT_TIMEOUT_2_SECONDS_MS );
cellularStatus = _Cellular_TranslatePktStatus( pktStatus );
}
if( cellularStatus == CELLULAR_SUCCESS )
{
/* Enable RTS/CTS hardware flow control. */
atReqGetNoResult.pAtCmd = "AT+IFC=2,2";
pktStatus = _Cellular_TimeoutAtcmdRequestWithCallback( pContext, atReqGetNoResult,
CELLULAR_HL7802_AT_TIMEOUT_2_SECONDS_MS );
cellularStatus = _Cellular_TranslatePktStatus( pktStatus );
}
/* Set Radio Access Technology. */
if( cellularStatus == CELLULAR_SUCCESS )
{
/* In the Write format, <mode>=0 is used to switch to the first RAT
* in the preferred RAT list (PRL), and fall back to subsequent RATS
* in the PRL if cell coverage is lost. If the PRL is empty, switch to
* CAT-M1. To set the PRL, see AT+KSELACQ. */
atReqGetNoResult.pAtCmd = "AT+KSRAT=0";
pktStatus = _Cellular_TimeoutAtcmdRequestWithCallback( pContext, atReqGetNoResult,
CELLULAR_HL7802_AT_TIMEOUT_2_SECONDS_MS );
cellularStatus = _Cellular_TranslatePktStatus( pktStatus );
}
/* Set Default Radio Access Technology. */
if( cellularStatus == CELLULAR_SUCCESS )
{
switch( CELLULAR_CONFIG_DEFAULT_RAT )
{
case CELLULAR_RAT_CATM1:
atReqGetNoResult.pAtCmd = "AT+KSELACQ=0,1";
break;
case CELLULAR_RAT_NBIOT:
atReqGetNoResult.pAtCmd = "AT+KSELACQ=0,2";
break;
case CELLULAR_RAT_GSM:
atReqGetNoResult.pAtCmd = "AT+KSELACQ=0,3";
break;
default:
break;
}
pktStatus = _Cellular_TimeoutAtcmdRequestWithCallback( pContext, atReqGetNoResult,
CELLULAR_HL7802_AT_KSELACQ_TIMEOUT_MS );
cellularStatus = _Cellular_TranslatePktStatus( pktStatus );
}
/* Set Configured LTE Band. */
if( cellularStatus == CELLULAR_SUCCESS )
{
cellularStatus = getBandCfg( pContext, &bandCfg );
}
if( cellularStatus == CELLULAR_SUCCESS )
{
if( strcmp( bandCfg.catm1BandCfg, CELLULAR_CONFIG_HL7802_CATM1_BAND ) != 0 )
{
LogInfo( ( "Cellular_ModuleEnableUE : CAT-M1 band desired %s actual %s",
CELLULAR_CONFIG_HL7802_CATM1_BAND, bandCfg.catm1BandCfg ) );
atReqGetNoResult.pAtCmd = "AT+KBNDCFG=0,"CELLULAR_CONFIG_HL7802_CATM1_BAND;
pktStatus = _Cellular_TimeoutAtcmdRequestWithCallback( pContext, atReqGetNoResult,
CELLULAR_HL7802_AT_TIMEOUT_2_SECONDS_MS );
cellularStatus = _Cellular_TranslatePktStatus( pktStatus );
}
}
if( cellularStatus == CELLULAR_SUCCESS )
{
if( strcmp( bandCfg.nbiotBandCfg, CELLULAR_CONFIG_HL7802_NBIOT_BAND ) != 0 )
{
LogInfo( ( "Cellular_ModuleEnableUE : NBIOT band desired %s actual %s",
CELLULAR_CONFIG_HL7802_NBIOT_BAND, bandCfg.nbiotBandCfg ) );
atReqGetNoResult.pAtCmd = "AT+KBNDCFG=1,"CELLULAR_CONFIG_HL7802_NBIOT_BAND;
pktStatus = _Cellular_TimeoutAtcmdRequestWithCallback( pContext, atReqGetNoResult,
CELLULAR_HL7802_AT_TIMEOUT_2_SECONDS_MS );
cellularStatus = _Cellular_TranslatePktStatus( pktStatus );
}
}
/* Disable standalone sleep mode. */
if( cellularStatus == CELLULAR_SUCCESS )
{
atReqGetNoResult.pAtCmd = "AT+KSLEEP=2";
pktStatus = _Cellular_TimeoutAtcmdRequestWithCallback( pContext, atReqGetNoResult,
CELLULAR_HL7802_AT_TIMEOUT_2_SECONDS_MS );
cellularStatus = _Cellular_TranslatePktStatus( pktStatus );
}
/* Force initialization of radio to consider new configured bands. */
if( cellularStatus == CELLULAR_SUCCESS )
{
atReqGetNoResult.pAtCmd = "AT+CFUN=1,1";
pktStatus = _Cellular_TimeoutAtcmdRequestWithCallback( pContext, atReqGetNoResult,
CELLULAR_HL7802_AT_TIMEOUT_30_SECONDS_MS );
cellularStatus = _Cellular_TranslatePktStatus( pktStatus );
}
/* Disable echo after reboot device. */
if( cellularStatus == CELLULAR_SUCCESS )
{
Platform_Delay( CELLULAR_HL7802_RESET_DELAY_MS );
atReqGetNoResult.pAtCmd = "ATE0";
cellularStatus = sendAtCommandWithRetryTimeout( pContext, &atReqGetNoResult,
CELLULAR_HL7802_AT_TIMEOUT_2_SECONDS_MS );
}
}
return cellularStatus;
}