FreeCalypso > hg > leo2moko-debug
comparison g23m/condat/ms/src/aci/cmh_phbf.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:509db1a7b7b8 |
---|---|
1 /* | |
2 +----------------------------------------------------------------------------- | |
3 | Project : GSM-PS (6147) | |
4 | Modul : CMH_PHBF | |
5 +----------------------------------------------------------------------------- | |
6 | Copyright 2002 Texas Instruments Berlin, AG | |
7 | All rights reserved. | |
8 | | |
9 | This file is confidential and a trade secret of Texas | |
10 | Instruments Berlin, AG | |
11 | The receipt of or possession of this file does not convey | |
12 | any rights to reproduce or disclose its contents or to | |
13 | manufacture, use, or sell anything it may describe, in | |
14 | whole, or in part, without the specific written consent of | |
15 | Texas Instruments Berlin, AG. | |
16 +----------------------------------------------------------------------------- | |
17 | Purpose : This module defines the functions used by the command | |
18 | handler for the phonebook management. | |
19 +----------------------------------------------------------------------------- | |
20 */ | |
21 | |
22 #ifndef CMH_PHBF_C | |
23 #define CMH_PHBF_C | |
24 #endif | |
25 | |
26 #include "aci_all.h" | |
27 /*==== INCLUDES ===================================================*/ | |
28 #include "aci_cmh.h" | |
29 #include "ati_cmd.h" | |
30 #include "aci_cmd.h" | |
31 | |
32 #ifdef FAX_AND_DATA | |
33 #include "aci_fd.h" | |
34 #endif /* of #ifdef FAX_AND_DATA */ | |
35 | |
36 #include "aci.h" | |
37 #include "psa.h" | |
38 #include "phb.h" | |
39 #include "cmh.h" | |
40 #include "cmh_phb.h" | |
41 | |
42 /*==== CONSTANTS ==================================================*/ | |
43 | |
44 #define PHB_CMH_INVALID_TAG_ENTRY 0xFF /* fill up a tag */ | |
45 #define PHB_CMH_INVALID_BCD_ENTRY 0xF /* fill up a BCD number */ | |
46 | |
47 #define PHB_CMH_YEAR_INVLD (255) /* invalid year */ | |
48 #define PHB_CMH_MONTH_INVLD (255) /* invalid month */ | |
49 #define PHB_CMH_DAY_INVLD (255) /* invalid day */ | |
50 #define PHB_CMH_HOUR_INVLD (255) /* invalid hour */ | |
51 #define PHB_CMH_MINUTE_INVLD (255) /* invalid minute */ | |
52 #define PHB_CMH_SECOND_INVLD (255) /* invalid second */ | |
53 | |
54 /*==== TYPES ======================================================*/ | |
55 | |
56 /*==== EXPORT =====================================================*/ | |
57 | |
58 /*==== VARIABLES ==================================================*/ | |
59 | |
60 /*==== FUNCTIONS ==================================================*/ | |
61 /* | |
62 +-------------------------------------------------------------------+ | |
63 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
64 | STATE : code ROUTINE : cmhPHB_rplcIntnl | | |
65 +-------------------------------------------------------------------+ | |
66 | |
67 PURPOSE : | |
68 */ | |
69 GLOBAL BOOL cmhPHB_rplcIntnl ( CHAR* inNumber, | |
70 CHAR* outNumber, | |
71 UBYTE inCnt ) | |
72 { | |
73 USHORT inIdx = 0; | |
74 USHORT outIdx = 0; | |
75 UBYTE actCnt = 0; | |
76 BOOL international = FALSE; | |
77 | |
78 while ( inNumber[inIdx] NEQ '\0' ) | |
79 { | |
80 /* | |
81 *--------------------------------------------------------------- | |
82 * international indicator "+" | |
83 *--------------------------------------------------------------- | |
84 */ | |
85 if ( inNumber[inIdx] EQ '+' AND | |
86 inNumber[inIdx-1] EQ '*' ) | |
87 { | |
88 if ( actCnt EQ inCnt OR inCnt EQ 0xFF ) | |
89 { | |
90 international = TRUE; | |
91 } | |
92 else | |
93 { | |
94 outNumber[outIdx++] = inNumber[inIdx]; | |
95 } | |
96 } | |
97 /* PATCH LE 12.05.00 | |
98 * 00 is used in china as national number | |
99 * checked against competitor phone | |
100 * now ACI has the same behaviour | |
101 */ | |
102 /* | |
103 *--------------------------------------------------------------- | |
104 * international indicator "00" | |
105 *--------------------------------------------------------------- | |
106 */ | |
107 /* else if ( inNumber[inIdx+1] EQ '0' AND | |
108 inNumber[inIdx] EQ '0' AND | |
109 inNumber[inIdx-1] EQ '*' ) | |
110 { | |
111 if ( actCnt EQ inCnt OR inCnt EQ 0xFF ) | |
112 { | |
113 international = TRUE; | |
114 inIdx++; | |
115 } | |
116 else | |
117 { | |
118 outNumber[outIdx++] = inNumber[inIdx++]; | |
119 outNumber[outIdx++] = inNumber[inIdx]; | |
120 } | |
121 } */ | |
122 /* END PATCH LE 12.05.00 */ | |
123 /* | |
124 *--------------------------------------------------------------- | |
125 * national indicator | |
126 *--------------------------------------------------------------- | |
127 */ | |
128 else | |
129 { | |
130 if ( inNumber[inIdx] EQ '*' ) | |
131 { | |
132 actCnt++; | |
133 } | |
134 | |
135 outNumber[outIdx++] = inNumber[inIdx]; | |
136 } | |
137 | |
138 inIdx++; | |
139 } | |
140 | |
141 outNumber[outIdx] = '\0'; | |
142 | |
143 return international; | |
144 } | |
145 | |
146 /* | |
147 +-------------------------------------------------------------------+ | |
148 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
149 | STATE : code ROUTINE : cmhPHB_cvtPhbType | | |
150 +-------------------------------------------------------------------+ | |
151 | |
152 PURPOSE : This function is used to convert the type of phonebook | |
153 used by ACI to the type of phonebook used by phonebook | |
154 management. | |
155 */ | |
156 GLOBAL BOOL cmhPHB_cvtPhbType ( T_ACI_PB_STOR inMem, T_PHB_TYPE* outMem ) | |
157 { | |
158 switch ( inMem ) | |
159 { | |
160 case ( PB_STOR_Fd ): *outMem = FDN; break; | |
161 case ( PB_STOR_Ld ): *outMem = LDN; break; | |
162 case ( PB_STOR_Ed ): *outMem = ECC; break; | |
163 case ( PB_STOR_Ad ): *outMem = ADN; break; | |
164 case ( PB_STOR_Bd ): *outMem = BDN; break; | |
165 case ( PB_STOR_Lr ): *outMem = LRN; break; | |
166 case ( PB_STOR_Sd ): *outMem = SDN; break; | |
167 case ( PB_STOR_Lm ): *outMem = LMN; break; | |
168 case ( PB_STOR_Ud ): *outMem = UPN; break; | |
169 | |
170 case ( PB_STOR_Af ): /* Not supported anymore */ | |
171 default: | |
172 return ( FALSE ); | |
173 } | |
174 | |
175 return ( TRUE ); | |
176 } | |
177 | |
178 /* | |
179 +-------------------------------------------------------------------+ | |
180 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
181 | STATE : code ROUTINE : cmhPHB_cvtPhbPsaType | | |
182 +-------------------------------------------------------------------+ | |
183 | |
184 PURPOSE : This function is used to convert the type of phonebook | |
185 used by phonebook management to the type of phonebook | |
186 used by ACI. | |
187 */ | |
188 GLOBAL BOOL cmhPHB_cvtPhbPsaType ( T_PHB_TYPE inMem, T_ACI_PB_STOR* outMem ) | |
189 { | |
190 switch ( inMem ) | |
191 { | |
192 case ( FDN ): *outMem = PB_STOR_Fd; break; | |
193 case ( LDN ): *outMem = PB_STOR_Ld; break; | |
194 case ( ECC ): *outMem = PB_STOR_Ed; break; | |
195 case ( ADN ): *outMem = PB_STOR_Ad; break; | |
196 case ( BDN ): *outMem = PB_STOR_Bd; break; | |
197 case ( LRN ): *outMem = PB_STOR_Lr; break; | |
198 case ( SDN ): *outMem = PB_STOR_Sd; break; | |
199 case ( LMN ): *outMem = PB_STOR_Lm; break; | |
200 case ( UPN ): *outMem = PB_STOR_Ud; break; | |
201 | |
202 default: | |
203 *outMem = PB_STOR_NotPresent; | |
204 return ( FALSE ); | |
205 } | |
206 | |
207 return ( TRUE ); | |
208 } | |
209 | |
210 /* | |
211 +--------------------------------------------------------------------+ | |
212 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
213 | STATE : code ROUTINE : cmhPHB_toaMrg | | |
214 +--------------------------------------------------------------------+ | |
215 | |
216 PURPOSE : This function is used to build the type of address octet | |
217 from T_ACI_TOA structure. | |
218 */ | |
219 GLOBAL void cmhPHB_toaMrg ( T_ACI_TOA* type, UBYTE* octet ) | |
220 { | |
221 *octet = ( ( ( type -> ton << 4 ) & 0xF0 ) + ( type -> npi & 0x0F ) ) | 0x80; | |
222 } | |
223 | |
224 /* | |
225 +--------------------------------------------------------------------+ | |
226 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
227 | STATE : code ROUTINE : cmhPHB_toaDmrg | | |
228 +--------------------------------------------------------------------+ | |
229 | |
230 PURPOSE : This function is used to build the T_ACI_TOA structure | |
231 from the type of address octet. | |
232 */ | |
233 GLOBAL void cmhPHB_toaDmrg ( UBYTE octet, T_ACI_TOA* type ) | |
234 { | |
235 if ( octet EQ 0xFF ) | |
236 { | |
237 type -> ton = TON_NotPresent; | |
238 type -> npi = NPI_NotPresent; | |
239 } | |
240 else | |
241 { | |
242 type -> ton = ( octet & 0x70 ) >> 4; | |
243 type -> npi = octet & 0x0F; | |
244 } | |
245 } | |
246 | |
247 /* | |
248 +--------------------------------------------------------------------+ | |
249 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
250 | STATE : code ROUTINE : cmhPHB_getAdrStr | | |
251 +--------------------------------------------------------------------+ | |
252 | |
253 PURPOSE : This function is used to convert the phone number | |
254 in BCD to the phone number as a string. | |
255 | |
256 BCD Note: Two digits are stored in one byte. | |
257 | |
258 +-------+-------+-------+-------+ | |
259 BCD: | 1 - 0 | 3 - 2 | F - 4 | F - F | | |
260 +-------+-------+-------+-------+ | |
261 | |
262 STRING: "01234" | |
263 | |
264 */ | |
265 GLOBAL CHAR cmhPHB_convertBCD2char( UBYTE bcd ) | |
266 { | |
267 switch ( bcd ) | |
268 { | |
269 case 0: | |
270 case 1: | |
271 case 2: | |
272 case 3: | |
273 case 4: | |
274 case 5: | |
275 case 6: | |
276 case 7: | |
277 case 8: | |
278 case 9: | |
279 return (bcd + '0'); | |
280 | |
281 case 0x0a: | |
282 return ('*'); | |
283 | |
284 case 0x0b: | |
285 return ('#'); | |
286 | |
287 case 0x0c: | |
288 return (PHB_DIAL_PAUSE); /* 'P' */ | |
289 | |
290 case 0x0d: | |
291 return (PHB_DIAL_WAIT); /* 'W' */ | |
292 | |
293 case 0x0e: | |
294 return (PHB_EXP_DIGIT); /* 'E' */ | |
295 | |
296 default: | |
297 return ('\0'); | |
298 } | |
299 } | |
300 | |
301 GLOBAL UBYTE cmhPHB_getAdrStr ( CHAR* pStr, | |
302 UBYTE maxIdx, | |
303 const UBYTE* pBcd, | |
304 UBYTE numDigits ) | |
305 { | |
306 BOOL highNibble = FALSE; | |
307 | |
308 UBYTE bcdIdx = 0; | |
309 UBYTE strIdx = 0; | |
310 | |
311 UBYTE bcd; | |
312 char digit; | |
313 BOOL ignore_next = FALSE; | |
314 | |
315 while ( bcdIdx < numDigits AND strIdx < maxIdx ) | |
316 { | |
317 if ( highNibble ) | |
318 { | |
319 bcd = ( pBcd[bcdIdx] & 0xF0 ) >> 4; | |
320 bcdIdx++; | |
321 } | |
322 else | |
323 { | |
324 bcd = pBcd[bcdIdx] & 0x0F; | |
325 } | |
326 | |
327 highNibble = ! highNibble; | |
328 | |
329 if(bcd EQ PHB_CMH_INVALID_BCD_ENTRY) | |
330 { | |
331 break; | |
332 } | |
333 | |
334 digit = cmhPHB_convertBCD2char( bcd ); | |
335 if (ignore_next EQ TRUE) | |
336 { | |
337 ; /* skip the digit following on an extension flag since we do not support it */ | |
338 ignore_next = FALSE; /* reset flag */ | |
339 } | |
340 else if (digit EQ PHB_EXP_DIGIT) | |
341 { | |
342 ignore_next = TRUE; /* we currently do not support Expansion Digit so skip next digit */ | |
343 } | |
344 else | |
345 { | |
346 pStr[strIdx++] = cmhPHB_convertBCD2char( bcd ); /* normal and supported digit */ | |
347 } | |
348 | |
349 } | |
350 | |
351 pStr[strIdx] = '\0'; | |
352 return ( strIdx ); | |
353 } | |
354 | |
355 /* | |
356 +--------------------------------------------------------------------+ | |
357 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
358 | STATE : code ROUTINE : cmhPHB_getAdrBcd | | |
359 +--------------------------------------------------------------------+ | |
360 | |
361 PURPOSE : This function is used to convert the phone number | |
362 as a string to the phone number in BCD. | |
363 | |
364 STRING: "01234" | |
365 | |
366 BCD Note: Two digits are stored in one byte. | |
367 | |
368 +-------+-------+-------+-------+ | |
369 BCD: | 1 - 0 | 3 - 2 | F - 4 | F - F | | |
370 +-------+-------+-------+-------+ | |
371 */ | |
372 GLOBAL void cmhPHB_getAdrBcd ( UBYTE* pBcd, | |
373 UBYTE* pNumDigits, | |
374 UBYTE maxDigits, | |
375 CHAR* pStr ) | |
376 { | |
377 BOOL highNibble = FALSE; | |
378 | |
379 UBYTE bcdIdx = 0; | |
380 UBYTE strIdx; | |
381 SHORT restLen; | |
382 | |
383 UBYTE bcd; | |
384 | |
385 for(strIdx = 0; bcdIdx < maxDigits AND pStr[strIdx] NEQ '\0'; strIdx++) | |
386 { | |
387 switch ( pStr[strIdx] ) | |
388 { | |
389 case '0': | |
390 case '1': | |
391 case '2': | |
392 case '3': | |
393 case '4': | |
394 case '5': | |
395 case '6': | |
396 case '7': | |
397 case '8': | |
398 case '9': | |
399 bcd = pStr[strIdx] - '0'; | |
400 break; | |
401 | |
402 case '*': | |
403 bcd = 0x0a; | |
404 break; | |
405 | |
406 case '#': | |
407 bcd = 0x0b; | |
408 break; | |
409 | |
410 case 'p': | |
411 case 'P': | |
412 bcd = 0x0c; | |
413 break; | |
414 | |
415 case 'w': | |
416 case 'W': | |
417 bcd = 0x0d; | |
418 break; | |
419 | |
420 case 'E': | |
421 bcd = 0x0e; | |
422 break; | |
423 | |
424 default: | |
425 continue; | |
426 } | |
427 | |
428 if ( highNibble ) | |
429 { | |
430 pBcd[bcdIdx] += ( bcd << 4 ); | |
431 bcdIdx++; | |
432 } | |
433 else | |
434 | |
435 pBcd[bcdIdx] = bcd; | |
436 | |
437 highNibble = ! highNibble; | |
438 } | |
439 | |
440 /* | |
441 *----------------------------------------------------------------- | |
442 * The last byte of the phone number is filled up with 'F' if | |
443 * necessary | |
444 *----------------------------------------------------------------- | |
445 */ | |
446 if ( highNibble ) | |
447 { | |
448 pBcd[bcdIdx] += ( PHB_CMH_INVALID_BCD_ENTRY << 4 ); | |
449 bcdIdx++; | |
450 } | |
451 | |
452 *pNumDigits = bcdIdx; | |
453 | |
454 /* | |
455 *----------------------------------------------------------------- | |
456 * The rest of the phone number is filled up with 'FF' | |
457 *----------------------------------------------------------------- | |
458 */ | |
459 restLen = maxDigits - bcdIdx; | |
460 if ( restLen > 0 ) | |
461 memset ( &pBcd[bcdIdx], | |
462 (PHB_CMH_INVALID_BCD_ENTRY << 4) + PHB_CMH_INVALID_BCD_ENTRY, | |
463 restLen ); | |
464 } | |
465 | |
466 /* | |
467 +--------------------------------------------------------------------+ | |
468 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
469 | STATE : code ROUTINE : cmhPHB_cpyRecEntr | | |
470 +--------------------------------------------------------------------+ | |
471 | |
472 PURPOSE : This function is used to copy the relevant data from the | |
473 T_PHB_RECORD structure to the T_ACI_PB_ENTR structure. | |
474 */ | |
475 GLOBAL void cmhPHB_cpyRecEntr ( T_ACI_PB_ENTR* entry, | |
476 #ifdef TI_PS_FFS_PHB | |
477 T_PHB_TYPE book, | |
478 #endif | |
479 const T_PHB_RECORD* record ) | |
480 { | |
481 #ifdef TI_PS_FFS_PHB | |
482 entry -> index = record->phy_recno; | |
483 #else | |
484 entry -> index = ( SHORT ) record -> index; | |
485 #endif | |
486 | |
487 cmhPHB_getAdrStr ( entry -> number, | |
488 MAX_PHB_NUM_LEN - 1, | |
489 record -> number, | |
490 record -> len ); | |
491 | |
492 cmhPHB_toaDmrg ( record -> ton_npi, &entry -> type ); | |
493 | |
494 cmhPHB_getMfwTagNt ( record -> tag, record -> tag_len, | |
495 entry -> text.data, &entry -> text.len ); | |
496 | |
497 entry -> text.cs = CS_Sim; | |
498 | |
499 #ifdef TI_PS_FFS_PHB | |
500 cmhPHB_cvtPhbPsaType ( book, &entry -> book ); | |
501 #else | |
502 cmhPHB_cvtPhbPsaType ( record -> book, &entry -> book ); | |
503 #endif | |
504 | |
505 cmhPHB_cpyPhbDateTime ( record, &entry -> dateTime ); | |
506 } | |
507 | |
508 /* | |
509 +--------------------------------------------------------------------+ | |
510 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
511 | STATE : code ROUTINE : cmhPHB_invldEntr | | |
512 +--------------------------------------------------------------------+ | |
513 | |
514 PURPOSE : This function is used to invalidate the elements of | |
515 a T_ACI_PB_ENTR structure. | |
516 */ | |
517 GLOBAL void cmhPHB_invldEntr ( T_ACI_PB_ENTR* entry ) | |
518 { | |
519 entry -> index = ACI_NumParmNotPresent; | |
520 entry -> number[0] = '\0'; | |
521 entry -> type.ton = TON_Unknown; | |
522 entry -> type.npi = NPI_IsdnTelephony; | |
523 entry -> text.len = 0; | |
524 entry -> book = PB_STOR_NotPresent; | |
525 | |
526 cmhPHB_invldCmhDateTime ( &entry -> dateTime); | |
527 } | |
528 | |
529 /* | |
530 +--------------------------------------------------------------------+ | |
531 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
532 | STATE : code ROUTINE : cmhPHB_getTagNt | | |
533 +--------------------------------------------------------------------+ | |
534 | |
535 PURPOSE : This function converts the actual tag in the format used | |
536 when storing it on the SIM into a null terminated string. | |
537 */ | |
538 GLOBAL void cmhPHB_getTagNt ( UBYTE* inTag, | |
539 UBYTE maxInLen, | |
540 CHAR* outTag, | |
541 UBYTE maxOutLen ) | |
542 { | |
543 UBYTE i = 0; | |
544 | |
545 while ( i < maxOutLen - 1 AND i < maxInLen AND | |
546 inTag[i] NEQ PHB_CMH_INVALID_TAG_ENTRY ) | |
547 { | |
548 /* | |
549 *----------------------------------------------------------------- | |
550 * Convert from default GSM to internal GSM alphabet | |
551 *----------------------------------------------------------------- | |
552 */ | |
553 outTag[i] = ( CHAR ) inTag[i] | 0x80; | |
554 i++; | |
555 } | |
556 | |
557 outTag[i] = '\0'; | |
558 } | |
559 | |
560 /* | |
561 +--------------------------------------------------------------------+ | |
562 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
563 | STATE : code ROUTINE : cmhPHB_getMfwTagNt | | |
564 +--------------------------------------------------------------------+ | |
565 | |
566 PURPOSE : This function copy the actual tag . | |
567 */ | |
568 GLOBAL void cmhPHB_getMfwTagNt ( const UBYTE* inTag, | |
569 UBYTE maxInLen, | |
570 UBYTE* outTag, | |
571 UBYTE* maxOutLen ) | |
572 { | |
573 UBYTE i = 0; | |
574 UBYTE len; | |
575 | |
576 if(maxInLen EQ 0) | |
577 { | |
578 memset(outTag, 0, MAX_ALPHA_LEN); /* we need to set out tag to 0 to prevent to be recognized by UCS2 decoder */ | |
579 *maxOutLen = 0; | |
580 return; | |
581 } | |
582 | |
583 len = pb_get_entry_len(inTag, maxInLen); | |
584 | |
585 if (len >= MAX_ALPHA_LEN) | |
586 { | |
587 len = MAX_ALPHA_LEN; | |
588 } | |
589 | |
590 memcpy(outTag, inTag, len); | |
591 *maxOutLen = len; | |
592 } | |
593 | |
594 /* | |
595 +--------------------------------------------------------------------+ | |
596 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
597 | STATE : code ROUTINE : cmhPHB_getTagSim | | |
598 +--------------------------------------------------------------------+ | |
599 | |
600 PURPOSE : This function converts the actual tag as a null | |
601 terminated string in the format used when storing it on | |
602 the SIM. | |
603 */ | |
604 GLOBAL void cmhPHB_getTagSim ( T_ACI_PB_TEXT *inTag, | |
605 UBYTE *outTag, | |
606 UBYTE maxOutLen ) | |
607 { | |
608 UBYTE inLen = inTag->len; | |
609 UBYTE i = MINIMUM ( maxOutLen, inLen); | |
610 SHORT restLen = maxOutLen - inLen; | |
611 UBYTE j; | |
612 | |
613 /* | |
614 *----------------------------------------------------------------- | |
615 * Convert from internal GSM to default GSM alphabet | |
616 *----------------------------------------------------------------- | |
617 */ | |
618 for ( j = 0; j < i; j++ ) | |
619 outTag[j] = inTag->data[j] & 0x7F; | |
620 | |
621 if ( restLen > 0 ) | |
622 memset ( &outTag[i], PHB_CMH_INVALID_TAG_ENTRY, restLen); | |
623 } | |
624 | |
625 /* | |
626 +--------------------------------------------------------------------+ | |
627 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
628 | STATE : code ROUTINE : cmhPHB_getMfwTagSim | | |
629 +--------------------------------------------------------------------+ | |
630 | |
631 PURPOSE : This function converts the actual tag string in the | |
632 format used when storing it on the SIM. | |
633 */ | |
634 GLOBAL void cmhPHB_getMfwTagSim ( T_ACI_PB_TEXT* inTag, | |
635 UBYTE* outTag, | |
636 UBYTE* outTagLen, | |
637 UBYTE maxOutLen ) | |
638 { | |
639 UBYTE i = MINIMUM ( maxOutLen, inTag->len); | |
640 SHORT restLen = maxOutLen - inTag->len; | |
641 UBYTE j; | |
642 | |
643 /* | |
644 *----------------------------------------------------------------- | |
645 * Convert from internal GSM to default GSM alphabet | |
646 *----------------------------------------------------------------- | |
647 */ | |
648 for ( j = 0; j < i; j++ ) | |
649 outTag[j] = inTag->data[j]; | |
650 | |
651 *outTagLen = i; | |
652 | |
653 if ( restLen > 0 ) | |
654 memset ( &outTag[i], PHB_CMH_INVALID_TAG_ENTRY, restLen); | |
655 } | |
656 | |
657 /* | |
658 +-------------------------------------------------------------------+ | |
659 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
660 | STATE : code ROUTINE : cmhPHB_invldPhbDateTime | | |
661 +-------------------------------------------------------------------+ | |
662 | |
663 PURPOSE : This function is used to invalidate the date and time | |
664 of a phonebook entry. | |
665 */ | |
666 GLOBAL void cmhPHB_invldPhbDateTime ( T_PHB_RECORD* record ) | |
667 { | |
668 #ifdef TI_PS_FFS_PHB | |
669 record->v_time = FALSE; | |
670 | |
671 /* Backward compatibility. Setting v_time to FALSE would be sufficient */ | |
672 record->time.year = PHB_CMH_YEAR_INVLD; | |
673 record->time.month = PHB_CMH_MONTH_INVLD; | |
674 record->time.day = PHB_CMH_DAY_INVLD; | |
675 record->time.hour = PHB_CMH_HOUR_INVLD; | |
676 record->time.minute = PHB_CMH_MINUTE_INVLD; | |
677 record->time.second = PHB_CMH_SECOND_INVLD; | |
678 #else | |
679 record -> year = PHB_CMH_YEAR_INVLD; | |
680 record -> month = PHB_CMH_MONTH_INVLD; | |
681 record -> day = PHB_CMH_DAY_INVLD; | |
682 record -> hour = PHB_CMH_HOUR_INVLD; | |
683 record -> minute = PHB_CMH_MINUTE_INVLD; | |
684 record -> second = PHB_CMH_SECOND_INVLD; | |
685 #endif | |
686 } | |
687 | |
688 /* | |
689 +-------------------------------------------------------------------+ | |
690 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
691 | STATE : code ROUTINE : cmhPHB_invldCmhDateTime | | |
692 +-------------------------------------------------------------------+ | |
693 | |
694 PURPOSE : This function is used to invalidate the date and time | |
695 of a phonebook entry. | |
696 */ | |
697 GLOBAL void cmhPHB_invldCmhDateTime ( T_ACI_VP_ABS* dateTime ) | |
698 { | |
699 dateTime -> year [0] = PHB_CMH_INVALID_BCD_ENTRY; | |
700 dateTime -> year [1] = PHB_CMH_INVALID_BCD_ENTRY; | |
701 dateTime -> month [0] = PHB_CMH_INVALID_BCD_ENTRY; | |
702 dateTime -> month [1] = PHB_CMH_INVALID_BCD_ENTRY; | |
703 dateTime -> day [0] = PHB_CMH_INVALID_BCD_ENTRY; | |
704 dateTime -> day [1] = PHB_CMH_INVALID_BCD_ENTRY; | |
705 dateTime -> hour [0] = PHB_CMH_INVALID_BCD_ENTRY; | |
706 dateTime -> hour [1] = PHB_CMH_INVALID_BCD_ENTRY; | |
707 dateTime -> minute[0] = PHB_CMH_INVALID_BCD_ENTRY; | |
708 dateTime -> minute[1] = PHB_CMH_INVALID_BCD_ENTRY; | |
709 dateTime -> second[0] = PHB_CMH_INVALID_BCD_ENTRY; | |
710 dateTime -> second[1] = PHB_CMH_INVALID_BCD_ENTRY; | |
711 } | |
712 | |
713 /* | |
714 +-------------------------------------------------------------------+ | |
715 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
716 | STATE : code ROUTINE : cmhPHB_cpyCmhDateTime | | |
717 +-------------------------------------------------------------------+ | |
718 | |
719 PURPOSE : This function is used to convert the date and time used | |
720 within the command handler to the format used in the | |
721 phonebook management. | |
722 */ | |
723 GLOBAL void cmhPHB_cpyCmhDateTime ( const T_ACI_VP_ABS* dateTime, | |
724 T_PHB_RECORD* record ) | |
725 { | |
726 #ifdef TI_PS_FFS_PHB | |
727 record->time.year = (UBYTE)(dateTime -> year [0] << 4) + | |
728 dateTime -> year [1]; | |
729 record->time.month = (UBYTE)(dateTime -> month [0] << 4) + | |
730 dateTime -> month [1]; | |
731 record->time.day = (UBYTE)(dateTime -> day [0] << 4) + | |
732 dateTime -> day [1]; | |
733 record->time.hour = (UBYTE)(dateTime -> hour [0] << 4) + | |
734 dateTime -> hour [1]; | |
735 record->time.minute = (UBYTE)(dateTime -> minute[0] << 4) + | |
736 dateTime -> minute[1]; | |
737 record->time.second = (UBYTE)(dateTime -> second[0] << 4) + | |
738 dateTime -> second[1]; | |
739 record->v_time = (record->time.year NEQ 0xff); | |
740 #else | |
741 record -> year = (UBYTE)(dateTime -> year [0] << 4) + | |
742 dateTime -> year [1]; | |
743 record -> month = (UBYTE)(dateTime -> month [0] << 4) + | |
744 dateTime -> month [1]; | |
745 record -> day = (UBYTE)(dateTime -> day [0] << 4) + | |
746 dateTime -> day [1]; | |
747 record -> hour = (UBYTE)(dateTime -> hour [0] << 4) + | |
748 dateTime -> hour [1]; | |
749 record -> minute = (UBYTE)(dateTime -> minute[0] << 4) + | |
750 dateTime -> minute[1]; | |
751 record -> second = (UBYTE)(dateTime -> second[0] << 4) + | |
752 dateTime -> second[1]; | |
753 #endif | |
754 } | |
755 | |
756 /* | |
757 +-------------------------------------------------------------------+ | |
758 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBF | | |
759 | STATE : code ROUTINE : cmhPHB_cpyPhbDateTime | | |
760 +-------------------------------------------------------------------+ | |
761 | |
762 PURPOSE : This function is used to convert the date and time used | |
763 within the phonebook management to the format used in | |
764 the command handler. | |
765 */ | |
766 GLOBAL void cmhPHB_cpyPhbDateTime ( const T_PHB_RECORD* record, | |
767 T_ACI_VP_ABS* dateTime ) | |
768 { | |
769 #ifdef TI_PS_FFS_PHB | |
770 dateTime -> year [0] = ( record->time.year ) >> 4; | |
771 dateTime -> year [1] = record->time.year & 0x0F; | |
772 dateTime -> month [0] = ( record->time.month ) >> 4; | |
773 dateTime -> month [1] = record->time.month & 0x0F; | |
774 dateTime -> day [0] = ( record->time.day ) >> 4; | |
775 dateTime -> day [1] = record->time.day & 0x0F; | |
776 dateTime -> hour [0] = ( record->time.hour ) >> 4; | |
777 dateTime -> hour [1] = record->time.hour & 0x0F; | |
778 dateTime -> minute[0] = ( record->time.minute ) >> 4; | |
779 dateTime -> minute[1] = record->time.minute & 0x0F; | |
780 dateTime -> second[0] = ( record->time.second ) >> 4; | |
781 dateTime -> second[1] = record->time.second & 0x0F; | |
782 #else | |
783 dateTime -> year [0] = ( record -> year ) >> 4; | |
784 dateTime -> year [1] = record -> year & 0x0F; | |
785 dateTime -> month [0] = ( record -> month ) >> 4; | |
786 dateTime -> month [1] = record -> month & 0x0F; | |
787 dateTime -> day [0] = ( record -> day ) >> 4; | |
788 dateTime -> day [1] = record -> day & 0x0F; | |
789 dateTime -> hour [0] = ( record -> hour ) >> 4; | |
790 dateTime -> hour [1] = record -> hour & 0x0F; | |
791 dateTime -> minute[0] = ( record -> minute ) >> 4; | |
792 dateTime -> minute[1] = record -> minute & 0x0F; | |
793 dateTime -> second[0] = ( record -> second ) >> 4; | |
794 dateTime -> second[1] = record -> second & 0x0F; | |
795 #endif | |
796 } | |
797 | |
798 /*==== EOF ========================================================*/ | |
799 |