FreeCalypso > hg > fc-tourmaline
comparison src/ui/mfw/mfw_cnvt.c @ 3:67bfe9f274f6
src/ui: import of src/ui3 from Magnetite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:33:10 +0000 |
parents | |
children | 92abb46dc1ba |
comparison
equal
deleted
inserted
replaced
2:3a14ee9a9843 | 3:67bfe9f274f6 |
---|---|
1 /* | |
2 +--------------------------------------------------------------------+ | |
3 | PROJECT: MMI-Framework (8417) $Workfile:: mfw_cnvt.c $| | |
4 | $Author:: Es $ CONDAT GmbH $Revision:: 1 $| | |
5 | CREATED: 03.08.00 $Modtime:: 03.08.00 18:57 $| | |
6 | STATE : code | | |
7 +--------------------------------------------------------------------+ | |
8 | |
9 MODULE : MFW_CNVT | |
10 | |
11 PURPOSE : string convertion | |
12 | |
13 EXPORT : | |
14 | |
15 TO DO : | |
16 | |
17 $History:: mfw_cnvt.c $ | |
18 */ | |
19 | |
20 #define ENTITY_MFW | |
21 | |
22 #include <string.h> | |
23 #include <stdio.h> | |
24 #include <stdlib.h> | |
25 | |
26 #if defined (NEW_FRAME) | |
27 | |
28 #include "typedefs.h" | |
29 #include "vsi.h" | |
30 #include "pei.h" | |
31 #include "custom.h" | |
32 #include "gsm.h" | |
33 | |
34 #else | |
35 | |
36 #include "STDDEFS.H" | |
37 #include "custom.h" | |
38 #include "gsm.h" | |
39 #include "vsi.h" | |
40 | |
41 #endif | |
42 | |
43 #include "mfw_mfw.h" | |
44 #include "mfw_phb.h" | |
45 #include "mfw_phbi.h" | |
46 #include "mfw_cm.h" | |
47 #include "mfw_cmi.h" | |
48 #include "mfw_nm.h" | |
49 #include "mfw_sim.h" | |
50 #include "mfw_sima.h" | |
51 #include "mfw_nmi.h" | |
52 #include "mfw_simi.h" | |
53 #include "mfw_win.h" | |
54 | |
55 #include "mfw_tim.h" | |
56 | |
57 #include "ksd.h" | |
58 #include "psa.h" | |
59 | |
60 #if defined (FAX_AND_DATA) | |
61 #include "aci_fd.h" | |
62 #endif | |
63 | |
64 #include "cmh.h" | |
65 #include "phb.h" | |
66 #include "cmh_phb.h" | |
67 | |
68 #include "mfw_ss.h" | |
69 #include "mfw_ssi.h" | |
70 | |
71 #define PASSED 0 | |
72 #define FAILED 1 | |
73 #define LEN_OFFSET 1 | |
74 | |
75 /* Added to remove warning Aug - 11 */ | |
76 EXTERN char ATB_char_GSM (char ascii_character); | |
77 /* End - remove warning Aug - 11 */ | |
78 /* | |
79 +---------------------------------------------------------------+ | |
80 | PROJECT: MMI-Framework (8417) MODULE: MFW_CNVT | | |
81 | STATE : code ROUTINE: mfw_getStrMode | | |
82 +---------------------------------------------------------------+ | |
83 | |
84 PURPOSE : This function is used to request the coding format | |
85 of a given string. The return value is | |
86 "MFW_DCS_7bits" or " MFW_DCS_UCS2". | |
87 | |
88 */ | |
89 | |
90 T_MFW_DCS mfw_getStrMode( UBYTE *str, // alpha string in MFW | |
91 UBYTE len) // length of alpha string | |
92 | |
93 { | |
94 | |
95 if( str[0] == 0x80) | |
96 return MFW_DCS_UCS2; | |
97 else | |
98 return MFW_DCS_7bits; | |
99 } | |
100 | |
101 /* | |
102 +---------------------------------------------------------------+ | |
103 | PROJECT: MMI-Framework (8417) MODULE: MFW_CNVT | | |
104 | STATE : code ROUTINE: mfw_SIM2GsmStr | | |
105 +---------------------------------------------------------------+ | |
106 | |
107 PURPOSE : This function is used to convert the MFW alpha | |
108 formatted string (consisting of alpha name and | |
109 length of name in bytes) to a GSM default string | |
110 (including zero-termination) and to additionally | |
111 set the @ code to 0x80. | |
112 | |
113 */ | |
114 | |
115 T_MFW mfw_SIM2GsmStr( UBYTE inLen, | |
116 UBYTE *inMfwStr, | |
117 UBYTE maxOutSize, /* in byte */ | |
118 UBYTE *outGsmStr ) | |
119 | |
120 { | |
121 int i; | |
122 UBYTE len; | |
123 | |
124 if (!inLen OR !maxOutSize) | |
125 return FAILED; /* string is zero length */ | |
126 | |
127 if (*inMfwStr EQ 0x80) /* input UCS, output GSM default */ | |
128 { | |
129 len = inLen / 2; /* GSM string is half length of unicode string */ | |
130 for( i=0; i<MINIMUM(len,maxOutSize-1); i++ ) | |
131 { | |
132 if (inMfwStr[(i*2)+2] == 0x00) | |
133 * (outGsmStr + i) = 0x80; | |
134 else | |
135 * (outGsmStr + i) = inMfwStr[(i*2)+2]; /* copy every 2nd byte */ | |
136 } | |
137 outGsmStr[i] = '\0'; | |
138 return PASSED; | |
139 } | |
140 else /* input GSM default, output GSM default */ | |
141 { | |
142 for( i=0; i<MINIMUM(inLen,maxOutSize-1); i++ ) | |
143 { | |
144 if (inMfwStr[i] EQ 0x00) | |
145 * (outGsmStr + i) = 0x80; | |
146 else | |
147 * (outGsmStr + i) = inMfwStr[i]; | |
148 } | |
149 outGsmStr[i] = '\0'; | |
150 return PASSED; | |
151 } | |
152 | |
153 } | |
154 | |
155 /* | |
156 +---------------------------------------------------------------+ | |
157 | PROJECT: MMI-Framework (8417) MODULE: MFW_CNVT | | |
158 | STATE : code ROUTINE: mfw_SIM2UcsStr | | |
159 +---------------------------------------------------------------+ | |
160 | |
161 PURPOSE : This function is used to convert the MFW alpha | |
162 formatted string to a unicode string. The first | |
163 two bytes of this unicode string indicates the | |
164 number of characters in the string. | |
165 | |
166 */ | |
167 | |
168 T_MFW mfw_SIM2UcsStr( UBYTE inLen, | |
169 UBYTE* inMfwStr, | |
170 UBYTE maxOutSize, /* in short */ | |
171 U16* outUcsStr) | |
172 | |
173 { | |
174 int i; | |
175 short cnt; | |
176 | |
177 if (!inLen OR !maxOutSize) | |
178 return FAILED; | |
179 | |
180 if (inMfwStr[0] EQ 0x80) /* input UCS, output UCS */ | |
181 { | |
182 TRACE_FUNCTION("First byte is indeed 0x80"); | |
183 //inMfwStr++; | |
184 inLen--; | |
185 | |
186 // NOTE: do not add '\0' termination! | |
187 // len should not include termination | |
188 cnt = 1; | |
189 for( i=0; i<MINIMUM(inLen/2,maxOutSize-1); i++ ) | |
190 { | |
191 outUcsStr[ i + LEN_OFFSET] = ((U16)inMfwStr[cnt] << 8)&0xFF00 + ((U16)inMfwStr[cnt + 1])&0xFF; | |
192 cnt += 2; | |
193 } | |
194 outUcsStr[0] = i; | |
195 return PASSED; | |
196 } | |
197 else /* input GSM default, output UCS */ | |
198 { | |
199 for( i=0; i<MINIMUM(inLen,maxOutSize-1); i++ ) | |
200 * (outUcsStr + i + LEN_OFFSET) = (U16) inMfwStr[i]; | |
201 | |
202 outUcsStr[0] = i; /* length of unicode string */ | |
203 return PASSED; | |
204 } | |
205 } | |
206 | |
207 /* | |
208 +---------------------------------------------------------------+ | |
209 | PROJECT: MMI-Framework (8417) MODULE: MFW_CNVT | | |
210 | STATE : code ROUTINE: mfw_Gsm2SIMStr | | |
211 +---------------------------------------------------------------+ | |
212 | |
213 PURPOSE : This function is used to convert a zero-terminated | |
214 GSM default string ( @ code is 0x80) to a MFW | |
215 alpha formatted string (consisting of alpha name | |
216 and length of name in bytes and @ code is 0x00). | |
217 The MFW alpha format is dependent on the parameter "outMode" | |
218 "outMode" is set to either " MFW_DCS_7bits" or " MFW_DCS_UCS2" | |
219 | |
220 GW-SPR#762- Increased array size - required for larger phonebook entries (>40 chars). | |
221 */ | |
222 | |
223 #define MAX_CONVERT_LEN 255 | |
224 T_MFW mfw_Gsm2SIMStr( T_MFW_DCS outMode, | |
225 UBYTE *inGsmStr, | |
226 UBYTE maxOutSize, | |
227 UBYTE *outMfwStr, | |
228 UBYTE *outLen ) | |
229 { | |
230 | |
231 UBYTE temp_str[MAX_CONVERT_LEN]; | |
232 int i; | |
233 UBYTE len = (UBYTE) strlen( (char *)inGsmStr ); | |
234 char GSM_char;/*SPR2175*/ | |
235 | |
236 len=MINIMUM(len,sizeof(temp_str)); | |
237 memcpy( temp_str,inGsmStr,len ); | |
238 | |
239 if( outMode EQ MFW_DCS_7bits ) | |
240 { | |
241 /* write to outMfwStr */ | |
242 for( i=0; i<MINIMUM(len,maxOutSize); i++ ) | |
243 { /*SPR2175, convert to GSM encoding*/ | |
244 GSM_char= ATB_char_GSM( temp_str[i] ); | |
245 temp_str[i]= GSM_char; | |
246 * (outMfwStr + i) = temp_str[i]; | |
247 } | |
248 /* write length of name to outLen */ | |
249 *outLen = len; | |
250 return PASSED; | |
251 } | |
252 else if( outMode EQ MFW_DCS_UCS2 ) | |
253 { | |
254 /* write to outMfwStr */ | |
255 outMfwStr[0] = 0x80; | |
256 for( i=0; i<MINIMUM(len,maxOutSize-1); i++ ) | |
257 { | |
258 if( temp_str[i] EQ 0x80 ) /* check for occurance of @ */ | |
259 temp_str[i] = 0x00; | |
260 * (outMfwStr + (i*2) + 1) = 0x00; | |
261 * (outMfwStr + (i*2) + 2) = temp_str[i]; | |
262 } | |
263 /* write length of name to outLen */ | |
264 *outLen = len*2 + 1; | |
265 return PASSED; | |
266 } | |
267 else | |
268 { | |
269 TRACE_EVENT ("mfw_Gsm2SIMStr() - outMode is not valid"); | |
270 return FAILED; | |
271 } | |
272 | |
273 // return PASSED; // RAVI | |
274 } | |
275 | |
276 /* | |
277 +---------------------------------------------------------------+ | |
278 | PROJECT: MMI-Framework (8417) MODULE: MFW_CNVT | | |
279 | STATE : code ROUTINE: mfw_Ucs2SIMStr | | |
280 +---------------------------------------------------------------+ | |
281 | |
282 PURPOSE : This function is used to convert a unicode string | |
283 to MFW alpha format. The MFW alpha format is | |
284 dependent on the parameter "outMode". "outMode" | |
285 is " MFW_DCS_7bits" or " MFW_DCS_UCS2". | |
286 | |
287 */ | |
288 | |
289 T_MFW mfw_Ucs2SIMStr( T_MFW_DCS outMode, | |
290 U16 *inDcsStr, | |
291 UBYTE maxOutSize, | |
292 UBYTE *outMfwStr, | |
293 UBYTE *outLen ) | |
294 { | |
295 int i; | |
296 U16 len; | |
297 | |
298 len = inDcsStr[0]; | |
299 | |
300 if( outMode EQ MFW_DCS_7bits ) | |
301 { | |
302 /* write to outMfwStr */ | |
303 for( i=0; i<MINIMUM(len,maxOutSize); i++ ) | |
304 { | |
305 * (outMfwStr + (i*2) + 1) = (UBYTE) (inDcsStr[i+1] & 0xff); | |
306 * (outMfwStr + (i*2)) = (UBYTE) ((inDcsStr[i+1] & 0xff00) >> 8); | |
307 } | |
308 /* write length of name to outLen */ | |
309 *outLen = len * 2; | |
310 | |
311 return PASSED; | |
312 } | |
313 else if( outMode EQ MFW_DCS_UCS2 ) | |
314 { | |
315 /* write to outMfwStr */ | |
316 outMfwStr[0] = 0x80; | |
317 for( i=0; i<len; i++) | |
318 {/*MC, SPR 1752, bytes are no longer swapped*/ | |
319 * (outMfwStr + (i*2) + 1) = (UBYTE) (inDcsStr[i+1] & 0xff); | |
320 * (outMfwStr + (i*2) + 2) = (UBYTE) ((inDcsStr[i+1] & 0xff00) >> 8); | |
321 } | |
322 /* write length to outLen */ | |
323 *outLen = (len*2) + 1; | |
324 | |
325 return PASSED; | |
326 | |
327 } | |
328 else /* string does not require conversion to unicode */ | |
329 { | |
330 TRACE_EVENT ("mfw_Ucs2SIMStr() - outMode is not valid"); | |
331 return FAILED; | |
332 } | |
333 | |
334 // return PASSED; // RAVI | |
335 } | |
336 | |
337 /*CONQUEST 5992(related) MC added function to convert GSM string to ASCII*/ | |
338 static const unsigned char gsm_2_ascii_table[128] = { 64, 156, 36, 157, 138, 130, 151, 141, 149, 128, | |
339 10, 2 , 7, 32, 143, 134, 4, 95, 232, 226, 239, 234, 227, 5, 228, | |
340 233, 240, 32, 146, 145, 225, 144, 32, 33, 34, 35, 1, 37, 38, 39, | |
341 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, | |
342 55, 56, 57, 58, 59, 60, 61, 62, 63, 173, 65, 66, 67, 68, 69, | |
343 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, | |
344 85, 86, 87, 88, 89, 90, 142, 153, 165, 154, 06, 168, 97, 98, 99, | |
345 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, | |
346 115, 116, 117, 118, 119, 120, 121, 122, 132, 148, 164, 129, 133}; | |
347 /* PATCH JPS 29.09 END */ | |
348 | |
349 /* | |
350 +---------------------------------------------------------------------------+ | |
351 | PROJECT : MMI-Framework (8417) MODULE : MFW_SMS | | |
352 | STATE : code ROUTINE : mfw_GSM_2_ASCII | | |
353 +---------------------------------------------------------------------------+ | |
354 | |
355 PURPOSE : copy the index and status of a short message | |
356 | |
357 */ | |
358 void mfw_GSM_2_ASCII(UBYTE* gsm_string, UBYTE* ascii_string, SHORT length) | |
359 { int i; | |
360 | |
361 for(i=0;i<length;i++) | |
362 { | |
363 ascii_string[i] = gsm_2_ascii_table[gsm_string[i]]; | |
364 } | |
365 } | |
366 |