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