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