apply FSL(Flora Software License)
[apps/core/preloaded/ciss.git] / include / ciss-types.h
1 /*
2  * Copyright 2012  Samsung Electronics Co., Ltd
3  * 
4  * Licensed under the Flora License, Version 1.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *     http://www.tizenopensource.org/license
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef _CISS_ENGINE_TYPES_H_
18 #define _CISS_ENGINE_TYPES_H_
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif /* __cplusplus */
23
24 #define MID_CISS                        0x201E0012
25 #define CISS_MODULE_ID                  22
26 #define CISS_NUMBER_LEN_MAX             40      /**< Maximum length of number */
27 #define CISS_MAX_PASSWORD_LEN           4       /**< Maximum length of barring password */
28 #define CISS_STR_BUFFER_MAX             70      /**< Maximum size of string buffer */
29 #define CISS_TEXT_LEN_MAX               150     /**< Maximum lenght of text for application */
30 #define CISS_CALL_NUMBER_LEN_MAX        80      /**< Maximum call number length */
31 #define CISS_MAX_SS_RECORDS             8       /**< Maximum number of SS records */
32 #define CISS_USSD_DATA_SIZE_MAX         208     /**< Maximum length of USSD data */
33 #define CISS_DIVERT_NUMBER_LEN_MAX      32      /**< Maximum length of Divert to number */
34 #define CISS_TAPI_NW_USSD_HANDLE        255     /**< Mapped to the OEM_INVALID_REQUEST_ID of Tapi - OemTapiCommon.h*/
35
36 #ifdef  CISS_SYSLOG
37 #define CISS_ENG_LEVEL_DEBUG            LOG_DEBUG               /**< Messages that contain information normally of use only when debugging a program */
38 #define CISS_ENG_LEVEL_INFO             LOG_INFO                /**< Informational messages.*/
39 #define CISS_ENG_LEVEL_NOTICE           LOG_NOTICE              /**< Conditions that are not error conditions, but should possibly be handled specially.*/
40 #define CISS_ENG_LEVEL_WARNING          LOG_WARNING             /**< Warning messages.*/
41 #define CISS_ENG_LEVEL_ERR              LOG_ERR                 /**< Errors. */
42 #define CISS_ENG_LEVEL_CRIT             LOG_CRIT                /**< Critical conditions, e.g., hard device errors. */
43 #define CISS_ENG_LEVEL_ALERT            LOG_ALERT               /**< A condition that should be corrected immediately, such as a corrupted system database. */
44 #define CISS_ENG_LEVEL_EMERG            LOG_EMERG               /**< A panic condition.  This is normally broadcast to all users. */
45 #elif   CISS_DEBUG_MESSAGE
46 #define CISS_ENG_LEVEL_DEBUG            DEBUG_VERBOSE
47 #define CISS_ENG_LEVEL_INFO             DEBUG_VERBOSE
48 #define CISS_ENG_LEVEL_NOTICE           DEBUG_VERBOSE
49 #define CISS_ENG_LEVEL_WARNING          DEBUG_EXCEPTION
50 #define CISS_ENG_LEVEL_ERR              DEBUG_EXCEPTION
51 #define CISS_ENG_LEVEL_CRIT             DEBUG_ASSERT
52 #define CISS_ENG_LEVEL_ALERT            DEBUG_EXCEPTION
53 #define CISS_ENG_LEVEL_EMERG            DEBUG_EXCEPTION
54 #else
55 #define CISS_ENG_LEVEL_DEBUG            LOG_DEBUG               /**< Messages that contain information normally of use only when debugging a program */
56 #define CISS_ENG_LEVEL_INFO             LOG_INFO                /**< Informational messages.*/
57 #define CISS_ENG_LEVEL_NOTICE           LOG_NOTICE              /**< Conditions that are not error conditions, but should possibly be handled specially.*/
58 #define CISS_ENG_LEVEL_WARNING          LOG_WARNING             /**< Warning messages.*/
59 #define CISS_ENG_LEVEL_ERR              LOG_ERR                 /**< Errors. */
60 #define CISS_ENG_LEVEL_CRIT             LOG_CRIT                /**< Critical conditions, e.g., hard device errors. */
61 #define CISS_ENG_LEVEL_ALERT            LOG_ALERT               /**< A condition that should be corrected immediately, such as a corrupted system database. */
62 #define CISS_ENG_LEVEL_EMERG            LOG_EMERG               /**< A panic condition.  This is normally broadcast to all users. */
63 #endif
64
65 /*      Levels re used to configure syslogd at run time. Refer man syslog.conf  */
66 #ifdef  CISS_SYSLOG
67 #define CISS_ENG_DEBUG(level, args...)           \
68         syslog(LOG_USER | level, "File: %s, Func: %s, Line#: %d", __FILE__, __func__, __LINE__);         \
69         syslog(LOG_USER | level, args);
70 #elif CISS_DEBUG_MESSAGE
71 #define CISS_ENG_DEBUG(level, args...)           \
72         debug_message(MID_CISS, level, "\n[Ciss-Engine]:[%s]:[%s] Line#%d:\n", __FILE__, __func__, __LINE__);     \
73         debug_message(MID_CISS, level, args);
74 #else
75 #define CISS_ENG_DEBUG(level, args...)          \
76         fprintf(stderr, "\nFile: %s, Func: %s, Line#: %d\n", __FILE__, __func__, __LINE__);      \
77         fprintf(stderr, args)
78 #endif
79
80 #if defined(CISS_DEBUG_MESSAGE)
81 #define         CISS_ASSERT(condition)  \
82         if(!(condition))        \
83                 debug_message(CISS_MODULE_ID, DEBUG_ASSERT, "");        \
84
85 #else
86 #define         CISS_ASSERT(condition)                  assert(condition)
87
88 #endif
89
90 #ifndef true
91 #define true 1
92 #endif
93
94 #ifndef false
95 #define false 0
96 #endif
97
98
99 /**
100  * This enumeration defines the error codes returned from engine to UI
101  */
102 typedef enum {
103         CISS_ERR_NONE = 0x00,                                           /**< numberOfPW_AttemptsViolation*/
104
105         /*NETWORK ERRORS*/
106         CISS_ERR_UNKNOWN_SUBSCRIBER = 0x01,                             /**<  unknownSubscriber  "Invalid User Number" */
107         CISS_ERR_BEARER_NOT_PROVISIONED = 0x02,                         /**<  BearerServiceNotProvisioned "Request Rejected" */
108         CISS_ERR_TELESERVICE_NOT_PROVISIONED = 0x03,                    /**<  TeleServiceNotProvisioned */
109         CISS_ERR_CALL_BARRED = 0x04,                                    /**<  CallBarred */
110         CISS_ERR_ILLEGAL_SS_OPER = 0x05,                                /**<  illegalSS_Operation */
111         CISS_ERR_ERR_STATUS = 0x06,                                     /**<  ss_ErrorStatus */
112         CISS_ERR_NOT_AVAIL = 0x07,                                      /**<  ss_NotAvailable "Service not available" */
113         CISS_ERR_SUBSCRIPTION_VIOLATION = 0x08,                         /**<  ss_SubscriptionViolation */
114         CISS_ERR_INCOMPATIBILITY = 0x09,                                /**<  ss_Incompatibility */
115         CISS_ERR_FACILITY_NOT_SUPPORT = 0x0a,                           /**<  FacilityNotSupported */
116         CISS_ERR_SYS_FAILURE = 0x0b,                                    /**<  "SystemFailure "Please try again" */
117         CISS_ERR_DATA_MISSING = 0x0c,                                   /**<  DataMissing */
118         CISS_ERR_UNEXPECTED_DATA = 0x0d,                                /**<  UnexpectedDataValue 0x13 */
119         CISS_ERR_MPTY_PARTICIPANTS_EXCEED = 0x0e,                       /**< maxNumberOfMPTY_ParticipantsExceeded */
120         CISS_ERR_RESOURCE_NOT_AVAIL = 0x0f,                             /**<  ResourcesNotAvailable */
121         CISS_ERR_PW_REGIST_FAIL = 0x10,                                 /**< PasswordRegistrationFailure ( ex:password mismatch ) */
122         CISS_ERR_NEGATIVE_PW_CHECK = 0x11,                              /**<  NegativePasswordCheck */
123         CISS_ERR_PW_ATTEMPS_VIOLATION = 0x12,                           /**<  numberOfPW_AttemptsViolation*/
124
125         /*PHONE ERRORS*/
126         CISS_ERR_NETWORK_API_FAILED = 0x13,                             /**<  Telephony API call failed*/
127         CISS_ERR_DIVERT_TO_EMERGENCY_BLOCKED = 0x14,                    /**<  Call diverting to an emergency number not allowed*/
128
129         /* Call barring password mismatch errors */
130         CISS_ERR_CB_PWD_TOO_SORT = 0x15,                                /**< Password is too short - less than 4 characters*/
131         CISS_ERR_CB_PWD_MISMATCH = 0x16,                                /**< Password do not match - unequal password*/
132         CISS_ERR_CB_PWD_TOO_LONG = 0x17,                                /**< Password is too long - greater than 4 characters*/
133
134         CISS_ERR_UNKNOWN = 0xff,                                        /**<  unknown error*/
135
136 } ciss_err_t;
137
138 /**
139  * This enumeration defines the request types made to the engine
140  */
141 typedef enum {
142    CISS_REQUEST_SET_INITIALIZE          = 0x100,                /**< Initialize*/
143    CISS_REQUEST_SS_SEND_STRING          = 0x101,                /**< parse MMI string into SS/USSD request*/
144    CISS_REQUEST_SS_SEND_DATA            = 0x102,                /**< Send SS data to network*/
145    CISS_REQUEST_SAT_SEND_SS             = 0x103,                /**< SS request by SAT*/
146    CISS_REQUEST_SAT_SEND_USSD           = 0x104,                /**< USSD request by SAT*/
147    CISS_REQUEST_SS_SEND_USSD_RESP       = 0x105                 /**< Send USSD response to network*/
148 } ciss_request_type_t;
149
150 /**
151  * This enumeration defines the results of call control
152  */
153 typedef enum {
154         CISS_CALL_CONTROL_ALLOWED_NO_MOD        = 0x00, /**< call is allowed with no modification*/
155         CISS_CALL_CONTROL_NOT_ALLOWED           = 0x01, /**< call is not allowed*/
156         CISS_CALL_CONTROL_ALLOWED_WITH_MOD      = 0x02  /**< call is allowed with modification*/
157 } ciss_call_control_result_t;
158
159 /**
160  * This enumeration defines the response codes returned from engine to UI
161  */
162 typedef enum {
163         CISS_UI_RESPONSE_NETWORK_RESPONSE               = 0x00, /**< response from network*/
164         CISS_UI_RESPONSE_USSD_NW_RESPONSE               = 0x01, /**<  ussd network response*/
165         CISS_UI_RESPONSE_CALL_CONTROL                   = 0x02, /**<  call control resposne*/
166         CISS_UI_RESPONSE_NETWORK_TIMEOUT                = 0x03, /**<  request timer expired*/
167         CISS_UI_RESPONSE_ERROR                          = 0x04, /**<  error from network*/
168         CISS_UI_RESPONSE_SAT_REQUEST_DONE               = 0x05, /**<  notify UI that engine has finished a SAT request*/
169         CISS_UI_RESPONSE_SAT_REQUEST_START              = 0x06, /**<  notify UI that engine has started a SAT request*/
170         CISS_UI_RESPONSE_CHECK_APPLET                   = 0x07  /**<  end app response */
171 } ciss_ui_response_type_t;
172
173 /**
174  * This enumeration defines the various SS services handled by the engine
175  */
176 typedef enum {
177         CISS_SERVICE_DIVERTING = 0x00,                          /**<  Call diverting/forwarding*/
178         CISS_SERVICE_BARRING = 0x01,                            /**<  call barring*/
179         CISS_SERVICE_WAITING = 0x02,                            /**<  call waiting*/
180         CISS_SERVICE_CHANGE_BARRING_PASSWD = 0x03,              /**< change barring password*/
181         CISS_SERVICE_USSD = 0x04,                               /**< USSD*/
182         CISS_SERVICE_IDENTIFICATION = 0x05                      /**< clip, clir, colp, colr, cnap*/
183 } ciss_service_t;
184
185 /**
186  * This enumeration defines the telecomm services handled by the engine
187  */
188 typedef enum
189 {
190         CISS_TELECOMM_SVC_NONE,                         /**<0 : None */
191         CISS_TELECOMM_SVC_ALL_TELE_BEARER,              /**<1 : All Tele and Bearer services */
192
193         /* TELESERVICE */
194         CISS_TELECOMM_SVC_ALL_TELE,                     /**<2 : All Teleservices */
195         CISS_TELECOMM_SVC_VOICE,                        /**<3 : All Voice ( telephony ) */
196         CISS_TELECOMM_SVC_ALL_DATA_TELE,                /**<4 : All Data Teleservices */
197         CISS_TELECOMM_SVC_FAX,                          /**<5 : All Fax Service */
198         CISS_TELECOMM_SVC_SMS,                          /**<6 : SMS service      */
199         CISS_TELECOMM_SVC_VGCS,                         /**<7 : Voice Group Call Service */
200         CISS_TELECOMM_SVC_VBS,                          /**<8 : Voice Broadcast */
201         CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS,            /**<9 : All teleservice except SMS */
202
203         /* BEARER SERVICE */
204         CISS_TELECOMM_SVC_ALL_BEARER,                   /**<10 : all bearer services */
205         CISS_TELECOMM_SVC_ALL_ASYNC,                    /**<11 : All Async services */
206         CISS_TELECOMM_SVC_ALL_SYNC,                     /**<12 : All sync services*/
207         CISS_TELECOMM_SVC_ALL_CS_SYNC,                  /**<13 : All Circuit switched sync */
208         CISS_TELECOMM_SVC_ALL_CS_ASYNC,                 /**<14 : All Circuit switched async */
209         CISS_TELECOMM_SVC_ALL_DEDI_PS,                  /**<15 : All Dedicated packet Access */
210         CISS_TELECOMM_SVC_ALL_DEDI_PAD,                 /**<16 : All Dedicated PAD Access */
211         CISS_TELECOMM_SVC_ALL_DATA_CDA,                 /**<17 : All Data CDA*/
212
213         /* PLMN SPECIFIC TELESERVICE */
214         CISS_TELECOMM_SVC_PLMN_TELE_ALL,                /**<18 : PLMN specific teleservices*/
215         CISS_TELECOMM_SVC_PLMN_TELE_1,                  /**<19 : PLMN specific teleservice 1*/
216         CISS_TELECOMM_SVC_PLMN_TELE_2,                  /**<20 : PLMN specific teleservice 2*/
217         CISS_TELECOMM_SVC_PLMN_TELE_3,                  /**<21 : PLMN specific teleservice 3*/
218         CISS_TELECOMM_SVC_PLMN_TELE_4,                  /**<22 : PLMN specific teleservice 4*/
219         CISS_TELECOMM_SVC_PLMN_TELE_5,                  /**<23 : PLMN specific teleservice 5*/
220         CISS_TELECOMM_SVC_PLMN_TELE_6,                  /**<24 : PLMN specific teleservice 6*/
221         CISS_TELECOMM_SVC_PLMN_TELE_7,                  /**<25 : PLMN specific teleservice 7*/
222         CISS_TELECOMM_SVC_PLMN_TELE_8,                  /**<26 : PLMN specific teleservice 8*/
223         CISS_TELECOMM_SVC_PLMN_TELE_9,                  /**<27 : PLMN specific teleservice 9*/
224         CISS_TELECOMM_SVC_PLMN_TELE_A,                  /**<28 : PLMN specific teleservice 10*/
225         CISS_TELECOMM_SVC_PLMN_TELE_B,                  /**<29 : PLMN specific teleservice 11*/
226         CISS_TELECOMM_SVC_PLMN_TELE_C,                  /**<30 : PLMN specific teleservice 12*/
227         CISS_TELECOMM_SVC_PLMN_TELE_D,                  /**<31 : PLMN specific teleservice 13*/
228         CISS_TELECOMM_SVC_PLMN_TELE_E,                  /**<32 : PLMN specific teleservice 14*/
229         CISS_TELECOMM_SVC_PLMN_TELE_F,                  /**<33 : PLMN specific teleservice 15*/
230
231         /* PLMN SPECIFIC BEARER SERVICE */
232         CISS_TELECOMM_SVC_PLMN_BEAR_ALL,                /**<34 : All PLMN specific bearer services*/
233         CISS_TELECOMM_SVC_PLMN_BEAR_1,                  /**<35 : PLMN specific bearer service 1*/
234         CISS_TELECOMM_SVC_PLMN_BEAR_2,                  /**<36 : PLMN specific bearer service  2*/
235         CISS_TELECOMM_SVC_PLMN_BEAR_3,                  /**<37 : PLMN specific bearer service  3*/
236         CISS_TELECOMM_SVC_PLMN_BEAR_4,                  /**<38 : PLMN specific bearer service  4*/
237         CISS_TELECOMM_SVC_PLMN_BEAR_5,                  /**<39 : PLMN specific bearer service  5*/
238         CISS_TELECOMM_SVC_PLMN_BEAR_6,                  /**<40 : PLMN specific bearer service  6*/
239         CISS_TELECOMM_SVC_PLMN_BEAR_7,                  /**<41 : PLMN specific bearer service  7*/
240         CISS_TELECOMM_SVC_PLMN_BEAR_8,                  /**<42 : PLMN specific bearer service  8*/
241         CISS_TELECOMM_SVC_PLMN_BEAR_9,                  /**<43 : PLMN specific bearer service  9*/
242         CISS_TELECOMM_SVC_PLMN_BEAR_A,                  /**<44 : PLMN specific bearer service  10*/
243         CISS_TELECOMM_SVC_PLMN_BEAR_B,                  /**<45 : PLMN specific bearer service  11*/
244         CISS_TELECOMM_SVC_PLMN_BEAR_C,                  /**<46 : PLMN specific bearer service  12*/
245         CISS_TELECOMM_SVC_PLMN_BEAR_D,                  /**<47 : PLMN specific bearer service  13*/
246         CISS_TELECOMM_SVC_PLMN_BEAR_E,                  /**<48 : PLMN specific bearer service  14*/
247         CISS_TELECOMM_SVC_PLMN_BEAR_F,                  /**<49 : PLMN specific bearer service  15*/
248
249         /* CPHS - AUXILIARY SERVICE */
250         CISS_TELECOMM_SVC_AUX_VOICE,                    /**<50 : All Auxiliary Voice ( Auxiliary telephony ) */
251
252         CISS_TELECOMM_SVC_ALL_GPRS_BEARER,              /**<51 : All GPRS bearer services */
253         CISS_TELECOMM_SVC_MAX                           /**<52 : Max count */
254 } ciss_telecomm_svc_t;
255
256 /**
257  * This enumeration defines the various flavors of SS handled by the engine
258  */
259 typedef enum {
260 /* Divert Flavor */
261         CISS_FLAVOR_NONE = 0x00,                                                /**<  None*/
262         CISS_FLAVOR_DIVERT_START = 0x01,                                        /**<  Divert start*/
263         CISS_FLAVOR_DIVERT_UNCONDITIONAL = 0x02,                                /**<  Divert unconditional*/
264         CISS_FLAVOR_DIVERT_BUSY = 0x03,                                         /**<  Divert if busy*/
265         CISS_FLAVOR_DIVERT_NOREPLY = 0x04,                                      /**<  Divert if no reply*/
266         CISS_FLAVOR_DIVERT_UNREACHABLE = 0x05,                                  /**<  Divert if unreachable*/
267         CISS_FLAVOR_DIVERT_CANCELALL = 0x06,                                    /**<  Cancel all diverting*/
268         CISS_FLAVOR_BARRING_CANCELALL = 0x07,                                   /**<  Cancel all barring*/
269
270         CISS_FLAVOR_DIVERT_ALL_FLAVORS = 0x08,                                  /**<  Deregistration( NETWORK_DIVERT_UNIVERSAL) */
271         CISS_FLAVOR_DIVERT_ALL_CONDITIONAL_FLAVORS = 0x09,                      /**<  Divert all conditional */
272
273 /* Barring Flavor */
274         CISS_FLAVOR_BARRING_START = 0x10,                                       /**<  Barring start*/
275         CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS = 0x11,                          /**<  bar all outgoing calls*/
276         CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL = 0x12,                  /**<  bar all outgoing international calls*/
277         CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME = 0x13,    /**<  bar all outgoing international calls except those to home country*/
278
279         CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS = 0x14,                          /**<  bar all incoming calls*/
280         CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING = 0x15,                 /**<  bar all incoming calls when roaming*/
281         CISS_FLAVOR_BARRING_ALL_FLAVORS = 0x16,                                 /**< includes all other flavors.  Used for Cancel All */
282         CISS_FLAVOR_BARRING_OUTGOING = 0x17,                                    /**<  bar all outgoing flavors*/
283         CISS_FLAVOR_BARRING_INCOMING = 0x18,                                    /**<  bar all incoming flavors*/
284         CISS_FLAVOR_BARRING_END = 0x19,                                         /**<  Barring end*/
285
286         CISS_FLAVOR_WAITING = 0x20,                                             /**<  added for auto-check feature enable/disable*/
287         CISS_FLAVOR_MAX                                                         /**<  max*/
288
289 } ciss_flavor_t;
290
291 /**
292  * This enumeration defines the various actions on a SS service
293  */
294 typedef enum {
295         CISS_ACTION_NONE = -1,                          /**<  None*/
296         CISS_ACTION_CHECK_STATUS = 0x00,                /**<  check status*/
297         CISS_ACTION_ACTIVATE = 0x01,                    /**<  activate*/
298         CISS_ACTION_DEACTIVATE = 0x02,                  /**<  deactivate*/
299         CISS_ACTION_MAX_NUM = 0xff                      /**<  max*/
300 } ciss_action_type_t;
301
302 /**
303  * This enumeration defines whther the SS operation was a success or failure
304  */
305 typedef enum {
306         CISS_RESP_SUCCESS = 0x00,               /**< Success*/
307         CISS_RESP_FAIL = 0x01                   /**< Failure*/
308 } ciss_response_status_t;
309
310 /**
311  * This enumeration defines the status of the SS
312  */
313 typedef enum {
314         CISS_STATUS_ACTIVE = 0x00,                      /**<  Active*/
315         CISS_STATUS_REGISTERED = 0x01,                  /**<  Registered*/
316         CISS_STATUS_PROVISIONED = 0x02,                 /**<  Provisioned*/
317         CISS_STATUS_QUIESCENT = 0x03,                   /**<  Quiescent*/
318         CISS_STATUS_NOTHING = 0x04                      /**<  Nothing*/
319 } ciss_status_t;
320
321 /**
322  * This enumeration defines the subscription type used by the engine to subscribe to notis
323  */
324 typedef enum {
325         CISS_SUBSCRIPTION_TYPE_CALL_SETTINGS = 0x00,    /**<  Call settings.. minimal subscription*/
326         CISS_SUBSCRIPTION_TYPE_MMI = 0x01,              /**<  For MMI string.. all events subscribed*/
327         CISS_SUBSCRIPTION_TYPE_APP = 0x02               /**<  CIss app.. all events subscribed*/
328 } ciss_subscription_type_t;
329
330 /**
331  * This enumeration defines the ussd indication type
332  */
333 typedef enum {
334         CISS_USSD_NOTIFY = 0x00,                        /**<  notify : to display ussd data to user. */
335         CISS_USSD_IND_NO_ACTION_REQUIRE = 0x01,         /**<no further user action required */
336         CISS_USSD_IND_ACTION_REQUIRE = 0x02,            /**<further user action required*/
337         CISS_USSD_TERMINATED_BY_NET = 0x03,             /**< USSD terminated by network */
338         CISS_USSD_OTHER_CLIENT = 0x04,                  /**< other local client has responded */
339         CISS_USSD_NOT_SUPPORT = 0x05,                   /**< operation not supported */
340         CISS_USSD_TIME_OUT = 0x06                       /**<network time out */
341 } ciss_ussd_ind_type_t;
342
343 /**
344  * This enumeration defines the ussd response type
345  */
346 typedef enum {
347         CISS_USSD_RES_UNKNOWN_ALPHABET = 0x00,          /**< unlnown alphabet */
348         CISS_USSD_RES_DISPL_BUSY = 0x01,                /**< display is busy  */
349         CISS_USSD_RES_OK = 0x02,                        /**< response */
350         CISS_USSD_RES_NONE = 0x03                       /**< no response  use for user release*/
351 } ciss_ussd_response_type_t;
352
353 /**
354 * These are the four types of identity presentation / restriction services.
355 */
356 typedef enum {
357         CISS_CC_VOICE_IDENTIFICATION_NONE = 0x00,               /**< none */
358         CISS_CALLING_LINE_IDENTITY_PRESENTATION = 0x01,         /**< identify the party calling this phone */
359         CISS_CALLING_LINE_IDENTITY_RESTRICTION = 0x02,          /**< hide the identity of this phone when calling others */
360         CISS_CONNECTED_LINE_IDENTITY_PRESENTATION = 0x03,       /**< identify the party to whom the calling party (this phone) is connected */
361         CISS_CONNECTED_LINE_IDENTITY_RESTRICTION = 0x04,        /**< restrict yourself from being identified by incoming calls, such as forwarded calls */
362         CISS_CALLED_LINE_IDENTITY_PRESENTATION = 0x05,          /**< same as colr */
363         CISS_CALLING_NAME_PRESENTATION = 0x06                   /**< show the name of the calling party to the connected one */
364 } ciss_cc_voice_identification_type_t;
365
366 #if 0
367 typedef struct {
368         int             request_by;
369         int             last_ind_type;
370         int             sat_command_id;
371 } ciss_ussd_engine_info_t;
372 #endif
373
374 /**
375 * The ussd data recieved from the network
376 */
377 typedef struct {
378         ciss_ussd_ind_type_t            ind_type;                               /**< the ussd indication type */
379         unsigned char                   dcs;                                    /**< the data coding scheme */
380         int                             ussd_string_length;                     /**< Length of String */
381         char                            ussd_string[CISS_USSD_DATA_SIZE_MAX];   /**< The USSD data string to be displayed to the user */
382         int                             request_by;                             /**< The Engine information */
383         int                             sat_command_id;                         /**< The Engine information */
384 } ciss_ussd_record_t;
385
386 /**
387 * The ussd repsonse data sent to the network
388 */
389 typedef struct {
390         ciss_ussd_response_type_t       resp_type;                              /**< the ussd repsonse type */
391         int                             length;                                 /**< Length of String */
392         char                            string[CISS_USSD_DATA_SIZE_MAX];        /**< The USSD data string to be sent to network */
393         int                             request_by;                             /**< The Engine information */
394         int                             sat_command_id;                         /**< The Engine information */
395         int                             last_ussd_ind;                          /**< The Engine information */
396 } ciss_ussd_response_record_t;
397
398 /**
399 * ss request data to be sent to network.
400 */
401 typedef struct {
402         ciss_service_t                  service;                                        /**< barring, forwarding, waiting, etc */
403         ciss_telecomm_svc_t             telecommSvc;                                    /**< telecomm service */
404         ciss_flavor_t                   flavor;                                         /**< the flavor of the SS used in service*/
405         ciss_action_type_t              action;                                         /**< the action to be performed on the SS */
406         int                             nDivertWaitingTime;                             /**< the no reply timer */
407         char                            szDivertNumber[CISS_NUMBER_LEN_MAX + 1];                /**< number to be diverted to */
408         char                            szBarringPasswd[CISS_MAX_PASSWORD_LEN + 1];     /**< the old barring pwd */
409         char                            szBarringNewPasswd[CISS_MAX_PASSWORD_LEN + 1];  /**< the new barring pwd */
410         char                            szBarringCnfPasswd[CISS_MAX_PASSWORD_LEN + 1];  /**< the cnf barring pwd */
411 } ciss_req_data_t;
412
413 /**
414 * SS Result String type
415 */
416 typedef struct {
417         int                                     nRecordNum;                                                     /**< number of SS records received */
418         ciss_service_t                          szSsType;                                                       /**< barring, forwarding, waiting, etc  */
419         ciss_flavor_t                           szFlavor;                                                       /**< the flavor of the SS used in service */
420         ciss_cc_voice_identification_type_t     cli_type;                                                       /**< the cli type if service is identification */
421         ciss_telecomm_svc_t                     szBearer[CISS_MAX_SS_RECORDS];                                  /**< telecomm service */
422         ciss_status_t                           szResult[CISS_MAX_SS_RECORDS];                                  /**< status of the SS */
423         int                                     nDivertWaitingTime[CISS_MAX_SS_RECORDS];                        /**< the no reply timer */
424         char                                    szDivertNumber[CISS_MAX_SS_RECORDS][CISS_NUMBER_LEN_MAX + 1];   /**< number to be diverted to  */
425 } ciss_result_t;
426
427 /**
428 * The call control result from SAT to UI
429 */
430 typedef struct {
431         char                            cc_data[CISS_TEXT_LEN_MAX+1];
432         ciss_call_control_result_t      cc_result;
433 } ciss_call_control_info_t;
434
435 typedef enum {
436         CISS_ENGINE_INIT_BY_SETTINGS = 0x00,    /**<  Call settings.. minimal subscription*/
437         CISS_ENGINE_INIT_BY_MMI = 0x01,         /**<  For MMI string.. all events subscribed*/
438         CISS_ENGINE_INIT_BY_APP = 0x02,         /**<  CIss app.. all events subscribed*/
439         CISS_ENGINE_NOT_INIT = 0x03
440 } ciss_engine_init_type;
441
442
443 #ifdef __cplusplus
444 }
445 #endif /* __cplusplus */
446
447 #endif /* _CISS_EH_H_ */
448