FreeCalypso > hg > tcs211-fcmodem
comparison g23m/condat/ms/src/aci/aci_bat_dti.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-F&D (8411) | |
4 | Modul : ACI_BAT | |
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 BAT wrapper modul is ... | |
18 | | |
19 +----------------------------------------------------------------------------- | |
20 */ | |
21 | |
22 #include "aci_all.h" /* includes prim.h, which includes p_bat.h */ | |
23 #include "aci_cmh.h" /* prototypes of sAT_,qAT_,tAT_ */ | |
24 #include "ati_cmd.h" | |
25 #include "aci_cmd.h" | |
26 #include "dti.h" /* functionality of the dti library */ | |
27 #include "aci_bat_cmh.h" /* prototypes of sBAT_,qBAT_,tBAT_ */ | |
28 #include "aci_bat.h" | |
29 #include "cmh_dti.h" | |
30 #include "dti_conn_mng.h" | |
31 #include "dti_cntrl_mng.h" | |
32 #include "aci_bat_cmh.h" /* prototypes of sBAT_,qBAT_,tBAT_ */ | |
33 #include "aci_bat_err.h" /*prototypes of err functions for BAT*/ | |
34 | |
35 | |
36 /*==== VARIABLE====================================================*/ | |
37 | |
38 static const T_CAP_NAME aci_bat_cap_name[] = | |
39 { | |
40 {"CMD", DEV_CPBLTY_CMD }, | |
41 {"SER", DEV_CPBLTY_SER }, | |
42 {"PKT", DEV_CPBLTY_PKT }, | |
43 {"CMD,SER", DEV_CPBLTY_CMD_SER }, | |
44 {"CMD,PKT", DEV_CPBLTY_CMD_PKT }, | |
45 {"PKT,SER", DEV_CPBLTY_PKT_SER }, | |
46 {"CMD,PKT,SER", DEV_CPBLTY_CMD_PKT_SER}, | |
47 {"", DEV_CPBLTY_NONE} | |
48 }; | |
49 | |
50 /*==============================================================*/ | |
51 | |
52 | |
53 /* | |
54 +--------------------------------------------------------------------+ | |
55 | PROJECT : GSM-F&D (8411) MODULE : | | |
56 | STATE : code ROUTINE : map_dti_cpblty | | |
57 +--------------------------------------------------------------------+ | |
58 | |
59 PURPOSE : help function to map the capability values of | |
60 DTI_CPBLTY_xxx to enum value of T_CAP_ID. | |
61 With the enum value we get the capability string in ati_cap_name[] | |
62 For DTI_CPBLTY_xxx see SAP document AAA.doc chapter Capability | |
63 Dor T_CAP_ID see cmh_dti.h | |
64 */ | |
65 LOCAL T_CAP_ID aci_bat_map_dti_cpblty (UBYTE dti_cpblty) | |
66 { | |
67 switch (dti_cpblty) | |
68 { | |
69 case (DTI_CPBLTY_NO): | |
70 return (DEV_CPBLTY_NONE); | |
71 | |
72 case (DTI_CPBLTY_CMD): | |
73 return (DEV_CPBLTY_CMD); | |
74 | |
75 case (DTI_CPBLTY_SER): | |
76 return (DEV_CPBLTY_SER); | |
77 | |
78 case (DTI_CPBLTY_PKT): | |
79 return (DEV_CPBLTY_PKT); | |
80 | |
81 case (DTI_CPBLTY_CMD + DTI_CPBLTY_SER): | |
82 return (DEV_CPBLTY_CMD_SER); | |
83 | |
84 case (DTI_CPBLTY_CMD + DTI_CPBLTY_PKT): | |
85 return (DEV_CPBLTY_CMD_PKT); | |
86 | |
87 case (DTI_CPBLTY_PKT + DTI_CPBLTY_SER): | |
88 return (DEV_CPBLTY_PKT_SER); | |
89 | |
90 case (DTI_CPBLTY_CMD + DTI_CPBLTY_PKT + DTI_CPBLTY_SER): | |
91 return (DEV_CPBLTY_CMD_PKT_SER); | |
92 | |
93 default: | |
94 { | |
95 TRACE_EVENT_P1("aci_bat_map_dti_cpblty():[ERR] unknown capability value = %d",dti_cpblty); | |
96 return (DEV_CPBLTY_NONE); | |
97 } | |
98 } | |
99 } | |
100 | |
101 | |
102 | |
103 /* | |
104 +--------------------------------------------------------------------+ | |
105 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
106 | STATE : code ROUTINE : sBAT_PercentDATA | | |
107 +--------------------------------------------------------------------+ | |
108 | |
109 PURPOSE : | |
110 */ | |
111 GLOBAL T_ACI_BAT_RSLT sBAT_PercentDATA (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
112 T_BAT_cmd_send *cmd) | |
113 { | |
114 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
115 CHAR des_dev_name[MAX_SMS_ADDR_DIG]; /* destination device name */ | |
116 CHAR src_dev_name[MAX_SMS_ADDR_DIG]; /* source device name */ | |
117 CHAR dev_cap[MAX_SMS_ADDR_DIG]; /* device capability */ | |
118 CHAR* p_des_dev_name; | |
119 CHAR* p_src_dev_name; | |
120 CHAR* p_dev_cap; | |
121 UBYTE red_mode ; /* redirection mode */ | |
122 UBYTE cid = BAT_PARAMETER_NOT_PRESENT; /* context cid */ | |
123 U8 des_dev_no ; /* destination device number */ | |
124 SHORT des_sub_no = BAT_PARAMETER_NOT_PRESENT; /* destination sub number */ | |
125 U8 src_dev_no ; /* source device number */ | |
126 SHORT src_sub_no = BAT_PARAMETER_NOT_PRESENT; /* source sub number */ | |
127 | |
128 TRACE_FUNCTION ("sBAT_PercentDATA()"); | |
129 | |
130 red_mode = cmd->params.ptr_set_percent_data->mode; | |
131 des_dev_no = cmd->params.ptr_set_percent_data->des_dev_no; | |
132 des_sub_no = cmd->params.ptr_set_percent_data->des_sub_no; | |
133 src_dev_no = cmd->params.ptr_set_percent_data->src_dev_no; | |
134 src_sub_no = cmd->params.ptr_set_percent_data->src_sub_no; | |
135 cid = cmd->params.ptr_set_percent_data->cid; | |
136 | |
137 src_dev_name[0]='\0'; | |
138 des_dev_name[0]='\0'; | |
139 dev_cap[0]='\0'; | |
140 p_des_dev_name = des_dev_name; | |
141 p_src_dev_name = src_dev_name; | |
142 p_dev_cap = dev_cap; | |
143 | |
144 switch(cmd->params.ptr_set_percent_data->des_dev_name) | |
145 { | |
146 case (BAT_DEV_NAME_UART): | |
147 { | |
148 p_des_dev_name = "UART"; | |
149 break; | |
150 } | |
151 case (BAT_DEV_NAME_RIV): | |
152 { | |
153 p_des_dev_name = "RIV"; | |
154 break; | |
155 } | |
156 case (BAT_DEV_NAME_PKTIO): | |
157 { | |
158 p_des_dev_name = "PKTIO"; | |
159 break; | |
160 } | |
161 case (BAT_DEV_NAME_PSI): | |
162 { | |
163 p_des_dev_name = "PSI"; | |
164 break; | |
165 } | |
166 } | |
167 | |
168 switch(cmd->params.ptr_set_percent_data->src_dev_name) | |
169 { | |
170 case (BAT_DEV_NAME_UART): | |
171 { | |
172 p_src_dev_name = "UART"; | |
173 break; | |
174 } | |
175 case (BAT_DEV_NAME_RIV): | |
176 { | |
177 p_src_dev_name = "RIV"; | |
178 break; | |
179 } | |
180 case (BAT_DEV_NAME_PKTIO): | |
181 { | |
182 p_src_dev_name = "PKTIO"; | |
183 break; | |
184 } | |
185 case (BAT_DEV_NAME_PSI): | |
186 { | |
187 p_src_dev_name = "PSI"; | |
188 break; | |
189 } | |
190 } | |
191 | |
192 switch(cmd->params.ptr_set_percent_data->capability) | |
193 { | |
194 case(BAT_CAP_CMD): | |
195 { | |
196 p_dev_cap = "CMD"; | |
197 break; | |
198 } | |
199 case(BAT_CAP_SER): | |
200 { | |
201 p_dev_cap = "SER"; | |
202 break; | |
203 } | |
204 case(BAT_CAP_CMD + BAT_CAP_SER ): | |
205 { | |
206 p_dev_cap = "CMD,SER"; | |
207 break; | |
208 } | |
209 case(BAT_CAP_PKT): | |
210 { | |
211 p_dev_cap = "PKT"; | |
212 break; | |
213 } | |
214 case(BAT_CAP_CMD + BAT_CAP_PKT): | |
215 { | |
216 p_dev_cap = "CMD_PKT"; | |
217 break; | |
218 } | |
219 case(BAT_CAP_SER + BAT_CAP_PKT): | |
220 { | |
221 p_dev_cap = "SER_PKT"; | |
222 break; | |
223 } | |
224 case(BAT_CAP_CMD + BAT_CAP_SER + BAT_CAP_PKT): | |
225 { | |
226 p_dev_cap = "CMD_SER_PKT"; | |
227 break; | |
228 } | |
229 } | |
230 ret = sAT_PercentDATA ((T_ACI_CMD_SRC)src_infos_psi->srcId, red_mode, | |
231 p_des_dev_name, des_dev_no, (UBYTE)des_sub_no, p_dev_cap, | |
232 p_src_dev_name, src_dev_no, (UBYTE)src_sub_no, cid); | |
233 return(ret); | |
234 } | |
235 | |
236 /* | |
237 +--------------------------------------------------------------------+ | |
238 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
239 | STATE : code ROUTINE : qBAT_PercentDATA | | |
240 +--------------------------------------------------------------------+ | |
241 | |
242 PURPOSE : | |
243 */ | |
244 GLOBAL T_ACI_BAT_RSLT qBAT_PercentDATA (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
245 T_BAT_cmd_send *cmd) | |
246 { | |
247 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
248 UBYTE mode ; | |
249 UBYTE cid = BAT_PDP_CID_NOT_PRESENT; | |
250 T_DINF_PARAM des_param; /* des_dev_name, des_dev_no, des_sub_no, des_cap */ | |
251 T_DINF_PARAM src_param; /* src_dev_name, src_dev_no, src_sub_no, pdp_cid */ | |
252 T_CAP_ID capability = DEV_CPBLTY_NONE; | |
253 T_BAT_cmd_response resp; | |
254 T_BAT_res_que_percent_data que_data_buffer; | |
255 | |
256 TRACE_FUNCTION ("qBAT_PercentDATA()"); | |
257 resp.ctrl_response = BAT_RES_QUE_PERCENT_DATA; | |
258 resp.response.ptr_que_percent_data = &que_data_buffer; | |
259 | |
260 des_param.dev_id = NOT_PRESENT_8BIT; /* in case of there is no redirection at all */ | |
261 des_param.capability = 0xAA; /* init with a value which makes never sense */ | |
262 while ((ret = qAT_PercentDATA (src_infos_psi->srcId, &mode, &cid, &des_param, &src_param)) EQ ACI_BAT_CMPL) | |
263 { | |
264 T_DTI_ENTITY_ID des_id = dti_entity_name[des_param.dev_id].id; | |
265 T_DTI_ENTITY_ID src_id = dti_entity_name[src_param.dev_id].id; | |
266 | |
267 capability = aci_bat_map_dti_cpblty (des_param.capability); | |
268 /* | |
269 * unfortunately in custom.h for PKTIO is defined "PKT" (Frame handles up to 4 chars only) | |
270 * but for the device name we want to emit "PKTIO" to distinguish from capability "PKT" | |
271 */ | |
272 | |
273 #ifdef GPRS | |
274 if (des_param.dev_id EQ DTI_ENTITY_PKTIO) | |
275 { | |
276 des_id = DTI_ENTITY_PKTIO; | |
277 } | |
278 | |
279 if (src_param.dev_id EQ DTI_ENTITY_PKTIO) | |
280 { | |
281 src_id = DTI_ENTITY_PKTIO; | |
282 } | |
283 #endif | |
284 | |
285 switch(des_id) | |
286 { | |
287 case (DTI_ENTITY_UART): | |
288 { | |
289 resp.response.ptr_que_percent_data->des_dev_name = BAT_DEV_NAME_UART; | |
290 break; | |
291 } | |
292 #ifdef GPRS | |
293 case (DTI_ENTITY_PKTIO): | |
294 { | |
295 resp.response.ptr_que_percent_data->des_dev_name = BAT_DEV_NAME_PKTIO; | |
296 break; | |
297 } | |
298 #endif | |
299 case (DTI_ENTITY_PSI): | |
300 { | |
301 resp.response.ptr_que_percent_data->des_dev_name = BAT_DEV_NAME_PSI; | |
302 break; | |
303 } | |
304 default: | |
305 { | |
306 TRACE_ERROR("ERROR: Undefined dev name type encoutered"); | |
307 break; | |
308 } | |
309 } | |
310 switch(src_id) | |
311 { | |
312 case (DTI_ENTITY_UART): | |
313 { | |
314 resp.response.ptr_que_percent_data->src_dev_name = BAT_DEV_NAME_UART; | |
315 break; | |
316 } | |
317 #ifdef GPRS | |
318 case (DTI_ENTITY_PKTIO): | |
319 { | |
320 resp.response.ptr_que_percent_data->src_dev_name = BAT_DEV_NAME_PKTIO; | |
321 break; | |
322 } | |
323 #endif | |
324 case (DTI_ENTITY_PSI): | |
325 { | |
326 resp.response.ptr_que_percent_data->src_dev_name = BAT_DEV_NAME_PSI; | |
327 break; | |
328 } | |
329 default: | |
330 { | |
331 TRACE_ERROR("ERROR: Undefined dev name type encoutered"); | |
332 break; | |
333 } | |
334 } | |
335 switch(aci_bat_cap_name[capability].id) | |
336 { | |
337 case (DEV_CPBLTY_CMD): | |
338 { | |
339 resp.response.ptr_que_percent_data->capability = BAT_CAP_CMD; | |
340 break; | |
341 } | |
342 case (DEV_CPBLTY_SER): | |
343 { | |
344 resp.response.ptr_que_percent_data->capability = BAT_CAP_SER; | |
345 break; | |
346 } | |
347 case (DEV_CPBLTY_CMD_SER): | |
348 { | |
349 resp.response.ptr_que_percent_data->capability = BAT_CAP_CMD + BAT_CAP_SER; | |
350 break; | |
351 } | |
352 case (DEV_CPBLTY_PKT): | |
353 { | |
354 resp.response.ptr_que_percent_data->capability = BAT_CAP_PKT; | |
355 break; | |
356 } | |
357 case (DEV_CPBLTY_CMD_PKT): | |
358 { | |
359 resp.response.ptr_que_percent_data->capability = BAT_CAP_CMD + BAT_CAP_PKT; | |
360 break; | |
361 } | |
362 case (DEV_CPBLTY_PKT_SER): | |
363 { | |
364 resp.response.ptr_que_percent_data->capability = BAT_CAP_SER + BAT_CAP_PKT; | |
365 break; | |
366 } | |
367 case (DEV_CPBLTY_CMD_PKT_SER): | |
368 { | |
369 resp.response.ptr_que_percent_data->capability = BAT_CAP_CMD + BAT_CAP_SER + BAT_CAP_PKT; | |
370 break; | |
371 } | |
372 } | |
373 resp.response.ptr_que_percent_data->des_dev_no = des_param.dev_no; | |
374 resp.response.ptr_que_percent_data->des_sub_no = des_param.sub_no; | |
375 resp.response.ptr_que_percent_data->src_dev_no = src_param.dev_no; | |
376 resp.response.ptr_que_percent_data->src_sub_no = src_param.sub_no; | |
377 resp.response.ptr_que_percent_data->cid = cid; | |
378 resp.response.ptr_que_percent_data->mode = mode; | |
379 | |
380 aci_bat_send(src_infos_psi,&resp); | |
381 } | |
382 return(ret); | |
383 } | |
384 | |
385 /* | |
386 +--------------------------------------------------------------------+ | |
387 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
388 | STATE : code ROUTINE : sBAT_PercentDINF | | |
389 +--------------------------------------------------------------------+ | |
390 | |
391 PURPOSE : | |
392 */ | |
393 GLOBAL T_ACI_BAT_RSLT sBAT_PercentDINF (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
394 T_BAT_cmd_send *cmd) | |
395 { | |
396 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
397 UBYTE mode ; /* DINF */ | |
398 T_DINF_PARAM device_para; | |
399 T_CAP_ID capability = DEV_CPBLTY_NONE; | |
400 T_CAP_ID cur_cap = DEV_CPBLTY_NONE; | |
401 T_BAT_cmd_response resp; | |
402 T_BAT_res_set_percent_dinf que_dinf_buffer; | |
403 | |
404 TRACE_FUNCTION ("sBAT_PercentDINF()"); | |
405 | |
406 mode = cmd->params.ptr_set_percent_dinf->mode; | |
407 resp.ctrl_response = BAT_RES_SET_PERCENT_DINF; | |
408 resp.response.ptr_set_percent_dinf = &que_dinf_buffer; | |
409 | |
410 switch(mode) | |
411 { | |
412 case (BAT_P_DINF_MODE_CURRENT): | |
413 { | |
414 /* | |
415 * we want to get the piece of information, which belongs to the srcId | |
416 */ | |
417 ret = sAT_PercentDINF (src_infos_psi->srcId, mode, &device_para); | |
418 if ((ret EQ ACI_BAT_CMPL) AND (device_para.src_id EQ src_infos_psi->srcId)) | |
419 { | |
420 capability = aci_bat_map_dti_cpblty (device_para.capability); | |
421 cur_cap = aci_bat_map_dti_cpblty (device_para.cur_cap); | |
422 resp.response.ptr_set_percent_dinf->dev_no = device_para.dev_no; | |
423 resp.response.ptr_set_percent_dinf->sub_no = device_para.sub_no; | |
424 resp.response.ptr_set_percent_dinf->src_id = mode; | |
425 | |
426 switch(dti_entity_name[device_para.dev_id].id) | |
427 { | |
428 case (DTI_ENTITY_UART): | |
429 { | |
430 resp.response.ptr_set_percent_dinf->dev_name = BAT_DEV_NAME_UART; | |
431 break; | |
432 } | |
433 #ifdef GPRS | |
434 case (DTI_ENTITY_PKTIO): | |
435 { | |
436 resp.response.ptr_set_percent_dinf->dev_name = BAT_DEV_NAME_PKTIO; | |
437 break; | |
438 } | |
439 #endif | |
440 case (DTI_ENTITY_PSI): | |
441 { | |
442 resp.response.ptr_set_percent_dinf->dev_name = BAT_DEV_NAME_PSI; | |
443 break; | |
444 } | |
445 default: | |
446 { | |
447 TRACE_ERROR("ERROR: Undefined dev name type encoutered"); | |
448 break; | |
449 } | |
450 } | |
451 switch(aci_bat_cap_name[cur_cap].id) | |
452 { | |
453 case (DEV_CPBLTY_CMD): | |
454 { | |
455 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_CMD; | |
456 break; | |
457 } | |
458 case (DEV_CPBLTY_SER): | |
459 { | |
460 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_SER; | |
461 break; | |
462 } | |
463 case (DEV_CPBLTY_CMD_SER): | |
464 { | |
465 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_CMD + BAT_CAP_SER; | |
466 break; | |
467 } | |
468 case (DEV_CPBLTY_PKT): | |
469 { | |
470 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_PKT; | |
471 break; | |
472 } | |
473 case (DEV_CPBLTY_CMD_PKT): | |
474 { | |
475 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_CMD + BAT_CAP_PKT; | |
476 break; | |
477 } | |
478 case (DEV_CPBLTY_PKT_SER): | |
479 { | |
480 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_SER + BAT_CAP_PKT; | |
481 break; | |
482 } | |
483 case (DEV_CPBLTY_CMD_PKT_SER): | |
484 { | |
485 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_CMD + BAT_CAP_SER + BAT_CAP_PKT; | |
486 break; | |
487 } | |
488 } | |
489 switch(aci_bat_cap_name[capability].id) | |
490 { | |
491 case (DEV_CPBLTY_CMD): | |
492 { | |
493 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_CMD; | |
494 break; | |
495 } | |
496 case (DEV_CPBLTY_SER): | |
497 { | |
498 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_SER; | |
499 break; | |
500 } | |
501 case (DEV_CPBLTY_CMD_SER): | |
502 { | |
503 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_CMD + BAT_CAP_SER; | |
504 break; | |
505 } | |
506 case (DEV_CPBLTY_PKT): | |
507 { | |
508 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_PKT; | |
509 break; | |
510 } | |
511 case (DEV_CPBLTY_CMD_PKT): | |
512 { | |
513 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_CMD + BAT_CAP_PKT; | |
514 break; | |
515 } | |
516 case (DEV_CPBLTY_PKT_SER): | |
517 { | |
518 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_SER + BAT_CAP_PKT; | |
519 break; | |
520 } | |
521 case (DEV_CPBLTY_CMD_PKT_SER): | |
522 { | |
523 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_CMD + BAT_CAP_SER + BAT_CAP_PKT; | |
524 break; | |
525 } | |
526 } | |
527 | |
528 aci_bat_send(src_infos_psi,&resp); | |
529 return (ACI_BAT_CMPL); | |
530 } | |
531 else | |
532 { | |
533 break; /* an error */ | |
534 } | |
535 } | |
536 case (BAT_P_DINF_MODE_ALL): | |
537 { | |
538 device_para.capability = 0xAA; /* init with a value which makes never sense, but is valuable for debug */ | |
539 /* | |
540 * we want to get the pieces of information to all devices | |
541 */ | |
542 while ((ret = sAT_PercentDINF (src_infos_psi->srcId, mode, &device_para)) EQ ACI_BAT_CMPL) | |
543 { | |
544 if (device_para.src_id EQ src_infos_psi->srcId) | |
545 { | |
546 mode = BAT_P_DINF_MODE_CURRENT ; /* this is the current channel, so temporarily set mode */ | |
547 } | |
548 else | |
549 { | |
550 mode = BAT_P_DINF_MODE_ALL; /* other channel */ | |
551 } | |
552 | |
553 capability = aci_bat_map_dti_cpblty (device_para.capability); | |
554 cur_cap = aci_bat_map_dti_cpblty (device_para.cur_cap); | |
555 | |
556 resp.response.ptr_set_percent_dinf->dev_no = device_para.dev_no; | |
557 resp.response.ptr_set_percent_dinf->sub_no = device_para.sub_no; | |
558 resp.response.ptr_set_percent_dinf->src_id = mode; | |
559 | |
560 switch(dti_entity_name[device_para.dev_id].id) | |
561 { | |
562 case (DTI_ENTITY_UART): | |
563 { | |
564 resp.response.ptr_set_percent_dinf->dev_name = BAT_DEV_NAME_UART; | |
565 break; | |
566 } | |
567 #ifdef GPRS | |
568 case (DTI_ENTITY_PKTIO): | |
569 { | |
570 resp.response.ptr_set_percent_dinf->dev_name = BAT_DEV_NAME_PKTIO; | |
571 break; | |
572 } | |
573 #endif | |
574 case (DTI_ENTITY_PSI): | |
575 { | |
576 resp.response.ptr_set_percent_dinf->dev_name = BAT_DEV_NAME_PSI; | |
577 break; | |
578 } | |
579 default: | |
580 { | |
581 TRACE_ERROR("ERROR: Undefined dev name type encoutered"); | |
582 break; | |
583 } | |
584 } | |
585 switch(aci_bat_cap_name[cur_cap].id) | |
586 { | |
587 case (DEV_CPBLTY_CMD): | |
588 { | |
589 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_CMD; | |
590 break; | |
591 } | |
592 case (DEV_CPBLTY_SER): | |
593 { | |
594 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_SER; | |
595 break; | |
596 } | |
597 case (DEV_CPBLTY_CMD_SER): | |
598 { | |
599 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_CMD + BAT_CAP_SER; | |
600 break; | |
601 } | |
602 case (DEV_CPBLTY_PKT): | |
603 { | |
604 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_PKT; | |
605 break; | |
606 } | |
607 case (DEV_CPBLTY_CMD_PKT): | |
608 { | |
609 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_CMD + BAT_CAP_PKT; | |
610 break; | |
611 } | |
612 case (DEV_CPBLTY_PKT_SER): | |
613 { | |
614 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_SER + BAT_CAP_PKT; | |
615 break; | |
616 } | |
617 case (DEV_CPBLTY_CMD_PKT_SER): | |
618 { | |
619 resp.response.ptr_set_percent_dinf->cur_cap = BAT_CAP_CMD + BAT_CAP_SER + BAT_CAP_PKT; | |
620 break; | |
621 } | |
622 } | |
623 switch(aci_bat_cap_name[capability].id) | |
624 { | |
625 case (DEV_CPBLTY_CMD): | |
626 { | |
627 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_CMD; | |
628 break; | |
629 } | |
630 case (DEV_CPBLTY_SER): | |
631 { | |
632 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_SER; | |
633 break; | |
634 } | |
635 case (DEV_CPBLTY_CMD_SER): | |
636 { | |
637 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_CMD + BAT_CAP_SER; | |
638 break; | |
639 } | |
640 case (DEV_CPBLTY_PKT): | |
641 { | |
642 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_PKT; | |
643 break; | |
644 } | |
645 case (DEV_CPBLTY_CMD_PKT): | |
646 { | |
647 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_CMD + BAT_CAP_PKT; | |
648 break; | |
649 } | |
650 case (DEV_CPBLTY_PKT_SER): | |
651 { | |
652 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_SER + BAT_CAP_PKT; | |
653 break; | |
654 } | |
655 case (DEV_CPBLTY_CMD_PKT_SER): | |
656 { | |
657 resp.response.ptr_set_percent_dinf->cap = BAT_CAP_CMD + BAT_CAP_SER + BAT_CAP_PKT; | |
658 break; | |
659 } | |
660 } | |
661 aci_bat_send(src_infos_psi,&resp); | |
662 mode = SHOW_ALL_CHAN_INF; /* reset to show all channels */ | |
663 } | |
664 /* | |
665 * when sAT_PercentDINF reached the end it returns with AT_FAIL, but check capability as sentinel | |
666 */ | |
667 if (device_para.capability EQ DEV_CPBLTY_NONE) | |
668 { | |
669 /* | |
670 * DEV_CPBLTY_NONE is the sentinel, that there are no further devices | |
671 */ | |
672 return (ACI_BAT_CMPL); | |
673 } | |
674 break; /* an error */ | |
675 } | |
676 default: | |
677 { | |
678 break; /* an error */ | |
679 } | |
680 } | |
681 return (ACI_BAT_FAIL); | |
682 } | |
683 |