+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ciss-converter.h"
+
+static const sc_table_element_type sc_conversion_table_ss[] = {
+ {CISS_ENG_SC_CF, TAPI_SS_FORWARD_WHEN_ALL_FORWARDING_EV, TAPI_SS_TYPE_FORWARDING},
+ {CISS_ENG_SC_CFC, TAPI_SS_FORWARD_WHEN_ALL_CONDITIONAL_EV, TAPI_SS_TYPE_FORWARDING},
+ {CISS_ENG_SC_CFU, TAPI_SS_FORWARD_WHEN_UNCONDITIONAL_EV, TAPI_SS_TYPE_FORWARDING},
+ {CISS_ENG_SC_CFB, TAPI_SS_FORWARD_WHEN_BUSY_EV, TAPI_SS_TYPE_FORWARDING},
+ {CISS_ENG_SC_CFNRY, TAPI_SS_FORWARD_WHEN_NO_ANSWER_EV, TAPI_SS_TYPE_FORWARDING},
+ {CISS_ENG_SC_CFNRC, TAPI_SS_FORWARD_WHEN_NOT_REACHABLE_EV, TAPI_SS_TYPE_FORWARDING},
+ {CISS_ENG_SC_CLIP, TAPI_SS_CLI_CLIP, TAPI_SS_TYPE_IDENTIFICATION},
+ {CISS_ENG_SC_CLIR, TAPI_SS_CLI_CLIR, TAPI_SS_TYPE_IDENTIFICATION},
+ {CISS_ENG_SC_COLP, TAPI_SS_CLI_COLP, TAPI_SS_TYPE_IDENTIFICATION},
+ {CISS_ENG_SC_COLR, TAPI_SS_CLI_COLR, TAPI_SS_TYPE_IDENTIFICATION},
+ {CISS_ENG_SC_CNAP, TAPI_SS_CLI_CNAP, TAPI_SS_TYPE_IDENTIFICATION},
+ {CISS_ENG_SC_CW, 0, TAPI_SS_TYPE_WAITING},
+ {CISS_ENG_SC_B, TAPI_CALL_BARRING_ALL, TAPI_SS_TYPE_BARRING},
+ {CISS_ENG_SC_OB, TAPI_CALL_BARRING_OUTGOING, TAPI_SS_TYPE_BARRING},
+ {CISS_ENG_SC_IB, TAPI_CALL_BARRING_INCOMING, TAPI_SS_TYPE_BARRING},
+ {CISS_ENG_SC_BAOC, TAPI_CALL_BARRING_ALL_OUTGOING_CALLS, TAPI_SS_TYPE_BARRING},
+ {CISS_ENG_SC_BOIC, TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL, TAPI_SS_TYPE_BARRING},
+ {CISS_ENG_SC_BOICEXHC, TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL_EXCEPT, TAPI_SS_TYPE_BARRING},
+ {CISS_ENG_SC_BAIC, TAPI_CALL_BARRING_ALL_INCOMING_CALLS, TAPI_SS_TYPE_BARRING},
+ {CISS_ENG_SC_BICROAM, TAPI_CALL_BARRING_ALL_INCOMING_CALLS_ROAMING, TAPI_SS_TYPE_BARRING}
+};
+
+/* table for conversion between local basic service group (BSG)
+ and tapi BSG.
+
+ elements represent - local BSG value,
+ BSG code : basic service code (BS code) or
+ tele service code (TS code)
+ tapi BSG value
+
+*/
+
+/* need to find mapping with the call type or forward type for call barring and call diverting else not required */
+static const bsg_table_element_type bsg_conversion_table[MAX_BSG_ENTRY] = {
+ {CISS_ENG_BSG_ALL, 0, TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES},
+ {CISS_ENG_BSG_ALL_TS, TS_CODE, TAPI_SS_TS_ALL_TELESERVICES},
+ {CISS_ENG_BSG_TELEPHONY, TS_CODE, TAPI_SS_TS_ALL_SPEECH },
+ /* ALS_SUPPORT : added mapping for auxilliary telephony */
+#ifdef FEATURE_SAMSUNG_ALS
+ {CISS_ENG_BSG_AUX_TELEPHONY, TS_CODE, TAPI_SS_TS_AUX_VOICE},
+#endif
+ {CISS_ENG_BSG_ALL_DATA, TS_CODE, TAPI_SS_TS_ALL_DATA_TELESERVICES},
+ {CISS_ENG_BSG_FAX, TS_CODE, TAPI_SS_TS_FACS},
+ {CISS_ENG_BSG_SMS, TS_CODE, TAPI_SS_TS_SMS},
+ {CISS_ENG_BSG_ALL_TELE_EX_SMS, TS_CODE, TAPI_SS_TS_ALL_TELESERVICES_EXCEPT_SMS},
+ {CISS_ENG_BSG_PLMN_TELE_ALL, TS_CODE, TAPI_SS_TS_ALL_PLMN_SPEC_TELE },
+ {CISS_ENG_BSG_PLMN_TELE_1, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_1},
+ {CISS_ENG_BSG_PLMN_TELE_2, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_2},
+ {CISS_ENG_BSG_PLMN_TELE_3, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_3},
+ {CISS_ENG_BSG_PLMN_TELE_4, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_4},
+ {CISS_ENG_BSG_PLMN_TELE_5, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_5},
+ {CISS_ENG_BSG_PLMN_TELE_6, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_6},
+ {CISS_ENG_BSG_PLMN_TELE_7, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_7},
+ {CISS_ENG_BSG_PLMN_TELE_8, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_8},
+ {CISS_ENG_BSG_PLMN_TELE_9, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_9},
+ {CISS_ENG_BSG_PLMN_TELE_A, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_A},
+ {CISS_ENG_BSG_PLMN_TELE_B, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_B},
+ {CISS_ENG_BSG_PLMN_TELE_C, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_C},
+ {CISS_ENG_BSG_PLMN_TELE_D, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_D},
+ {CISS_ENG_BSG_PLMN_TELE_E, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_E},
+ {CISS_ENG_BSG_PLMN_TELE_F, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_F},
+ {CISS_ENG_BSG_ALL_BS, BS_CODE, TAPI_SS_BS_ALL_BEARER_SERVICES},
+ {CISS_ENG_BSG_ALL_ASYNC, BS_CODE, TAPI_SS_BS_ALL_ASYNCHRONOUS},
+ {CISS_ENG_BSG_ALL_SYNC, BS_CODE, TAPI_SS_BS_ALL_SYNCHRONOUS},
+ {CISS_ENG_BSG_ALL_DC_SYNC, BS_CODE, TAPI_SS_BS_DATA_CIRCUIT_SYNC},
+ {CISS_ENG_BSG_ALL_DC_ASYNC, BS_CODE, TAPI_SS_BS_DATA_CIRCUIT_ASYNC},
+ {CISS_ENG_BSG_ALL_DED_PACKET, BS_CODE, TAPI_SS_BS_DATA_ALL_PDS},
+ {CISS_ENG_BSG_ALL_DED_PAD, BS_CODE, TAPI_SS_BS_ALL_DATA_PADCA},
+ {CISS_ENG_BSG_PLMN_BEAR_ALL, BS_CODE, TAPI_SS_BS_ALL_PLMN_SPEC_BS},
+ {CISS_ENG_BSG_PLMN_BEAR_1, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_1},
+ {CISS_ENG_BSG_PLMN_BEAR_2, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_2},
+ {CISS_ENG_BSG_PLMN_BEAR_3, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_3},
+ {CISS_ENG_BSG_PLMN_BEAR_4, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_4},
+ {CISS_ENG_BSG_PLMN_BEAR_5, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_5},
+ {CISS_ENG_BSG_PLMN_BEAR_6, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_6},
+ {CISS_ENG_BSG_PLMN_BEAR_7, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_7},
+ {CISS_ENG_BSG_PLMN_BEAR_8, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_8},
+ {CISS_ENG_BSG_PLMN_BEAR_9, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_9},
+ {CISS_ENG_BSG_PLMN_BEAR_A, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_A},
+ {CISS_ENG_BSG_PLMN_BEAR_B, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_B},
+ {CISS_ENG_BSG_PLMN_BEAR_C, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_C},
+ {CISS_ENG_BSG_PLMN_BEAR_D, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_C},
+ {CISS_ENG_BSG_PLMN_BEAR_E, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_D},
+ {CISS_ENG_BSG_PLMN_BEAR_F, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_F}
+};
+
+int _ciss_convert_bsg_to_tapi_bsg(char *local_bsg, TelSsTeleService_t *tapi_bsg)
+{
+ int valid_bsg = false;
+
+ int n = 0;
+ int local_bsg_len =0;
+
+ local_bsg_len = strlen(local_bsg);
+ if (local_bsg_len > MAX_BSG_LEN)
+ return false;
+
+ DBG("\n [CISS-ENGINE] local_bsg : %s", local_bsg);
+ while (n < MAX_BSG_ENTRY) {
+ DBG("\n [CISS-ENGINE] n : %d", n);
+ if (!strncmp(bsg_conversion_table[n].local_bsg, local_bsg, MAX_SC_LEN)) {
+ DBG("\n [CISS-ENGINE] bsg_conversion_table[n].local_bsg : %s", bsg_conversion_table[n].local_bsg);
+ *tapi_bsg = bsg_conversion_table[n].tapi_bsg_code;
+ valid_bsg = TRUE;
+ break;
+ }
+ n++;
+ }
+ DBG("\n [CISS-ENGINE] end _ciss_convert_bsg_to_tapi_bsg()");
+ return(valid_bsg);
+}
+
+int _ciss_convert_sc_to_tapi_flavor(char *sc, unsigned char *tapi_flavor, unsigned char *ss_type)
+{
+ int valid_sc = false;
+
+ int n = 0;
+ DBG("\n [CISS-ENGINE] sc : %s", sc);
+ while (n < MAX_SC_ENTRY) {
+ if (!strncmp(sc_conversion_table_ss[n].local_sc, sc, MAX_SC_LEN)) {
+ DBG("\n [CISS-ENGINE] sc_conversion_table_ss[n].local_sc : %s", sc_conversion_table_ss[n].local_sc);
+ *tapi_flavor = sc_conversion_table_ss[n].tapi_flavor;
+ *ss_type = sc_conversion_table_ss[n].ss_type;
+ valid_sc = TRUE;
+ break;
+ }
+ n++;
+ }
+ return(valid_sc);
+}
+
+int _ciss_get_tapi_forward_type(TelSsTeleService_t TelecommSvc, TelSsForwardType_t *pForwardType)
+{
+ switch (TelecommSvc) {
+ case TAPI_SS_TS_ALL_SPEECH:
+ *pForwardType = TAPI_CS_FORWARD_TYPE_VOICE_EV;
+ DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_SPEECH\n");
+ break;
+ case TAPI_SS_TS_ALL_TELESERVICES:
+ *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_TELE;
+ DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_TELESERVICES\n");
+ break;
+ case TAPI_SS_TS_FACS:
+ *pForwardType = TAPI_CS_FORWARD_TYPE_FAX_EV;
+ break;
+ case TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES:
+ *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_TELE_BEARER;
+ break;
+ case TAPI_SS_BS_ALL_ASYNCHRONOUS:
+ *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_ASYNC_EV;
+ break;
+ case TAPI_SS_BS_ALL_SYNCHRONOUS:
+ *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_SYNC_EV;
+ break;
+ case TAPI_SS_BS_ALL_BEARER_SERVICES:
+ case TAPI_SS_BS_DATA_CIRCUIT_SYNC:
+ *pForwardType = TAPI_CS_FORWARD_TYPE_DATA_EV;
+ DBG("\n [CISS-ENGINE] ********TAPI_SS_BS_DATA_CIRCUIT_SYNC\n");
+ break;
+ case TAPI_SS_TS_SMS:
+ *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_SYNC_EV;
+ break;
+ default:
+ DBG("\n [CISS-ENGINE] _ciss_get_tapi_forward_type:undefined =%d\n", TelecommSvc);
+ *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_TELE_BEARER;
+ break;
+ }
+
+ DBG("\n [CISS-ENGINE] TelecommSvc = %d, pForwardType= %d\n", TelecommSvc, *pForwardType);
+ return TRUE;
+}
+
+int _ciss_get_tapi_call_type(TelSsTeleService_t TelecommSvc, TelSsCallType_t *pCallType)
+{
+ switch (TelecommSvc) {
+ case TAPI_SS_TS_ALL_SPEECH: /* Voice */
+ *pCallType = TAPI_CALL_TYPE_VOICE_EV;
+ DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_SPEECH\n");
+ break;
+ case TAPI_SS_TS_ALL_TELESERVICES:
+ *pCallType = TAPI_CALL_TYPE_ALL_TELE;
+ DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_TELESERVICES\n");
+ break;
+ case TAPI_SS_TS_ALL_DATA_TELESERVICES: /* Data */
+ *pCallType = TAPI_CALL_TYPE_DATA_EV;
+ break;
+ case TAPI_SS_TS_FACS: /* Fax */
+ *pCallType = TAPI_CALL_TYPE_FAX_EV;
+ break;
+
+ case TAPI_SS_TS_SMS: /* SMS */
+ *pCallType = TAPI_CALL_TYPE_SHORT_MESS_EV;
+ break;
+ case TAPI_SS_BS_ALL_ASYNCHRONOUS:
+ *pCallType = TAPI_CALL_TYPE_ALL_ASYNC_EV;
+ break;
+ case TAPI_SS_BS_ALL_SYNCHRONOUS:
+ *pCallType = TAPI_CALL_TYPE_ALL_SYNC_EV;
+ break;
+ case TAPI_SS_BS_ALL_BEARER_SERVICES: /* Video */
+ case TAPI_SS_BS_DATA_CIRCUIT_SYNC:
+ *pCallType = TAPI_CALL_TYPE_DATA_CIRCUIT_SYNC_EV;
+ DBG("\n [CISS-ENGINE] ********TAPI_SS_BS_DATA_CIRCUIT_SYNC\n");
+ break;
+ case TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES: /* ALL */
+ *pCallType = TAPI_CALL_TYPE_ALL_TELE_BEARER;
+ break;
+ default:
+ DBG("\n [CISS-ENGINE] _ciss_get_tapi_call_type:undefined =%d\n", TelecommSvc);
+ *pCallType = TAPI_CALL_TYPE_ALL_TELE_BEARER;
+ break;
+ }
+ return TRUE;
+}
+
+int _ciss_get_error_from_tapi_error(ciss_err_t *ciss_err, TelSsCause_t tapi_err)
+{
+ DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:defined =%x\n", tapi_err);
+ switch (tapi_err) {
+ case TAPI_SS_UNKNOWNSUBSCRIBER:
+ *ciss_err = CISS_ERR_UNKNOWN_SUBSCRIBER;
+ break;
+ case TAPI_SS_BEARERSERVICENOTPROVISIONED:
+ *ciss_err = CISS_ERR_BEARER_NOT_PROVISIONED;
+ break;
+ case TAPI_SS_TELESERVICENOTPROVISIONED:
+ *ciss_err = CISS_ERR_TELESERVICE_NOT_PROVISIONED;
+ break;
+ case TAPI_SS_CALLBARRED:
+ *ciss_err = CISS_ERR_CALL_BARRED;
+ break;
+ case TAPI_SS_ILLEGALSSOPERATION:
+ *ciss_err = CISS_ERR_ILLEGAL_SS_OPER;
+ break;
+ case TAPI_SS_ERRORSTATUS:
+ *ciss_err = CISS_ERR_ERR_STATUS;
+ break;
+ case TAPI_SS_NOTAVAILABLE:
+ *ciss_err = CISS_ERR_NOT_AVAIL;
+ break;
+ case TAPI_SS_SUBSCRIPTIONVIOLATION:
+ *ciss_err = CISS_ERR_SUBSCRIPTION_VIOLATION;
+ break;
+ case TAPI_SS_INCOMPATIBILITY:
+ *ciss_err = CISS_ERR_INCOMPATIBILITY;
+ break;
+ case TAPI_SS_FACILITYNOTSUPPORTED:
+ *ciss_err = CISS_ERR_FACILITY_NOT_SUPPORT;
+ break;
+ case TAPI_SS_SYSTEMFAILURE:
+ *ciss_err = CISS_ERR_SYS_FAILURE;
+ break;
+ case TAPI_SS_DATAMISSING:
+ *ciss_err = CISS_ERR_DATA_MISSING;
+ break;
+ case TAPI_SS_UNEXPECTEDDATAVALUE:
+ *ciss_err = CISS_ERR_UNEXPECTED_DATA;
+ break;
+ case TAPI_SS_MAXNOMPTYEXCEEDED:
+ *ciss_err = CISS_ERR_MPTY_PARTICIPANTS_EXCEED;
+ break;
+ case TAPI_SS_RESOURCESNOTAVAILABLE:
+ *ciss_err = CISS_ERR_RESOURCE_NOT_AVAIL;
+ break;
+ case TAPI_SS_PWREGISTRATIONFAILURE:
+ *ciss_err = CISS_ERR_PW_REGIST_FAIL;
+ break;
+ case TAPI_SS_NEGATIVEPWCHECK:
+ *ciss_err = CISS_ERR_NEGATIVE_PW_CHECK;
+ break;
+ case TAPI_SS_NUMBEROFPWATTEMPTSVIOLATION:
+ *ciss_err = CISS_ERR_PW_ATTEMPS_VIOLATION;
+ break;
+ default:
+ DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:undefined =%x\n", tapi_err);
+ *ciss_err = CISS_ERR_UNKNOWN;
+ break;
+ }
+ return TRUE;
+}
+
+int _ciss_get_tapi_ussd_resp_type(ciss_ussd_response_type_t resp_type, TelSsUssdRespType_t *pTapiRespType)
+{
+ DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_resp_type:defined =%d\n", resp_type);
+ switch (resp_type) {
+ case CISS_USSD_RES_UNKNOWN_ALPHABET:
+ *pTapiRespType = TAPI_USSD_RES_UNKNOWN_ALPHABET;
+ break;
+ case CISS_USSD_RES_DISPL_BUSY:
+ *pTapiRespType = TAPI_USSD_RES_DISPL_BUSY;
+ break;
+ case CISS_USSD_RES_OK:
+ *pTapiRespType = TAPI_USSD_RES_OK;
+ break;
+ case CISS_USSD_RES_NONE:
+ *pTapiRespType = TAPI_USSD_RES_NONE;
+ break;
+ default:
+ DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_resp_type:undefined =%d\n", resp_type);
+ break;
+ }
+ return TRUE;
+}
+
+int _ciss_get_tapi_ussd_ind_type(ciss_ussd_ind_type_t ind_type, TelSsUssdIndType_t *pTapiIndType)
+{
+ DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_ind_type:defined =%d\n", ind_type);
+ switch (ind_type) {
+ case CISS_USSD_NOTIFY:
+ *pTapiIndType = TAPI_USSD_IND_NOTIFY;
+ break;
+ case CISS_USSD_IND_NO_ACTION_REQUIRE:
+ *pTapiIndType = TAPI_USSD_IND_NO_ACTION_REQUIRE;
+ break;
+ case CISS_USSD_IND_ACTION_REQUIRE:
+ *pTapiIndType = TAPI_USSD_IND_ACTION_REQUIRE;
+ break;
+ case CISS_USSD_TERMINATED_BY_NET:
+ *pTapiIndType = TAPI_USSD_IND_TERMINATED_BY_NET;
+ break;
+ case CISS_USSD_OTHER_CLIENT:
+ *pTapiIndType = TAPI_USSD_IND_OTHER_CLIENT;
+ break;
+ case CISS_USSD_NOT_SUPPORT:
+ *pTapiIndType = TAPI_USSD_IND_NOT_SUPPORT;
+ break;
+ case CISS_USSD_TIME_OUT:
+ *pTapiIndType = TAPI_USSD_IND_TIME_OUT;
+ break;
+ default:
+ DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_ind_type:undefined =%d\n", ind_type);
+ break;
+ }
+ return TRUE;
+}
+
+int _ciss_get_telecomm_svc(TelSsTeleService_t in_teleservice, ciss_telecomm_svc_t *out_teleservice)
+{
+ switch (in_teleservice) {
+#ifdef _SHP_CPHS
+ case TAPI_SS_TS_ALL_SPEECH:
+ *out_teleservice = CISS_TELECOMM_SVC_VOICE;
+ break;
+ case TAPI_SS_TS_AUX_VOICE:
+ *out_teleservice = CISS_TELECOMM_SVC_AUX_VOICE:
+ break;
+#else
+ case TAPI_SS_TS_ALL_SPEECH:
+ *out_teleservice = CISS_TELECOMM_SVC_VOICE;
+ break;
+#endif
+
+ case TAPI_SS_TS_FACS:
+ *out_teleservice = CISS_TELECOMM_SVC_FAX;
+ break;
+ case TAPI_SS_TS_SMS:
+ *out_teleservice = CISS_TELECOMM_SVC_SMS;
+ break;
+ case TAPI_SS_BS_DATA_CIRCUIT_SYNC:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_SYNC;
+ break;
+ case TAPI_SS_ALL_TELE_BEARER:
+ case TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE_BEARER;
+ break;
+ case TAPI_SS_TS_ALL_TELESERVICES:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE;
+ break;
+ case TAPI_SS_TS_ALL_DATA_TELESERVICES:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_TELE;
+ break;
+ case TAPI_SS_TS_ALL_TELESERVICES_EXCEPT_SMS:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS;
+ break;
+ case TAPI_SS_TS_ALL_PLMN_SPEC_TELE:
+ *out_teleservice = CISS_TELECOMM_SVC_PLMN_TELE_ALL;
+ break;
+ case TAPI_SS_BS_ALL_BEARER_SERVICES:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_BEARER;
+ break;
+ case TAPI_SS_BS_ALL_DATA_CDA:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_CDA;
+ break;
+ case TAPI_SS_BS_ALL_SYNCHRONOUS:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_SYNC;
+ break;
+ case TAPI_SS_BS_ALL_ASYNCHRONOUS:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_ASYNC;
+ break;
+ case TAPI_SS_BS_ALL_DATA_PADCA:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PAD;
+ break;
+ case TAPI_SS_BS_ALL_PLMN_SPEC_BS:
+ *out_teleservice = CISS_TELECOMM_SVC_PLMN_BEAR_ALL;
+ break;
+ case TAPI_SS_BS_DATA_CIRCUIT_ASYNC:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_ASYNC;
+ break;
+ case TAPI_SS_BS_DATA_ALL_PDS:
+ *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PS;
+ break;
+ case TAPI_SS_TS_NONE:
+ default:
+ *out_teleservice = CISS_TELECOMM_SVC_NONE;
+ DBG("\n [CISS-ENGINE] _ciss_get_telecomm_svc: ERROR Wrong Bearer = %d come. \n", in_teleservice);
+ break;
+ }
+ return TRUE;
+}
+
+int _ciss_get_forward_flavor_type(TelSsForwardWhen_t in_flavor, ciss_flavor_t *out_flavor)
+{
+ switch (in_flavor) {
+ case TAPI_SS_FORWARD_WHEN_UNCONDITIONAL_EV:
+ *out_flavor = CISS_FLAVOR_DIVERT_UNCONDITIONAL;
+ break;
+ case TAPI_SS_FORWARD_WHEN_BUSY_EV:
+ *out_flavor = CISS_FLAVOR_DIVERT_BUSY;
+ break;
+ case TAPI_SS_FORWARD_WHEN_NO_ANSWER_EV:
+ *out_flavor = CISS_FLAVOR_DIVERT_NOREPLY;
+ break;
+ case TAPI_SS_FORWARD_WHEN_NOT_REACHABLE_EV:
+ *out_flavor = CISS_FLAVOR_DIVERT_UNREACHABLE;
+ break;
+ case TAPI_SS_FORWARD_WHEN_ALL_CONDITIONAL_EV:
+ *out_flavor = CISS_FLAVOR_DIVERT_ALL_CONDITIONAL_FLAVORS;
+ break;
+ case TAPI_SS_FORWARD_WHEN_ALL_FORWARDING_EV:
+ *out_flavor = CISS_FLAVOR_DIVERT_ALL_FLAVORS;
+ break;
+ default:
+ *out_flavor = CISS_FLAVOR_NONE;
+ DBG("\n [CISS-ENGINE] _ciss_get_forward_flavor_type: ERROR Wrong Flavor = %d come. \n", in_flavor);
+ break;
+ }
+ return TRUE;
+}
+
+int _ciss_get_barring_flavor_type(TelSsCallBarType_t in_flavor, ciss_flavor_t *out_flavor)
+{
+ switch (in_flavor) {
+ case TAPI_CALL_BARRING_ALL:
+ *out_flavor = CISS_FLAVOR_BARRING_ALL_FLAVORS;
+ break;
+ case TAPI_CALL_BARRING_ALL_OUTGOING_CALLS:
+ *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
+ break;
+ case TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL:
+ *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL;
+ break;
+ case TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL_EXCEPT:
+ *out_flavor = CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME;
+ break;
+ case TAPI_CALL_BARRING_ALL_INCOMING_CALLS:
+ *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
+ break;
+ case TAPI_CALL_BARRING_ALL_INCOMING_CALLS_ROAMING:
+ *out_flavor = CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING;
+ break;
+ case TAPI_CALL_BARRING_OUTGOING:
+ *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
+ break;
+ case TAPI_CALL_BARRING_INCOMING:
+ *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
+ break;
+ default:
+ *out_flavor = CISS_FLAVOR_NONE;
+ DBG("\n [CISS-ENGINE] _ciss_get_barring_flavor_type: ERROR Wrong Flavor = %d come. \n", in_flavor);
+ break;
+ }
+ return TRUE;
+}
+
+int _ciss_get_result_status_type(TelSsStatus_t in_status, ciss_status_t *out_status)
+{
+ switch (in_status) {
+ case TAPI_SS_STATUS_ACTIVE:
+ *out_status = CISS_STATUS_ACTIVE;
+ break;
+ case TAPI_SS_STATUS_REGISTERED:
+ *out_status = CISS_STATUS_REGISTERED;
+ break;
+ case TAPI_SS_STATUS_PROVISIONED:
+ *out_status = CISS_STATUS_PROVISIONED;
+ break;
+ case TAPI_SS_STATUS_QUIESCENT:
+ *out_status = CISS_STATUS_QUIESCENT;
+ break;
+ case TAPI_SS_STATUS_NOTHING:
+ *out_status = CISS_STATUS_NOTHING;
+ break;
+ default:
+ *out_status = CISS_STATUS_NOTHING;
+ DBG("\n [CISS-ENGINE] _ciss_get_result_status_type: ERROR Wrong TelSsStatus_t = %d come. \n", in_status);
+ break;
+ }
+ return TRUE;
+}
+
+int _ciss_get_requested_tapi_ussd_ind_type(ciss_ussd_ind_type_t *ind_type, TelSsUssdIndType_t pTapiIndType)
+{
+ DBG("\n [CISS-ENGINE] _ciss_get_requested_tapi_ussd_ind_type:defined =%d\n", pTapiIndType);
+ switch (pTapiIndType) {
+ case TAPI_USSD_IND_NOTIFY:
+ *ind_type = CISS_USSD_NOTIFY;
+ break;
+ case TAPI_USSD_IND_NO_ACTION_REQUIRE:
+ *ind_type = CISS_USSD_IND_NO_ACTION_REQUIRE;
+ break;
+ case TAPI_USSD_IND_ACTION_REQUIRE:
+ *ind_type = CISS_USSD_IND_ACTION_REQUIRE;
+ break;
+ case TAPI_USSD_IND_TERMINATED_BY_NET:
+ *ind_type = CISS_USSD_TERMINATED_BY_NET;
+ break;
+ case TAPI_USSD_IND_OTHER_CLIENT:
+ *ind_type = CISS_USSD_OTHER_CLIENT;
+ break;
+ case TAPI_USSD_IND_NOT_SUPPORT:
+ *ind_type = CISS_USSD_NOT_SUPPORT;
+ break;
+ case TAPI_USSD_IND_TIME_OUT:
+ *ind_type = CISS_USSD_TIME_OUT;
+ break;
+ default:
+ DBG("\n [CISS-ENGINE] _ciss_get_requested_tapi_ussd_ind_type:undefined =%d\n", pTapiIndType);
+ break;
+ }
+ return TRUE;
+}
+
+void _ciss_ui_mmi_get_service_name(ciss_service_t in_service, char *service_name)
+{
+ switch (in_service) {
+ case CISS_SERVICE_DIVERTING:
+ strncpy(service_name, CISS_STR_CALL_DIVERTING, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_SERVICE_BARRING:
+ strncpy(service_name, CISS_STR_CALL_BARRING, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_SERVICE_WAITING:
+ strncpy(service_name, CISS_STR_CALL_WAITING, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_SERVICE_CHANGE_BARRING_PASSWD:
+ strncpy(service_name, CISS_STR_CHANGE_PASSWORD, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_SERVICE_USSD:
+ strncpy(service_name, CISS_STR_INFORMATION, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_SERVICE_IDENTIFICATION:
+ default:
+ strncpy(service_name, "", CISS_TEXT_LEN_MAX - 1);
+ break;
+ }
+ service_name[CISS_TEXT_LEN_MAX - 1] = '\0';
+}
+
+void _ciss_ui_mmi_get_flavor_name(ciss_flavor_t in_flavor, char *flavor_name)
+{
+ switch (in_flavor) {
+ case CISS_FLAVOR_DIVERT_UNCONDITIONAL:
+ strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_ALWAYS, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_DIVERT_BUSY:
+ strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_DIVERT_NOREPLY:
+ strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_NOREPLY, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_DIVERT_UNREACHABLE:
+ strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_UNREACHABLE, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_DIVERT_ALL_FLAVORS:
+ strncpy(flavor_name, CISS_STR_ALL_CALLS, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_DIVERT_ALL_CONDITIONAL_FLAVORS:
+ strncpy(flavor_name, CISS_STR_CONDITIONAL, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS:
+ strncpy(flavor_name, CISS_STR_ALL_OUTGOING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL:
+ strncpy(flavor_name, CISS_STR_OUTGOING_INTERNATIONAL_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME:
+ strncpy(flavor_name, CISS_STR_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS:
+ strncpy(flavor_name, CISS_STR_ALL_INCOMING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING:
+ strncpy(flavor_name, CISS_STR_INCOMING_CALLS_BARRED_WHEN_ROAMING, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_BARRING_ALL_FLAVORS:
+ strncpy(flavor_name, CISS_STR_ALL_BARRING, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_BARRING_OUTGOING:
+ strncpy(flavor_name, CISS_STR_OUTGOING_BARRING, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_FLAVOR_BARRING_INCOMING:
+ strncpy(flavor_name, CISS_STR_INCOMING_BARRING, CISS_TEXT_LEN_MAX - 1);
+ break;
+ default:
+ strncpy(flavor_name, "", CISS_TEXT_LEN_MAX - 1);
+ }
+ flavor_name[CISS_TEXT_LEN_MAX - 1] = '\0';
+}
+
+void _ciss_ui_mmi_get_bearer_name(ciss_service_t ss_type, ciss_telecomm_svc_t in_teleservice, char *teleservice_name)
+{
+ DBG("\n [CISS-MMI] _ciss_ui_get_bearer_name: in_teleservice = %d come. \n", in_teleservice);
+
+ switch (in_teleservice) {
+#ifdef _SHP_CPHS
+ case CISS_TELECOMM_SVC_VOICE:
+ if (PshCphsCheckCsp(PSH_CPHS_CSP_ALS))
+ strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
+ else
+ strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_PLMN_TELE_1:
+ strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
+ break;
+#else
+ case CISS_TELECOMM_SVC_VOICE:
+ strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
+ break;
+#endif
+ case CISS_TELECOMM_SVC_FAX:
+ strncpy(teleservice_name, CISS_STR_FAX, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_ALL_CS_SYNC:
+ strncpy(teleservice_name, CISS_STR_VIDEO, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_ALL_TELE_BEARER:
+ strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_ALL_TELE:
+ strncpy(teleservice_name, CISS_STR_ALL_TELECOM_SERVICES, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_ALL_DATA_TELE:
+ strncpy(teleservice_name, CISS_STR_ALL_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS:
+ strncpy(teleservice_name, CISS_STR_FOR_ALL_TELE_SERVICES_EXCEPT_SMS, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_PLMN_TELE_ALL:
+ strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_ALL_BEARER:
+ strncpy(teleservice_name, CISS_STR_ALL_BEARER_SERVICES, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_ALL_DATA_CDA:
+ strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_ALL_SYNC:
+ strncpy(teleservice_name, CISS_STR_ALL_SYNCHRONOUS_SERVICES, CISS_TEXT_LEN_MAX - 1);
+ break;
+#ifdef _SHP_OPERATOR_VODAFONE
+ case CISS_TELECOMM_SVC_ALL_ASYNC:
+ strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
+ break;
+#else
+ case CISS_TELECOMM_SVC_ALL_ASYNC:
+ strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
+ break;
+#endif
+ case CISS_TELECOMM_SVC_ALL_DEDI_PAD:
+ strncpy(teleservice_name, CISS_STR_ALL_PADCA_SERVICES, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_PLMN_BEAR_ALL:
+ strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_SMS:
+ strncpy(teleservice_name, CISS_STR_SMS, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_ALL_CS_ASYNC:
+ strncpy(teleservice_name, CISS_STR_ASYNCHRONOUS_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_ALL_DEDI_PS:
+ strncpy(teleservice_name, CISS_STR_ALL_PDS_SERVICES, CISS_TEXT_LEN_MAX - 1);
+ break;
+ case CISS_TELECOMM_SVC_NONE:
+ default:
+ DBG("\n [CISS-MMI] _ciss_ui_get_bearer_name: ERROR Wrong Bearer = %d come. \n", in_teleservice);
+ if ((ss_type == CISS_SERVICE_WAITING) ||
+ (ss_type == CISS_SERVICE_IDENTIFICATION))
+ strncpy(teleservice_name, "", CISS_TEXT_LEN_MAX - 1);
+ else
+ strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
+ }
+ teleservice_name[CISS_TEXT_LEN_MAX - 1] = '\0';
+}
+
+void _ciss_ui_mmi_get_result_status_type(ciss_service_t ss_type, ciss_status_t result_status, char *szResult)
+{
+ if (ss_type == CISS_SERVICE_DIVERTING) {
+ switch (result_status) {
+ case CISS_STATUS_ACTIVE:
+ strncpy(szResult, CISS_STR_ACTIVATED, CISS_TEXT_LEN_MAX - 1);
+ break;
+
+ case CISS_STATUS_REGISTERED:
+ case CISS_STATUS_PROVISIONED:
+ case CISS_STATUS_QUIESCENT:
+ case CISS_STATUS_NOTHING:
+ default:
+ strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
+ break;
+ }
+ } else {
+ /* Wating or Barring case only have Act / Deact status */
+ switch (result_status) {
+ case CISS_STATUS_ACTIVE:
+ case CISS_STATUS_REGISTERED:
+ strncpy(szResult, CISS_STR_ACTIVATED, CISS_TEXT_LEN_MAX - 1);
+ break;
+
+ case CISS_STATUS_PROVISIONED:
+ case CISS_STATUS_QUIESCENT:
+ case CISS_STATUS_NOTHING:
+ default:
+ strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
+ break;
+ }
+ }
+ szResult[CISS_TEXT_LEN_MAX - 1] = '\0';
+}
+
+