/* Copyright Statement:
 *
 * This software/firmware and related documentation ("MediaTek Software") are
 * protected under relevant copyright laws. The information contained herein
 * is confidential and proprietary to MediaTek Inc. and/or its licensors.
 * Without the prior written permission of MediaTek inc. and/or its licensors,
 * any reproduction, modification, use or disclosure of MediaTek Software,
 * and information contained herein, in whole or in part, shall be strictly prohibited.
 */
/* MediaTek Inc. (C) 2010. All rights reserved.
 *
 * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
 * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
 * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
 * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
 * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
 * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
 * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
 * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
 * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
 * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
 * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
 * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
 * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
 * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
 * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
 * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
 *
 * The following software/firmware and/or related documentation ("MediaTek Software")
 * have been modified by MediaTek Inc. All revisions are subject to any receiver's
 * applicable license agreements with MediaTek Inc.
 */
//SIM
    {"RIL_REQUEST_GET_IMSI",getIMSIForApp, "get imsi", RIL_REQUEST_GET_IMSI},
    {"RIL_REQUEST_GET_SIM_STATUS",getIccCardStatus, "get sim status", RIL_REQUEST_GET_SIM_STATUS},
    {"RIL_REQUEST_ENTER_SIM_PIN",supplyIccPinForApp, "enter sim pin", RIL_REQUEST_ENTER_SIM_PIN},
    {"RIL_REQUEST_CHANGE_SIM_PIN",changeIccPinForApp, "change sim pin", RIL_REQUEST_CHANGE_SIM_PIN},
    {"RIL_REQUEST_ENTER_SIM_PUK",supplyIccPukForApp, "enter puk & pin", RIL_REQUEST_ENTER_SIM_PUK},
    {"RIL_REQUEST_QUERY_ICCID", queryIccidForApp,"get iccid", RIL_REQUEST_QUERY_ICCID},
    {"RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC", iccTransmitApduBasicChannel, "",RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC},
    {"RIL_REQUEST_SIM_OPEN_CHANNEL", iccOpenLogicalChannel, "", RIL_REQUEST_SIM_OPEN_CHANNEL},
    {"RIL_REQUEST_SIM_CLOSE_CHANNEL", iccCloseLogicalChannel, "", RIL_REQUEST_SIM_CLOSE_CHANNEL},
    {"RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL", iccTransmitApduLogicalChannel, "", RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL},
    {"RIL_REQUEST_SIM_IO", iccIOForApp, "", RIL_REQUEST_SIM_IO},
//Data
    {"RIL_REQUEST_ALLOW_DATA",setDataAllowed, "allow data", RIL_REQUEST_ALLOW_DATA},
    {"RIL_REQUEST_SETUP_DATA_CALL",setupDataCall, "set up data", RIL_REQUEST_SETUP_DATA_CALL},
    {"RIL_REQUEST_DEACTIVATE_DATA_CALL",deactivateDataCall, "deactive data call", RIL_REQUEST_DEACTIVATE_DATA_CALL},
    {"RIL_REQUEST_SET_INITIAL_ATTACH_APN",setInitialAttachApnargc, "intial attach apn", RIL_REQUEST_SET_INITIAL_ATTACH_APN},
    {"RIL_REQUEST_DATA_CALL_LIST",getDataCallList,"get data call list",RIL_REQUEST_DATA_CALL_LIST},
    {"RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE",getLastDataCallFailCause, "last data fail cause" ,RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE},
    {"RIL_REQUEST_SET_DATA_PROFILE",setDataProfile, "set data profile", RIL_REQUEST_SET_DATA_PROFILE},
    {"RIL_REQUEST_SYNC_DATA_SETTINGS_TO_MD",syncDataSettingsToMd, "sync data settings to modem", RIL_REQUEST_SYNC_DATA_SETTINGS_TO_MD},
//CC
    {"RIL_REQUEST_DIAL",dial,"dial",RIL_REQUEST_DIAL},
    {"RIL_REQUEST_HANGUP",hangupConnection,"hangup",RIL_REQUEST_HANGUP},
    {"RIL_REQUEST_SEPARATE_CONNECTION",separateConnection,"separate",RIL_REQUEST_SEPARATE_CONNECTION},
    {"RIL_REQUEST_UDUB",rejectCall,"reject call",RIL_REQUEST_UDUB},
    {"RIL_REQUEST_ANSWER",acceptCall,"accept call",RIL_REQUEST_ANSWER},
    {"RIL_REQUEST_CONFERENCE",conference,"conference",RIL_REQUEST_CONFERENCE},
    {"RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND",hangupWaitingOrBackground,"hangup Waiting or Background",RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND},
    {"RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE",switchWaitingOrHoldingAndActive,"switch Waiting Or Holding And Active",RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE},
    {"RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND",hangupForegroundResumeBackground,"hangup Foreground Resume Background",RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND},
    {"RIL_REQUEST_EXPLICIT_CALL_TRANSFER",explicitCallTransfer,"explicit Call Transfer",RIL_REQUEST_EXPLICIT_CALL_TRANSFER},
    {"RIL_REQUEST_DTMF",sendDtmf,"send Dtmf",RIL_REQUEST_DTMF},
    {"RIL_REQUEST_GET_MUTE",getMute,"get Mute",RIL_REQUEST_GET_MUTE},
    {"RIL_REQUEST_SET_MUTE",setMute,"set Mute",RIL_REQUEST_SET_MUTE},
    {"RIL_REQUEST_LAST_CALL_FAIL_CAUSE",getLastCallFailCause, "get last call fail cause", RIL_REQUEST_LAST_CALL_FAIL_CAUSE},
    {"RIL_REQUEST_GET_CURRENT_CALLS",getCurrentCalls,"get Current Calls",RIL_REQUEST_GET_CURRENT_CALLS},
    {"RIL_REQUEST_AUTO_ANSWER",autoAnswerCall,"auto answer call",-1},
    {"RIL_REQUEST_RECORD",inCallRecord,"InCall record",-1},

    #ifdef C2K_SUPPORT
    {"RIL_REQUEST_CDMA_BURST_DTMF",sendBurstDtmf,"cdma burst dtmf",RIL_REQUEST_CDMA_BURST_DTMF},
    {"RIL_REQUEST_CDMA_FLASH",sendCDMAFeatureCode,"InCall record",RIL_REQUEST_CDMA_FLASH},
    #endif /*C2K_SUPPORT*/

    #if 0
    {"RIL_REQUEST_SET_SPEECH_ON",setSpeechOn,"set Speech On",-1},
    {"RIL_REQUEST_SET_SPEECH_OFF",setSpeechOff,"set Speech Off",-1},
    #endif
    {"RIL_REQUEST_SET_SPEECH_VOLUME",setSpeechVolume,"set Speech Volume",-1},
    {"RIL_REQUEST_SET_DTMF_VOLUME",setDtmfVolume,"set dtmf Volume",-1},
//    {"RIL_REQUEST_OEM_HOOK_STRINGS",invokeOemRilRequestStrings,"invoke Oem Ril Request Strings",RIL_REQUEST_OEM_HOOK_STRINGS},
    {"RIL_REQUEST_ADD_IMS_CONFERENCE_CALL_MEMBER",addImsConferenceCallMember,"add Ims Conference Call Member",RIL_REQUEST_ADD_IMS_CONFERENCE_CALL_MEMBER},
    {"RIL_REQUEST_REMOVE_IMS_CONFERENCE_CALL_MEMBER",removeImsConferenceCallMember,"remove Ims Conference Call Member",RIL_REQUEST_REMOVE_IMS_CONFERENCE_CALL_MEMBER},
    {"RIL_REQUEST_CONFERENCE_DIAL",conferenceDial,"conference Dial",RIL_REQUEST_CONFERENCE_DIAL},
    {"RIL_REQUEST_DIAL_WITH_SIP_URI",dialWithSipUri,"dial With Sip Uri",RIL_REQUEST_DIAL_WITH_SIP_URI},
    {"RIL_REQUEST_HOLD_CALL",holdCall,"hold Call",RIL_REQUEST_HOLD_CALL},
    {"RIL_REQUEST_RESUME_CALL",resumeCall,"resume Call",RIL_REQUEST_RESUME_CALL},
    {"RIL_REQUEST_HANGUP_ALL",hangupAll,"hangup all",RIL_REQUEST_HANGUP_ALL},
    {"RIL_REQUEST_FORCE_RELEASE_CALL",forceReleaseCall,"force release call",RIL_REQUEST_FORCE_RELEASE_CALL},
    {"RIL_REQUEST_EMERGENCY_DIAL", emergencyDial,"emergency Dial",RIL_REQUEST_EMERGENCY_DIAL},
    {"RIL_REQUEST_SET_ECC_SERVICE_CATEGORY", setEccServiceCategory,"set Ecc Service Category",RIL_REQUEST_SET_ECC_SERVICE_CATEGORY},
    {"RIL_REQUEST_SET_ECC_LIST", setEccList,"set Ecc List",RIL_REQUEST_SET_ECC_LIST},
//stateManager
    {"RIL_REQUEST_DEVICE_IDENTITY",getDeviceIdentity,"get Device Identity",RIL_REQUEST_DEVICE_IDENTITY},
    {"RIL_REQUEST_GET_IMEI",getIMEI,"get IMEI",RIL_REQUEST_GET_IMEI},
    {"RIL_REQUEST_GET_IMEISV",getIMEISV,"get IMEISV",RIL_REQUEST_GET_IMEISV},
    {"RIL_REQUEST_BASEBAND_VERSION",getBasebandVersion,"get Baseband Version",RIL_REQUEST_BASEBAND_VERSION},
    {"RIL_REQUEST_RESET_RADIO",resetRadio,"reset Radio",RIL_REQUEST_RESET_RADIO},
    {"RIL_REQUEST_SCREEN_STATE",getScreenState,"get Screen State",RIL_REQUEST_SCREEN_STATE},
    {"RIL_REQUEST_SET_TRM",setTRM,"set TRM",RIL_REQUEST_SET_TRM},
    {"RIL_REQUEST_SET_IMS_ENABLE",setIMSEnable,"set IMS enable",RIL_REQUEST_SET_IMS_ENABLE},
    {"RIL_REQUEST_OEM_HOOK_RAW",sendATCMD,"send AT CMD",RIL_REQUEST_OEM_HOOK_RAW},
#ifdef KEEP_ALIVE
    {"RIL_REQUEST_START_KEEPALIVE_PRO",startKeepAlivePro,"start keep alive pro",RIL_REQUEST_START_KEEPALIVE_PRO},
    {"RIL_REQUEST_STOP_KEEPALIVE_PRO",stopKeepAlivePro,"stop keep alive pro",RIL_REQUEST_STOP_KEEPALIVE_PRO},
#endif /*KEEP_ALIVE*/
//network
    {"RIL_REQUEST_SIGNAL_STRENGTH", getSignalStrength, "getSignalStrength", RIL_REQUEST_SIGNAL_STRENGTH},
    {"RIL_REQUEST_OPERATOR", getOperator, "getOperator", RIL_REQUEST_OPERATOR},
    {"RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE",  getNetworkSelectionMode, "getNetworkSelectionMode", RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE},
    {"RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC", setNetworkSelectionModeAutomatic, "setNetworkSelectionModeAutomatic", RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC},
    {"RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL",setNetworkSelectionModeManual, "setNetworkSelectionModeManual", RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL},
    {"RIL_REQUEST_QUERY_AVAILABLE_NETWORKS", getAvailableNetworks, "getAvailableNetworks", RIL_REQUEST_QUERY_AVAILABLE_NETWORKS},
    {"RIL_REQUEST_VOICE_REGISTRATION_STATE", getVoiceRegistrationState, "getVoiceRegistrationState", RIL_REQUEST_VOICE_REGISTRATION_STATE},
    {"RIL_REQUEST_DATA_REGISTRATION_STATE", getDataRegistrationState, "getDataRegistrationState", RIL_REQUEST_DATA_REGISTRATION_STATE},
    {"RIL_REQUEST_IMS_REGISTRATION_STATE", getImsRegistrationState, "getImsRegistrationState", RIL_REQUEST_IMS_REGISTRATION_STATE},
    {"RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE", getPreferredNetworkType, "getPreferredNetworkType", RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE},
    {"RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE", setPreferredNetworkType, "setPreferredNetworkType", RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE},
    {"RIL_REQUEST_SET_LOCATION_UPDATES", setLocationUpdates, "setLocationUpdates", RIL_REQUEST_SET_LOCATION_UPDATES},
    {"RIL_REQUEST_GET_CELL_INFO_LIST", getCellInfoList, "getCellInfoList",  RIL_REQUEST_GET_CELL_INFO_LIST},
    {"RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE", setCellInfoListRate, "setCellInfoListRate", RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE},
    {"RIL_REQUEST_GET_NEIGHBORING_CELL_IDS", getNeighboringCids, "getNeighboringCids", RIL_REQUEST_GET_NEIGHBORING_CELL_IDS},
    {"RIL_REQUEST_SET_BAND_MODE", setBandMode, "set Band Mode", RIL_REQUEST_SET_BAND_MODE},
    {"RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE", queryAvailableBandMode, "queryAvailableBandMode", RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE},
    {"RIL_REQUEST_RADIO_POWER", setRadioPower, "setRadioPower", RIL_REQUEST_RADIO_POWER},
    {"RIL_REQUEST_VOICE_RADIO_TECH", getVoiceRadioTechnology, "getVoiceRadioTechnology", RIL_REQUEST_VOICE_RADIO_TECH},
    {"RIL_REQUEST_SET_RADIO_CAPABILITY", setRadioCapability, "set Radio Capability", RIL_REQUEST_SET_RADIO_CAPABILITY},
    {"RIL_REQUEST_GET_RADIO_CAPABILITY", getRadioCapability, "get Radio Capability", RIL_REQUEST_GET_RADIO_CAPABILITY},
    {"RIL_REQUEST_MODEM_POWEROFF", setModemPowerOFF, "MODEM OFF", RIL_REQUEST_MODEM_POWEROFF},
    {"RIL_REQUEST_MODEM_POWERON", setModemPowerON, "MODEM ON", RIL_REQUEST_MODEM_POWERON},
    {"RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION", supplyNetworkDepersonalization, "",RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION},
    //ss
    {"RIL_REQUEST_SEND_USSD",sendUSSD,"send USSD",RIL_REQUEST_SEND_USSD},
    {"RIL_REQUEST_CANCEL_USSD",cancelPendingUssd,"cancel pending USSD",RIL_REQUEST_CANCEL_USSD},
    //{"RIL_UNSOL_ON_USSD",cancelPendingUssd,"cancel pending USSD",RIL_REQUEST_CANCEL_USSD},
    {"RIL_REQUEST_GET_CLIR",getCLIR,"get CLIR",RIL_REQUEST_GET_CLIR},
    {"RIL_REQUEST_SET_CLIR",setCLIR,"set CLIR",RIL_REQUEST_SET_CLIR},
    {"RIL_REQUEST_QUERY_CLIP",queryCLIP,"query CLIP",RIL_REQUEST_QUERY_CLIP},
    {"RIL_REQUEST_QUERY_CALL_FORWARD_STATUS",queryCallForwardStatus,"query call forward status",RIL_REQUEST_QUERY_CALL_FORWARD_STATUS},
    {"RIL_REQUEST_SET_CALL_FORWARD",setCallForward,"set call forward",RIL_REQUEST_SET_CALL_FORWARD},
    {"RIL_REQUEST_QUERY_CALL_WAITING",queryCallWaiting,"query call waiting",RIL_REQUEST_QUERY_CALL_WAITING},
    {"RIL_REQUEST_SET_CALL_WAITING",setCallWaiting,"set call waiting",RIL_REQUEST_SET_CALL_WAITING},
    {"RIL_REQUEST_CHANGE_BARRING_PASSWORD",changeBarringPassword,"change barring password",RIL_REQUEST_CHANGE_BARRING_PASSWORD},
    {"RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION",setSuppServiceNotifications,"set supp service notifications",RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION},
    {"RIL_REQUEST_SET_CLIP",setCLIP,"get clip", RIL_REQUEST_SET_CLIP},
    {"RIL_REQUEST_GET_COLP",getCOLP,"get colp", RIL_REQUEST_GET_COLP},
    {"RIL_REQUEST_SET_COLP",setCOLP,"set colp", RIL_REQUEST_SET_COLP},
    {"RIL_REQUEST_GET_COLR",getCOLR,"get colr", RIL_REQUEST_GET_COLR},
    {"RIL_REQUEST_QUERY_FACILITY_LOCK",queryFacilityLockForApp, "query sim lock", RIL_REQUEST_QUERY_FACILITY_LOCK},
    {"RIL_REQUEST_SET_FACILITY_LOCK",setFacilityLockForApp, "set sim lock", RIL_REQUEST_SET_FACILITY_LOCK},
    //{"RIL_UNSOL_SUPP_SVC_NOTIFICATION",xx,"cancel pending USSD",RIL_UNSOL_SUPP_SVC_NOTIFICATION},
//stk
    {"RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND",sendEnvelope,"send Envelope",RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND},
    {"RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE",sendTerminalResponse,"send Terminal Response",RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE},
    {"RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS",sendEnvelopeWithStatus,"send Envelope With Status",RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS},
    {"RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM",handleCallSetupRequestFromSim,"handle Call Setup Request From Sim",RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM},
    {"RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING",reportStkServiceIsRunning,"report Stk Service Is Running",RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING},
//sms
    {"RIL_REQUEST_SEND_SMS",sendSMS,"send SMS",RIL_REQUEST_SEND_SMS},
    {"RIL_REQUEST_SEND_SMS_EXPECT_MORE",sendSMSExpectMore,"send SMS expect more",RIL_REQUEST_SEND_SMS_EXPECT_MORE},
    {"RIL_REQUEST_IMS_SEND_SMS",sendImsGsmSms,"send ims gsm sms",RIL_REQUEST_IMS_SEND_SMS},
    {"RIL_REQUEST_IMS_SEND_SMS_CDMA",sendImsCdmaSms,"send ims gsm sms",RIL_REQUEST_IMS_SEND_SMS},
    {"RIL_REQUEST_WRITE_SMS_TO_SIM",writeSmsToSim,"write sms to sim",RIL_REQUEST_WRITE_SMS_TO_SIM},
    {"RIL_REQUEST_DELETE_SMS_ON_SIM",deleteSmsOnSim,"delete sms on sim",RIL_REQUEST_DELETE_SMS_ON_SIM},
    {"RIL_REQUEST_SMS_ACKNOWLEDGE",acknowledgeLastIncomingGsmSms,"acknowledge last incoming gsm sms",RIL_REQUEST_SMS_ACKNOWLEDGE},
    {"RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU",acknowledgeIncomingGsmSmsWithPdu,"acknowledge incoming gsm sms with pdu",RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU},
    {"RIL_REQUEST_REPORT_SMS_MEMORY_STATUS",reportSmsMemoryStatus,"report sms memory status",RIL_REQUEST_REPORT_SMS_MEMORY_STATUS},
    {"RIL_REQUEST_SET_SMSC_ADDRESS",setSmscAddress,"set smss address",RIL_REQUEST_SET_SMSC_ADDRESS},
    {"RIL_REQUEST_GET_SMSC_ADDRESS",getSmscAddress,"get smss address",RIL_REQUEST_GET_SMSC_ADDRESS},
    {"RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG",getGsmBroadcastConfig, "get broadcast config",RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG},
    {"RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG",setGsmBroadcastConfig,"set gsm broadcast sms config",RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG},
    {"RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION",setGsmBroadcastActivation,"gsm sms broadcast activation",RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION},

    #ifdef C2K_SUPPORT
    {"RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG",getCdmaBroadcastConfig, "get broadcast config",RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG},
    {"RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM",deleteSmsOnRUIM,"delete sms on RUIM",RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM},
    {"RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG",setCdmaBroadcastConfig,"set cdma broadcast sms config",RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG},
    {"RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION",setCdmaBroadcastActivation,"cdma sms broadcast activation",RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION},
    {"RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM",writeSmsToRuim,"cdma write sms to RUIM",RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM},
    {"RIL_REQUEST_CDMA_SEND_SMS",sendCdmaSms, "send cdma message",RIL_REQUEST_CDMA_SEND_SMS},
    {"RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE", acknowledgeLastIncomingCdmaSms, "Acknowledge the success or failure",RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE},
    #endif /*C2K_SUPPORT*/
    //eCall
#ifdef ECALL_SUPPORT
    //{"RIL_REQUEST_ECALL_FAST_MAKE_ECALL",dialFastEcall,"dial fast ecall",RIL_REQUEST_ECALL_FAST_MAKE_ECALL},
    {"RIL_REQUEST_ECALL_SET_IVS", setIVS,"set IVS",RIL_REQUEST_ECALL_SET_IVS},
    {"RIL_REQUEST_ECALL_SET_MSD", setMSD,"set MSD",RIL_REQUEST_ECALL_SET_MSD},
    {"RIL_REQUEST_ECALL_SET_PSAP", setPASP,"set PSAP",RIL_REQUEST_ECALL_SET_PSAP},
    {"RIL_REQUEST_ECALL_IVS_PUSH_MSD", IVSPushMSD,"IVS push MSD",RIL_REQUEST_ECALL_IVS_PUSH_MSD},
    {"RIL_REQUEST_ECALL_PSAP_PULL_MSD", PSAPPushMSD,"PSAP push MSD",RIL_REQUEST_ECALL_PSAP_PULL_MSD},
    {"RIL_REQUEST_ECALL_SET_TEST_NUM", setTestNum,"set test num",RIL_REQUEST_ECALL_SET_TEST_NUM},
    {"RIL_REQUEST_ECALL_SET_RECONF_NUM", setReconfNum,"set reconfigure num",RIL_REQUEST_ECALL_SET_RECONF_NUM},
    {"RIL_REQUEST_ECALL_MAKE_ECALL", makeECall,"make eCall",RIL_REQUEST_ECALL_MAKE_ECALL},
    {"RIL_REQUEST_ECALL_RESET_IVS", resetIVS,"reset IVS",RIL_REQUEST_ECALL_RESET_IVS},
    {"RIL_REQUEST_ECALL_CTRL_SEQUENCE",setCTRLSequence,"Set CTRL Sequence",RIL_REQUEST_ECALL_CTRL_SEQUENCE},
    {"RIL_REQUEST_ECALL_SET_PRI",setEmsdpri,"Set pri",RIL_REQUEST_ECALL_SET_PRI},
#endif /*ECALL_SUPPORT*/

#ifdef MODE_DSDS
    {"SET_DEFAULT_SIM_ALL",set_default_sim_all, "set default sim_all", -1},
    {"GET_DEFAULT_SIM_ALL",get_default_sim_all, "get default sim_all", -1},
    {"SET_DEFAULT_SIM_VOICE",set_default_sim_voice, "set default sim_voice", -1},
    {"GET_DEFAULT_SIM_VOICE",get_default_sim_voice, "get default sim_voice", -1},
    {"SET_DEFAULT_SIM_DATA",set_default_sim_data, "set default sim_data", -1},
    {"GET_DEFAULT_SIM_DATA",get_default_sim_data, "get default sim_data", -1},
    {"SET_DEFAULT_SIM_SMS",set_default_sim_sms, "set default sim_sms", -1},
    {"GET_DEFAULT_SIM_SMS",get_default_sim_sms, "get default sim_sms", -1},
    {"SET_DEFAULT_SIM_ALL_EXCEPT_DATA",set_default_sim_all_except_data, "set default sim_all", -1},
    {"GET_DEFAULT_SIM_ALL_EXCEPT_DATA",get_default_sim_all_except_data, "get default sim_all", -1},
#endif /*MODE_DSSS*/
    {"GET_MAIN_SIM_CARD",get_main_sim_card, "get main sim card", -1},
    //BT related
    {"RIL_REQUEST_SET_AUDIO_PATH",setAudioPath,"set audio path",-1},
//other
    {"QUIT", com_quit, "Quit using rild" , -1},
    {"ENABLESYSLOG", enableSyslog, "enable syslog" , -1},
    //{"APN_SETTING", apnSetting, "show/add/delete/updata apn setting" , -1},
    {"EM_MAIN", em_start, "EM: main entry" , -1},
    {"UPDATE_SIGNAL_PRINTF", updateSignalPrintf, "open/close signal printf log" , -1},
    {"ENABLE_BT_RESPONSE", enableBTResponse, "enable BT response" , -1},
    {(char *)NULL, NULL, (char *)NULL , -1},
