Ejemplo n.º 1
0
void KRIL_SRIL_requestOemSimOut(void *ril_cmd, Kril_CAPI2Info_t *capi2_rsp)
{
	KRIL_CmdList_t *pdata = (KRIL_CmdList_t*)ril_cmd;
	KRIL_DEBUG(DBG_ERROR,"KRIL_SRIL_requestOemSimOut \n");

	switch (pdata->handler_state)
	{
		case BCM_SendCAPI2Cmd:
		{
			ClientInfo_t clientInfo;
			CAPI2_InitClientInfo(&clientInfo, GetNewTID(), GetClientID());
			clientInfo.simId = pdata->ril_cmd->SimId;

                    if(clientInfo.simId == SIM_ALL)
                   {

                          KRIL_DEBUG(DBG_ERROR,"KRIL_SRIL_requestOemSimOut SIM_ALL \n");

			CAPI2_SimApi_PowerOnOffCard (InitClientInfo(SIM_DUAL_FIRST), FALSE, SIM_POWER_ON_INVALID_MODE);
			CAPI2_SimApi_PowerOnOffCard (InitClientInfo(SIM_DUAL_SECOND), FALSE, SIM_POWER_ON_INVALID_MODE);
                   }
                    else
                    {
                    
                        KRIL_DEBUG(DBG_ERROR,"KRIL_SRIL_requestOemSimOut SIM_SINGLE \n");
                        CAPI2_SimApi_PowerOnOffCard (InitClientInfo(SIM_DUAL_FIRST), FALSE, SIM_POWER_ON_INVALID_MODE);
                    }
			pdata->handler_state = BCM_FinishCAPI2Cmd;
		}
		break;

		default:
		{
			KRIL_DEBUG(DBG_ERROR, "handler_state:%lu error...!\n", pdata->handler_state);
			pdata->handler_state = BCM_ErrorCAPI2Cmd;
		}
		break;
	}
	
	return;
}
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;
    }
}