FreeCalypso > hg > fc-magnetite
comparison src/aci2/mfw/CPHS_mod.h @ 3:93999a60b835
src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Sep 2016 00:29:36 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2:c41a534f33c6 | 3:93999a60b835 |
---|---|
1 #ifndef _CPHS_H_ | |
2 #define _CPHS_H_ | |
3 /*-----------------------------------------------------------------------* | |
4 * * | |
5 * CPHS / SIM lock Standalone module * | |
6 * * | |
7 *-----------------------------------------------------------------------*/ | |
8 | |
9 /*-----------------------------------------------------------------------* | |
10 * CPHS Part * | |
11 *-----------------------------------------------------------------------*/ | |
12 | |
13 | |
14 /*---- Constants --------------------------------------------------------*/ | |
15 #define CPHS_CSP_SIZE 20 | |
16 | |
17 /*---- Types ------------------------------------------------------------*/ | |
18 | |
19 #define SHORT short | |
20 #define UBYTE unsigned char | |
21 #define BYTE unsigned char | |
22 #define BOOL UBYTE | |
23 | |
24 | |
25 typedef enum /* SIM operation status */ | |
26 { | |
27 SIMOP_UNKNOWN = 20, | |
28 SIMOP_WRITE_ERR, | |
29 SIMOP_WRITE_OK, | |
30 SIMOP_READ_ERR, | |
31 SIMOP_READ_OK | |
32 } T_CPHS_SIMOP_STATUS; | |
33 | |
34 typedef enum | |
35 { | |
36 CPHS_FAIL = -1, | |
37 CPHS_NOT_PRESENT, | |
38 CPHS_IS_OK, | |
39 CPHS_EXEC, | |
40 CPHS_NOT_INIT, | |
41 CPHS_SIM_READ_ERROR, | |
42 CPHS_SIM_WRITE_ERROR | |
43 } T_CPHS_RET; //function return status | |
44 | |
45 typedef enum //line identifier values | |
46 { | |
47 CPHS_LINE_INDEX_LINE1 = 1, | |
48 CPHS_LINE_INDEX_LINE2 = 2, | |
49 CPHS_LINE_INDEX_FAX = 4, | |
50 CPHS_LINE_INDEX_DATA = 8 | |
51 } T_CPHS_LINE_INDEX; | |
52 | |
53 typedef enum //Roaming indicator values | |
54 { | |
55 CPHS_ROAMING_OFF, | |
56 CPHS_ROAMING_ON | |
57 } T_CPHS_ROAMING_IND; | |
58 | |
59 | |
60 typedef enum //Voicemail/divert status flags | |
61 { | |
62 CPHS_FLAG_NOT_PRESENT = -1, | |
63 CPHS_LINEFLAG_NOT_SET, | |
64 CPHS_LINEFLAG_SET | |
65 } T_CPHS_FLAG_STATUS; | |
66 | |
67 | |
68 typedef enum //possible emergency numbers | |
69 { | |
70 CPHS_EMERGENCY_NUM_112 = 112, | |
71 CPHS_EMERGENCY_NUM_999 = 999 | |
72 } T_CPHS_EMERGENCY_NUM; | |
73 | |
74 typedef struct //format of text strings | |
75 { | |
76 UBYTE len; | |
77 //UBYTE* data; | |
78 UBYTE data[22]; | |
79 } T_CPHS_DATA; | |
80 | |
81 | |
82 | |
83 typedef struct //status of lines for voicemail/divert | |
84 { | |
85 UBYTE result; //result of read/write op | |
86 T_CPHS_FLAG_STATUS line1; | |
87 T_CPHS_FLAG_STATUS line2; | |
88 T_CPHS_FLAG_STATUS fax; | |
89 T_CPHS_FLAG_STATUS data; | |
90 } T_CPHS_LINE_IND; | |
91 | |
92 typedef struct //ALS selected line | |
93 { | |
94 UBYTE result; | |
95 T_CPHS_LINE_INDEX line; | |
96 T_CPHS_FLAG_STATUS locked; | |
97 } T_CPHS_ALS_INFO; | |
98 | |
99 typedef struct //ALS line description | |
100 { | |
101 UBYTE result; | |
102 T_CPHS_LINE_INDEX line; | |
103 T_CPHS_DATA description; | |
104 } T_CPHS_ALS_LINE; | |
105 | |
106 typedef struct //operator name in long and short forms | |
107 { | |
108 UBYTE result; | |
109 T_CPHS_DATA long_name; | |
110 T_CPHS_DATA short_name; | |
111 } T_CPHS_OPN; | |
112 | |
113 | |
114 | |
115 typedef struct //CPHS config info | |
116 { | |
117 UBYTE phase; | |
118 BOOL opn_short; | |
119 BOOL mailbox_num; | |
120 BOOL sst; | |
121 BOOL csp; | |
122 BOOL info_num; | |
123 } T_CPHS_INFO; | |
124 | |
125 typedef struct //single Customer service profile entry | |
126 { | |
127 UBYTE group_code; | |
128 UBYTE services; | |
129 } T_CPHS_CSP_ENTRY; | |
130 | |
131 typedef struct //customer service Profile | |
132 { | |
133 UBYTE result; //Result of last read/write | |
134 T_CPHS_CSP_ENTRY csp[CPHS_CSP_SIZE]; | |
135 //UBYTE csp[CPHS_CSP_SIZE]; | |
136 } T_CPHS_CSP; | |
137 | |
138 typedef struct //single mailbox entry | |
139 { | |
140 UBYTE index; | |
141 T_CPHS_DATA alpha; | |
142 UBYTE number[22]; | |
143 UBYTE ton; | |
144 UBYTE npi; | |
145 UBYTE service; | |
146 } T_CPHS_MAILBOX_NUM_ENTRY; | |
147 | |
148 typedef struct //mailbox entries | |
149 { | |
150 UBYTE result; //read/write result | |
151 UBYTE count; | |
152 // T_CPHS_MAILBOX_NUM_ENTRY *entries; | |
153 T_CPHS_MAILBOX_NUM_ENTRY entries[4]; | |
154 } T_CPHS_MAILBOX_NUM_LIST; | |
155 | |
156 | |
157 | |
158 typedef struct //single information number list entry | |
159 { | |
160 UBYTE index; | |
161 T_CPHS_DATA alpha; | |
162 UBYTE entryStat; | |
163 } T_CPHS_INFO_NUM; | |
164 | |
165 typedef struct //information number | |
166 { | |
167 UBYTE entryStat; | |
168 UBYTE result; //result of last read/write op | |
169 UBYTE index; | |
170 T_CPHS_DATA alpha; | |
171 UBYTE number[22]; | |
172 UBYTE ton; | |
173 UBYTE npi; | |
174 } T_CPHS_INFO_NUM_ENTRY; | |
175 | |
176 typedef struct //information number list | |
177 { | |
178 UBYTE count; //no of entries | |
179 UBYTE level; | |
180 UBYTE index; | |
181 //T_CPHS_INFO_NUM *entry; | |
182 T_CPHS_INFO_NUM entry[10]; | |
183 } T_CPHS_INFO_NUM_LIST; | |
184 | |
185 | |
186 //Callback function type | |
187 typedef int (*T_CPHS_CB_FUNC) (T_CPHS_INFO_NUM_LIST *,T_CPHS_INFO_NUM_ENTRY *); | |
188 | |
189 | |
190 /*---- Functions --------------------------------------------------------*/ | |
191 | |
192 /* all CPHS functions return the following values: */ | |
193 /* */ | |
194 /* CPHS_OK : on successfull execution */ | |
195 /* CPHS_EXEC : if CPHS operation is still executing */ | |
196 /* CPHS_NOT_INIT : if a CPHS function is called before the */ | |
197 /* CPHS initialize function has been called */ | |
198 /* CPHS_NOT_PRESENT : if current function is not present for */ | |
199 /* current SIM */ | |
200 /* CPHS_SIM_READ_ERROR : on SIM read operation failure */ | |
201 /* CPHS_SIM_WRITE_ERROR : on SIM read operation failure */ | |
202 /* CPHS_FAIL : on other failures */ | |
203 | |
204 | |
205 | |
206 /* set the roaming indicator */ | |
207 | |
208 | |
209 | |
210 | |
211 T_CPHS_RET cphs_Init(T_CPHS_CB_FUNC callback); | |
212 /* initializes CPHS module, reads CPHS data fields from SIM and caches */ | |
213 /* the read data. */ | |
214 | |
215 | |
216 T_CPHS_RET cphs_refresh(T_CPHS_CB_FUNC callback); | |
217 /* reads CPHS data fields from SIM and updates the cached CPHS data */ | |
218 | |
219 T_CPHS_RET cphs_Exit(); | |
220 /* de-initializes CPHS module */ | |
221 | |
222 | |
223 | |
224 T_CPHS_RET cphs_getOPN ( T_CPHS_OPN* opn ); | |
225 /* reads from SIM the operator long name and if available the short */ | |
226 /* name, too */ | |
227 | |
228 | |
229 T_CPHS_RET cphs_setDivertCallInd ( UBYTE line_mask, | |
230 T_CPHS_FLAG_STATUS flag ); | |
231 /* sets on SIM the divert call flag for the given lines in the */ | |
232 /* parameter line_mask. The bitmask will be created by oring the lines.*/ | |
233 /* The bits for the lines are defined in T_CPHS_LINE_INDEX. */ | |
234 | |
235 | |
236 | |
237 T_CPHS_RET cphs_getAlsInfo ( T_CPHS_ALS_INFO *info ); | |
238 /* reads from SIM the information of alternate line service */ | |
239 /* ( selected line, alternate line service locked/unlocked) */ | |
240 | |
241 T_CPHS_RET cphs_setAlsInfo ( T_CPHS_ALS_INFO *info ); | |
242 /* sets on SIM the informtion of alternate line service / selects the */ | |
243 /* active line */ | |
244 | |
245 T_CPHS_RET cphs_setRoamingInd ( T_CPHS_ROAMING_IND* indicator ); | |
246 | |
247 | |
248 T_CPHS_RET cphs_getAlsLineDescr ( T_CPHS_ALS_LINE* line ); | |
249 /* reads the (alpha)numeric description for the given line */ | |
250 | |
251 T_CPHS_RET cphs_setAlsLineDescr ( T_CPHS_ALS_LINE line ); | |
252 /* sets a (alpha)numeric description for the given line */ | |
253 | |
254 T_CPHS_RET cphs_getRoamingInd ( T_CPHS_ROAMING_IND* indicator ); | |
255 /* checks if roaming is active | |
256 */ | |
257 | |
258 /* reads from SIMif calls shall be diverted for the available lines */ | |
259 /* (line1, line2, fax, data) */ | |
260 T_CPHS_RET cphs_getDivertCallInd ( T_CPHS_LINE_IND* indicator ); | |
261 | |
262 | |
263 | |
264 T_CPHS_RET cphs_getVoiceMessageInd( T_CPHS_LINE_IND* indicator); | |
265 /* reads from SIM if voice mails are waiting for the available lines */ | |
266 /* (line1, line2, fax, data) */ | |
267 | |
268 T_CPHS_RET cphs_setVoiceMessageInd( UBYTE line_mask, | |
269 T_CPHS_FLAG_STATUS flag ); | |
270 /* sets on SIM the voice mail waiting flag for the given lines in the */ | |
271 /* parameter line_mask. The bitmask will be created by oring the lines.*/ | |
272 /* The bits for the lines are defined in T_CPHS_LINE_INDEX. */ | |
273 | |
274 | |
275 | |
276 | |
277 T_CPHS_RET cphs_checkEmergencyCall( char* num ); | |
278 /* check if the current call number(ASCII encoded) is an emergency number supported */ | |
279 /* by CPHS. */ | |
280 | |
281 | |
282 | |
283 T_CPHS_RET cphs_getCPHSInfo ( T_CPHS_INFO *info ); | |
284 /* reads from SIM the phase of the SIM and which optional datafields */ | |
285 /* are present in the SIM */ | |
286 /* (operator name shortform, mailbox numbers, service string table, */ | |
287 /* information numbers) */ | |
288 | |
289 | |
290 | |
291 T_CPHS_RET cphs_getCSP ( T_CPHS_CSP *csp ); | |
292 /* reads all entries of the customer service profile and fills */ | |
293 | |
294 | |
295 | |
296 T_CPHS_RET cphs_getMailboxNumbers ( T_CPHS_MAILBOX_NUM_LIST *nums ); | |
297 /* reads all mailbox numbers from the SIM fills all mailbox number */ | |
298 /* entries in the mailbox number list */ | |
299 | |
300 | |
301 | |
302 T_CPHS_RET cphs_getInfoNumbers ( T_CPHS_INFO_NUM_LIST *nums, UBYTE level, UBYTE startIndex, T_CPHS_CB_FUNC callback); | |
303 // reads all information numbers from the SIM fills all information | |
304 // numbers into the array of pointers at the directory level specified from the specified | |
305 //index until an entry of a different level is encountered | |
306 //The callback function is called when the list has been retrieved from the SIM and is passed | |
307 //the list as a parameter | |
308 //e.g. cphs_getInfoNumbers(NumberList, 1, 1, callback_func) would get the first level | |
309 //in the information numbers list | |
310 //to get the directory below an item in this list, you'd have to read the entry index and | |
311 //call cphs_getInfoNumbers(NewNumberList, entry_level+1, entry_index+1, callback_func), as | |
312 //directory contents are stored right after the directory heading. | |
313 //The MSB of the entryStat field in a info number list entry is set to 1 if it is a number | |
314 //and 0 if it is a directory heading. | |
315 | |
316 | |
317 T_CPHS_RET cphs_selectInfoNumber ( USHORT index, | |
318 T_CPHS_INFO_NUM_ENTRY *num, T_CPHS_CB_FUNC callback); | |
319 // reads the information number entry given by index from */ | |
320 // the SIM */ */ | |
321 //The index of a desired entry can be found in the "index" field of that entry in a previously | |
322 //retrieved information number list | |
323 | |
324 | |
325 | |
326 | |
327 | |
328 /*-----------------------------------------------------------------------* | |
329 * SIMLOCK Part * | |
330 *-----------------------------------------------------------------------*/ | |
331 | |
332 | |
333 /*---- Predefined Values ------------------------------------------------*/ | |
334 | |
335 #define SIMLOCK_PWD_MAX_LEN 16 | |
336 #define SIMLOCK_PWD_MIN_LEN_SIM 6 | |
337 #define SIMLOCK_PWD_MIN_LEN_OTHER 8 | |
338 | |
339 | |
340 /*---- Types ------------------------------------------------------------*/ | |
341 | |
342 typedef enum | |
343 { | |
344 SIMLOCK_FAIL = -1, | |
345 SIMLOCK_ENABLE, | |
346 SIMLOCK_DISABLE, | |
347 SIMLOCK_LOCKED, | |
348 SIMLOCK_BLOCKED | |
349 } T_SIMLOCK_RET; | |
350 | |
351 typedef enum | |
352 { | |
353 SIMLOCK_NETWORK = 0, | |
354 SIMLOCK_NETWORK_SUBSET, | |
355 SIMLOCK_SERVICE_PROVIDER, | |
356 SIMLOCK_CORPORATE, | |
357 SIMLOCK_SIM, | |
358 SIMLOCK_FIRST_SIM | |
359 } T_SIMLOCK_TYPE; | |
360 | |
361 | |
362 /*---- Functions --------------------------------------------------------*/ | |
363 | |
364 //T_SIMLOCK_RET simlock_checkLock ( T_SIMLOCK_TYPE type ); | |
365 /* checks the lock status of the given lock type. On successfull check */ | |
366 /* the status will be returned. If an error occured SIMLOCK_FAIL will */ | |
367 | |
368 //#define _TESTING__ | |
369 #ifdef _TESTING__ | |
370 void Cphs_reading_test(); | |
371 void Cphs_writing_test(); | |
372 #endif | |
373 | |
374 #endif //_CPHS_H_ | |
375 |