in sim70x0/cellular_sim70x0_api.c [330:391]
static CellularPktStatus_t _Cellular_RecvFuncGetSignalInfo( CellularContext_t * pContext,
const CellularATCommandResponse_t * pAtResp,
void * pData,
uint16_t dataLen )
{
char * pInputLine = NULL;
CellularSignalInfo_t * pSignalInfo = ( CellularSignalInfo_t * ) pData;
bool parseStatus = true;
CellularPktStatus_t pktStatus = CELLULAR_PKT_STATUS_OK;
CellularATError_t atCoreStatus = CELLULAR_AT_SUCCESS;
if( pContext == NULL )
{
pktStatus = CELLULAR_PKT_STATUS_INVALID_HANDLE;
}
else if( ( pSignalInfo == NULL ) || ( dataLen != sizeof( CellularSignalInfo_t ) ) )
{
pktStatus = CELLULAR_PKT_STATUS_BAD_PARAM;
}
else if( ( pAtResp == NULL ) || ( pAtResp->pItm == NULL ) || ( pAtResp->pItm->pLine == NULL ) )
{
LogError( ( "GetSignalInfo: Input Line passed is NULL" ) );
pktStatus = CELLULAR_PKT_STATUS_FAILURE;
}
else
{
pInputLine = pAtResp->pItm->pLine;
atCoreStatus = Cellular_ATRemovePrefix( &pInputLine );
if( atCoreStatus == CELLULAR_AT_SUCCESS )
{
atCoreStatus = Cellular_ATRemoveAllDoubleQuote( pInputLine );
}
if( atCoreStatus == CELLULAR_AT_SUCCESS )
{
atCoreStatus = Cellular_ATRemoveAllWhiteSpaces( pInputLine );
}
if( atCoreStatus != CELLULAR_AT_SUCCESS )
{
pktStatus = _Cellular_TranslateAtCoreStatus( atCoreStatus );
}
}
if( pktStatus == CELLULAR_PKT_STATUS_OK )
{
parseStatus = _parseSignalQuality( pInputLine, pSignalInfo );
if( parseStatus != true )
{
pSignalInfo->rssi = CELLULAR_INVALID_SIGNAL_VALUE;
pSignalInfo->rsrp = CELLULAR_INVALID_SIGNAL_VALUE;
pSignalInfo->rsrq = CELLULAR_INVALID_SIGNAL_VALUE;
pSignalInfo->ber = CELLULAR_INVALID_SIGNAL_VALUE;
pSignalInfo->bars = CELLULAR_INVALID_SIGNAL_BAR_VALUE;
pktStatus = CELLULAR_PKT_STATUS_FAILURE;
}
}
return pktStatus;
}