in qgsm/cellular_qgsm_api.c [2444:2518]
CellularError_t Cellular_GetSimCardInfo( CellularHandle_t cellularHandle,
CellularSimCardInfo_t * pSimCardInfo )
{
CellularContext_t * pContext = ( CellularContext_t * ) cellularHandle;
CellularError_t cellularStatus = CELLULAR_SUCCESS;
CellularPktStatus_t pktStatus = CELLULAR_PKT_STATUS_OK;
CellularAtReq_t atReqGetIccid =
{
"AT+QCCID",
CELLULAR_AT_WITH_PREFIX,
"+QCCID",
_Cellular_RecvFuncGetIccid,
pSimCardInfo->iccid,
CELLULAR_ICCID_MAX_SIZE + 1U,
};
CellularAtReq_t atReqGetImsi =
{
"AT+CIMI",
CELLULAR_AT_WO_PREFIX,
NULL,
_Cellular_RecvFuncGetImsi,
pSimCardInfo->imsi,
CELLULAR_IMSI_MAX_SIZE + 1U,
};
CellularAtReq_t atReqGetHplmn =
{
"AT+CRSM=176,28514,0,0,0",
CELLULAR_AT_WITH_PREFIX,
"+CRSM",
_Cellular_RecvFuncGetHplmn,
&pSimCardInfo->plmn,
sizeof( CellularPlmnInfo_t ),
};
/* pContext is checked in _Cellular_CheckLibraryStatus function. */
cellularStatus = _Cellular_CheckLibraryStatus( pContext );
if( cellularStatus != CELLULAR_SUCCESS )
{
LogDebug( ( "_Cellular_CheckLibraryStatus failed" ) );
}
else if( pSimCardInfo == NULL )
{
cellularStatus = CELLULAR_BAD_PARAMETER;
}
else
{
( void ) memset( pSimCardInfo, 0, sizeof( CellularSimCardInfo_t ) );
pktStatus = _Cellular_AtcmdRequestWithCallback( pContext, atReqGetImsi );
if( pktStatus == CELLULAR_PKT_STATUS_OK )
{
pktStatus = _Cellular_AtcmdRequestWithCallback( pContext, atReqGetHplmn );
}
if( pktStatus == CELLULAR_PKT_STATUS_OK )
{
pktStatus = _Cellular_AtcmdRequestWithCallback( pContext, atReqGetIccid );
}
if( pktStatus != CELLULAR_PKT_STATUS_OK )
{
cellularStatus = _Cellular_TranslatePktStatus( pktStatus );
}
else
{
LogDebug( ( "SimInfo updated: IMSI:%s, Hplmn:%s%s, ICCID:%s",
pSimCardInfo->imsi, pSimCardInfo->plmn.mcc, pSimCardInfo->plmn.mnc,
pSimCardInfo->iccid ) );
}
}
return cellularStatus;
}