Android RIL source code Research Note mongoril (2)

Source: Internet
Author: User

This article introduces how to implement the four string output functions and corresponding enumeration types in some codes in RIL. cpp. First, let's take a look at

Code. Its function is to convert the commands in ril_command.h and ril_unsol_commands.h into string descriptions:

Const char * requesttostring (INT request) {<br/> switch (request) {<br/> case ril_request_get_sim_status: Return "get_sim_status"; <br/> case ril_request_enter_sim_pin: return "enter_sim_pin"; <br/> case when: Return "enter_sim_puk"; <br/> case ril_request_enter_sim_pin2: Return "enter_sim_pin2"; <br/> case when: return "enter_sim_puk2"; <br/> case ril_request_change_sim_pin: Return "change_sim_pin"; <br/> case when: Return "change_sim_pin2"; <br/> case when: return "enter_network_depersonalization"; <br/> case when: Return "get_current_cils"; <br/> case ril_request_dial: Return "dial"; <br/> case ril_request_get_imsi: return "get_imsi"; <br/> case ril_request_hangup: Return "hangup"; <br/> case when: Return "hangup_waiting_or_background"; <br/> case when: return "success"; <br/> case when: Return "switch_waiting_or_holding_and_active"; <br/> case ril_request_conference: Return "Conference"; <br/> case ril_request_udub: return "UDub"; <br/> case when: Return "last_call_fail_cause"; <br/> case when: Return "signal_strength"; <br/> case ril_request_registration_state: return "registration_state"; <br/> case when: Return "maid"; <br/> case ril_request_operator: Return "operator"; <br/> case ril_request_radio_power: return "radio_power"; <br/> case ril_request_dtmf: Return "DTMF"; <br/> case ril_request_send_sms: Return "send_sms"; <br/> case ril_request_send_sms_expect_more: return "send_sms_expect_more"; <br/> case when: Return "setup_data_call"; <br/> case ril_request_sim_io: Return "sim_io"; <br/> case ril_request_send_ussd: return "send_ussd"; <br/> case when: Return "cancel_ussd"; <br/> case ril_request_get_clir: Return "get_clir"; <br/> case ril_request_set_clir: return "set_clir"; <br/> case when: Return "query_call_forward_status"; <br/> case when: Return "set_call_forward"; <br/> case ril_request_query_call_waiting: return "query_call_waiting"; <br/> case when: Return "set_call_waiting"; <br/> case when: Return "sms_acknowledge"; <br/> case ril_request_get_imei: return "get_imei"; <br/> case ril_request_get_imeisv: Return "get_imeisv"; <br/> case ril_request_answer: Return "Answer"; <br/> case when: return "deactivate_data_call"; <br/> case when: Return "query_facility_lock"; <br/> case when: Return "set_facility_lock"; <br/> case ril_request_change_barring_password: return "change_barring_password"; <br/> case ril_request_query_network_selection_mode: Return "query_network_selection_mode"; <br/> case when: Return "set_network_selection_automation"; <br/> example case: return "set_network_selection_manual"; <br/> case when: Return "query_available_networks"; <br/> case ril_request_dtmf_start: Return "dtmf_start"; <br/> case when: return "dtmf_stop"; <br/> case ril_request_baseband_version: Return "baseband_version"; <br/> case ril_request_separate_connection: Return "separate_connection"; <br/> case when: return "set_preferred_network_type"; <br/> case when: Return "get_preferred_network_type"; <br/> case when: Return "when"; <br/> case ril_request_set_mute: return "set_mute"; <br/> case ril_request_get_mute: Return "get_mute"; <br/> case ril_request_query_clip: Return "query_clip"; <br/> case when: return "success"; <br/> case ril_request_data_call_list: Return "data_call_list"; <br/> case ril_request_reset_radio: Return "reset_radio"; <br/> case when: return "oem_hook_raw"; <br/> case when: Return "oem_hook_strings"; <br/> case ril_request_set_band_mode: Return "set_band_mode"; <br/> case when: return "query_available_band_mode"; <br/> case ril_request_stk_get_profile: Return "stk_get_profile"; <br/> case when: Return "stk_set_profile"; <br/> case when: return "stk_send_envelope_command"; <br/> case when: Return "stk_send_terminal_response"; <br/> case when: Return "when"; <br/> case ril_request_screen_state: return "screen_state"; <br/> case when: Return "explicit_call_transfer"; <br/> case when: Return "set_location_updates"; <br/> case ril_request_cdma _set_subscription: return "maid"; <br/> case when: Return "maid"; <br/> case when: Return "Fig"; <br/> case when: Return "Fig"; <br/> case ril_request_set_tty_mode: return "set_tty_mode"; <br/> case ril_request_query_tty_mode: Return "query_tty_mode"; <br/> case when: Return "when"; <br/> case when: return "success"; <br/> case ril_request_cdma _flash: Return "CDMA _flash"; <br/> case when: Return "CDMA _burst_dtmf"; <br/> case ril_request_cdma _send_sms: return "CDMA _send_sms"; <br/> case ril_request_cdma _sms_acknowledge: Return "CDMA _sms_acknowledge"; <br/> case when: Return "gsm_get_broadcast_sms_config"; <br/> case when: return "gsm_set_broadcast_sms_config"; <br/> case when: Return "CDMA _get_broadcast_sms_config"; <br/> case when: Return "CDMA _set_broadcast_sms_config"; <br/> case when: return "CDMA _sms_broadcast_activation"; <br/> case when: Return "CDMA _validate_and_write_akey"; <br/> case ril_request_cdma _subey: Return "CDMA _subscription"; <br/> case when: return "CDMA _write_sms_to_ruim"; <br/> case when: Return "CDMA _delete_sms_on_ruim"; <br/> case ril_request_device_identity: Return "device_identity"; <br/> case when: return "response"; <br/> case ril_request_get_smsc_address: Return "get_smsc_address"; <br/> case ril_request_set_smsc_address: Return "set_smsc_address"; <br/> case response: return "report_sms_memory_status"; <br/> case when: Return "report_stk_service_is_running"; <br/> case when: Return "unsol_response_radio_state_changed"; <br/> case when: return "unsol_response_call_state_changed"; <br/> case when: Return "unsol_response_network_state_changed"; <br/> case when: Return "unsol_response_new_sms"; <br/> case when: return "condition"; <br/> case when: Return "condition"; <br/> case ril_unsol_on_ussd: Return "unsol_on_ussd"; <br/> case ril_unsol_on_ussd_request: return "unsol_on_ussd_request (obsolete)"; <br/> case when: Return "unsol_nitz_time_received"; <br/> case when: Return "unsol_signal_strength"; <br/> case when: return "unsol_stk_session_end"; <br/> case when: Return "unsol_stk_proactive_command"; <br/> case when: Return "unsol_stk_event_policy"; <br/> case ril_unsol_stk_call_setup: return "unsol_stk_call_setup"; <br/> case when: Return "unsol_sim_sms_storage_ful"; <br/> case ril_unsol_sim_refresh: Return "unsol_sim_refresh"; <br/> example: return "unsol_data_call_list_changed"; <br/> case ril_unsol_call_ring: Return "unsol_call_ring"; <br/> case when: Return "unsol_response_sim_status_changed"; <br/> case when: return "unsol_new_cdma _sms"; <br/> case when: Return "unsol_new_broadcast_sms"; <br/> case when: Return "when"; <br/> case ril_unsol_restricted_state_changed: return "unsol_restricted_state_changed"; <br/> case when: Return "success"; <br/> case ril_unsol_cdma _call_waiting: Return "unsol_cdma _call_waiting"; <br/> case when: return "success"; <br/> case ril_unsol_cdma _info_rec: Return "unsol_cdma _info_rec"; <br/> case when: Return "unsol_oem_hook_raw"; <br/> case when: return "unsol_ringback_tone"; <br/> case ril_unsol_resend_incall_mute: Return "unsol_resend_incall_mute"; <br/> default: Return "<Unknown request> "; <br/>}< br/>}

The second function is to convert the error code defined in the enumerated type ril_error into a string. first look at the ril_error code, which is defined in

In (hardware \ RIL \ include \ telephony \ RIL. h:

Typedef Enum {<br/> ril_e_success = 0, <br/> ril_e_radio_not_available = 1,/* wireless module not enabled or reset */<br/> ril_e_generic_failure = 2, /* General Error */<br/> ril_e_password_incorrect = 3,/* is only used for Pin/pin2 related functions */<br/> ril_e_sim_pin2 = 4, /* indicates that SIM pin2 code is required for this operation */<br/> ril_e_sim_puk2 = 5,/* indicates that SIM puk2 code is required for this operation */<br/> ril_e_request_not_supported = 6, /* The request type is not supported */<br/> ril_e_cancelled = 7,/* The operation is canceled */<br/> ril_e_op_not_allowed_during_voice_call = 8, /* data operations cannot be performed on C-level GPRS devices during voice calls */<br/> ril_e_op_not_allowed_before_reg_to_nw = 9, /* do not allow data operations before the device registers to the Network */<br/> ril_e_sms_send_fail_retry = 10,/* failed to send short message, retry */<br/> ril_e_sim_absent = 11, /* the SIM card or Ruim card does not exist, causing an error in obtaining the CDMA package and setting the location */<br/> ril_e_subscription_not_available = 12, /* An error occurred while obtaining the CDMA package from a certain location */<br/> ril_e_mode_not_supported = 13,/* the preferred network type is not supported */<br/> ril_e_fdn_check_failure = 14, /* The command is invalid because the recipient is not in the FDN list */<br/> ril_e_illegal_sim_or_me = 15/* The Network Selection fails due to an invalid SIM or me */<br/>} ril_errno; </P> <p> // convert the value in ril_error of Enumeration type to a string description <br/> const char * failcausetostring (ril_errno e) {<br/> switch (E) {<br/> case ril_e_success: Return "e_success"; <br/> case when: Return "e_raido_not_available"; <br/> case ril_e_generic_failure: Return "e_generic_failure "; <br/> case when: Return "e_password_incorrect"; <br/> case ril_e_sim_pin2: Return "e_sim_pin2"; <br/> case ril_e_sim_puk2: Return "e_sim_puk2 "; <br/> case ril_e_request_not_supported: Return "e_request_not_supported"; <br/> case ril_e_cancelled: Return "e_cancelled"; <br/> case when: Return "success "; <br/> case when: Return "fail"; <br/> case ril_e_sms_send_fail_retry: Return "e_sms_send_fail_retry"; <br/> case ril_e_sim_absent: Return "e_sim_absent "; <br/> case when: Return "e_illegal_sim_or_me"; <br/> # ifdef feature_multimode_android <br/> case when: Return "e_subscription_not_available"; <br/> case when: return "e_mode_not_supported"; <br/> # endif <br/> default: Return "<Unknown error>"; <br/>}< br/>}

The third function is to convert the value defined in the enumerated type ril_callstate into a string description. First, let's look at the definition of the enumerated type, which is also located in the file

In (hardware \ RIL \ include \ telephony \ RIL. h:

Typedef Enum {<br/> ril_call_active = 0,/* Call activation */<br/> ril_call_holding = 1,/* Keep call */<br/> ril_call_dialing = 2, /* Only applicable to Mo (mobile original) calls */<br/> ril_call_alerting = 3,/* Only applicable to Mo (mobile original) calls */<br/> ril_call_incoming = 4, /* Only applicable to Mt (mobile terminated) calls */<br/> ril_call_waiting = 5/* Only applicable to Mt (mobile terminated) calls */<br/>} ril_callstate; </P> <p> // convert the value in the enumerated ril_callstate to a string description <br/> const char * callstatetostring (ril_callstate s) {<br/> switch (s) {<br/> case ril_call_active: Return "active"; <br/> case ril_call_holding: Return "holding"; <br/> case ril_call_dialing: Return "dialing "; <br/> case ril_call_alerting: Return "alerting"; <br/> case ril_call_incoming: Return "Incoming"; <br/> case ril_call_waiting: Return "Waiting "; <br/> default: Return "<Unknown State>"; <br/>}< br/>}

The fourth function is to convert the value defined in the enumerated type ril_radiostate into a string description. The enumerated type is defined as follows, located in the file

In (hardware \ RIL \ include \ telephony \ RIL. h:

Typedef Enum {<br/> radio_state_off = 0,/* the wireless module displays power loss (for example, cfun = 0) */<br/> radio_state_unavailable = 1, /* the wireless module is unavailable (such as resetting or not starting) */<br/> radio_state_sim_not_ready = 2,/* the wireless module is started, however, the sim interface is not prepared */<br/> radio_state_sim_locked_or_absent = 3,/* the sim PIN code is locked. You need to enter the pukcode or the personal network identification code is locked, or the SIM card does not exist */<br/> radio_state_sim_ready = 4,/* the wireless module is started, and the sim interface is available */<br/> radio_state_ruim_not_ready = 5,/* the wireless module is started, however, the Ruim interface is not ready */<br/> radio_state_ruim_ready = 6,/* the wireless module is started, and the Ruim interface is available */<br/> radio_state_ruim_locked_or_absent = 7, /* If the Ruim PIN code is locked, enter the punk code, or the personal network ID is locked, or the Ruim card does not exist */<br/> radio_state_nv_not_ready = 8, /* the wireless module is started, but the Nv interface is not ready */<br/> radio_state_nv_ready = 9/* the wireless module is started, and the Nv interface is available */<br/>} ril_radiostate; </P> <p> // convert the enumerated ril_radiostate value to a string description <br/> const char * radiostatetostring (ril_radiostate s) {<br/> switch (s) {<br/> case radio_state_off: Return "radio_off"; <br/> case radio_state_unavailable: Return "radio_unavailable"; <br/> case when: Return "radio_sim_not_ready "; <br/> case when: Return "then"; <br/> case radio_state_sim_ready: Return "radio_sim_ready"; <br/> case radio_state_ruim_not_ready: Return "radio_ruim_not_ready "; <br/> case radio_state_ruim_ready: Return "radio_ruim_ready"; <br/> case when: Return "when"; <br/> case radio_state_nv_not_ready: Return "radio_nv_not_ready "; <br/> case radio_state_nv_ready: Return "radio_nv_ready"; <br/> default: Return "<Unknown State>"; <br/>}< br/>}

To be continued

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.