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