summaryrefslogtreecommitdiffstats
path: root/gril/grilutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'gril/grilutil.c')
-rw-r--r--gril/grilutil.c830
1 files changed, 830 insertions, 0 deletions
diff --git a/gril/grilutil.c b/gril/grilutil.c
new file mode 100644
index 00000000..ce51e0a0
--- /dev/null
+++ b/gril/grilutil.c
@@ -0,0 +1,830 @@
+/*
+ *
+ * RIL library with GLib integration
+ *
+ * Copyright (C) 2008-2011 Intel Corporation. All rights reserved.
+ * Copyright (C) 2012 Canonical Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+
+#include <glib.h>
+
+#include <ofono/modem.h>
+#include <ofono/gprs-context.h>
+#include <ofono/types.h>
+
+#include "grilutil.h"
+#include "parcel.h"
+#include "ril_constants.h"
+
+/* Constants used by CALL_LIST, and SETUP_DATA_CALL RIL requests */
+#define PROTO_IP_STR "IP"
+#define PROTO_IPV6_STR "IPV6"
+#define PROTO_IPV4V6_STR "IPV4V6"
+
+static char temp_str[32];
+
+const char *ril_ofono_protocol_to_ril_string(guint protocol)
+{
+ char *result;
+
+ switch (protocol) {
+ case OFONO_GPRS_PROTO_IPV6:
+ result = PROTO_IPV6_STR;
+ break;
+ case OFONO_GPRS_PROTO_IPV4V6:
+ result = PROTO_IPV4V6_STR;
+ break;
+ case OFONO_GPRS_PROTO_IP:
+ result = PROTO_IP_STR;
+ break;
+ default:
+ result = NULL;
+ }
+
+ return result;
+}
+
+int ril_protocol_string_to_ofono_protocol(gchar *protocol_str)
+{
+ int result;
+
+ if (g_strcmp0(protocol_str, PROTO_IPV6_STR) == 0)
+ result = OFONO_GPRS_PROTO_IPV6;
+ else if (g_strcmp0(protocol_str, PROTO_IPV4V6_STR) == 0)
+ result = OFONO_GPRS_PROTO_IPV4V6;
+ else if (g_strcmp0(protocol_str, PROTO_IP_STR) == 0)
+ result = OFONO_GPRS_PROTO_IP;
+ else
+ result = -1;
+
+ return result;
+}
+
+const char *ril_appstate_to_string(int app_state)
+{
+ switch (app_state) {
+ case RIL_APPSTATE_UNKNOWN:
+ return "UNKNOWN";
+ case RIL_APPSTATE_DETECTED:
+ return "DETECTED";
+ case RIL_APPSTATE_PIN:
+ return "PIN";
+ case RIL_APPSTATE_PUK:
+ return "PUK";
+ case RIL_APPSTATE_SUBSCRIPTION_PERSO:
+ return "";
+ case RIL_APPSTATE_READY:
+ return "READY";
+ default:
+ return "<INVALID>";
+ }
+}
+
+const char *ril_apptype_to_string(int app_type)
+{
+
+ switch (app_type) {
+ case RIL_APPTYPE_UNKNOWN:
+ return "UNKNOWN";
+ case RIL_APPTYPE_SIM:
+ return "SIM";
+ case RIL_APPTYPE_USIM:
+ return "USIM";
+ case RIL_APPTYPE_RUIM:
+ return "RUIM";
+ case RIL_APPTYPE_CSIM:
+ return "CSIM";
+ case RIL_APPTYPE_ISIM:
+ return "ISIM";
+ default:
+ return "<INVALID>";
+ }
+}
+
+const char *ril_authtype_to_string(int auth_type)
+{
+ switch (auth_type) {
+ case RIL_AUTH_NONE:
+ return "NONE";
+ case RIL_AUTH_PAP:
+ return "PAP";
+ case RIL_AUTH_CHAP:
+ return "CHAP";
+ case RIL_AUTH_BOTH:
+ return "BOTH";
+ case RIL_AUTH_ANY:
+ return "ANY";
+ default:
+ return "<INVALID>";
+ }
+}
+
+const char *ril_cardstate_to_string(int card_state)
+{
+ switch (card_state) {
+ case RIL_CARDSTATE_ABSENT:
+ return "ABSENT";
+ case RIL_CARDSTATE_PRESENT:
+ return "PRESENT";
+ case RIL_CARDSTATE_ERROR:
+ return "ERROR";
+ default:
+ return "<INVALID>";
+ }
+}
+
+const char *ril_error_to_string(int error)
+{
+ switch (error) {
+ case RIL_E_SUCCESS: return "SUCCESS";
+ case RIL_E_RADIO_NOT_AVAILABLE: return "RADIO_NOT_AVAILABLE";
+ case RIL_E_GENERIC_FAILURE: return "GENERIC_FAILURE";
+ case RIL_E_PASSWORD_INCORRECT: return "PASSWORD_INCORRECT";
+ case RIL_E_SIM_PIN2: return "SIM_PIN2";
+ case RIL_E_SIM_PUK2: return "SIM_PUK2";
+ case RIL_E_REQUEST_NOT_SUPPORTED: return "REQUEST_NOT_SUPPORTED";
+ case RIL_E_CANCELLED: return "CANCELLED";
+ case RIL_E_OP_NOT_ALLOWED_DURING_VOICE_CALL:
+ return "OP_NOT_ALLOWED_DURING_VOICE_CALL";
+ case RIL_E_OP_NOT_ALLOWED_BEFORE_REG_TO_NW:
+ return "OP_NOT_ALLOWED_BEFORE_REG_TO_NW";
+ case RIL_E_SMS_SEND_FAIL_RETRY: return "SMS_SEND_FAIL_RETRY";
+ case RIL_E_SIM_ABSENT: return "SIM_ABSENT";
+ case RIL_E_SUBSCRIPTION_NOT_AVAILABLE:
+ return "SUBSCRIPTION_NOT_AVAILABLE";
+ case RIL_E_MODE_NOT_SUPPORTED: return "MODE_NOT_SUPPORTED";
+ case RIL_E_FDN_CHECK_FAILURE: return "FDN_CHECK_FAILURE";
+ case RIL_E_ILLEGAL_SIM_OR_ME: return "ILLEGAL_SIM_OR_ME";
+ case RIL_E_DIAL_MODIFIED_TO_USSD: return "DIAL_MODIFIED_TO_USSD";
+ case RIL_E_DIAL_MODIFIED_TO_SS: return "DIAL_MODIFIED_TO_SS";
+ case RIL_E_DIAL_MODIFIED_TO_DIAL: return "DIAL_MODIFIED_TO_DIAL";
+ case RIL_E_USSD_MODIFIED_TO_DIAL: return "USSD_MODIFIED_TO_DIAL";
+ case RIL_E_USSD_MODIFIED_TO_SS: return "USSD_MODIFIED_TO_SS";
+ case RIL_E_USSD_MODIFIED_TO_USSD: return "USSD_MODIFIED_TO_USSD";
+ case RIL_E_SS_MODIFIED_TO_DIAL: return "SS_MODIFIED_TO_DIAL";
+ case RIL_E_SS_MODIFIED_TO_USSD: return "SS_MODIFIED_TO_USSD";
+ case RIL_E_SS_MODIFIED_TO_SS: return "SS_MODIFIED_TO_SS";
+ case RIL_E_SUBSCRIPTION_NOT_SUPPORTED:
+ return "SUBSCRIPTION_NOT_SUPPORTED";
+ default: return "<unknown errno>";
+ }
+}
+
+const char *ril_pinstate_to_string(int pin_state)
+{
+ switch (pin_state) {
+ case RIL_PINSTATE_UNKNOWN:
+ return "UNKNOWN";
+ case RIL_PINSTATE_ENABLED_NOT_VERIFIED:
+ return "ENABLED_NOT_VERIFIED";
+ case RIL_PINSTATE_ENABLED_VERIFIED:
+ return "ENABLED_VERIFIED";
+ case RIL_PINSTATE_DISABLED:
+ return "DISABLED";
+ case RIL_PINSTATE_ENABLED_BLOCKED:
+ return "ENABLED_BLOCKED";
+ case RIL_PINSTATE_ENABLED_PERM_BLOCKED:
+ return "ENABLED_PERM_BLOCKED";
+ default:
+ return "<INVALID>";
+ }
+}
+
+const char *ril_radio_state_to_string(int radio_state)
+{
+ switch (radio_state) {
+ case RADIO_STATE_OFF:
+ return "OFF";
+ case RADIO_STATE_UNAVAILABLE:
+ return "UNAVAILABLE";
+ case RADIO_STATE_SIM_NOT_READY:
+ return "SIM_NOT_READY";
+ case RADIO_STATE_SIM_LOCKED_OR_ABSENT:
+ return "SIM_LOCKED_OR_ABSENT";
+ case RADIO_STATE_SIM_READY:
+ return "SIM_READY";
+ case RADIO_STATE_ON:
+ return "ON";
+ default:
+ return "<INVALID>";
+ }
+}
+
+const char *ril_radio_tech_to_string(int radio_tech)
+{
+ switch (radio_tech) {
+ case RADIO_TECH_UNKNOWN:
+ return "UNKNOWN";
+ case RADIO_TECH_GPRS:
+ return "GPRS";
+ case RADIO_TECH_EDGE:
+ return "EDGE";
+ case RADIO_TECH_UMTS:
+ return "UMTS";
+ case RADIO_TECH_IS95A:
+ return "IS95A";
+ case RADIO_TECH_IS95B:
+ return "IS95B";
+ case RADIO_TECH_1xRTT:
+ return "1xRTT";
+ case RADIO_TECH_EVDO_0:
+ return "EVDO_0";
+ case RADIO_TECH_EVDO_A:
+ return "EVDO_A";
+ case RADIO_TECH_HSDPA:
+ return "HSDPA";
+ case RADIO_TECH_HSUPA:
+ return "HSUPA";
+ case RADIO_TECH_HSPA:
+ return "HSPA";
+ case RADIO_TECH_EVDO_B:
+ return "EVDO_B";
+ case RADIO_TECH_EHRPD:
+ return "EHRPD";
+ case RADIO_TECH_LTE:
+ return "LTE";
+ case RADIO_TECH_HSPAP:
+ return "HSPAP";
+ case RADIO_TECH_GSM:
+ return "GSM";
+ case MTK_RADIO_TECH_HSDPAP:
+ return "MTK_HSDPAP";
+ case MTK_RADIO_TECH_HSDPAP_UPA:
+ return "MTK_HSDPAP_UPA";
+ case MTK_RADIO_TECH_HSUPAP:
+ return "MTK_HSUPAP";
+ case MTK_RADIO_TECH_HSUPAP_DPA:
+ return "MTK_HSUPAP_DPA";
+ case MTK_RADIO_TECH_DC_DPA:
+ return "MTK_DC_DPA";
+ case MTK_RADIO_TECH_DC_UPA:
+ return "MTK_DC_UPA";
+ case MTK_RADIO_TECH_DC_HSDPAP:
+ return "MTK_DC_HSDPAP";
+ case MTK_RADIO_TECH_DC_HSDPAP_UPA:
+ return "MTK_DC_HSDPAP_UPA";
+ case MTK_RADIO_TECH_DC_HSDPAP_DPA:
+ return "MTK_DC_HSDPAP_DPA";
+ case MTK_RADIO_TECH_DC_HSPAP:
+ return "MTK_DC_HSPAP";
+ default:
+ if (g_snprintf(temp_str, sizeof(temp_str),
+ "<INVALID (%d)>",
+ radio_tech))
+ return temp_str;
+ else
+ return "<INVALID>";
+ }
+}
+
+const char *ril_request_id_to_string(int req)
+{
+ switch (req) {
+ case RIL_REQUEST_GET_SIM_STATUS:
+ return "RIL_REQUEST_GET_SIM_STATUS";
+ case RIL_REQUEST_ENTER_SIM_PIN:
+ return "RIL_REQUEST_ENTER_SIM_PIN";
+ case RIL_REQUEST_ENTER_SIM_PUK:
+ return "RIL_REQUEST_ENTER_SIM_PUK";
+ case RIL_REQUEST_ENTER_SIM_PIN2:
+ return "RIL_REQUEST_ENTER_SIM_PIN2";
+ case RIL_REQUEST_ENTER_SIM_PUK2:
+ return "RIL_REQUEST_ENTER_SIM_PUK2";
+ case RIL_REQUEST_CHANGE_SIM_PIN:
+ return "RIL_REQUEST_CHANGE_SIM_PIN";
+ case RIL_REQUEST_CHANGE_SIM_PIN2:
+ return "RIL_REQUEST_CHANGE_SIM_PIN2";
+ case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION:
+ return "RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION";
+ case RIL_REQUEST_GET_CURRENT_CALLS:
+ return "RIL_REQUEST_GET_CURRENT_CALLS";
+ case RIL_REQUEST_DIAL:
+ return "RIL_REQUEST_DIAL";
+ case RIL_REQUEST_GET_IMSI:
+ return "RIL_REQUEST_GET_IMSI";
+ case RIL_REQUEST_HANGUP:
+ return "RIL_REQUEST_HANGUP";
+ case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND:
+ return "RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND";
+ case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND:
+ return "RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND";
+ case RIL_REQUEST_SWITCH_HOLDING_AND_ACTIVE:
+ return "RIL_REQUEST_SWITCH_HOLDING_AND_ACTIVE";
+ case RIL_REQUEST_CONFERENCE:
+ return "RIL_REQUEST_CONFERENCE";
+ case RIL_REQUEST_UDUB:
+ return "RIL_REQUEST_UDUB";
+ case RIL_REQUEST_LAST_CALL_FAIL_CAUSE:
+ return "RIL_REQUEST_LAST_CALL_FAIL_CAUSE";
+ case RIL_REQUEST_SIGNAL_STRENGTH:
+ return "RIL_REQUEST_SIGNAL_STRENGTH";
+ case RIL_REQUEST_VOICE_REGISTRATION_STATE:
+ return "RIL_REQUEST_VOICE_REGISTRATION_STATE";
+ case RIL_REQUEST_DATA_REGISTRATION_STATE:
+ return "RIL_REQUEST_DATA_REGISTRATION_STATE";
+ case RIL_REQUEST_OPERATOR:
+ return "RIL_REQUEST_OPERATOR";
+ case RIL_REQUEST_RADIO_POWER:
+ return "RIL_REQUEST_RADIO_POWER";
+ case RIL_REQUEST_DTMF:
+ return "RIL_REQUEST_DTMF";
+ case RIL_REQUEST_SEND_SMS:
+ return "RIL_REQUEST_SEND_SMS";
+ case RIL_REQUEST_SEND_SMS_EXPECT_MORE:
+ return "RIL_REQUEST_SEND_SMS_EXPECT_MORE";
+ case RIL_REQUEST_SETUP_DATA_CALL:
+ return "RIL_REQUEST_SETUP_DATA_CALL";
+ case RIL_REQUEST_SIM_IO:
+ return "RIL_REQUEST_SIM_IO";
+ case RIL_REQUEST_SEND_USSD:
+ return "RIL_REQUEST_SEND_USSD";
+ case RIL_REQUEST_CANCEL_USSD:
+ return "RIL_REQUEST_CANCEL_USSD";
+ case RIL_REQUEST_GET_CLIR:
+ return "RIL_REQUEST_GET_CLIR";
+ case RIL_REQUEST_SET_CLIR:
+ return "RIL_REQUEST_SET_CLIR";
+ case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS:
+ return "RIL_REQUEST_QUERY_CALL_FORWARD_STATUS";
+ case RIL_REQUEST_SET_CALL_FORWARD:
+ return "RIL_REQUEST_SET_CALL_FORWARD";
+ case RIL_REQUEST_QUERY_CALL_WAITING:
+ return "RIL_REQUEST_QUERY_CALL_WAITING";
+ case RIL_REQUEST_SET_CALL_WAITING:
+ return "RIL_REQUEST_SET_CALL_WAITING";
+ case RIL_REQUEST_SMS_ACKNOWLEDGE:
+ return "RIL_REQUEST_SMS_ACKNOWLEDGE ";
+ case RIL_REQUEST_GET_IMEI:
+ return "RIL_REQUEST_GET_IMEI";
+ case RIL_REQUEST_GET_IMEISV:
+ return "RIL_REQUEST_GET_IMEISV";
+ case RIL_REQUEST_ANSWER:
+ return "RIL_REQUEST_ANSWER";
+ case RIL_REQUEST_DEACTIVATE_DATA_CALL:
+ return "RIL_REQUEST_DEACTIVATE_DATA_CALL";
+ case RIL_REQUEST_QUERY_FACILITY_LOCK:
+ return "RIL_REQUEST_QUERY_FACILITY_LOCK";
+ case RIL_REQUEST_SET_FACILITY_LOCK:
+ return "RIL_REQUEST_SET_FACILITY_LOCK";
+ case RIL_REQUEST_CHANGE_BARRING_PASSWORD:
+ return "RIL_REQUEST_CHANGE_BARRING_PASSWORD";
+ case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE:
+ return "RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE";
+ case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC:
+ return "RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC";
+ case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL:
+ return "RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL";
+ case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS:
+ return "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS";
+ case RIL_REQUEST_DTMF_START:
+ return "RIL_REQUEST_DTMF_START";
+ case RIL_REQUEST_DTMF_STOP:
+ return "RIL_REQUEST_DTMF_STOP";
+ case RIL_REQUEST_BASEBAND_VERSION:
+ return "RIL_REQUEST_BASEBAND_VERSION";
+ case RIL_REQUEST_SEPARATE_CONNECTION:
+ return "RIL_REQUEST_SEPARATE_CONNECTION";
+ case RIL_REQUEST_SET_MUTE:
+ return "RIL_REQUEST_SET_MUTE";
+ case RIL_REQUEST_GET_MUTE:
+ return "RIL_REQUEST_GET_MUTE";
+ case RIL_REQUEST_QUERY_CLIP:
+ return "RIL_REQUEST_QUERY_CLIP";
+ case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE:
+ return "RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE";
+ case RIL_REQUEST_DATA_CALL_LIST:
+ return "RIL_REQUEST_DATA_CALL_LIST";
+ case RIL_REQUEST_RESET_RADIO:
+ return "RIL_REQUEST_RESET_RADIO";
+ case RIL_REQUEST_OEM_HOOK_RAW:
+ return "RIL_REQUEST_OEM_HOOK_RAW";
+ case RIL_REQUEST_OEM_HOOK_STRINGS:
+ return "RIL_REQUEST_OEM_HOOK_STRINGS";
+ case RIL_REQUEST_SCREEN_STATE:
+ return "RIL_REQUEST_SCREEN_STATE";
+ case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION:
+ return "RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION";
+ case RIL_REQUEST_WRITE_SMS_TO_SIM:
+ return "RIL_REQUEST_WRITE_SMS_TO_SIM";
+ case RIL_REQUEST_DELETE_SMS_ON_SIM:
+ return "RIL_REQUEST_DELETE_SMS_ON_SIM";
+ case RIL_REQUEST_SET_BAND_MODE:
+ return "RIL_REQUEST_SET_BAND_MODE";
+ case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE:
+ return "RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE";
+ case RIL_REQUEST_STK_GET_PROFILE:
+ return "RIL_REQUEST_STK_GET_PROFILE";
+ case RIL_REQUEST_STK_SET_PROFILE:
+ return "RIL_REQUEST_STK_SET_PROFILE";
+ case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND:
+ return "RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND";
+ case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE:
+ return "RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE";
+ case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM:
+ return "RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM";
+ case RIL_REQUEST_EXPLICIT_CALL_TRANSFER:
+ return "RIL_REQUEST_EXPLICIT_CALL_TRANSFER";
+ case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE:
+ return "RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE";
+ case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE:
+ return "RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE";
+ case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS:
+ return "RIL_REQUEST_GET_NEIGHBORING_CELL_IDS";
+ case RIL_REQUEST_SET_LOCATION_UPDATES:
+ return "RIL_REQUEST_SET_LOCATION_UPDATES";
+ case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE:
+ return "RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE";
+ case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE:
+ return "RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE";
+ case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE:
+ return "RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE";
+ case RIL_REQUEST_SET_TTY_MODE:
+ return "RIL_REQUEST_SET_TTY_MODE";
+ case RIL_REQUEST_QUERY_TTY_MODE:
+ return "RIL_REQUEST_QUERY_TTY_MODE";
+ case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE:
+ return "RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE";
+ case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE:
+ return "RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE";
+ case RIL_REQUEST_CDMA_FLASH:
+ return "RIL_REQUEST_CDMA_FLASH";
+ case RIL_REQUEST_CDMA_BURST_DTMF:
+ return "RIL_REQUEST_CDMA_BURST_DTMF";
+ case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY:
+ return "RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY";
+ case RIL_REQUEST_CDMA_SEND_SMS:
+ return "RIL_REQUEST_CDMA_SEND_SMS";
+ case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE:
+ return "RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE";
+ case RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG:
+ return "RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG";
+ case RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG:
+ return "RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG";
+ case RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION:
+ return "RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION";
+ case RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG:
+ return "RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG";
+ case RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG:
+ return "RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG";
+ case RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION:
+ return "RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION";
+ case RIL_REQUEST_CDMA_SUBSCRIPTION:
+ return "RIL_REQUEST_CDMA_SUBSCRIPTION";
+ case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM:
+ return "RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM";
+ case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM:
+ return "RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM";
+ case RIL_REQUEST_DEVICE_IDENTITY:
+ return "RIL_REQUEST_DEVICE_IDENTITY";
+ case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE:
+ return "RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE";
+ case RIL_REQUEST_GET_SMSC_ADDRESS:
+ return "RIL_REQUEST_GET_SMSC_ADDRESS";
+ case RIL_REQUEST_SET_SMSC_ADDRESS:
+ return "RIL_REQUEST_SET_SMSC_ADDRESS";
+ case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS:
+ return "RIL_REQUEST_REPORT_SMS_MEMORY_STATUS";
+ case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING:
+ return "RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING";
+ case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE:
+ return "RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE";
+ case RIL_REQUEST_ISIM_AUTHENTICATION:
+ return "RIL_REQUEST_ISIM_AUTHENTICATION";
+ case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU:
+ return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU";
+ case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS:
+ return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS";
+ case RIL_REQUEST_SET_INITIAL_ATTACH_APN:
+ return "RIL_REQUEST_SET_INITIAL_ATTACH_APN";
+ default:
+ return "<INVALID>";
+ }
+}
+
+const char *ril_unsol_request_to_string(int request)
+{
+ switch (request) {
+ case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED:
+ return "UNSOL_RESPONSE_RADIO_STATE_CHANGED";
+ case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED:
+ return "UNSOL_RESPONSE_CALL_STATE_CHANGED";
+ case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED:
+ return "UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED";
+ case RIL_UNSOL_RESPONSE_NEW_SMS:
+ return "UNSOL_RESPONSE_NEW_SMS";
+ case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT:
+ return "UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT";
+ case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM:
+ return "UNSOL_RESPONSE_NEW_SMS_ON_SIM";
+ case RIL_UNSOL_ON_USSD:
+ return "UNSOL_ON_USSD";
+ case RIL_UNSOL_ON_USSD_REQUEST:
+ return "UNSOL_ON_USSD_REQUEST(obsolete)";
+ case RIL_UNSOL_NITZ_TIME_RECEIVED:
+ return "UNSOL_NITZ_TIME_RECEIVED";
+ case RIL_UNSOL_SIGNAL_STRENGTH:
+ return "UNSOL_SIGNAL_STRENGTH";
+ case RIL_UNSOL_SUPP_SVC_NOTIFICATION:
+ return "UNSOL_SUPP_SVC_NOTIFICATION";
+ case RIL_UNSOL_STK_SESSION_END:
+ return "UNSOL_STK_SESSION_END";
+ case RIL_UNSOL_STK_PROACTIVE_COMMAND:
+ return "UNSOL_STK_PROACTIVE_COMMAND";
+ case RIL_UNSOL_STK_EVENT_NOTIFY:
+ return "UNSOL_STK_EVENT_NOTIFY";
+ case RIL_UNSOL_STK_CALL_SETUP:
+ return "UNSOL_STK_CALL_SETUP";
+ case RIL_UNSOL_SIM_SMS_STORAGE_FULL:
+ return "UNSOL_SIM_SMS_STORAGE_FUL";
+ case RIL_UNSOL_SIM_REFRESH:
+ return "UNSOL_SIM_REFRESH";
+ case RIL_UNSOL_DATA_CALL_LIST_CHANGED:
+ return "UNSOL_DATA_CALL_LIST_CHANGED";
+ case RIL_UNSOL_CALL_RING:
+ return "UNSOL_CALL_RING";
+ case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED:
+ return "UNSOL_RESPONSE_SIM_STATUS_CHANGED";
+ case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS:
+ return "UNSOL_NEW_CDMA_SMS";
+ case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS:
+ return "UNSOL_NEW_BROADCAST_SMS";
+ case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL:
+ return "UNSOL_CDMA_RUIM_SMS_STORAGE_FULL";
+ case RIL_UNSOL_RESTRICTED_STATE_CHANGED:
+ return "UNSOL_RESTRICTED_STATE_CHANGED";
+ case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE:
+ return "UNSOL_ENTER_EMERGENCY_CALLBACK_MODE";
+ case RIL_UNSOL_CDMA_CALL_WAITING:
+ return "UNSOL_CDMA_CALL_WAITING";
+ case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS:
+ return "UNSOL_CDMA_OTA_PROVISION_STATUS";
+ case RIL_UNSOL_CDMA_INFO_REC:
+ return "UNSOL_CDMA_INFO_REC";
+ case RIL_UNSOL_OEM_HOOK_RAW:
+ return "UNSOL_OEM_HOOK_RAW";
+ case RIL_UNSOL_RINGBACK_TONE:
+ return "UNSOL_RINGBACK_TONE";
+ case RIL_UNSOL_RESEND_INCALL_MUTE:
+ return "UNSOL_RESEND_INCALL_MUTE";
+ case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED:
+ return "UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED";
+ case RIL_UNSOL_CDMA_PRL_CHANGED:
+ return "UNSOL_CDMA_PRL_CHANGED";
+ case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE:
+ return "UNSOL_EXIT_EMERGENCY_CALLBACK_MODE";
+ case RIL_UNSOL_RIL_CONNECTED:
+ return "UNSOL_RIL_CONNECTED";
+ default:
+ return "<unknown request>";
+ }
+}
+
+const char *ril_pdp_fail_to_string(int status)
+{
+ switch (status) {
+ case PDP_FAIL_NONE:
+ return "NONE";
+ case PDP_FAIL_OPERATOR_BARRED:
+ return "OPERATOR_BARRED";
+ case PDP_FAIL_INSUFFICIENT_RESOURCES:
+ return "INSUFFICIENT_RESOURCES";
+ case PDP_FAIL_MISSING_UKNOWN_APN:
+ return "MISSING_UKNOWN_APN";
+ case PDP_FAIL_UNKNOWN_PDP_ADDRESS_TYPE:
+ return "UNKNOWN_PDP_ADDRESS_TYPE";
+ case PDP_FAIL_USER_AUTHENTICATION:
+ return "USER_AUTHENTICATION";
+ case PDP_FAIL_ACTIVATION_REJECT_GGSN:
+ return "ACTIVATION_REJECT_GGSN";
+ case PDP_FAIL_ACTIVATION_REJECT_UNSPECIFIED:
+ return "ACTIVATION_REJECT_UNSPECIFIED";
+ case PDP_FAIL_SERVICE_OPTION_NOT_SUPPORTED:
+ return "SERVICE_OPTION_NOT_SUPPORTED";
+ case PDP_FAIL_SERVICE_OPTION_NOT_SUBSCRIBED:
+ return "SERVICE_OPTION_NOT_SUBSCRIBED";
+ case PDP_FAIL_SERVICE_OPTION_OUT_OF_ORDER:
+ return "SERVICE_OPTION_OUT_OF_ORDER";
+ case PDP_FAIL_NSAPI_IN_USE:
+ return "NSAPI_IN_USE";
+ case PDP_FAIL_REGULAR_DEACTIVATION:
+ return "REGULAR_DEACTIVATION";
+ case PDP_FAIL_ONLY_IPV4_ALLOWED:
+ return "ONLY_IPV4_ALLOWED";
+ case PDP_FAIL_ONLY_IPV6_ALLOWED:
+ return "ONLY_IPV6_ALLOWED";
+ case PDP_FAIL_ONLY_SINGLE_BEARER_ALLOWED:
+ return "ONLY_SINGLE_BEARER_ALLOWED";
+ case PDP_FAIL_PROTOCOL_ERRORS:
+ return "PROTOCOL_ERRORS";
+ case PDP_FAIL_VOICE_REGISTRATION_FAIL:
+ return "VOICE_REGISTRATION_FAIL";
+ case PDP_FAIL_DATA_REGISTRATION_FAIL:
+ return "DATA_REGISTRATION_FAIL";
+ case PDP_FAIL_SIGNAL_LOST:
+ return "SIGNAL_LOST";
+ case PDP_FAIL_PREF_RADIO_TECH_CHANGED:
+ return "PREF_RADIO_TECH_CHANGED";
+ case PDP_FAIL_RADIO_POWER_OFF:
+ return "RADIO_POWER_OFF";
+ case PDP_FAIL_TETHERED_CALL_ACTIVE:
+ return "TETHERED_CALL_ACTIVE";
+ case PDP_FAIL_ERROR_UNSPECIFIED:
+ return "ERROR_UNSPECIFIED";
+ default:
+ if (g_snprintf(temp_str, sizeof(temp_str),
+ "<UNKNOWN (%d)>", status))
+ return temp_str;
+ else
+ return "<UNKNOWN>";
+ }
+}
+
+void g_ril_util_debug_chat(gboolean in, const char *str, gsize len,
+ GRilDebugFunc debugf, gpointer user_data)
+{
+ char type = in ? '<' : '>';
+ gsize escaped = 2; /* Enough for '<', ' ' */
+ char *escaped_str;
+ const char *esc = "<ESC>";
+ gsize esc_size = strlen(esc);
+ const char *ctrlz = "<CtrlZ>";
+ gsize ctrlz_size = strlen(ctrlz);
+ gsize i;
+
+ if (debugf == NULL || !len)
+ return;
+
+ for (i = 0; i < len; i++) {
+ char c = str[i];
+
+ if (g_ascii_isprint(c))
+ escaped += 1;
+ else if (c == '\r' || c == '\t' || c == '\n')
+ escaped += 2;
+ else if (c == 26)
+ escaped += ctrlz_size;
+ else if (c == 25)
+ escaped += esc_size;
+ else
+ escaped += 4;
+ }
+
+ escaped_str = g_try_malloc(escaped + 1);
+ if (escaped_str == NULL)
+ return;
+
+ escaped_str[0] = type;
+ escaped_str[1] = ' ';
+ escaped_str[2] = '\0';
+ escaped_str[escaped] = '\0';
+
+ for (escaped = 2, i = 0; i < len; i++) {
+ unsigned char c = str[i];
+
+ switch (c) {
+ case '\r':
+ escaped_str[escaped++] = '\\';
+ escaped_str[escaped++] = 'r';
+ break;
+ case '\t':
+ escaped_str[escaped++] = '\\';
+ escaped_str[escaped++] = 't';
+ break;
+ case '\n':
+ escaped_str[escaped++] = '\\';
+ escaped_str[escaped++] = 'n';
+ break;
+ case 26:
+ strncpy(&escaped_str[escaped], ctrlz, ctrlz_size);
+ escaped += ctrlz_size;
+ break;
+ case 25:
+ strncpy(&escaped_str[escaped], esc, esc_size);
+ escaped += esc_size;
+ break;
+ default:
+ if (g_ascii_isprint(c))
+ escaped_str[escaped++] = c;
+ else {
+ escaped_str[escaped++] = '\\';
+ escaped_str[escaped++] = '0' + ((c >> 6) & 07);
+ escaped_str[escaped++] = '0' + ((c >> 3) & 07);
+ escaped_str[escaped++] = '0' + (c & 07);
+ }
+ }
+ }
+
+ debugf(escaped_str, user_data);
+ g_free(escaped_str);
+}
+
+void g_ril_util_debug_dump(gboolean in, const unsigned char *buf, gsize len,
+ GRilDebugFunc debugf, gpointer user_data)
+{
+ char type = in ? '<' : '>';
+ GString *str;
+ gsize i;
+
+ if (debugf == NULL || !len)
+ return;
+
+ str = g_string_sized_new(1 + (len * 2));
+ if (str == NULL)
+ return;
+
+ g_string_append_c(str, type);
+
+ for (i = 0; i < len; i++)
+ g_string_append_printf(str, " %02x", buf[i]);
+
+ debugf(str->str, user_data);
+ g_string_free(str, TRUE);
+}
+
+void g_ril_util_debug_hexdump(gboolean in, const unsigned char *buf, gsize len,
+ GRilDebugFunc debugf, gpointer user_data)
+{
+ static const char hexdigits[] = "0123456789abcdef";
+ char str[68];
+ gsize i;
+
+ if (debugf == NULL || !len)
+ return;
+
+ str[0] = in ? '<' : '>';
+
+ for (i = 0; i < len; i++) {
+ str[((i % 16) * 3) + 1] = ' ';
+ str[((i % 16) * 3) + 2] = hexdigits[buf[i] >> 4];
+ str[((i % 16) * 3) + 3] = hexdigits[buf[i] & 0xf];
+ str[(i % 16) + 51] = g_ascii_isprint(buf[i]) ? buf[i] : '.';
+
+ if ((i + 1) % 16 == 0) {
+ str[49] = ' ';
+ str[50] = ' ';
+ str[67] = '\0';
+ debugf(str, user_data);
+ str[0] = ' ';
+ }
+ }
+
+ if (i % 16 > 0) {
+ gsize j;
+ for (j = (i % 16); j < 16; j++) {
+ str[(j * 3) + 1] = ' ';
+ str[(j * 3) + 2] = ' ';
+ str[(j * 3) + 3] = ' ';
+ str[j + 51] = ' ';
+ }
+ str[49] = ' ';
+ str[50] = ' ';
+ str[67] = '\0';
+ debugf(str, user_data);
+ }
+}
+
+gboolean g_ril_util_setup_io(GIOChannel *io, GIOFlags flags)
+{
+ GIOFlags io_flags;
+
+ if (g_io_channel_set_encoding(io, NULL, NULL) != G_IO_STATUS_NORMAL)
+ return FALSE;
+
+ g_io_channel_set_buffered(io, FALSE);
+
+ if (flags & G_IO_FLAG_SET_MASK) {
+ io_flags = g_io_channel_get_flags(io);
+
+ io_flags |= (flags & G_IO_FLAG_SET_MASK);
+
+ if (g_io_channel_set_flags(io, io_flags, NULL) !=
+ G_IO_STATUS_NORMAL)
+ return FALSE;
+ }
+
+ g_io_channel_set_close_on_unref(io, TRUE);
+
+ return TRUE;
+}