1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 | Project : GSM-PS (6147)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 | Modul : CMH_SSS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 | Copyright 2002 Texas Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 | All rights reserved.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 | This file is confidential and a trade secret of Texas
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 | Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 | The receipt of or possession of this file does not convey
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 | any rights to reproduce or disclose its contents or to
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 | manufacture, use, or sell anything it may describe, in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 | whole, or in part, without the specific written consent of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 | Texas Instruments Berlin, AG.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 | Purpose : This module provides the set functions related to the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 | protocol stack adapter for SS.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 #ifndef CMH_SSS_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #define CMH_SSS_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 #include "aci_all.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 /*==== INCLUDES ===================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 #include "aci.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #include "aci_cmh.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #ifdef FAX_AND_DATA
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "aci_fd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #endif /* of #ifdef FAX_AND_DATA */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #ifdef UART
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #include "dti.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "dti_conn_mng.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #include "ksd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 #include "psa.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #include "psa_ss.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 #include "psa_sim.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 #include "psa_sms.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #include "psa_cc.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #include "cmh.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 #include "cmh_ss.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 #include "cmh_sim.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 #include "cmh_sms.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 #include "cmh_cc.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 #ifdef SIM_TOOLKIT
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 #include "psa_cc.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 #include "psa_sat.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 #include "cmh_sat.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 #include "ati_cmd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 #include "aci_cmd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 #include "cmh_cc.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 #endif /* of SIM_TOOLKIT */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 #include "psa_util.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 #ifdef GPRS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 #include "gaci_cmh.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 #endif /* GPRS */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 #include "phb.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 #include "aci_ext_pers.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 #include "aci_slock.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 #ifdef SIM_PERS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 #include "general.h" // inluded for UINT8 compilation error in sec_drv.h
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 #include "sec_drv.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 EXTERN T_SEC_DRV_CONFIGURATION *cfg_data;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 EXTERN T_SIM_MMI_INSERT_IND *last_sim_mmi_insert_ind;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 #ifdef FF_PHONE_LOCK
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 EXTERN T_OPER_RET_STATUS aci_ext_set_phone_lock_satus(T_SEC_DRV_EXT_PHONE_LOCK_TYPE type,T_SEC_DRV_EXT_PHONE_LOCK_STATUS status,const char *passwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 EXTERN T_OPER_RET_STATUS aci_ext_set_phone_lock_key(const char *pOldKey,const char *pNewKey);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 #if defined (SIM_PERS) || defined (FF_PHONE_LOCK)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 EXTERN T_ACI_RETURN cmhSS_check_oper_result(T_OPER_RET_STATUS result);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 /*==== CONSTANTS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 #define AT_TOA_DEF_INT (129) /* toa default for international no.*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 #define AT_TOA_DEF_NAT (145) /* toa default for national no.*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 #define AT_TOS_DEF (128) /* tos default */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 #define AT_CFNRY_DEF_TIME (20) /* default no reply time */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 /*==== EXPORT =====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 /*==== VARIABLES ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 #ifdef TI_PS_FF_AT_P_CMD_CUSDR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 EXTERN T_ACI_CUSCFG_PARAMS cuscfgParams;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 GLOBAL SHORT Ext_USSD_Res_Pending_sId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 GLOBAL T_CUSDR_EXT_USSD_RES Ext_USSD_Res_Pending = CUSDR_EXT_USSD_RES_Not_Pending;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 /*==== FUNCTIONS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 | PROJECT : GSM-PS (6147) MODULE : CMH_SSS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 | STATE : code ROUTINE : sAT_PlusCCFC |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 PURPOSE : This is the functional counterpart to the +CCFC AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 which is responsible to set the parameters for call
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 forwarding supplementary services.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 <reason> : reason for CF.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 <mode> : CF mode.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 <number> : number to be forwarded to.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 <type> : type of number.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 <class> : class of calls.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 <subaddr>: subaddress of number.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 <satype> : type of subaddress.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 <time> : no reply time.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 GLOBAL T_ACI_RETURN sAT_PlusCCFC ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 T_ACI_CCFC_RSN reason,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 T_ACI_CCFC_MOD mode,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 CHAR* number,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 T_ACI_TOA* type,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 T_ACI_CLASS class_type,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 CHAR* subaddr,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 T_ACI_TOS* satype,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 SHORT time)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 SHORT sId1, sId2; /* holds service id */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 UBYTE ssCd; /* holds ss code */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 UBYTE bst1, bst2; /* holds basic service type */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 UBYTE bs1, bs2; /* holds basic service */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 UBYTE ton, tos; /* holds type of number/subaddress */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 UBYTE npi, oe; /* holds numbering plan/odd.even indicator */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 BOOL mltyTrnFlg = FALSE; /* flags for multi transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 T_CLPTY_PRM *ccfc_cldPty;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 #ifdef SIM_TOOLKIT
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 T_ACI_RETURN retVal;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 #endif /* of SIM_TOOLKIT */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 TRACE_FUNCTION ("sAT_PlusCCFC");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 * check command source
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 if(!cmh_IsVldCmdSrc (srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 if( cmhPrm[srcId].ssCmdPrm.mltyTrnFlg NEQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 TRACE_EVENT("ssCmdPrm.mltyTrnFlg NEQ 0 !!! CCFC busy");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 return( AT_BUSY );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 * check parameter <time>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 if( time EQ ACI_NumParmNotPresent )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 time = AT_CFNRY_DEF_TIME;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 else if (time < CCFC_TIME_MIN AND time >= 1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 /* 07.07 allows [1...30] for time while
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 09.02 allows [5...30]. So map [1..4] to 5 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 time = CCFC_TIME_MIN;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 else if( time > CCFC_TIME_MAX OR time < CCFC_TIME_MIN )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 /* Implements Measure # 85 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 if(!cmhSS_checkCCFC_RSN(reason, &ssCd))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 * check parameter <class>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 if( !cmhSS_CheckClass( class_type, &bs1, &bst1, &bs2, &bst2, &mltyTrnFlg ))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 /* SIM TOOLKIT & FDN HANDLING */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 retVal = cmhSS_CF_SAT_Handle( srcId, reason, mode, number, type, class_type, subaddr, satype, time);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 if( retVal NEQ AT_CMPL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 return( retVal );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 * check parameter <class> against possible ALS-Lock
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 if ((ALSlock EQ ALS_MOD_SPEECH AND class_type EQ CLASS_AuxVce) OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 (ALSlock EQ ALS_MOD_AUX_SPEECH AND class_type NEQ CLASS_AuxVce))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_AlsLock );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 * get a new service table entry
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 sId1 = psaSS_stbNewEntry();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 if( sId1 EQ NO_ENTRY )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 sId2 = NO_ENTRY;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 if( mltyTrnFlg )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 ssShrdPrm.stb[sId1].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 sId2 = psaSS_stbNewEntry();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 if( sId2 EQ NO_ENTRY )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 * check parameter <mode>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 switch( mode )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 * enable, disable and erase call forwarding service
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 case( CCFC_MOD_Disable ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 case( CCFC_MOD_Enable ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 case( CCFC_MOD_Erasure ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 CCD_START;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 if( mode EQ CCFC_MOD_Disable )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 psaSS_asmDeactivateSS( ssCd, bst1, bs1 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 else if( mode EQ CCFC_MOD_Enable )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 psaSS_asmActivateSS( ssCd, bst1, bs1 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 else if( mode EQ CCFC_MOD_Erasure )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 psaSS_asmEraseSS( ssCd, bst1, bs1 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 ssShrdPrm.stb[sId1].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 ssShrdPrm.stb[sId1].ssCode = ssCd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 ssShrdPrm.stb[sId1].srvOwn = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 ssShrdPrm.stb[sId1].ClassType = class_type; /* the complete classes defined by the user */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 /* start first transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 ssShrdPrm.stb[sId1].curCmd = AT_CMD_CCFC;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 cmhSS_flagTrn( sId1, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 psaSS_NewTrns(sId1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 if( mltyTrnFlg )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 if( mode EQ CCFC_MOD_Disable )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 psaSS_asmDeactivateSS( ssCd, bst2, bs2 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 else if( mode EQ CCFC_MOD_Enable )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 psaSS_asmActivateSS( ssCd, bst2, bs2 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 else if( mode EQ CCFC_MOD_Erasure )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 psaSS_asmEraseSS( ssCd, bst2, bs2 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 ssShrdPrm.stb[sId2].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 ssShrdPrm.stb[sId2].ssCode = ssCd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 ssShrdPrm.stb[sId2].srvOwn = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 ssShrdPrm.stb[sId2].ClassType =class_type; /* the complete classes defined by the user */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 /* start second transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 ssShrdPrm.stb[sId2].curCmd = AT_CMD_CCFC;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 cmhSS_flagTrn( sId2, &(ssShrdPrm.mltyTrnFlg)); /* only for the second one */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 cmhSS_flagTrn( sId2, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 psaSS_NewTrns(sId2);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 CCD_END;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 * register call forwarding service
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 case( CCFC_MOD_Register ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 if(number EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 TRACE_EVENT("ERROR: cannot register CCFC without a number");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 MALLOC(ccfc_cldPty, sizeof(T_CLPTY_PRM));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337 cmhCC_init_cldPty( ccfc_cldPty );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 cmh_bldCalPrms( number, ccfc_cldPty );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 /* check for TOA default */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 if(type EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344 ton = ccfc_cldPty->ton;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 npi = ccfc_cldPty->npi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347 else if(type->ton EQ TON_NotPresent OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 type->npi EQ NPI_NotPresent)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 ton = ccfc_cldPty->ton;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351 npi = ccfc_cldPty->npi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 ton = type->ton;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356 npi = type->npi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 /* check for TOS default */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 if(satype EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362 tos = TOS_X213;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 oe = OEI_EVEN;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 else if(satype->tos EQ TOS_NotPresent OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 satype->oe EQ OE_NotPresent)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 tos = TOS_X213;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369 oe = OEI_EVEN;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 tos = satype -> tos;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374 oe = satype -> oe;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377 if(subaddr EQ NULL AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 ccfc_cldPty->sub[0] NEQ 0) /* if not set by user AND number contained a subaddress */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 subaddr = (CHAR *)ccfc_cldPty->sub;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 CCD_START;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385 psaSS_asmRegisterSS( ssCd, bst1, bs1,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 ton, npi, (UBYTE*)ccfc_cldPty->num, tos, oe, (UBYTE *)subaddr, (UBYTE)time );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388 ssShrdPrm.stb[sId1].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 ssShrdPrm.stb[sId1].ssCode = ssCd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390 ssShrdPrm.stb[sId1].srvOwn = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392 /* start first transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 ssShrdPrm.stb[sId1].curCmd = AT_CMD_CCFC;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394 cmhSS_flagTrn( sId1, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 psaSS_NewTrns(sId1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397 if( mltyTrnFlg )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 psaSS_asmRegisterSS( ssCd, bst2, bs2,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 ton, npi, (UBYTE*)ccfc_cldPty->num, tos, oe, (UBYTE *)subaddr, (UBYTE)time );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402 ssShrdPrm.stb[sId2].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 ssShrdPrm.stb[sId2].ssCode = ssCd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404 ssShrdPrm.stb[sId2].srvOwn = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406 /* start second transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 ssShrdPrm.stb[sId2].curCmd = AT_CMD_CCFC;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408 cmhSS_flagTrn( sId2, &(ssShrdPrm.mltyTrnFlg)); /* only for the second one */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409 cmhSS_flagTrn( sId2, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 psaSS_NewTrns(sId2);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412 MFREE(ccfc_cldPty);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 CCD_END;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418 * unexpected mode
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 case( CCFC_MOD_NotPresent ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 ssShrdPrm.stb[sId1].ntryUsdFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425 if( sId2 NEQ NO_ENTRY ) ssShrdPrm.stb[sId2].ntryUsdFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
427 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
428 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
430
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
432 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433 * log command execution
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
434 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
435 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438 T_ACI_CLOG cmdLog; /* holds logging info */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
440 cmdLog.atCmd = AT_CMD_CCFC;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
441 cmdLog.cmdType = CLOG_TYPE_Set;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 cmdLog.retCode = AT_EXCT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443 cmdLog.cId = ACI_NumParmNotPresent;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 cmdLog.sId = sId1+1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
445 cmdLog.cmdPrm.sCCFC.srcId = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 cmdLog.cmdPrm.sCCFC.reason = reason;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447 cmdLog.cmdPrm.sCCFC.mode = mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448 cmdLog.cmdPrm.sCCFC.number = number;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449 cmdLog.cmdPrm.sCCFC.type = type;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
450 cmdLog.cmdPrm.sCCFC.class_type = class_type;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451 cmdLog.cmdPrm.sCCFC.subaddr = subaddr;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452 cmdLog.cmdPrm.sCCFC.satype = satype;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 cmdLog.cmdPrm.sCCFC.time = time;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
454
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
455 rAT_PercentCLOG( &cmdLog );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
456 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
457 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
458
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
459 return( AT_EXCT );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
460 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
461
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
462 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464 | PROJECT : GSM-PS (6147) MODULE : CMH_SSS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465 | STATE : code ROUTINE : sAT_PlusCLCK |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
466 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
468 PURPOSE : This is the functional counterpart to the +CLCK AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
469 which is responsible to set the parameters for call
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
470 barring supplementary services.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
471
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 <fac> : CB facility.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
473 <mode> : CB mode.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474 <passwd> : password for CB facility.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
475 <class_type>: class of calls.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477 LOCAL BOOL check_sat_cb_pwd_required(UBYTE ssCd, CHAR *passwd)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
479 #ifdef SIM_TOOLKIT
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480 SHORT ss_id = NO_ENTRY;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481 T_OWN owner;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483 /* Special case: there was an SS (by STK) transaction running.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484 It returned get password, handle the password for this transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 TRACE_FUNCTION ("check_sat_ss_pwd_required ()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488 /* satShrdPrm.sId_pwd_requested will be reset by any mnss_end_ind
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 to be sure it has been reset.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490 This means: user has to give password right after error has been
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
491 shown. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
492 ss_id = satShrdPrm.sId_pwd_requested;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
493 if( ss_id EQ NO_ENTRY)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
494 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
495 return(FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
496 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
497
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
498 if( ssShrdPrm.stb[ss_id].srvOwn NEQ OWN_SRC_SAT )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
499 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
500 satShrdPrm.sId_pwd_requested = NO_ENTRY;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
501 return(FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
502 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
503 TRACE_EVENT("Password required during a SAT session");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
504
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
505 if( ssShrdPrm.stb[ss_id].curCmd NEQ ((T_ACI_AT_CMD)KSD_CMD_CB) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
506 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
507 TRACE_EVENT_P1("Wrong command context: %d", ssShrdPrm.stb[ss_id].curCmd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
508 satShrdPrm.sId_pwd_requested = NO_ENTRY;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
509 return(FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
510 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
511 owner = ssShrdPrm.stb[ss_id].srvOwn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
512
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
513 if(ssShrdPrm.stb[ss_id].ssCode EQ ssCd)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
514 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
515 /* store for later use (as usual)*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
516 strncpy
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
517 (
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
518 (char *) cmhPrm[owner].ssCmdPrm.CXXXpwd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
519 (char *) passwd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
520 MAX_PWD_NUM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
521 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
522 cmhPrm[owner].ssCmdPrm.CXXXpwd[MAX_PWD_NUM] = '\0';
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
523 psaSS_asmVerifyPWD( cmhPrm[owner].ssCmdPrm.CXXXpwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
524 psaSS_CntTrns(ss_id);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
525 satShrdPrm.sId_pwd_requested = NO_ENTRY;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
526 return(TRUE); /* as pwd only needed for SAT session*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
527 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
528 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
529 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
530 TRACE_EVENT_P1("Wrong Service type: %d", ssCd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
531 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
532 satShrdPrm.sId_pwd_requested = NO_ENTRY;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
533 #endif /* SIM_TOOLKIT */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
534 return(FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
535 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
536
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
537 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
538 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
539 | Function : sAT_PlusCLCK
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
540 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
541 | Description : This is the functional counterpart to the +CLCK AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
542 | which is responsible to set the parameters for call
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
543 | barring supplementary services. also fo locking and unlocking ME for categories
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
544 | Networl lock, Network Subset lock, Service Provider Lock, Corporate Lock, SIM Lock
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
545 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
546 | Parameters : <fac> : CB facility.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
547 | <mode> : CB mode.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
548 | <passwd> : password for CB facility.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
549 | <class_type>: class of calls.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
550 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
551 | Return : AT_FAIL - execution of command failed
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
552 | AT_CMPL - execution of command completed
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
553 | AT_EXCT - execution of command is in progress
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
554 | AT_BUSY - execution of command is rejected due
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
555 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
556 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
557 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
558
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
559 GLOBAL T_ACI_RETURN sAT_PlusCLCK ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
560 T_ACI_FAC fac,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
561 T_ACI_CLCK_MOD mode,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
562 CHAR * passwd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
563 T_ACI_CLASS class_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
564 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
565 SHORT sId1, sId2; /* holds service id */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
566 UBYTE ssCd; /* holds ss code */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
567 UBYTE bst1, bst2; /* holds basic service type */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
568 UBYTE bs1, bs2; /* holds basic service */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
569 BOOL mltyTrnFlg = FALSE; /* flags for multi transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
570 #ifdef SIM_PERS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
571 T_SIMLOCK_TYPE slocktype;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
572 T_SIMLOCK_STATUS rlockstatus;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
573 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
574 SHORT psasim_ret;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
575 BOOL done = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
576 #ifdef SIM_PERS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
577 T_ACI_CME_ERR err_code = CME_ERR_NotPresent; /* code holding the correct error code calculated */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
578 UBYTE cmdBuf; /* buffers current command */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
579 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
580 #ifdef SIM_PERS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
581 T_OPER_RET_STATUS fcResetStat; /*holds Failure Counter Reset Return Status Introduced on 11/03/2005*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
582 T_OPER_RET_STATUS masterunlockStat;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
583 T_SIMLOCK_STATUS retSlStatus; /* holds return code */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
584 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
585 #ifdef FF_PHONE_LOCK
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
586 T_OPER_RET_STATUS phone_lock_oper_ret_stat;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
587 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
588 T_ACI_RETURN retVal;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
589
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
590 TRACE_FUNCTION ("sAT_PlusCLCK ()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
591
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
592 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
593 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
594 * check command source
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
595 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
596 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
597 if(!cmh_IsVldCmdSrc (srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
598 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
599 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
600 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
601
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
602 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
603 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
604 * check parameter <fac>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
605 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
606 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
607 /* Implements Measure # 166 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
608 #ifdef SIM_PERS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
609 if((fac EQ FAC_Fc) OR ( fac EQ FAC_Fcm) OR ( fac EQ FAC_Mu) OR (fac EQ FAC_Mum))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
610 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
611 ssCd = NOT_PRESENT_8BIT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
612 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
613 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
614 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
615 if( !cmhSS_getSSCd(fac, &ssCd) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
616 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
617 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
618 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
619 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
620 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
621 * if action is related to SS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
622 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
623 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
624 if( ssCd NEQ NOT_PRESENT_8BIT )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
625 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
626 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
627 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
628 * check parameter <passwd>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
629 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
630 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
631 if( passwd AND strlen( passwd ) > MAX_PWD_NUM )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
632 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
633 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
634 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
635 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
636
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
637 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
638 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
639 * check parameter <class>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
640 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
641 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
642 if( !cmhSS_CheckCbClass( class_type, &bs1, &bst1, &bs2, &bst2, &mltyTrnFlg ))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
643 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
644 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
645 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
646 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
647
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
648 if( cmhPrm[srcId].ssCmdPrm.mltyTrnFlg NEQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
649 return( AT_BUSY );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
650
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
651 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
652 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
653 * check combination of <mode> and <fac>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
654 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
655 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
656 if((fac EQ FAC_Ab OR fac EQ FAC_Ag OR fac EQ FAC_Ac)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
657 AND mode NEQ CLCK_MOD_Unlock )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
658 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
659 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
660 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
661 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
662
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
663 /*** Shangai's labs tessession fix: adapted to this version from 1.3.3 (TCS 2.0) ****/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
664 /* Special case: there was an SS (by STK) transaction running.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
665 It returned get password, handle the password for this transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
666 done = check_sat_cb_pwd_required(ssCd, passwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
667 if(done)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
668 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
669 return(AT_CMPL); /* as pwd only needed for SAT session*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
670 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
671 /* End fix */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
672
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
673
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
674 /* SIM TOOLKIT & FDN HANDLING */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
675 retVal = cmhSS_Call_Barr_SAT_Handle( srcId, mode, fac, passwd, class_type);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
676
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
677 if( retVal NEQ AT_CMPL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
678 return( retVal );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
679
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
680 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
681 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
682 * get a new service table entry
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
683 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
684 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
685 sId1 = psaSS_stbNewEntry();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
686
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
687 if( sId1 EQ NO_ENTRY )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
688 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
689 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
690 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
691 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
692
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
693 sId2 = NO_ENTRY;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
694
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
695 if( mltyTrnFlg )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
696 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
697 ssShrdPrm.stb[sId1].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
698 sId2 = psaSS_stbNewEntry();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
699
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
700 if( sId2 EQ NO_ENTRY )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
701 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
702 ssShrdPrm.stb[sId1].ntryUsdFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
703 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
704 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
705 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
706 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
707
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
708 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
709 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
710 * check parameter <mode>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
711 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
712 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
713 switch( mode )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
714 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
715 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
716 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
717 * lock and unlock call barring service
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
718 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
719 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
720 case( CLCK_MOD_Unlock ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
721 case( CLCK_MOD_Lock ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
722
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
723 CCD_START;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
724
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
725 if( mode EQ CLCK_MOD_Unlock )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
726 psaSS_asmDeactivateSS( ssCd, bst1, bs1 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
727
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
728 else if( mode EQ CLCK_MOD_Lock )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
729 psaSS_asmActivateSS( ssCd, bst1, bs1 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
730
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
731 ssShrdPrm.stb[sId1].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
732 ssShrdPrm.stb[sId1].ssCode = ssCd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
733 ssShrdPrm.stb[sId1].srvOwn = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
734
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
735 /* start first transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
736 ssShrdPrm.stb[sId1].curCmd = AT_CMD_CLCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
737 cmhSS_flagTrn( sId1, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
738 psaSS_NewTrns(sId1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
739
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
740 if( mltyTrnFlg )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
741 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
742 if( mode EQ CLCK_MOD_Unlock )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
743 psaSS_asmDeactivateSS( ssCd, bst2, bs2 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
744
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
745 else if( mode EQ CLCK_MOD_Lock )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
746 psaSS_asmActivateSS( ssCd, bst2, bs2 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
747
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
748 ssShrdPrm.stb[sId2].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
749 ssShrdPrm.stb[sId2].ssCode = ssCd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
750 ssShrdPrm.stb[sId2].srvOwn = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
751
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
752 /* start second transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
753 ssShrdPrm.stb[sId2].curCmd = AT_CMD_CLCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
754 cmhSS_flagTrn( sId2, &(ssShrdPrm.mltyTrnFlg)); /* only for the second one */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
755 cmhSS_flagTrn( sId2, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
756 psaSS_NewTrns(sId2);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
757 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
758 CCD_END;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
759 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
760
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
761 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
762 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
763 * unexpected mode
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
764 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
765 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
766 case( CLCK_MOD_NotPresent ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
767 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
768
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
769 ssShrdPrm.stb[sId1].ntryUsdFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
770 if( sId2 NEQ NO_ENTRY ) ssShrdPrm.stb[sId2].ntryUsdFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
771
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
772 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
773 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
774 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
775
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
776 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
777 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
778 * store password for later use
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
779 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
780 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
781 if( passwd )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
782 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
783 strncpy
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
784 (
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
785 (char *) cmhPrm[srcId].ssCmdPrm.CXXXpwd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
786 (char *) passwd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
787 MAX_PWD_NUM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
788 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
789 cmhPrm[srcId].ssCmdPrm.CXXXpwd[MAX_PWD_NUM] = '\0';
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
790 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
791 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
792
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
793 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
794 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
795 * if action is related to SIM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
796 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
797 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
798 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
799 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
800 if( simEntStat.curCmd NEQ AT_CMD_NONE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
801 return( AT_BUSY );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
802
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
803 switch (fac)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
804 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
805 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
806 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
807 * access PIN 1
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
808 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
809 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
810 case FAC_Sc:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
811 switch( mode )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
812 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
813 case( CLCK_MOD_Unlock ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
814 case( CLCK_MOD_Lock ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
815 if (simShrdPrm.PINStat EQ PS_PUK1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
816 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
817 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_SimPukReq);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
818 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
819 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
820 if (!psaSIM_ChkSIMSrvSup(SRV_CHV1_Disable))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
821 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
822 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
823 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
824 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
825 if( !passwd OR (strlen( passwd ) > PIN_LEN) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
826 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
827 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
828 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
829 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
830 if( strlen( passwd ) < MIN_PIN_LEN OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
831 strlen( passwd ) > PIN_LEN )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
832 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
833 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
834 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
835 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
836 cmhSIM_FillInPIN ( passwd, simShrdPrm.setPrm[srcId].curPIN, PIN_LEN );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
837 simShrdPrm.setPrm[srcId].PINType = PHASE_2_PIN_1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
838 simEntStat.curCmd = AT_CMD_CLCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
839 simShrdPrm.owner = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
840 simEntStat.entOwn = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
841
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
842 if( mode EQ CLCK_MOD_Lock )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
843 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
844 psasim_ret = psaSIM_EnablePIN( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
845 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
846 else /* if( mode EQ CLCK_MOD_Unlock ) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
847 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
848 psasim_ret = psaSIM_DisablePIN( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
849 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
850
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
851 if(psasim_ret < 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
852 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
853 TRACE_EVENT( "FATAL RETURN psaSIM in +CLCK" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
854 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Internal );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
855 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
856 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
857 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
858
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
859 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
860
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
861 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
862 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
863 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
864 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
865
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
866 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
867 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
868 * access fixed dialling feature
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
869 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
870 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
871 case FAC_Fd:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
872 if (!psaSIM_ChkSIMSrvSup(SRV_FDN))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
873 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
874 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
875 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
876 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
877 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
878 Check the SIM PIN States before sending any request to SIM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
879 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
880 if ( simShrdPrm.PINStat EQ PS_PUK2 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
881 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
882 TRACE_EVENT("sAT_PlusCLCK_ME(): SIM PIN-2 Bolcked PUK-2 Required");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
883 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_SimPuk2Req );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
884 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
885 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
886
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
887 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
888 According to the standards 27.007 Sec 7.4 for facility "FDN":
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
889 if PIN2 authentication has not been done during the current session,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
890 PIN2 is required as <passwd>; Below condition will do the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
891 same to check to see whether <passwd> is required / not.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
892 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
893
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
894 if ( simShrdPrm.pn2Stat EQ PS_PIN2 OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
895 simShrdPrm.pn2Stat EQ NO_VLD_PS )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
896 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
897 if ( simShrdPrm.PINStat EQ PS_RDY OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
898 simShrdPrm.PINStat EQ PS_PIN2 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
899 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
900 simShrdPrm.PINStat = PS_PIN2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
901 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
902 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
903 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
904 TRACE_EVENT("sAT_PlusCLCK_ME(): SIM PIN State is NOT Valid");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
905 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_SimFail );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
906 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
907 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
908
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
909 if( !passwd OR ( strlen( passwd ) > PIN_LEN OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
910 strlen( passwd ) < MIN_PIN_LEN ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
911 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
912 TRACE_EVENT("sAT_PlusCLCK_ME(): SIM PIN-2 Password is Omitted");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
913 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_SimPin2Req );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
914 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
915 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
916 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
917
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
918 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
919 * test class_type whether it is supported and store it temporarily for further use
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
920 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
921 if( class_type EQ CLASS_NotPresent OR /* default case */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
922 class_type EQ CLASS_VceDatFax ) /* case 7 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
923 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
924 simShrdPrm.classFDN = CLASS_VceDatFax;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
925 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
926 else if ( class_type EQ CLASS_VceDatFaxSms ) /* case 15 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
927 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
928 simShrdPrm.classFDN = CLASS_VceDatFaxSms; /* set global class type */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
929 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
930 else /* parameter not supported */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
931 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
932 TRACE_EVENT( "class type not supported, +CLCK rejected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
933 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotSupp );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
934 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
935 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
936 simShrdPrm.setPrm[srcId].actProc = (mode EQ CLCK_MOD_Lock)?
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
937 SIM_FDN_ENABLE:SIM_FDN_DISABLE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
938
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
939 simEntStat.curCmd = AT_CMD_CLCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
940 simShrdPrm.owner = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
941 simEntStat.entOwn = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
942
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
943 if( psaSIM_ActivateSIM() < 0 ) /* activate SIM card */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
944 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
945 TRACE_EVENT( "FATAL RETURN psaSIM in +CLCK" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
946 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Internal );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
947 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
948 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
949
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
950 /* store PIN 2 for later use */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
951 /* if( passwd ) ... already checked in the beginning! */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
952 cmhSIM_FillInPIN ( passwd, simShrdPrm.setPrm[srcId].curPIN, PIN_LEN );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
953
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
954 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
955
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
956 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
957 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
958 * lock ALS setting with PIN2
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
959 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
960 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
961 case FAC_Al:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
962
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
963 if( !passwd OR ( strlen( passwd ) > PIN_LEN OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
964 strlen( passwd ) < MIN_PIN_LEN ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
965 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
966 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
967 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
968 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
969
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
970 cmhSIM_FillInPIN ( passwd, simShrdPrm.setPrm[srcId].curPIN, PIN_LEN );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
971
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
972 simShrdPrm.setPrm[srcId].actProc = (mode EQ CLCK_MOD_Lock)?
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
973 SIM_ALS_LOCK:SIM_ALS_UNLOCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
974
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
975 simShrdPrm.setPrm[srcId].PINType = PHASE_2_PIN_2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
976
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
977 simEntStat.curCmd = AT_CMD_CLCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
978 simShrdPrm.owner = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
979 simEntStat.entOwn = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
980
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
981 if( psaSIM_VerifyPIN() < 0 ) /* check PIN2 card */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
982 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
983 TRACE_EVENT( "FATAL RETURN psaSIM in +CLCK" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
984 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Internal );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
985 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
986 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
987
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
988 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
989
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
990 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
991 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
992 * ME Personalisation
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
993 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
994 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
995 #ifdef SIM_PERS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
996 case FAC_Pn:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
997 case FAC_Pu:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
998 case FAC_Pp:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
999 case FAC_Pc:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1000 case FAC_Ps:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1001 case FAC_Pf:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1002 case FAC_Bl:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1003
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1004 switch (fac)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1005 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1006 case FAC_Pn: slocktype = SIMLOCK_NETWORK; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1007 case FAC_Pu: slocktype = SIMLOCK_NETWORK_SUBSET; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1008 case FAC_Pp: slocktype = SIMLOCK_SERVICE_PROVIDER; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1009 case FAC_Pc: slocktype = SIMLOCK_CORPORATE; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1010 case FAC_Ps: slocktype = SIMLOCK_SIM; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1011 case FAC_Pf: slocktype = SIMLOCK_FIRST_SIM; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1012 case FAC_Bl: slocktype = SIMLOCK_BLOCKED_NETWORK; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1013 default: slocktype = SIMLOCK_NETWORK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1014 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1015
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1016 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1017 * Check whether sim is inserted or not before trying to lock/Unlock
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1018 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1019
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1020 if(simShrdPrm.SIMStat EQ SS_OK)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1021 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1022 rlockstatus = (mode EQ CLCK_MOD_Lock)?
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1023 aci_slock_lock(slocktype, passwd):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1024 aci_slock_unlock(slocktype, passwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1025 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1026 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1027 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1028 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1029 * Sim is not present: unlocking is allowed if No_SIM_Unlock flag is OFF
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1030 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1031 if(!aci_slock_set_CFG())
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1032 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1033 ACI_ERR_DESC( ACI_ERR_CLASS_Ext,EXT_ERR_NoMEPD);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1034 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1035 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1036
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1037 if( (mode EQ CLCK_MOD_Unlock) AND !(cfg_data->Flags & SEC_DRV_HDR_FLAG_No_SIM_Unlock))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1038 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1039 MFREE(cfg_data);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1040 rlockstatus = aci_slock_unlock(slocktype, passwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1041 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1042 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1043 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1044 MFREE(cfg_data);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1045 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_SimNotIns);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1046 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1047 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1048 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1049 cmdBuf = AT_CMD_CLCK ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1050 if ( ( (mode EQ CLCK_MOD_Lock) AND (rlockstatus EQ SIMLOCK_ENABLED) ) OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1051 ( (mode EQ CLCK_MOD_Unlock) AND (rlockstatus EQ SIMLOCK_DISABLED) ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1052 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1053 return (AT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1054 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1055 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1056 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1057 if (rlockstatus EQ SIMLOCK_BLOCKED) /* Special error description on blocked personalisation */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1058 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1059 if(!aci_slock_set_CFG())
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1060 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1061 ACI_ERR_DESC( ACI_ERR_CLASS_Ext,EXT_ERR_NoMEPD);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1062 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1063 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1064 aci_set_cme_error(slocktype);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1065 MFREE(cfg_data);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1066 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1067 else if(rlockstatus EQ SIMLOCK_WAIT)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1068 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1069 simEntStat.curCmd = AT_CMD_CLCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1070 simShrdPrm.owner = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1071 simEntStat.entOwn = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1072 AciSLockShrd.check_lock = SIMLOCK_CHECK_LOCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1073 AciSLockShrd.lock_type = slocktype;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1074 AciSLockShrd.lock_passwd = passwd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1075
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1076 return( AT_EXCT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1077 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1078 else if(rlockstatus EQ SIMLOCK_BUSY)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1079 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1080 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Busy );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1081 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1082 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1083 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1084 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_WrongPasswd );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1085 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1086 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1087 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1088
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1089 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1090 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1091 * FC RESET Handling
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1092 Added on 11/03/2005
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1093 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1094 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1095 case FAC_Fc:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1096 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1097 fcResetStat=aci_slock_reset_fc(passwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1098 simEntStat.curCmd = AT_CMD_CLCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1099 if (fcResetStat EQ OPER_SUCCESS)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1100 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1101 if( !aci_slock_set_CFG())
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1102 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1103 ACI_ERR_DESC( ACI_ERR_CLASS_Ext,EXT_ERR_NoMEPD);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1104 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1105 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1106 aci_slock_init();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1107 AciSLockShrd.check_lock = SIMLOCK_CHECK_RESET_FC;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1108 retSlStatus = aci_slock_checkpersonalisation(AciSLockShrd.current_lock);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1109 switch(retSlStatus)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1110 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1111 case SIMLOCK_ENABLED :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1112 return( AT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1113 case SIMLOCK_WAIT :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1114 return (AT_EXCT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1115 default :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1116 return( AT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1117 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1118 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1119 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1120 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1121 cmdBuf = simEntStat.curCmd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1122 simEntStat.curCmd = AT_CMD_NONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1123
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1124 if (fcResetStat EQ OPER_WRONG_PASSWORD)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1125 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1126 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_WrongPasswd );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1127 aci_slock_send_RAT(cmdBuf,CME_ERR_WrongPasswd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1128 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1129 else if (fcResetStat EQ OPER_BUSY)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1130 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1131 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Busy );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1132 aci_slock_send_RAT(cmdBuf,err_code);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1133 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1134 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1135 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1136 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1137 aci_slock_send_RAT(cmdBuf,CME_ERR_Unknown);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1138 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1139 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1140 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1141 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1142 case FAC_Fcm:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1143 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1144 fcResetStat=aci_slock_reset_fc(passwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1145 return(cmhSS_check_oper_result(fcResetStat));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1146 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1147 case( FAC_Mu ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1148 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1149 masterunlockStat = aci_slock_master_unlock(passwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1150 simEntStat.curCmd = AT_CMD_CLCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1151 if( masterunlockStat EQ OPER_SUCCESS )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1152 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1153 if(!aci_slock_set_CFG())
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1154 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1155 ACI_ERR_DESC( ACI_ERR_CLASS_Ext,EXT_ERR_NoMEPD);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1156 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1157 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1158 aci_slock_init();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1159 AciSLockShrd.check_lock = SIMLOCK_CHECK_MASTER_UNLOCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1160 retSlStatus = aci_slock_checkpersonalisation(AciSLockShrd.current_lock);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1161 switch(retSlStatus)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1162 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1163 case SIMLOCK_ENABLED :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1164 return( AT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1165 case SIMLOCK_WAIT :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1166 return (AT_EXCT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1167 default :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1168 return( AT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1169 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1170 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1171 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1172 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1173 cmdBuf = simEntStat.curCmd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1174 simEntStat.curCmd = AT_CMD_NONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1175 if( masterunlockStat EQ OPER_WRONG_PASSWORD )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1176 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1177 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_WrongPasswd );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1178 aci_slock_send_RAT(cmdBuf,CME_ERR_WrongPasswd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1179 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1180 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1181 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1182 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1183 aci_slock_send_RAT(cmdBuf,CME_ERR_Unknown);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1184 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1185 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1186 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1187 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1188 case( FAC_Mum ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1189 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1190 masterunlockStat = aci_slock_master_unlock(passwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1191 return(cmhSS_check_oper_result(masterunlockStat));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1192 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1193 #endif /* SIM_PERS */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1194 #ifdef FF_PHONE_LOCK
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1195 case ( FAC_Pl ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1196 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1197 phone_lock_oper_ret_stat = aci_ext_set_phone_lock_satus(PHONE_LOCK,(T_SEC_DRV_EXT_PHONE_LOCK_STATUS)mode,passwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1198 return(cmhSS_check_oper_result(phone_lock_oper_ret_stat));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1199 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1200
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1201 case ( FAC_Apl ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1202 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1203 phone_lock_oper_ret_stat = aci_ext_set_phone_lock_satus(AUTO_LOCK,(T_SEC_DRV_EXT_PHONE_LOCK_STATUS)mode,passwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1204 return(cmhSS_check_oper_result(phone_lock_oper_ret_stat));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1205
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1206 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1207 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1208 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1209 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1210 * Error handling
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1211 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1212 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1213 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1214 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1215 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1216 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1217 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1218
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1219 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1220 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1221 * log command execution
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1222 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1223 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1224 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1225 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1226 T_ACI_CLOG cmdLog; /* holds logging info */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1227
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1228 cmdLog.atCmd = AT_CMD_CLCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1229 cmdLog.cmdType = CLOG_TYPE_Set;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1230 cmdLog.retCode = AT_EXCT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1231 cmdLog.cId = ACI_NumParmNotPresent;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1232 cmdLog.sId = (ssCd EQ NOT_PRESENT_8BIT)?
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1233 ACI_NumParmNotPresent:/*lint -e(644)*/sId1+1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1234 cmdLog.cmdPrm.sCLCK.srcId = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1235 cmdLog.cmdPrm.sCLCK.fac = fac;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1236 cmdLog.cmdPrm.sCLCK.mode = mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1237 cmdLog.cmdPrm.sCLCK.passwd = passwd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1238 cmdLog.cmdPrm.sCLCK.class_type = class_type;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1239 rAT_PercentCLOG( &cmdLog );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1240 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1241 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1242 return( AT_EXCT );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1243 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1244
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1245 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1246 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1247 | PROJECT : GSM-PS (6147) MODULE : CMH_SSS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1248 | STATE : code ROUTINE : sAT_PlusCPWD |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1249 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1250
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1251 PURPOSE : This is the functional counterpart to the +CPWD AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1252 which is responsible to change the password for call
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1253 barring supplementary services.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1254
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1255 <fac> : CB facility.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1256 <oldpwd> : current password.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1257 <newpwd> : new password.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1258 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1259
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1260 GLOBAL T_ACI_RETURN sAT_PlusCPWD ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1261 T_ACI_FAC fac,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1262 CHAR * oldpwd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1263 CHAR * newpwd)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1264 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1265 T_ACI_RETURN retCd = AT_FAIL; /* holds return code */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1266 UBYTE ssCd; /* holds ss code */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1267 SHORT sId; /* holds service id */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1268 T_OPER_RET_STATUS phone_lock_oper_ret_stat;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1269
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1270 TRACE_FUNCTION ("sAT_PlusCPWD");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1271
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1272 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1273 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1274 * check password parameter
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1275 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1276 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1277 if( !newpwd OR !oldpwd )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1278 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1279 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1280 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1281 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1282
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1283 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1284 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1285 * check parameter <fac>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1286 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1287 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1288 switch( fac )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1289 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1290 /* All Baring Services share the same password so only SS_CD_ALL_CBSS is valid,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1291 everything else will be rejected by the network! */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1292 case( FAC_Ao ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1293 case( FAC_Oi ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1294 case( FAC_Ox ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1295 case( FAC_Ai ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1296 case( FAC_Ir ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1297 case( FAC_Ab ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1298 case( FAC_Ag ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1299 case( FAC_Ac ): ssCd = SS_CD_ALL_CBSS; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1300
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1301 case( FAC_Sc ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1302 case( FAC_P2 ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1303 #ifdef SIM_PERS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1304 case( FAC_Pn ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1305 case( FAC_Pu ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1306 case( FAC_Pc ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1307 case( FAC_Pp ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1308 case( FAC_Pf ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1309 case( FAC_Ps ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1310 case( FAC_Bl ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1311 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1312 #ifdef FF_PHONE_LOCK
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1313 case(FAC_Pl):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1314 case(FAC_Apl):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1315 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1316
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1317 ssCd = NOT_PRESENT_8BIT; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1318
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1319 case( FAC_NotPresent ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1320 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1321
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1322 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1323 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1324 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1325
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1326 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1327 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1328 * if password relates to SS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1329 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1330 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1331 if( ssCd NEQ NOT_PRESENT_8BIT )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1332 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1333 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1334 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1335 * check parameter <oldpwd>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1336 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1337 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1338 if( strlen( newpwd ) > MAX_PWD_NUM OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1339 strlen( oldpwd ) > MAX_PWD_NUM )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1340 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1341 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1342 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1343 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1344
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1345 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1346 *-----------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1347 * get a new service table entry to interrogate SS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1348 *-----------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1349 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1350 sId = psaSS_stbNewEntry();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1351
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1352 if( sId EQ NO_ENTRY )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1353 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1354 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1355 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1356 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1357
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1358 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1359 *-----------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1360 * set up facility information element
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1361 *-----------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1362 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1363 CCD_START;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1364
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1365 psaSS_asmRegisterPWD( ssCd );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1366 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1367 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1368 * declare service table entry as used and the owner of the service
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1369 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1370 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1371 ssShrdPrm.stb[sId].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1372 ssShrdPrm.stb[sId].ssCode = ssCd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1373 ssShrdPrm.stb[sId].srvOwn = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1374
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1375 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1376 *-----------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1377 * start a new transaction
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1378 *-----------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1379 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1380 ssShrdPrm.stb[sId].curCmd = AT_CMD_CPWD;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1381 psaSS_NewTrns(sId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1382
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1383 CCD_END;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1384
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1385 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1386 *-----------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1387 * store passwords for later use
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1388 *-----------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1389 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1390 strncpy
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1391 (
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1392 (char *) cmhPrm[srcId].ssCmdPrm.CXXXpwd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1393 (char *) oldpwd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1394 MAX_PWD_NUM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1395 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1396 cmhPrm[srcId].ssCmdPrm.CXXXpwd[MAX_PWD_NUM] = '\0';
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1397
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1398 strncpy
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1399 (
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1400 (char *) cmhPrm[srcId].ssCmdPrm.CXXXnewPwd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1401 (char *) newpwd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1402 MAX_PWD_NUM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1403 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1404 cmhPrm[srcId].ssCmdPrm.CXXXnewPwd[MAX_PWD_NUM] = '\0';
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1405
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1406 strncpy
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1407 (
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1408 (char *) cmhPrm[srcId].ssCmdPrm.CXXXnewPwd2,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1409 (char *) newpwd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1410 MAX_PWD_NUM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1411 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1412 cmhPrm[srcId].ssCmdPrm.CXXXnewPwd2[MAX_PWD_NUM] = '\0';
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1413 retCd = AT_EXCT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1414 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1415 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1416 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1417 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1418 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1419 * if password relates to SIM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1420 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1421 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1422 switch (fac)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1423 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1424 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1425 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1426 * change PIN 1 / PIN 2
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1427 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1428 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1429 case( FAC_Sc ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1430 case( FAC_P2 ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1431 if( simEntStat.curCmd NEQ AT_CMD_NONE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1432 return( AT_BUSY );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1433
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1434 if( strlen( newpwd ) > PIN_LEN OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1435 strlen( newpwd ) < MIN_PIN_LEN OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1436 strlen( oldpwd ) > PIN_LEN OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1437 strlen( oldpwd ) < MIN_PIN_LEN )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1438 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1439 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1440 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1441 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1442
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1443 if( simEntStat.curCmd NEQ AT_CMD_NONE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1444 return( AT_BUSY );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1445
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1446 cmhSIM_FillInPIN ( oldpwd, simShrdPrm.setPrm[srcId].curPIN, PIN_LEN );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1447 cmhSIM_FillInPIN ( newpwd, simShrdPrm.setPrm[srcId].newPIN, PIN_LEN );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1448
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1449 simShrdPrm.setPrm[srcId].PINType = (fac EQ FAC_Sc)?
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1450 PHASE_2_PIN_1:PHASE_2_PIN_2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1451
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1452 simEntStat.curCmd = AT_CMD_CPWD;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1453 simShrdPrm.owner = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1454 simEntStat.entOwn = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1455
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1456 if( psaSIM_ChangePIN() < 0 ) /* change PIN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1457 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1458 TRACE_EVENT( "FATAL RETURN psaSIM in +CPWD" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1459 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Internal );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1460 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1461 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1462 retCd = AT_EXCT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1463 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1464
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1465 #ifdef SIM_PERS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1466 case( FAC_Pn ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1467 case( FAC_Pu ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1468 case( FAC_Pc ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1469 case( FAC_Pp ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1470 case( FAC_Pf ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1471 case( FAC_Ps ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1472 case( FAC_Bl):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1473 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1474 T_SIMLOCK_TYPE slocktype;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1475 T_OPER_RET_STATUS status;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1476
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1477 switch (fac)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1478 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1479 case FAC_Pn: slocktype = SIMLOCK_NETWORK; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1480 case FAC_Pu: slocktype = SIMLOCK_NETWORK_SUBSET; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1481 case FAC_Pp: slocktype = SIMLOCK_SERVICE_PROVIDER; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1482 case FAC_Pc: slocktype = SIMLOCK_CORPORATE; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1483 case FAC_Ps: slocktype = SIMLOCK_SIM; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1484 case FAC_Pf: slocktype = SIMLOCK_FIRST_SIM; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1485 case FAC_Bl: slocktype = SIMLOCK_BLOCKED_NETWORK; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1486 default: slocktype = SIMLOCK_NETWORK; break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1487
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1488 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1489
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1490 status = aci_slock_change_password( slocktype, oldpwd, newpwd );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1491 if (status EQ OPER_SUCCESS)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1492 return(AT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1493 else if(status EQ OPER_FAIL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1494 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1495 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_WrongPasswd );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1496 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1497 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1498 else if (status EQ OPER_BLOCKED)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1499 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1500 if(!aci_slock_set_CFG())
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1501 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1502 ACI_ERR_DESC( ACI_ERR_CLASS_Ext,EXT_ERR_NoMEPD);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1503 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1504 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1505 aci_set_cme_error(slocktype);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1506 MFREE(cfg_data);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1507 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1508 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1509 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1510 retCd = AT_CMPL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1511 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1512 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1513
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1514 #ifdef FF_PHONE_LOCK
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1515 case FAC_Pl:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1516 case FAC_Apl:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1517 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1518 phone_lock_oper_ret_stat = aci_ext_set_phone_lock_key(oldpwd,newpwd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1519 return(cmhSS_check_oper_result(phone_lock_oper_ret_stat));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1520 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1521 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1522 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1523 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1524
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1525 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1526 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1527 * log command execution
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1528 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1529 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1530 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1531 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1532 T_ACI_CLOG cmdLog; /* holds logging info */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1533
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1534 cmdLog.atCmd = AT_CMD_CPWD;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1535 cmdLog.cmdType = CLOG_TYPE_Set;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1536 cmdLog.retCode = retCd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1537 cmdLog.cId = ACI_NumParmNotPresent;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1538 cmdLog.sId = (ssCd EQ NOT_PRESENT_8BIT)?
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1539 ACI_NumParmNotPresent:/*lint -e(644)*/sId+1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1540 cmdLog.cmdPrm.sCPWD.srcId = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1541 cmdLog.cmdPrm.sCPWD.fac = fac;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1542 cmdLog.cmdPrm.sCPWD.oldpwd = oldpwd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1543 cmdLog.cmdPrm.sCPWD.newpwd = newpwd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1544
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1545 rAT_PercentCLOG( &cmdLog );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1546 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1547 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1548
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1549 return( retCd );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1550 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1551
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1552 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1553 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1554 | PROJECT : GSM-PS (6147) MODULE : CMH_SSS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1555 | STATE : code ROUTINE : sAT_PlusCCWA |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1556 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1557
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1558 PURPOSE : This is the functional counterpart to the +CCWA AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1559 which is responsible to set the parameters for call
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1560 waiting supplementary services.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1561
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1562 <mode> : CW mode.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1563 <class_type>: class of call.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1564 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1565
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1566 GLOBAL T_ACI_RETURN sAT_PlusCCWA ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1567 T_ACI_CCWA_MOD mode,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1568 T_ACI_CLASS class_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1569 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1570 SHORT sId1, sId2; /* holds service id */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1571 UBYTE bst1, bst2; /* holds basic service type */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1572 UBYTE bs1, bs2; /* holds basic service */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1573 BOOL mltyTrnFlg = FALSE; /* flags for multi transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1574
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1575 T_ACI_RETURN retVal;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1576
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1577 TRACE_FUNCTION ("sAT_PlusCCWA ()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1578
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1579 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1580 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1581 * check command source
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1582 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1583 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1584 if(!cmh_IsVldCmdSrc (srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1585 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1586 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1587 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1588
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1589 if( cmhPrm[srcId].ssCmdPrm.mltyTrnFlg NEQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1590
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1591 return( AT_BUSY );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1592
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1593 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1594 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1595 * check parameter <class>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1596 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1597 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1598 if( !cmhSS_CheckClass( class_type, &bs1, &bst1, &bs2, &bst2, &mltyTrnFlg ))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1599 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1600 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1601 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1602 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1603
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1604 /* SIM TOOLKIT & FDN HANDLING */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1605 if (mode NEQ CCWA_MOD_NotInterrogate) /* mode should be valid */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1606 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1607 retVal = cmhSS_CW_SAT_Handle( srcId, (T_ACI_CCFC_MOD)mode, class_type);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1608
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1609 if( retVal NEQ AT_CMPL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1610 return( retVal );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1611 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1612
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1613
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1614 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1615 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1616 * get a new service table entry to interrogate SS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1617 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1618 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1619 sId1 = psaSS_stbNewEntry();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1620
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1621 if( sId1 EQ NO_ENTRY )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1622 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1623 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1624 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1625 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1626
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1627 sId2 = NO_ENTRY;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1628
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1629 if( mltyTrnFlg )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1630 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1631 ssShrdPrm.stb[sId1].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1632
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1633 sId2 = psaSS_stbNewEntry();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1634
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1635 if( sId2 EQ NO_ENTRY )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1636 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1637 ssShrdPrm.stb[sId1].ntryUsdFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1638 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1639 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1640 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1641 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1642
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1643 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1644 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1645 * check parameter <mode>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1646 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1647 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1648 switch( mode )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1649 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1650 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1651 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1652 * lock and unlock call barring service
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1653 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1654 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1655 case( CCWA_MOD_Disable ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1656 case( CCWA_MOD_Enable ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1657
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1658 CCD_START;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1659
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1660 if( mode EQ CCWA_MOD_Disable )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1661 psaSS_asmDeactivateSS( SS_CD_CW, bst1, bs1 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1662
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1663 else if( mode EQ CCWA_MOD_Enable )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1664 psaSS_asmActivateSS( SS_CD_CW, bst1, bs1 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1665
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1666 ssShrdPrm.stb[sId1].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1667 ssShrdPrm.stb[sId1].ssCode = SS_CD_CW;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1668 ssShrdPrm.stb[sId1].srvOwn = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1669
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1670 /* start first transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1671 ssShrdPrm.stb[sId1].curCmd = AT_CMD_CCWA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1672 cmhSS_flagTrn( sId1, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1673 psaSS_NewTrns(sId1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1674
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1675 if( mltyTrnFlg )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1676 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1677 if( mode EQ CCWA_MOD_Disable )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1678 psaSS_asmDeactivateSS( SS_CD_CW, bst2, bs2 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1679
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1680 else if( mode EQ CCWA_MOD_Enable )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1681 psaSS_asmActivateSS( SS_CD_CW, bst2, bs2 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1682
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1683 ssShrdPrm.stb[sId2].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1684 ssShrdPrm.stb[sId2].ssCode = SS_CD_CW;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1685 ssShrdPrm.stb[sId2].srvOwn = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1686
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1687 /* start second transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1688 ssShrdPrm.stb[sId2].curCmd = AT_CMD_CCWA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1689 cmhSS_flagTrn( sId2, &(ssShrdPrm.mltyTrnFlg)); /* only for the second one */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1690 cmhSS_flagTrn( sId2, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1691 psaSS_NewTrns(sId2);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1692 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1693 CCD_END;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1694 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1695
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1696 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1697 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1698 * unexpected mode
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1699 *---------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1700 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1701 case( CCWA_MOD_NotInterrogate ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1702
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1703 ssShrdPrm.stb[sId1].ntryUsdFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1704 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1705
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1706 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1707
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1708 ssShrdPrm.stb[sId1].ntryUsdFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1709 if( sId2 NEQ NO_ENTRY ) ssShrdPrm.stb[sId2].ntryUsdFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1710
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1711 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1712 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1713 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1714
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1715 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1716 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1717 * log command execution
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1718 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1719 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1720 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1721 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1722 T_ACI_CLOG cmdLog; /* holds logging info */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1723
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1724 cmdLog.atCmd = AT_CMD_CCWA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1725 cmdLog.cmdType = CLOG_TYPE_Set;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1726 cmdLog.retCode = AT_EXCT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1727 cmdLog.cId = ACI_NumParmNotPresent;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1728 cmdLog.sId = sId1+1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1729 cmdLog.cmdPrm.sCCWA.srcId = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1730 cmdLog.cmdPrm.sCCWA.mode = mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1731 cmdLog.cmdPrm.sCCWA.class_type = class_type;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1732
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1733 rAT_PercentCLOG( &cmdLog );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1734 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1735 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1736
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1737 return( AT_EXCT );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1738 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1739
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1740
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1741 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1742 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1743 | PROJECT : GSM-PS (6147) MODULE : CMH_SSS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1744 | STATE : code ROUTINE : sAT_PlusCUSD |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1745 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1746
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1747 PURPOSE : This is the functional counterpart to the +CUSD AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1748 which is responsible to invoke an unstructured
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1749 supplementary services.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1750
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1751 <str> : USSD string.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1752 <dcs> : data coding scheme.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1753 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1754 LOCAL T_ACI_RETURN ussd_call_control_by_sim(T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1755 T_ACI_USSD_DATA *str,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1756 SHORT dcs)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1757 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1758 T_ACI_RETURN retCd = AT_CMPL; /* holds return code */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1759
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1760 #ifdef SIM_TOOLKIT
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1761 T_sat_ussd SATussd; /* to hold USSD string in case of SAT Control */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1762 T_CLPTY_PRM *sat_ss_cldPty;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1763
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1764 if(!psaSIM_ChkSIMSrvSup( SRV_CalCntrl )) /* call control by SAT enabled */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1765 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1766 return(AT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1767 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1768
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1769 if (psaSIM_ChkSIMSrvSup(SRV_USSDsupportInCC))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1770 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1771 SATussd.dcs = (UBYTE)dcs;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1772 SATussd.c_ussd_str = str->len;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1773 SATussd.ussd_str = str->data;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1774
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1775 retCd = cmhSAT_USSDCntrlBySIM( &SATussd, (UBYTE)srcId );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1776 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1777 else /* USSD structure not known by SAT */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1778 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1779 MALLOC(sat_ss_cldPty, sizeof(T_CLPTY_PRM));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1780 cmhCC_init_cldPty( sat_ss_cldPty );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1781
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1782 if( !utl_cvtGsmIra ( str -> data,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1783 str->len,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1784 (UBYTE *)sat_ss_cldPty->num,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1785 MAX_USSD_DATA,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1786 CSCS_DIR_IraToGsm ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1787 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1788 TRACE_EVENT("utl_cvtGsmIra( ) returned FALSE");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1789 MFREE(sat_ss_cldPty);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1790 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1791 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1792 retCd = cmhSAT_SSCntrlBySIM( sat_ss_cldPty, (UBYTE)srcId );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1793 MFREE(sat_ss_cldPty);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1794 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1795 return( retCd );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1796 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1797 return( AT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1798 #endif /* of SIM_TOOLKIT */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1799 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1800
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1801 GLOBAL T_ACI_RETURN sAT_PlusCUSD ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1802 T_ACI_USSD_DATA *str,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1803 SHORT dcs)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1804 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1805 SHORT sId; /* holds service id */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1806 T_ACI_RETURN retCd = AT_CMPL; /* holds return code */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1807 UBYTE ussdLen;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1808 UBYTE *ussdString;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1809 UBYTE src_len;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1810
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1811 TRACE_FUNCTION ("sAT_PlusCUSD ()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1812
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1813 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1814 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1815 * check command source
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1816 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1817 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1818 if(!cmh_IsVldCmdSrc (srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1819 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1820 TRACE_EVENT_P1("Wrong source: %d", srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1821 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1822 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1823
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1824 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1825 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1826 * check parameter str
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1827 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1828 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1829 if( !str )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1830 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1831 TRACE_EVENT("Empty string");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1832 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1833 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1834 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1835
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1836 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1837 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1838 * check parameter dcs
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1839 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1840 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1841 if( dcs EQ ACI_NumParmNotPresent )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1842
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1843 dcs = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1844
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1845 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1846 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1847 * check if there is a USSD request pending
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1848 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1849 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1850 sId = psaSS_stbFindUssdReq();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1851
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1852 if( sId EQ NO_ENTRY )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1853 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1854 /* check if there is another service in progress */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1855 if( psaSS_stbFindActSrv( sId ) NEQ NO_ENTRY )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1856 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1857 TRACE_EVENT("Parallel USSD Transaction not allowed");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1858 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_ParallelUSSD );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1859 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1860 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1861
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1862 /* get new service table entry */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1863 sId = psaSS_stbNewEntry();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1864 if( sId EQ NO_ENTRY )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1865 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1866 TRACE_EVENT("Service table is full");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1867 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1868 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1869 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1870
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1871 /* check ussd call control by sim */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1872 retCd = ussd_call_control_by_sim(srcId, str, dcs);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1873 if(retCd NEQ AT_CMPL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1874 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1875 TRACE_EVENT_P1("ussd_call_control_by_sim() returned with %d", retCd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1876
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1877 return( retCd );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1878 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1879
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1880 CCD_START;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1881
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1882 MALLOC(ussdString, MAX_USSD_STRING);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1883
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1884 /* Implements Measure 25 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1885 /* This function is more correct than utl_getAlphabetCb as it takes care
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1886 of reserved codings */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1887 if( cmh_getAlphabetCb( (UBYTE)dcs ) EQ 0 ) /* 7bit alphabet */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1888 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1889 src_len = (UBYTE)MINIMUM( MAX_USSD_STRING, str->len);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1890 ussdLen = utl_cvt8To7( str->data,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1891 src_len,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1892 ussdString, 0 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1893 /* According to spec 23.038 section 6.1.2.3 for USSD packing, for bytes end with
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1894 * (8*n)-1 i.e where n is 1,2,3....i.e byte 7, 15, 23 ... to be padded
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1895 * with carriage return <CR>(0xD)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1896 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1897 if ((src_len+1)%8 EQ 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1898 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1899 ussdString[ussdLen-1] |= (0xD << 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1900 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1901 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1902 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1903 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1904 ussdLen = str->len;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1905 memcpy(ussdString, str->data, MAX_USSD_STRING);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1906 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1907
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1908 psaSS_asmProcUSSDReq( (UBYTE)dcs, ussdString, ussdLen );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1909
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1910 MFREE(ussdString);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1911
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1912 /* start new transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1913 ssShrdPrm.stb[sId].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1914 ssShrdPrm.stb[sId].curCmd = AT_CMD_CUSD;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1915 ssShrdPrm.stb[sId].srvOwn = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1916 psaSS_NewTrns(sId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1917
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1918 CCD_END;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1919
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1920 retCd = AT_CMPL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1921
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1922
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1923 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1924 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1925 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1926 CCD_START;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1927
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1928 psaSS_asmCnfUSSDReq( (UBYTE)dcs, str->data, str->len );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1929
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1930 ssShrdPrm.stb[sId].ussdReqFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1931
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1932 /* continue existing transaction */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1933 psaSS_CntTrns(sId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1934
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1935 CCD_END;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1936
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1937 retCd = AT_CMPL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1938 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1939
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1940 ssShrdPrm.ussdLen = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1941
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1942 /* save ussd string for possible version 1 retry */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1943 if( cmh_getAlphabetCb( (UBYTE)dcs ) EQ 0 ) /* 7bit alphabet */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1944 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1945 if( str->len <= MAX_USSD_STRING )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1946 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1947 ssShrdPrm.ussdLen = str->len;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1948 memcpy( ssShrdPrm.ussdBuf, str->data, str->len );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1949 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1950 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1951
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1952 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1953 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1954 * log command execution
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1955 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1956 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1957 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1958 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1959 T_ACI_CLOG cmdLog; /* holds logging info */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1960
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1961 cmdLog.atCmd = AT_CMD_CUSD;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1962 cmdLog.cmdType = CLOG_TYPE_Set;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1963 cmdLog.retCode = retCd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1964 cmdLog.cId = ACI_NumParmNotPresent;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1965 cmdLog.sId = sId+1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1966 cmdLog.cmdPrm.sCUSD.srcId = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1967 cmdLog.cmdPrm.sCUSD.dcs = dcs;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1968 cmdLog.cmdPrm.sCUSD.str = str;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1969
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1970 rAT_PercentCLOG( &cmdLog );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1971 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1972 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1973
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1974 return( retCd );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1975 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1976
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1977 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1978 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1979 | PROJECT : GSM-PS (6147) MODULE : CMH_SSS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1980 | STATE : code ROUTINE : sAT_PercentCCBS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1981 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1982
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1983 PURPOSE : This is the functional counterpart to the %CCBS AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1984 which is responsible to clear CCBS entries. Index value set
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1985 to 0 indicates clear all entries.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1986
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1987 <idx> : ccbs index
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1988 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1989
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1990 GLOBAL T_ACI_RETURN sAT_PercentCCBS( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1991 SHORT idx )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1992 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1993 SHORT sId; /* holds service id */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1994
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1995 T_ACI_RETURN retVal;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1996
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1997 TRACE_FUNCTION ("sAT_PercentCCBS ()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1998
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1999 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2000 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2001 * check command source
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2002 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2003 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2004 if(!cmh_IsVldCmdSrc (srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2005 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2006 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2007 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2008
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2009 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2010 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2011 * check parameter idx
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2012 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2013 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2014 if( idx EQ ACI_NumParmNotPresent OR idx > 5 OR idx < 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2015 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2016 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2017 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2018 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2019
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2020 /* SIM TOOLKIT & FDN HANDLING */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2021 retVal = cmhSS_CCBS_SAT_Handle( srcId, CCBS_MOD_Erasure, idx);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2022
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2023 if( retVal NEQ AT_CMPL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2024 return( retVal );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2025
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2026
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2027 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2028 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2029 * get a new service table entry to interrogate SS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2030 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2031 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2032 sId = psaSS_stbNewEntry();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2033
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2034 if( sId EQ NO_ENTRY )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2035 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2036 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2037 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2038 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2039
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2040 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2041 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2042 * check parameter <mode>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2043 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2044 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2045 CCD_START;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2046
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2047 if( idx EQ 0 ) idx = KSD_IDX_NONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2048
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2049 psaSS_asmDeactivateCCBS((UBYTE)idx);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2050
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2051 ssShrdPrm.stb[sId].ntryUsdFlg = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2052 ssShrdPrm.stb[sId].ssCode = SS_CD_CCBS;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2053 ssShrdPrm.stb[sId].SSver = MNCC_SS_VERSION_3;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2054
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2055 ssShrdPrm.stb[sId].srvOwn = (T_OWN)srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2056
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2057 ssShrdPrm.stb[sId].curCmd = AT_CMD_CCBS;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2058
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2059 psaSS_NewTrns(sId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2060
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2061 CCD_END;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2062
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2063 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2064 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2065 * log command execution
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2066 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2067 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2068 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2069 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2070 T_ACI_CLOG cmdLog; /* holds logging info */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2071
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2072 cmdLog.atCmd = AT_CMD_CCBS;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2073 cmdLog.cmdType = CLOG_TYPE_Set;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2074 cmdLog.retCode = AT_EXCT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2075 cmdLog.cId = ACI_NumParmNotPresent;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2076 cmdLog.sId = sId+1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2077 cmdLog.cmdPrm.sCCBS.srcId = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2078 cmdLog.cmdPrm.sCCBS.idx = idx;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2079
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2080 rAT_PercentCLOG( &cmdLog );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2081 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2082 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2083
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2084 return( AT_EXCT );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2085 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2086
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2087 #ifdef TI_PS_FF_AT_P_CMD_CSCN
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2088 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2089 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2090 | PROJECT : GSM-PS (6147) MODULE : CMH_SSS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2091 | STATE : code ROUTINE : sAT_PercentCSCN |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2092 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2093
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2094 PURPOSE : This is the functional counterpart to the %CSCN AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2095 which is responsible to set the switches for debugging
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2096 mode at terminal interface.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2097 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2098 GLOBAL T_ACI_RETURN sAT_PercentCSCN ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2099 T_ACI_SS_CSCN_MOD_STATE ss_switch,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2100 T_ACI_SS_CSCN_MOD_DIRECTION ss_direction,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2101 T_ACI_CC_CSCN_MOD_STATE cc_switch,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2102 T_ACI_CC_CSCN_MOD_DIRECTION cc_direction )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2103 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2104 TRACE_FUNCTION ("sAT_PercentCSCN ()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2105
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2106 if(!cmh_IsVldCmdSrc (srcId)) /* check command source */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2107 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2108 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2109 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2110
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2111 if (ss_switch NEQ SS_CSCN_MOD_STATE_INVALID)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2112 cmhPrm[srcId].ssCmdPrm.CSCNss_mode.SsCSCNModeState = ss_switch;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2113
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2114 if (ss_direction NEQ SS_CSCN_MOD_DIR_INVALID)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2115 cmhPrm[srcId].ssCmdPrm.CSCNss_mode.SsCSCNModeDirection = ss_direction;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2116
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2117 if (cc_switch NEQ CC_CSCN_MOD_STATE_INVALID)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2118 cmhPrm[srcId].ccCmdPrm.CSCNcc_mode.CcCSCNModeState = cc_switch;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2119
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2120 if (cc_direction NEQ CC_CSCN_MOD_DIR_INVALID)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2121 cmhPrm[srcId].ccCmdPrm.CSCNcc_mode.CcCSCNModeDirection = cc_direction;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2122
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2123 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2124 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2125 #endif /* TI_PS_FF_AT_P_CMD_CSCN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2126
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2127 #ifdef TI_PS_FF_AT_P_CMD_CUSDR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2128 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2129 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2130 | PROJECT : GSM-PS (6147) MODULE : CMH_SSS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2131 | STATE : code ROUTINE : sAT_PercentCUSDR |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2132 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2133
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2134 PURPOSE : This is the functional counterpart to the %CUSDR AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2135 which is responsible for extended user/MMI response to n/w
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2136 initaiated USSD.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2137 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2138 GLOBAL T_ACI_RETURN sAT_PercentCUSDR(T_ACI_CMD_SRC srcId, T_ACI_CUSDR_RES response)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2139 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2140 TRACE_FUNCTION ("sAT_PercentCUSDR()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2141
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2142 if(!cmh_IsVldCmdSrc (srcId)) /* check command source */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2143 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2144 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2145 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2146
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2147 if(cuscfgParams.Ext_USSD_Response EQ CUSCFG_STAT_Disabled)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2148 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2149 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2150 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2151 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2152
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2153 if(Ext_USSD_Res_Pending EQ CUSDR_EXT_USSD_RES_Not_Pending OR Ext_USSD_Res_Pending_sId EQ (SHORT)NOT_PRESENT_8BIT)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2154 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2155 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2156 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2157 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2158
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2159 switch(response)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2160 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2161 case CUSDR_RES_Ok:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2162 if(Ext_USSD_Res_Pending NEQ CUSDR_EXT_USSD_RES_Request)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2163 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2164 psaSS_asmEmptyRslt();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2165 psaSS_CntTrns(Ext_USSD_Res_Pending_sId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2166 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2167 Ext_USSD_Res_Pending = CUSDR_EXT_USSD_RES_Not_Pending;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2168 Ext_USSD_Res_Pending_sId = NOT_PRESENT_8BIT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2169 return(AT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2170
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2171 case CUSDR_RES_Unknown_Alphabet:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2172 psaSS_asmErrorRslt( Ext_USSD_Res_Pending_sId, ERR_UNKNOWN_ALPHA );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2173 psaSS_CntTrns(Ext_USSD_Res_Pending_sId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2174 ssShrdPrm.stb[Ext_USSD_Res_Pending_sId].ntryUsdFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2175 Ext_USSD_Res_Pending = CUSDR_EXT_USSD_RES_Not_Pending;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2176 Ext_USSD_Res_Pending_sId = NOT_PRESENT_8BIT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2177 return(AT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2178
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2179 case CUSDR_RES_Busy:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2180 psaSS_asmErrorRslt( Ext_USSD_Res_Pending_sId, ERR_USSD_BUSY );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2181 psaSS_EndTrns(Ext_USSD_Res_Pending_sId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2182 ssShrdPrm.stb[Ext_USSD_Res_Pending_sId].ntryUsdFlg = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2183 Ext_USSD_Res_Pending = CUSDR_EXT_USSD_RES_Not_Pending;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2184 Ext_USSD_Res_Pending_sId = NOT_PRESENT_8BIT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2185 return(AT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2186
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2187 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2188 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2189 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2190
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2191 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2192
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2193 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2194 #endif /* TI_PS_FF_AT_P_CMD_CUSDR */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2195
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2196 /*==== EOF ========================================================*/
|