@startuml

Title FreeRTOS Cellular Library API implementation

participant Application
participant "FreeRTOS Cellular Library"
participant Cellular_modules_porting
participant Cellular_common
participant Cellular_modem

Application ->"FreeRTOS Cellular Library" : Cellular_GetSimCardStatus()

"FreeRTOS Cellular Library"->Cellular_modules_porting :Cellular_GetSimCardStatus()

Cellular_modules_porting->Cellular_common:Get module context passed in Cellular_ModuleInt() :\n_Cellular_GetModuleContext()

Cellular_modules_porting->Cellular_modules_porting:Setup AT commnand request:\nCellularAtReq_t = \n{\n    pAtCmd = "AT+QSIMSTAT?"\n    atCmdType = CELLULAR_AT_WITH_PREFIX\n    pAtRspPrefix = "+QSIMSTAT"\n    respCallback = _Cellular_RecvFuncGetSimCardStatus\n    pData = &simCardState\n    dataLen = sizeof( CellularSimCardState_t )\n};\n

Cellular_modules_porting->Cellular_common:Send AT command with cellular common APIs:\n _Cellular_AtcmdRequestWithCallback( CellularAtReq_t )

Cellular_common ->Cellular_modem : AT+QSIMSTAT?

Cellular_modem -> Cellular_common : +QSIMSTAT: ....

Cellular_modem -> Cellular_common : OK

Cellular_common ->Cellular_modules_porting : Call the callback function with corresponding data field \n_Cellular_RecvFuncGetSimCardStatus( pData, dataLen )

Cellular_modules_porting ->Application : Return parsing status and data

@enduml
