FreeCalypso > hg > tcs211-l1-reconst
comparison g23m/condat/ms/src/aci/cmh_mmq.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_MMQ | |
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 provides the query functions related to the | |
18 | protocol stack adapter for mobility management. | |
19 +----------------------------------------------------------------------------- | |
20 */ | |
21 | |
22 #ifndef CMH_MMQ_C | |
23 #define CMH_MMQ_C | |
24 #endif | |
25 | |
26 #include "aci_all.h" | |
27 | |
28 /*==== INCLUDES ===================================================*/ | |
29 #include "aci_cmh.h" | |
30 #include "ati_cmd.h" | |
31 #include "aci_cmd.h" | |
32 #include "aci.h" | |
33 | |
34 #ifdef FAX_AND_DATA | |
35 #include "aci_fd.h" | |
36 #endif /* of #ifdef FAX_AND_DATA */ | |
37 | |
38 #include "pcm.h" | |
39 #include "psa.h" | |
40 #include "psa_mm.h" | |
41 #include "psa_util.h" | |
42 #include "cmh.h" | |
43 #include "cmh_mm.h" | |
44 #include "rx.h" | |
45 | |
46 #include "rtc.h" | |
47 | |
48 #ifdef FF_TIMEZONE | |
49 #include "rv/rv_general.h" | |
50 #include "rtc/rtc_tz.h" | |
51 #endif | |
52 | |
53 #ifdef GPRS | |
54 #include "gaci_cmh.h" | |
55 #include "psa_gmm.h" | |
56 #endif | |
57 | |
58 #ifndef _SIMULATION_ | |
59 /******************************/ | |
60 /* just to get FFS !!!! */ | |
61 /* TEMPORARY until use of NVM */ | |
62 #ifndef GPRS | |
63 #define DONT_LET_FFSH2_DEF_GPRS | |
64 #endif | |
65 | |
66 #include "ffs/ffs.h" | |
67 | |
68 | |
69 /* check whether latter has defined GPRS !!! */ | |
70 #ifdef DONT_LET_FFSH2_DEF_GPRS | |
71 #undef GPRS | |
72 #endif | |
73 | |
74 #undef DONT_LET_FFSH2_DEF_GPRS | |
75 /***************************/ | |
76 #endif /* _SIMULATION_ */ | |
77 | |
78 | |
79 /*==== CONSTANTS ==================================================*/ | |
80 | |
81 /*==== EXPORT =====================================================*/ | |
82 | |
83 /*==== VARIABLES ==================================================*/ | |
84 #if defined (GPRS) && defined (DTI) | |
85 EXTERN T_GMM_SHRD_PRM gmmShrdPrm; | |
86 #endif | |
87 EXTERN T_ONS_READ_STATE ONSReadStatus; | |
88 /*==== FUNCTIONS ==================================================*/ | |
89 | |
90 EXTERN BOOL cmhSIM_plmn_is_hplmn(); | |
91 | |
92 /* | |
93 +--------------------------------------------------------------------+ | |
94 | PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | | |
95 | STATE : code ROUTINE : qAT_PercentBAND | | |
96 +--------------------------------------------------------------------+ | |
97 | |
98 PURPOSE : This is the functional counterpart to the %BAND? AT command | |
99 which returns the current multiband configuration. | |
100 | |
101 <bandMode>: band switch mode. | |
102 <bandType>: band selection. | |
103 */ | |
104 | |
105 GLOBAL T_ACI_RETURN qAT_PercentBAND(T_ACI_CMD_SRC srcId, | |
106 T_ACI_BAND_MODE *bandMode, | |
107 UBYTE *bandType) | |
108 { | |
109 UBYTE freq_bands, dummy; | |
110 | |
111 TRACE_FUNCTION ("qAT_PercentBAND()"); | |
112 | |
113 /* check command source */ | |
114 if(!cmh_IsVldCmdSrc (srcId)) | |
115 { | |
116 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
117 return( AT_FAIL ); | |
118 } | |
119 | |
120 if( bandMode EQ NULL OR | |
121 bandType EQ NULL ) | |
122 { | |
123 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
124 return( AT_FAIL ); | |
125 } | |
126 | |
127 cmhMM_getBandSettings( &freq_bands, &dummy ); | |
128 | |
129 if( freq_bands EQ 0x00 ) | |
130 { | |
131 *bandType = 0x00; /* not really meanful here... */ | |
132 *bandMode = BAND_MODE_Auto; | |
133 } | |
134 else | |
135 { | |
136 *bandType = freq_bands; | |
137 *bandMode = BAND_MODE_Manual; | |
138 } | |
139 | |
140 return( AT_CMPL ); | |
141 } | |
142 | |
143 /* | |
144 +--------------------------------------------------------------------+ | |
145 | PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | | |
146 | STATE : code ROUTINE : qAT_PlusCOPS | | |
147 +--------------------------------------------------------------------+ | |
148 | |
149 PURPOSE : This is the functional counterpart to the +COPS? AT command | |
150 which returns the current setting of mode, format and | |
151 operator. | |
152 | |
153 <mode>: registration mode. | |
154 <format>: format of operator | |
155 <oper>: operator string | |
156 */ | |
157 | |
158 GLOBAL T_ACI_RETURN qAT_PlusCOPS ( T_ACI_CMD_SRC srcId, | |
159 T_ACI_COPS_MOD * mode, | |
160 T_ACI_COPS_FRMT * format, | |
161 CHAR * oper ) | |
162 { | |
163 T_MM_CMD_PRM * pMMCmdPrm; /* points to MM command parameters */ | |
164 | |
165 TRACE_FUNCTION ("qAT_PlusCOPS()"); | |
166 | |
167 /* check command source */ | |
168 if(!cmh_IsVldCmdSrc (srcId)) | |
169 { | |
170 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
171 return( AT_FAIL ); | |
172 } | |
173 | |
174 pMMCmdPrm = &cmhPrm[srcId].mmCmdPrm; | |
175 | |
176 /* fill in parameters */ | |
177 switch(mmShrdPrm.COPSmode) | |
178 { | |
179 case(COPS_MOD_Auto): | |
180 case(COPS_MOD_Man): | |
181 case(COPS_MOD_Dereg): | |
182 *mode = mmShrdPrm.COPSmode; | |
183 break; | |
184 | |
185 /*case(COPS_MOD_SetOnly): mmShrdPrm.COPSmode can't have been | |
186 set with this value...*/ | |
187 case(COPS_MOD_Both): | |
188 if(mmShrdPrm.regModeAutoBack) | |
189 { | |
190 *mode = COPS_MOD_Man; | |
191 } | |
192 else | |
193 *mode = COPS_MOD_Auto; | |
194 | |
195 break; | |
196 default: | |
197 *mode = mmShrdPrm.regMode; | |
198 break; | |
199 } | |
200 | |
201 *format = pMMCmdPrm -> COPSfrmt; | |
202 *oper = 0x0; | |
203 | |
204 cmhMM_OperatorQuery(srcId,pMMCmdPrm -> COPSfrmt,oper); | |
205 | |
206 TRACE_EVENT(oper); | |
207 | |
208 return( AT_CMPL ); | |
209 } | |
210 | |
211 | |
212 /* | |
213 +--------------------------------------------------------------------+ | |
214 | PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | | |
215 | STATE : code ROUTINE : qAT_PercentCOPS | | |
216 +--------------------------------------------------------------------+ | |
217 | |
218 PURPOSE : This is the functional counterpart to the +COPS? AT command | |
219 which returns the current setting of mode, format and | |
220 operator. | |
221 | |
222 <mode>: registration mode. | |
223 <format>: format of operator | |
224 <oper>: operator string | |
225 */ | |
226 | |
227 GLOBAL T_ACI_RETURN qAT_PercentCOPS ( T_ACI_CMD_SRC srcId, | |
228 T_ACI_COPS_MOD * mode, | |
229 T_ACI_COPS_FRMT * format, | |
230 T_ACI_COPS_SVST * svrStatus, | |
231 CHAR * oper ) | |
232 { | |
233 T_MM_CMD_PRM * pMMCmdPrm; /* points to MM command parameters */ | |
234 | |
235 TRACE_FUNCTION ("qAT_PercentCOPS()"); | |
236 | |
237 /* check command source */ | |
238 if(!cmh_IsVldCmdSrc (srcId)) | |
239 { | |
240 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
241 return( AT_FAIL ); | |
242 } | |
243 | |
244 pMMCmdPrm = &cmhPrm[srcId].mmCmdPrm; | |
245 | |
246 /* fill in parameters */ | |
247 switch(mmShrdPrm.COPSmode) | |
248 { | |
249 case(COPS_MOD_Auto): | |
250 case(COPS_MOD_Man): | |
251 case(COPS_MOD_Dereg): | |
252 *mode = mmShrdPrm.COPSmode; | |
253 break; | |
254 | |
255 /*case(COPS_MOD_SetOnly): mmShrdPrm.COPSmode can't have been | |
256 set with this value...*/ | |
257 case(COPS_MOD_Both): | |
258 if(mmShrdPrm.regModeAutoBack) | |
259 { | |
260 *mode = COPS_MOD_Man; | |
261 } | |
262 else | |
263 *mode = COPS_MOD_Auto; | |
264 | |
265 break; | |
266 default: | |
267 *mode = mmShrdPrm.regMode; | |
268 break; | |
269 } | |
270 | |
271 *format = pMMCmdPrm -> COPSfrmt; | |
272 | |
273 | |
274 switch( mmShrdPrm.regStat ) | |
275 { | |
276 case( NO_VLD_RS ): | |
277 case( RS_NO_SRV ): *svrStatus = COPS_SVST_NoSrv; break; | |
278 case( RS_LMTD_SRV ): *svrStatus =COPS_SVST_Limited; break; | |
279 case( RS_FULL_SRV ): *svrStatus = COPS_SVST_Full; break; | |
280 default: *svrStatus = COPS_SVST_NotPresent; break; | |
281 } | |
282 | |
283 | |
284 *oper = 0x0; | |
285 | |
286 | |
287 | |
288 cmhMM_OperatorQuery(srcId,pMMCmdPrm -> COPSfrmt,oper); | |
289 | |
290 return( AT_CMPL ); | |
291 } | |
292 | |
293 | |
294 | |
295 | |
296 /* | |
297 +--------------------------------------------------------------------+ | |
298 | PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | | |
299 | STATE : code ROUTINE : qAT_PlusCREG | | |
300 +--------------------------------------------------------------------+ | |
301 | |
302 PURPOSE : This is the functional counterpart to the +CREG? AT command | |
303 which returns the current setting of registration status. | |
304 | |
305 <stat>: registration status. | |
306 <lac>: current lac. | |
307 <cid>: current cell id. | |
308 */ | |
309 | |
310 GLOBAL T_ACI_RETURN qAT_PlusCREG ( T_ACI_CMD_SRC srcId, | |
311 T_ACI_CREG_STAT *stat, | |
312 USHORT *lac, | |
313 USHORT *cid ) | |
314 { | |
315 | |
316 TRACE_FUNCTION ("qAT_PlusCREG()"); | |
317 | |
318 /* | |
319 *------------------------------------------------------------------- | |
320 * fill in parameters | |
321 *------------------------------------------------------------------- | |
322 */ | |
323 *stat = mmShrdPrm.creg_status; | |
324 *lac = mmShrdPrm.lac; | |
325 *cid = mmShrdPrm.cid; | |
326 | |
327 return( AT_CMPL ); | |
328 } | |
329 | |
330 /* | |
331 +--------------------------------------------------------------------+ | |
332 | PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | | |
333 | STATE : code ROUTINE : qAT_PercentCREG | | |
334 +--------------------------------------------------------------------+ | |
335 | |
336 PURPOSE : This is the functional counterpart to the +CREG? AT command | |
337 which returns the current setting of registration status. | |
338 | |
339 <stat>: registration status. | |
340 <lac>: current lac. | |
341 <cid>: current cell id. | |
342 <gprs_ind>: if GPRS is available or not | |
343 */ | |
344 | |
345 GLOBAL T_ACI_RETURN qAT_PercentCREG ( T_ACI_CMD_SRC srcId, | |
346 T_ACI_CREG_STAT *stat, | |
347 USHORT *lac, | |
348 USHORT *cid, | |
349 T_ACI_P_CREG_GPRS_IND *gprs_ind ) | |
350 { | |
351 | |
352 TRACE_FUNCTION ("qAT_PercentCREG()"); | |
353 | |
354 qAT_PlusCREG (srcId, stat, lac, cid); | |
355 | |
356 #if defined (GPRS) AND defined (DTI) | |
357 *gprs_ind = gmmShrdPrm.gprs_indicator; | |
358 #else | |
359 *gprs_ind = P_CREG_GPRS_Not_Supported; /* ACI-SPR-17218: use ACI type */ | |
360 #endif /* GPRS */ | |
361 | |
362 return( AT_CMPL ); | |
363 } | |
364 | |
365 | |
366 /* | |
367 +--------------------------------------------------------------------+ | |
368 | PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | | |
369 | STATE : code ROUTINE : qAT_PlusWS46 | | |
370 +--------------------------------------------------------------------+ | |
371 | |
372 PURPOSE : This is the functional counterpart to the +WS46? AT | |
373 command which returns the current setting wireless network | |
374 selection. | |
375 | |
376 <mode>: network mode. | |
377 */ | |
378 | |
379 GLOBAL T_ACI_RETURN qAT_PlusWS46 (T_ACI_CMD_SRC srcId, | |
380 T_ACI_WS46_MOD * mode ) | |
381 { | |
382 | |
383 TRACE_FUNCTION ("qAT_PlusWS46()"); | |
384 | |
385 /* | |
386 *------------------------------------------------------------------- | |
387 * fill in parameters | |
388 *------------------------------------------------------------------- | |
389 */ | |
390 *mode = WS46_MOD_Gsm; | |
391 | |
392 return( AT_CMPL ); | |
393 } | |
394 | |
395 /* | |
396 +--------------------------------------------------------------------+ | |
397 | PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | | |
398 | STATE : code ROUTINE : qAT_PlusCOPN | | |
399 +--------------------------------------------------------------------+ | |
400 | |
401 PURPOSE : This is the functional counterpart to the +COPN AT | |
402 command which returns the current operator names stored in | |
403 ME. | |
404 | |
405 <lstId>: list identifier. | |
406 <startIdx>: start index to read from. | |
407 <lastIdx>: buffer for index of last copied name. | |
408 <oprLstBuf>: buffer for operator names. length of MAX_OPER. | |
409 */ | |
410 | |
411 GLOBAL T_ACI_RETURN qAT_PlusCOPN ( T_ACI_CMD_SRC srcId, | |
412 T_ACI_COPN_LID lstId, | |
413 SHORT startIdx, | |
414 SHORT *lastIdx, | |
415 T_ACI_COPN_OPDESC *oprLstBuf) | |
416 { | |
417 USHORT idx; /* holds list idx */ | |
418 EF_PLMN plmnBuf; /* buffer PCM entry */ | |
419 USHORT maxRec; /* holds maximum records */ | |
420 USHORT recNr; /* holds record number */ | |
421 USHORT oprLstLen; /* holds fixed oper list length */ | |
422 UBYTE retVal; /* holds return value */ | |
423 UBYTE ver; /* holds version */ | |
424 UBYTE len; /* holds operator name length */ | |
425 | |
426 TRACE_FUNCTION ("qAT_PlusCOPN()"); | |
427 | |
428 /* | |
429 *------------------------------------------------------------------- | |
430 * determine list identifier | |
431 *------------------------------------------------------------------- | |
432 */ | |
433 switch( lstId ) | |
434 { | |
435 /* | |
436 *----------------------------------------------------------------- | |
437 * for the list in permanent configuration memory | |
438 *----------------------------------------------------------------- | |
439 */ | |
440 case( COPN_LID_Pcm ): | |
441 | |
442 recNr = startIdx+1; | |
443 idx = 0; | |
444 | |
445 do | |
446 { | |
447 retVal= pcm_ReadRecord( (UBYTE *) EF_PLMN_ID, recNr, SIZE_EF_PLMN, | |
448 (UBYTE *) &plmnBuf, &ver, &maxRec ); | |
449 | |
450 if( retVal EQ PCM_INVALID_SIZE OR retVal EQ PCM_INVALID_RECORD ) | |
451 { | |
452 if( idx EQ 0 ) | |
453 { | |
454 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_InvIdx ); | |
455 return( AT_FAIL ); | |
456 } | |
457 break; | |
458 } | |
459 | |
460 if( plmnBuf.mcc[0] NEQ 0xFF AND plmnBuf.mnc[0] NEQ 0xFF AND | |
461 plmnBuf.lngNam[0] NEQ 0xFF ) | |
462 { | |
463 sprintf(oprLstBuf[idx].numOper, "%03X%02X", | |
464 ((plmnBuf.mcc[0]<<8) + plmnBuf.mcc[1]), | |
465 ((plmnBuf.mnc[0]<<8) + plmnBuf.mnc[1])); | |
466 | |
467 for( len = 0; | |
468 len < SIZE_EF_PLMN_LONG AND plmnBuf.lngNam[len] NEQ 0xFF; | |
469 len++ ) | |
470 ; | |
471 | |
472 utl_cvtGsmIra( plmnBuf.lngNam, len, | |
473 (UBYTE*)oprLstBuf[idx].alphaOper, | |
474 MAX_ALPHA_OPER_LEN, | |
475 CSCS_DIR_GsmToIra ); | |
476 | |
477 oprLstBuf[idx].alphaOper[MINIMUM(len,MAX_ALPHA_OPER_LEN-1)] = 0x0; | |
478 idx++; | |
479 } | |
480 | |
481 recNr++; | |
482 } | |
483 while( idx < MAX_OPER ); | |
484 | |
485 break; | |
486 /* | |
487 *----------------------------------------------------------------- | |
488 * for the list in constant memory | |
489 *----------------------------------------------------------------- | |
490 */ | |
491 case( COPN_LID_Cnst ): | |
492 | |
493 oprLstLen = cmhMM_GetOperLstLen(); | |
494 | |
495 if( startIdx >= oprLstLen ) | |
496 { | |
497 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_InvIdx ); | |
498 return( AT_FAIL ); | |
499 } | |
500 | |
501 for( idx = 0, recNr = startIdx; | |
502 idx < MAX_OPER AND recNr < oprLstLen; | |
503 idx++, recNr++ ) | |
504 { | |
505 if ((operListFixed[recNr].mnc & 0x00F) EQ 0xF) | |
506 { | |
507 /*lint -e{702} */ | |
508 sprintf(oprLstBuf[idx].numOper, "%03X%02X", | |
509 operListFixed[recNr].mcc, | |
510 operListFixed[recNr].mnc >> 4); | |
511 } | |
512 else | |
513 { | |
514 sprintf(oprLstBuf[idx].numOper, "%03X%02X", | |
515 operListFixed[recNr].mcc, | |
516 operListFixed[recNr].mnc); | |
517 } | |
518 | |
519 strncpy( oprLstBuf[idx].alphaOper, operListFixed[recNr].longName, | |
520 MAX_ALPHA_OPER_LEN-1 ); | |
521 | |
522 oprLstBuf[idx].alphaOper[MAX_ALPHA_OPER_LEN-1] = 0x0; | |
523 } | |
524 break; | |
525 /* | |
526 *----------------------------------------------------------------- | |
527 * unexpected list type | |
528 *----------------------------------------------------------------- | |
529 */ | |
530 default: | |
531 | |
532 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
533 return( AT_FAIL ); | |
534 } | |
535 | |
536 /* | |
537 *------------------------------------------------------------------- | |
538 * terminate list and set last index | |
539 *------------------------------------------------------------------- | |
540 */ | |
541 if( idx < MAX_OPER ) | |
542 { | |
543 oprLstBuf[idx].numOper[0] = 0x0; | |
544 oprLstBuf[idx].alphaOper[0] = 0x0; | |
545 } | |
546 | |
547 | |
548 *lastIdx = ( recNr NEQ 0 )?recNr-1:0; | |
549 | |
550 return( AT_CMPL ); | |
551 } | |
552 | |
553 /* | |
554 +-------------------------------------------------------------------+ | |
555 | NEW AT Command qAT_PercentCOPN | | |
556 | | | |
557 +-------------------------------------------------------------------+ | |
558 */ | |
559 /*The same function in EDGE should be remved from ACIA when EDGE is | |
560 merged to the UMTS*/ | |
561 | |
562 GLOBAL T_ACI_RETURN qAT_PercentCOPN( T_ACI_CMD_SRC srcId, | |
563 T_ACI_COPS_FRMT format, | |
564 CHAR *opr, | |
565 T_ACI_OPER_NTRY *oper_ntry) | |
566 { | |
567 T_ACI_RETURN retval = AT_FAIL; | |
568 T_OPER_ENTRY plmnDesc; | |
569 BOOL found; | |
570 | |
571 if(format EQ COPS_FRMT_Numeric) | |
572 { | |
573 found = cmhMM_FindNumeric(&plmnDesc, opr); | |
574 } | |
575 else | |
576 { | |
577 found = cmhMM_FindName(&plmnDesc, opr, format); | |
578 } | |
579 if (found) | |
580 { | |
581 oper_ntry->mcc = plmnDesc.mcc; | |
582 oper_ntry->mnc = plmnDesc.mnc; | |
583 strncpy (oper_ntry->longName, plmnDesc.longName, sizeof(oper_ntry->longName)); | |
584 oper_ntry->longName[sizeof(oper_ntry->longName) - 1] = '\0'; | |
585 strncpy ((CHAR *)oper_ntry->shrtName, plmnDesc.shrtName, sizeof(oper_ntry->shrtName)); | |
586 oper_ntry->shrtName[sizeof(oper_ntry->shrtName) - 1] = '\0'; | |
587 oper_ntry->long_len = plmnDesc.long_len; | |
588 oper_ntry->shrt_len = plmnDesc.shrt_len; | |
589 if (plmnDesc.pnn) | |
590 { | |
591 oper_ntry->source = Read_EONS; | |
592 } | |
593 else if ((ONSReadStatus EQ ONS_READ_OVER) AND (cmhSIM_plmn_is_hplmn (plmnDesc.mcc, plmnDesc.mnc)) | |
594 AND format EQ COPS_FRMT_Numeric) | |
595 { | |
596 oper_ntry->source = Read_CPHS; | |
597 } | |
598 else | |
599 { | |
600 oper_ntry->source = Read_ROM_TABLE; | |
601 } | |
602 } | |
603 else | |
604 { | |
605 oper_ntry->longName[0] = '\0'; | |
606 oper_ntry->shrtName[0] = '\0'; | |
607 oper_ntry->mcc = 0; | |
608 oper_ntry->mnc = 0; | |
609 oper_ntry->source = Read_INVALID; | |
610 } | |
611 return AT_CMPL; | |
612 } | |
613 | |
614 | |
615 | |
616 | |
617 /* | |
618 +--------------------------------------------------------------------+ | |
619 | PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | | |
620 | STATE : code ROUTINE : qAT_PercentNRG | | |
621 +--------------------------------------------------------------------+ | |
622 | |
623 PURPOSE : This is the functional counterpart to the %NRG? AT command | |
624 which returns the current setting of registration mode and | |
625 service mode and the current status of service. | |
626 | |
627 <regMode>: registration mode. | |
628 <srvMode>: service mode. | |
629 <oprFrmt>: operator format. | |
630 <srvStat>: service status. | |
631 <oper> : operator | |
632 */ | |
633 | |
634 GLOBAL T_ACI_RETURN qAT_PercentNRG( T_ACI_CMD_SRC srcId, | |
635 T_ACI_NRG_RGMD *regMode, | |
636 T_ACI_NRG_SVMD *srvMode, | |
637 T_ACI_NRG_FRMT *oprFrmt, | |
638 T_ACI_NRG_SVMD *srvStat, | |
639 CHAR *oper) | |
640 { | |
641 | |
642 T_ACI_COPS_FRMT copsFormat; | |
643 | |
644 | |
645 TRACE_FUNCTION ("qAT_PercentNRG()"); | |
646 | |
647 /* | |
648 *------------------------------------------------------------------- | |
649 * check command source | |
650 *------------------------------------------------------------------- | |
651 */ | |
652 if(!cmh_IsVldCmdSrc (srcId)) | |
653 { | |
654 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
655 return( AT_FAIL ); | |
656 } | |
657 | |
658 /* | |
659 *------------------------------------------------------------------- | |
660 * fill in parameters | |
661 *------------------------------------------------------------------- | |
662 */ | |
663 switch( mmShrdPrm.regStat ) | |
664 { | |
665 case( NO_VLD_RS ): | |
666 case( RS_NO_SRV ): *srvStat = NRG_SVMD_NoSrv; break; | |
667 case( RS_LMTD_SRV ): *srvStat = NRG_SVMD_Limited; break; | |
668 case( RS_FULL_SRV ): *srvStat = NRG_SVMD_Full; break; | |
669 default: *srvStat = NRG_SVMD_NotPresent; break; | |
670 } | |
671 | |
672 *srvMode = cmhPrm[srcId].mmCmdPrm.NRGsrvMode; | |
673 *oprFrmt = cmhPrm[srcId].mmCmdPrm.NRGoprFrmt; | |
674 *oper = 0x0; | |
675 | |
676 *regMode = cmhPrm[srcId].mmCmdPrm.NRGregMode; | |
677 | |
678 switch( *oprFrmt ) | |
679 { | |
680 case( NRG_FRMT_NotPresent ): | |
681 copsFormat = COPS_FRMT_NotPresent; | |
682 break; | |
683 case( NRG_FRMT_Numeric ): | |
684 copsFormat = COPS_FRMT_Numeric ; | |
685 break; | |
686 case( NRG_FRMT_Short): | |
687 copsFormat = COPS_FRMT_Short ; | |
688 break; | |
689 case( NRG_FRMT_Long): | |
690 copsFormat = COPS_FRMT_Long; | |
691 break; | |
692 default: | |
693 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
694 return( AT_FAIL ); | |
695 } | |
696 | |
697 | |
698 cmhMM_OperatorQuery(srcId,copsFormat,oper); | |
699 | |
700 | |
701 | |
702 return( AT_CMPL ); | |
703 } | |
704 | |
705 /* | |
706 +--------------------------------------------------------------------+ | |
707 | PROJECT : ACI/MMI MODULE : CMH_MMS | | |
708 | STATE : code ROUTINE : qAT_PercentCSQ | | |
709 +--------------------------------------------------------------------+ | |
710 | |
711 PURPOSE : This is the function for Signal Quality query | |
712 | |
713 Shen,Chao | |
714 Juni.13th, 2003 | |
715 */ | |
716 | |
717 GLOBAL T_ACI_RETURN qAT_PercentCSQ( T_ACI_CMD_SRC srcId, | |
718 UBYTE *rssi, | |
719 UBYTE *ber, | |
720 UBYTE *actlevel) | |
721 { | |
722 rx_Status_Type rxStat; | |
723 | |
724 TRACE_FUNCTION("qAT_PercentCSQ()"); | |
725 | |
726 if ( rx_GetStatus ( &rxStat ) NEQ DRV_OK ) | |
727 { | |
728 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
729 return ATI_FAIL; | |
730 } | |
731 else | |
732 { | |
733 if ( rxStat.gsmLevel EQ 0xFF OR rxStat.gsmLevel EQ 0 ) | |
734 { | |
735 *rssi = ACI_RSSI_FAULT; | |
736 } | |
737 else if ( rxStat.gsmLevel > 59 ) | |
738 { | |
739 *rssi = 31; | |
740 } | |
741 else | |
742 { | |
743 *rssi = ( rxStat.gsmLevel / 2 ) + 2; | |
744 } | |
745 | |
746 if ( rxStat.rxQuality EQ RX_QUAL_UNAVAILABLE ) | |
747 { | |
748 *ber = ACI_BER_FAULT; | |
749 } | |
750 else | |
751 { | |
752 *ber = rxStat.rxQuality; | |
753 } | |
754 | |
755 *actlevel = rxStat.actLevel; | |
756 | |
757 return ATI_CMPL; | |
758 } | |
759 } | |
760 | |
761 /* | |
762 +--------------------------------------------------------------------+ | |
763 | PROJECT : ACI/MMI MODULE : CMH_MMS | | |
764 | STATE : code ROUTINE : qAT_PercentDBGINFO | | |
765 +--------------------------------------------------------------------+ | |
766 | |
767 PURPOSE : query free mem pool blocks. | |
768 */ | |
769 GLOBAL T_ACI_RETURN qAT_PercentDBGINFO(T_ACI_CMD_SRC srcId, | |
770 ULONG param, | |
771 USHORT stor, | |
772 USHORT *free, | |
773 USHORT *alloc) | |
774 { | |
775 int ret=0; | |
776 | |
777 TRACE_FUNCTION ("qAT_PercentDBGINFO()"); | |
778 /* | |
779 *----------------------------------------------------------------- | |
780 * check command source | |
781 *----------------------------------------------------------------- | |
782 */ | |
783 if( ! cmh_IsVldCmdSrc (srcId) ) | |
784 { | |
785 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
786 return (AT_FAIL); | |
787 } | |
788 | |
789 ret = vsi_m_status (hCommACI, | |
790 param, | |
791 (USHORT)stor, | |
792 free, | |
793 alloc ); | |
794 if (ret EQ VSI_ERROR OR *free EQ 0) | |
795 { | |
796 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_MemFull ); | |
797 return (ATI_FAIL); | |
798 } | |
799 | |
800 return (ATI_CMPL); | |
801 } | |
802 | |
803 /* | |
804 +--------------------------------------------------------------------+ | |
805 | PROJECT : GSM-PS (6147) MODULE : CMH_MMS | | |
806 | STATE : code ROUTINE : qAT_PlusCTZR | | |
807 +--------------------------------------------------------------------+ | |
808 | |
809 PURPOSE : This is the functional counterpart to the +CTZR AT command | |
810 which will query the status of CTZRmode, indicating whether time | |
811 zone change rep[orting is enabled or disabled. | |
812 | |
813 <on/off>: Indicates whether time zone reporting is enabled or disabled. | |
814 */ | |
815 | |
816 GLOBAL T_ACI_RETURN qAT_PlusCTZR ( T_ACI_CMD_SRC srcId, | |
817 T_ACI_CTZR_MODE *mode) | |
818 { | |
819 TRACE_FUNCTION ("qAT_PlusCTZR()"); | |
820 | |
821 /* | |
822 *------------------------------------------------------------------- | |
823 * check command source | |
824 *------------------------------------------------------------------- | |
825 */ | |
826 if(!cmh_IsVldCmdSrc (srcId)) | |
827 { | |
828 TRACE_EVENT_P1("qAT_PlusCTZR(): Invalid source: %d", srcId); | |
829 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
830 return( AT_FAIL ); | |
831 } | |
832 | |
833 *mode = cmhPrm[srcId].mmCmdPrm.CTZRMode; | |
834 | |
835 return( AT_CMPL ); | |
836 } | |
837 | |
838 /* | |
839 +--------------------------------------------------------------------+ | |
840 | PROJECT : GSM-PS (6147) MODULE : CMH_MMS | | |
841 | STATE : code ROUTINE : qAT_PlusCTZU | | |
842 +--------------------------------------------------------------------+ | |
843 | |
844 PURPOSE : This is the functional counterpart to the +CTZU AT command | |
845 which will query the status of CTZUmode, indicating whether time | |
846 zone automatic update is enabled or disabled. | |
847 | |
848 <on/off>: Indicates whether time zone automatic update is enabled or disabled. | |
849 */ | |
850 | |
851 GLOBAL T_ACI_RETURN qAT_PlusCTZU ( T_ACI_CMD_SRC srcId, | |
852 T_ACI_CTZU_MODE *mode) | |
853 { | |
854 TRACE_FUNCTION ("qAT_PlusCTZU()"); | |
855 | |
856 /* | |
857 *------------------------------------------------------------------- | |
858 * check command source | |
859 *------------------------------------------------------------------- | |
860 */ | |
861 if(!cmh_IsVldCmdSrc (srcId)) | |
862 { | |
863 TRACE_EVENT_P1("qAT_PlusCTZU(): Invalid source: %d", srcId); | |
864 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
865 return( AT_FAIL ); | |
866 } | |
867 | |
868 *mode = cmhPrm[srcId].mmCmdPrm.CTZUMode; | |
869 | |
870 return( AT_CMPL ); | |
871 } | |
872 | |
873 /* | |
874 +--------------------------------------------------------------------+ | |
875 | PROJECT : MODULE : CMH_MMS | | |
876 | STATE : code ROUTINE : qAT_PlusCCLK | | |
877 +--------------------------------------------------------------------+ | |
878 | |
879 PURPOSE : This is the functional counterpart to the sAT_PlusCCLK command | |
880 which will query the status of the RTC in the MT, indicating what the time | |
881 is in the MT. | |
882 */ | |
883 GLOBAL T_ACI_RETURN qAT_PlusCCLK ( T_ACI_CMD_SRC srcId, | |
884 T_ACI_RTC_DATE *date_s, | |
885 T_ACI_RTC_TIME *time_s, | |
886 int * timeZone | |
887 ) | |
888 { | |
889 UBYTE ret; | |
890 | |
891 TRACE_FUNCTION ("qAT_PlusCCLK()"); | |
892 /* | |
893 *------------------------------------------------------------------- | |
894 * check command source | |
895 *------------------------------------------------------------------- | |
896 */ | |
897 if(!cmh_IsVldCmdSrc (srcId)) | |
898 { | |
899 TRACE_EVENT_P1("qAT_PlusCCLK(): Invalid source: %d", srcId); | |
900 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
901 return( AT_FAIL ); | |
902 } | |
903 | |
904 TRACE_EVENT("qAT_PlusCCLK(): get time and date " ); | |
905 #ifndef _SIMULATION_ | |
906 ret = rtc_get_time_date((T_RTC_DATE *) date_s, (T_RTC_TIME *) time_s); | |
907 | |
908 switch (ret) | |
909 { | |
910 case 0: /* RVF_OK */ | |
911 #ifdef FF_TIMEZONE | |
912 *timeZone = RTC_GetCurrentTZ(); /* Get current timezone now time and date are obtained.*/ | |
913 TRACE_EVENT_P1("qAT_PlusCCLK(): timezone obatained: %d", *timeZone); | |
914 #endif /* FF_TIMEZONE */ | |
915 return( AT_CMPL ); | |
916 default: | |
917 TRACE_EVENT_P1("qAT_PlusCCLK(): ERROR: %d", ret); /* RVF_NOT_READY or RVF_INTERNAL ERROR */ | |
918 return( AT_FAIL ); | |
919 } | |
920 #else /* _SIMULATION_ */ | |
921 /* Set return info for date time to: "04/08/17,13:31:04-10" */ | |
922 date_s->year = 2004; | |
923 date_s->month = 8; | |
924 date_s->day = 17; | |
925 | |
926 time_s->hour = 13; | |
927 time_s->minute = 31; | |
928 time_s->second = 4; | |
929 | |
930 time_s->format = 0; /* RTC_TIME_FORMAT_24HOUR = 0 */ | |
931 time_s->PM_flag = 0; | |
932 *timeZone = -10; /* Set timezone to -10 */ | |
933 return( AT_CMPL ); | |
934 #endif /* _SIMULATION_ */ | |
935 | |
936 } | |
937 | |
938 | |
939 | |
940 /* | |
941 +--------------------------------------------------------------------+ | |
942 | PROJECT : GSM-PS (6147) MODULE : CMH_MMS | | |
943 | STATE : code ROUTINE : qAT_PercentCTZV | | |
944 +--------------------------------------------------------------------+ | |
945 | |
946 PURPOSE : This is the functional counterpart to the %CTZV AT command | |
947 which will query the status of PCTZVmode, indicating whether time | |
948 and date report is enabled or disabled. | |
949 | |
950 <on/off>: Indicates whether time and date report is enabled or disabled. | |
951 */ | |
952 | |
953 GLOBAL T_ACI_RETURN qAT_PercentCTZV ( T_ACI_CMD_SRC srcId, | |
954 T_ACI_PCTZV_MODE *mode) | |
955 { | |
956 TRACE_FUNCTION ("qAT_PercentCTZV()"); | |
957 | |
958 /* | |
959 *------------------------------------------------------------------- | |
960 * check command source | |
961 *------------------------------------------------------------------- | |
962 */ | |
963 if(!cmh_IsVldCmdSrc (srcId)) | |
964 { | |
965 TRACE_EVENT_P1("qAT_PercentCTZV(): Invalid source: %d", srcId); | |
966 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
967 return( AT_FAIL ); | |
968 } | |
969 | |
970 *mode = cmhPrm[srcId].mmCmdPrm.PCTZVMode; | |
971 | |
972 return( AT_CMPL ); | |
973 } | |
974 | |
975 | |
976 /* | |
977 +--------------------------------------------------------------------+ | |
978 | PROJECT : GSM-PS (6147) MODULE : CMH_MMS | | |
979 | STATE : code ROUTINE : qAT_PercentCNIV | | |
980 +--------------------------------------------------------------------+ | |
981 | |
982 PURPOSE : This is the functional counterpart to the %CNIV AT command | |
983 which will query the status of CNIVmode, indicating whether time | |
984 and date report is enabled or disabled. | |
985 | |
986 <on/off>: Indicates whether time and date report is enabled or disabled. | |
987 */ | |
988 | |
989 GLOBAL T_ACI_RETURN qAT_PercentCNIV ( T_ACI_CMD_SRC srcId, | |
990 T_ACI_CNIV_MODE *mode) | |
991 { | |
992 TRACE_FUNCTION ("qAT_PercentCNIV()"); | |
993 | |
994 /* | |
995 *------------------------------------------------------------------- | |
996 * check command source | |
997 *------------------------------------------------------------------- | |
998 */ | |
999 if(!cmh_IsVldCmdSrc (srcId)) | |
1000 { | |
1001 TRACE_EVENT_P1("qAT_PercentCNIV(): Invalid source: %d", srcId); | |
1002 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
1003 return( AT_FAIL ); | |
1004 } | |
1005 | |
1006 *mode = cmhPrm[srcId].mmCmdPrm.CNIVMode; | |
1007 | |
1008 return( AT_CMPL ); | |
1009 } | |
1010 | |
1011 /* | |
1012 +--------------------------------------------------------------------+ | |
1013 | PROJECT : ACI/MMI MODULE : CMH_MMS | | |
1014 | STATE : code ROUTINE : qAT_PlusCIND | | |
1015 +--------------------------------------------------------------------+ | |
1016 | |
1017 PURPOSE : This is the function for Signal Quality query | |
1018 */ | |
1019 | |
1020 GLOBAL T_ACI_RETURN qAT_PlusCIND ( T_ACI_CMD_SRC srcId, | |
1021 T_ACI_CIND_SIGNAL_TYPE *sCindSgnalSettings, | |
1022 T_ACI_CIND_SMSFULL_TYPE *sCindSmsFullSettings ) | |
1023 { | |
1024 T_ACI_MM_CIND_VAL_TYPE *pMMCmdPrm; | |
1025 | |
1026 TRACE_FUNCTION ("qAT_PlusCIND()"); | |
1027 | |
1028 if( !cmh_IsVldCmdSrc( srcId ) || (sCindSgnalSettings == NULL) || (sCindSmsFullSettings == NULL) ) | |
1029 { | |
1030 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
1031 return( AT_FAIL ); | |
1032 } | |
1033 | |
1034 pMMCmdPrm = &(cmhPrm[srcId].mmCmdPrm.sIndicationParam.sMmCINDSettings); | |
1035 | |
1036 *sCindSgnalSettings = pMMCmdPrm->sCindSignalParam; | |
1037 *sCindSmsFullSettings = pMMCmdPrm->sCindSmsFullParam; | |
1038 | |
1039 return(AT_CMPL); | |
1040 } | |
1041 | |
1042 | |
1043 /* | |
1044 +--------------------------------------------------------------------+ | |
1045 | PROJECT : ACI/MMI MODULE : CMH_MMS | | |
1046 | STATE : code ROUTINE : qAT_PlusCMER | | |
1047 +--------------------------------------------------------------------+ | |
1048 | |
1049 PURPOSE : This is the function for Signal Quality query | |
1050 */ | |
1051 | |
1052 GLOBAL T_ACI_RETURN qAT_PlusCMER ( T_ACI_CMD_SRC srcId, | |
1053 T_ACI_CMER_MODE_TYPE *sCmerModeSettings, | |
1054 T_ACI_CMER_IND_TYPE *sCmerIndicationSettings, | |
1055 T_ACI_CMER_BFR_TYPE *sCmerBfrSettings ) | |
1056 | |
1057 { | |
1058 T_ACI_MM_CMER_VAL_TYPE *pMMCmdPrm; | |
1059 | |
1060 TRACE_FUNCTION ("qAT_PlusCMER()"); | |
1061 | |
1062 if( !cmh_IsVldCmdSrc( srcId ) || (sCmerModeSettings == NULL) || | |
1063 (sCmerIndicationSettings == NULL) || (sCmerBfrSettings == NULL)) | |
1064 { | |
1065 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); | |
1066 return( AT_FAIL ); | |
1067 } | |
1068 | |
1069 pMMCmdPrm = &(cmhPrm[srcId].mmCmdPrm.sIndicationParam.sMmCMERSettings); | |
1070 | |
1071 *sCmerModeSettings = pMMCmdPrm->sCmerModeParam; | |
1072 *sCmerIndicationSettings = pMMCmdPrm->sCmerIndParam; | |
1073 *sCmerBfrSettings = pMMCmdPrm->sCmerBfrParam; | |
1074 | |
1075 return(AT_CMPL); | |
1076 } | |
1077 | |
1078 /*==== EOF ========================================================*/ |