CellularPktStatus_t _Cellular_ParseSimstat()

in sim70x0/cellular_sim70x0_urc_handler.c [1036:1131]


CellularPktStatus_t _Cellular_ParseSimstat( char * pInputStr,
                                            CellularSimCardStatus_t * pSimStuts )
{
    /*Handling +CPIN: <state> */
    CellularPktStatus_t pktStatus = CELLULAR_PKT_STATUS_OK;
    CellularATError_t atCoreStatus = CELLULAR_AT_SUCCESS;
    char * pToken = NULL;
    char * pLocalInputStr = pInputStr;

    if( ( pInputStr == NULL ) || ( strlen( pInputStr ) == 0U ) ||
        ( strlen( pInputStr ) < 2U ) || ( pSimStuts == NULL ) )
    {
        LogError( ( "_Cellular_ProcessQsimstat Input data is invalid %s", pInputStr ) );
        pktStatus = CELLULAR_PKT_STATUS_BAD_PARAM;
    }
    else
    {
        #if 0
            atCoreStatus = Cellular_ATGetNextTok( &pLocalInputStr, &pToken );

            if( atCoreStatus == CELLULAR_AT_SUCCESS )
            {
                LogDebug( ( "URC Enable: %s", pToken ) );
                atCoreStatus = Cellular_ATGetNextTok( &pLocalInputStr, &pToken );
            }
        #endif
        pToken = pLocalInputStr;

        atCoreStatus = Cellular_ATRemoveAllWhiteSpaces( pToken );

        if( atCoreStatus == CELLULAR_AT_SUCCESS )
        {
            LogDebug( ( " Sim status: %s", pToken ) );

            if( strcmp( pToken, "READY" ) == 0 )
            {
                pSimStuts->simCardState = CELLULAR_SIM_CARD_INSERTED;
                pSimStuts->simCardLockState = CELLULAR_SIM_CARD_READY;
            }
            else if( strcmp( pToken, "NOT READY" ) == 0 )
            {
                pSimStuts->simCardState = CELLULAR_SIM_CARD_INSERTED;
                pSimStuts->simCardLockState = CELLULAR_SIM_CARD_LOCK_UNKNOWN;
            }
            else if( strcmp( pToken, "SIM PIN" ) == 0 )
            {
                pSimStuts->simCardState = CELLULAR_SIM_CARD_INSERTED;
                pSimStuts->simCardLockState = CELLULAR_SIM_CARD_PIN;
            }
            else if( strcmp( pToken, "SIM PUK" ) == 0 )
            {
                pSimStuts->simCardState = CELLULAR_SIM_CARD_INSERTED;
                pSimStuts->simCardLockState = CELLULAR_SIM_CARD_PUK;
            }
            else if( strcmp( pToken, "PH_SIM PIN" ) == 0 )
            {
                pSimStuts->simCardState = CELLULAR_SIM_CARD_INSERTED;
                pSimStuts->simCardLockState = CELLULAR_SIM_CARD_PH_NET_PIN;
            }
            else if( strcmp( pToken, "PH_SIM PUK" ) == 0 )
            {
                pSimStuts->simCardState = CELLULAR_SIM_CARD_INSERTED;
                pSimStuts->simCardLockState = CELLULAR_SIM_CARD_PH_NET_PUK;
            }
            else if( strcmp( pToken, "PH_NET PIN" ) == 0 )
            {
                pSimStuts->simCardState = CELLULAR_SIM_CARD_INSERTED;
                pSimStuts->simCardLockState = CELLULAR_SIM_CARD_PH_NETSUB_PIN;
            }
            else if( strcmp( pToken, "SIM PIN2" ) == 0 )
            {
                pSimStuts->simCardState = CELLULAR_SIM_CARD_INSERTED;
                pSimStuts->simCardLockState = CELLULAR_SIM_CARD_PIN2;
            }
            else if( strcmp( pToken, "SIM PUK2" ) == 0 )
            {
                pSimStuts->simCardState = CELLULAR_SIM_CARD_INSERTED;
                pSimStuts->simCardLockState = CELLULAR_SIM_CARD_PUK2;
            }
            else if( strcmp( pToken, "NOT INSERT" ) == 0 )
            {
                pSimStuts->simCardState = CELLULAR_SIM_CARD_REMOVED;
                pSimStuts->simCardLockState = CELLULAR_SIM_CARD_LOCK_UNKNOWN;
            }
            else
            {
                LogError( ( "Error in processing SIM state. token %s", pToken ) );
                atCoreStatus = CELLULAR_AT_ERROR;
            }
        }

        pktStatus = _Cellular_TranslateAtCoreStatus( atCoreStatus );
    }

    return pktStatus;
}