void CAPI2_SimLockApi_GetStatus(ClientInfo_t* inClientInfoPtr, SIMLOCK_SIM_DATA_t *sim_data, Boolean is_testsim) #endif { SIMLOCK_STATE_t simlock_state; char msg[5 + IMSI_DIGITS + 1 + 1 + GID_DIGITS + 1 + GID_DIGITS] ; ///< NULL terminated IMSI string in ASCII format KRIL_DEBUG(DBG_INFO,"Get SIM lock status\n"); SetSIMData(inClientInfoPtr->simId,sim_data); simlock_state.network_lock_enabled = FALSE; simlock_state.network_subset_lock_enabled = FALSE; simlock_state.service_provider_lock_enabled = FALSE; simlock_state.corporate_lock_enabled = FALSE; simlock_state.phone_lock_enabled = FALSE; simlock_state.network_lock = SIM_SECURITY_OPEN; simlock_state.network_subset_lock = SIM_SECURITY_OPEN; simlock_state.service_provider_lock = SIM_SECURITY_OPEN; simlock_state.corporate_lock = SIM_SECURITY_OPEN; simlock_state.phone_lock = SIM_SECURITY_OPEN; #ifdef CONFIG_BRCM_SIM_SECURE_ENABLE SIMLockCheckAllLocks(inClientInfoPtr->simId,sim_data->imsi_string, (0 != sim_data->gid1_len ? sim_data->gid1 : NULL), (0 != sim_data->gid2_len ? sim_data->gid2 : NULL)); SIMLockUpdateSIMLockState(inClientInfoPtr->simId); SIMLockGetSIMLockState(inClientInfoPtr->simId, &simlock_state); #endif //CONFIG_BRCM_SIM_SECURE_ENABLE CAPI2_SimLockApi_GetStatus_RSP(inClientInfoPtr, simlock_state); memset(msg,0,sizeof(msg)); msg[0]=(UInt8)'B'; msg[1]=(UInt8)'R'; msg[2]=(UInt8)'C'; msg[3]=(UInt8)'M'; msg[4]=(UInt8)BRIL_HOOK_UNSOL_SIM_DATA; strncpy(&msg[5],(char*)sim_data->imsi_string,(IMSI_DIGITS+1)); //IMSI msg[5 + IMSI_DIGITS +1] = sim_data->gid1_len; if (sim_data->gid1_len > 0) memcpy(&msg[5 + IMSI_DIGITS + 1 + 1], sim_data->gid1, GID_DIGITS); //GID1 msg[5 + IMSI_DIGITS + 1 + 1 + GID_DIGITS] = sim_data->gid2_len; if (sim_data->gid2_len > 0) memcpy(&msg[5 + IMSI_DIGITS + 1 + 1 + GID_DIGITS + 1], sim_data->gid2, GID_DIGITS); //GID2 KRIL_SendNotify(inClientInfoPtr->simId, BRCM_RIL_UNSOL_OEM_HOOK_RAW, msg, sizeof(msg)); }
void KRIL_QuerySimEmergencyNumberHandler(void *ril_cmd, Kril_CAPI2Info_t *capi2_rsp) { KRIL_CmdList_t *pdata = (KRIL_CmdList_t*)ril_cmd; if (capi2_rsp != NULL) { KRIL_DEBUG(DBG_INFO, "handler_state:0x%lX::msgType:%d result:%d\n", pdata->handler_state, capi2_rsp->msgType, capi2_rsp->result); if(capi2_rsp->result != RESULT_OK) { pdata->result = RILErrorResult(capi2_rsp->result); pdata->handler_state = BCM_ErrorCAPI2Cmd; return; } } switch (pdata->handler_state) { case BCM_SendCAPI2Cmd: { pdata->bcm_ril_rsp = kmalloc(sizeof(Kril_SIMEmergency), GFP_KERNEL); pdata->rsp_len = sizeof(Kril_SIMEmergency); memset(pdata->bcm_ril_rsp, 0, pdata->rsp_len); CAPI2_PBK_SendInfoReq(GetNewTID(), GetClientID(), PB_EN); pdata->handler_state = BCM_PBK_SendInfoReq; break; } case BCM_PBK_SendInfoReq: { PBK_INFO_RSP_t *rsp = (PBK_INFO_RSP_t *) capi2_rsp->dataBuf; KRIL_DEBUG(DBG_INFO,"total_entries:[%d] result:[%d]\n", rsp->total_entries, rsp->result); if (0 == rsp->total_entries ||FALSE == rsp->result) { Kril_SIMEmergency *rdata = (Kril_SIMEmergency *)pdata->bcm_ril_rsp; rdata->simAppType = KRIL_GetSimAppType(); KRIL_SendNotify(BRIL_UNSOL_EMERGENCY_NUMBER, pdata->bcm_ril_rsp, pdata->rsp_len); pdata->handler_state = BCM_FinishCAPI2Cmd; } else { CAPI2_PBK_SendReadEntryReq(GetNewTID(), GetClientID(), PB_EN, 0, (rsp->total_entries-1)); pdata->handler_state = BCM_PBK_ReadENEnteryReq; } break; } case BCM_PBK_ReadENEnteryReq: { PBK_ENTRY_DATA_RSP_t *rsp = (PBK_ENTRY_DATA_RSP_t *) capi2_rsp->dataBuf; Kril_SIMEmergency *rdata = (Kril_SIMEmergency *)pdata->bcm_ril_rsp; if(rsp == NULL || rdata == NULL) { KRIL_DEBUG(DBG_INFO,"rsp or rdata is NULL. ERROR!!"); pdata->handler_state = BCM_ErrorCAPI2Cmd; return; } KRIL_DEBUG(DBG_INFO,"rsp->data_result:%d\n", rsp->data_result); if (rsp->data_result == PBK_ENTRY_VALID_IS_LAST || rsp->data_result == PBK_ENTRY_VALID_NOT_LAST) { KRIL_DEBUG(DBG_INFO,"simecclist:[%s] number:[%s] numlen:%d\n", rdata->simecclist, rsp->pbk_rec.number, strlen(rsp->pbk_rec.number)); if (strlen(rsp->pbk_rec.number) != 0 && !(strcmp("112", rsp->pbk_rec.number) == 0 || strcmp("911", rsp->pbk_rec.number) == 0)) { if (strlen(rdata->simecclist) != 0) { sprintf(&rdata->simecclist[0], "%s%s%s", rdata->simecclist, ",", rsp->pbk_rec.number); } else { strcpy(rdata->simecclist, rsp->pbk_rec.number); } } if (rsp->data_result == PBK_ENTRY_VALID_IS_LAST) { rdata->simAppType = KRIL_GetSimAppType(); KRIL_SendNotify(BRIL_UNSOL_EMERGENCY_NUMBER, pdata->bcm_ril_rsp, pdata->rsp_len); pdata->handler_state = BCM_FinishCAPI2Cmd; } } else { rdata->simAppType = KRIL_GetSimAppType(); KRIL_SendNotify(BRIL_UNSOL_EMERGENCY_NUMBER, pdata->bcm_ril_rsp, pdata->rsp_len); pdata->handler_state = BCM_FinishCAPI2Cmd; } break; } default: { KRIL_DEBUG(DBG_ERROR,"Error handler_state:0x%lX\n", pdata->handler_state); pdata->handler_state = BCM_ErrorCAPI2Cmd; break; } } }
void KRIL_RadioPowerHandler(void *ril_cmd, Kril_CAPI2Info_t *capi2_rsp) { KRIL_CmdList_t *pdata = (KRIL_CmdList_t *)ril_cmd; ClientInfo_t clientInfo; if (capi2_rsp != NULL) KRIL_DEBUG(DBG_INFO, "handler_state:0x%lX::result:%d\n", pdata->handler_state, capi2_rsp->result); switch (pdata->handler_state) { case BCM_SendCAPI2Cmd: { int *OnOff = (int *)(pdata->ril_cmd->data); KRIL_DEBUG(DBG_INFO, "On-Off:%d\n", *OnOff); if(gIsStkRefreshReset == TRUE){ RadioDuringRefresh ++; KRIL_DEBUG(DBG_INFO, "Refresh : RadioDuringRefresh %d\n",RadioDuringRefresh); if(RadioDuringRefresh >= 3){ if(RadioDuringRefresh == 4){ RadioDuringRefresh = 0; gIsStkRefreshReset = FALSE; } KRIL_DEBUG(DBG_INFO, "Skip power on-off - Refresh\n"); pdata->bcm_ril_rsp = NULL; pdata->rsp_len = 0; pdata->handler_state = BCM_FinishCAPI2Cmd; break; } if(*OnOff == 0){ KRIL_DEBUG(DBG_INFO, "Power off Sim card - Refresh\n"); CAPI2_InitClientInfo(&clientInfo, GetNewTID(), GetClientID()); CAPI2_SimApi_PowerOnOffCard (&clientInfo, FALSE, SIM_POWER_ON_INVALID_MODE); pdata->handler_state = BCM_RESPCAPI2Cmd; }else{ KRIL_DEBUG(DBG_INFO, "Power on Sim card - Refresh\n"); CAPI2_InitClientInfo(&clientInfo, GetNewTID(), GetClientID()); CAPI2_SimApi_PowerOnOffCard (&clientInfo, TRUE, SIM_POWER_ON_NORMAL_MODE); pdata->handler_state = BCM_RESPCAPI2Cmd; //gIsStkRefreshReset = FALSE; } break; } else { if (*OnOff == 1) { CAPI2_InitClientInfo(&clientInfo, GetNewTID(), GetClientID()); CAPI2_PhoneCtrlApi_ProcessPowerUpReq(&clientInfo); pdata->handler_state = BCM_RESPCAPI2Cmd; } else{ CAPI2_InitClientInfo(&clientInfo, GetNewTID(), GetClientID()); CAPI2_PhoneCtrlApi_ProcessNoRfReq(&clientInfo); pdata->handler_state = BCM_RESPCAPI2Cmd; } break; } } case BCM_RESPCAPI2Cmd: { //Irine_22June_airplanemode int *OnOff = (int *)(pdata->ril_cmd->data); KRIL_DEBUG(DBG_TRACE, "handler state:%lu\n", pdata->handler_state); pdata->bcm_ril_rsp = NULL; pdata->rsp_len = 0; pdata->handler_state = BCM_FinishCAPI2Cmd; KRIL_DEBUG(DBG_INFO, "On-Off:%d\n", *OnOff); if (1 == *OnOff) { KRIL_DEBUG(DBG_ERROR, "KRIL_RadioPowerHandler: Offline off\n"); KRIL_DEBUG(DBG_ERROR, "satk_setup_menu_tlv_data_string: %s\n",satk_setup_menu_tlv_data_string); KRIL_DEBUG(DBG_ERROR, "satk_setup_menu_tlv_length: %d\n",satk_setup_menu_tlv_length); if(satk_setup_menu_tlv_length!=0) KRIL_SendNotify(RIL_UNSOL_STK_PROACTIVE_COMMAND, satk_setup_menu_tlv_data_string, (satk_setup_menu_tlv_length * 2 + 1)); } break; } default: { KRIL_DEBUG(DBG_ERROR, "handler_state:%lu error...!\n", pdata->handler_state); pdata->handler_state = BCM_ErrorCAPI2Cmd; break; } } if (pdata->handler_state == BCM_ErrorCAPI2Cmd || pdata->handler_state == BCM_FinishCAPI2Cmd) { /* allow to send the radio state change notification to Android framework when request is done. */ gIsFlightModeOnBoot = FALSE; } }