in modules/bg96/cellular_bg96_api.c [653:740]
static CellularPktStatus_t _Cellular_RecvFuncGetHplmn( CellularContext_t * pContext,
const CellularATCommandResponse_t * pAtResp,
void * pData,
uint16_t dataLen )
{
bool parseStatus = true;
CellularPktStatus_t pktStatus = CELLULAR_PKT_STATUS_OK;
CellularATError_t atCoreStatus = CELLULAR_AT_SUCCESS;
char * pCrsmResponse = NULL, * pToken = NULL;
if( pContext == NULL )
{
pktStatus = CELLULAR_PKT_STATUS_INVALID_HANDLE;
}
else if( ( pAtResp == NULL ) || ( pAtResp->pItm == NULL ) || ( pAtResp->pItm->pLine == NULL ) ||
( pData == NULL ) || ( dataLen != sizeof( CellularPlmnInfo_t ) ) )
{
LogError( ( "GetHplmn: Response is invalid " ) );
pktStatus = CELLULAR_PKT_STATUS_BAD_PARAM;
}
else
{
pCrsmResponse = pAtResp->pItm->pLine;
atCoreStatus = Cellular_ATRemoveAllWhiteSpaces( pCrsmResponse );
if( atCoreStatus == CELLULAR_AT_SUCCESS )
{
/* Removing the CRSM prefix in AT Response. */
atCoreStatus = Cellular_ATRemovePrefix( &pCrsmResponse );
}
if( atCoreStatus == CELLULAR_AT_SUCCESS )
{
/* Removing All quotes in the AT Response. */
atCoreStatus = Cellular_ATRemoveAllDoubleQuote( pCrsmResponse );
}
if( atCoreStatus == CELLULAR_AT_SUCCESS )
{
/* Getting the next token separated by comma in At Response*/
atCoreStatus = Cellular_ATGetNextTok( &pCrsmResponse, &pToken );
}
if( atCoreStatus == CELLULAR_AT_SUCCESS )
{
parseStatus = _checkCrsmReadStatus( pToken );
if( !parseStatus )
{
atCoreStatus = CELLULAR_AT_ERROR;
}
}
if( atCoreStatus == CELLULAR_AT_SUCCESS )
{
atCoreStatus = Cellular_ATGetNextTok( &pCrsmResponse, &pToken );
}
if( atCoreStatus == CELLULAR_AT_SUCCESS )
{
parseStatus = _checkCrsmMemoryStatus( pToken );
if( !parseStatus )
{
atCoreStatus = CELLULAR_AT_ERROR;
}
}
if( atCoreStatus == CELLULAR_AT_SUCCESS )
{
atCoreStatus = Cellular_ATGetNextTok( &pCrsmResponse, &pToken );
}
if( atCoreStatus == CELLULAR_AT_SUCCESS )
{
parseStatus = _parseHplmn( pToken, pData );
if( !parseStatus )
{
atCoreStatus = CELLULAR_AT_ERROR;
}
}
pktStatus = _Cellular_TranslateAtCoreStatus( atCoreStatus );
}
return pktStatus;
}