FreeCalypso > hg > fc-selenite
comparison src/g23m-aci/aci/aci_bat_cc.c @ 1:d393cd9bb723
src/g23m-*: initial import from Magnetite
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 15 Jul 2018 04:40:46 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 0:b6a5e36de839 | 1:d393cd9bb723 |
|---|---|
| 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" | |
| 23 #undef FF_ATI | |
| 24 #include "aci_cmh.h" | |
| 25 #include "aci_cmd.h" | |
| 26 #include "aci.h" | |
| 27 #include "aci_bat_cmh.h" /* prototypes of sBAT_,qBAT_,tBAT_ */ | |
| 28 #include "aci_bat.h" | |
| 29 #ifdef _SIMULATION_ | |
| 30 #pragma message(__TODO__"aci_prs.h: EXTERN char *parse(char *b,char *f, ...); of ati_prs.c !") | |
| 31 #endif | |
| 32 #include "aci_prs.h" | |
| 33 | |
| 34 /* implemented in aci_util.c, but prototype in ati_int.h ! Header file cleanup needed ! */ | |
| 35 EXTERN CHAR *strupper (CHAR *s); | |
| 36 | |
| 37 /*================== local functions prototypes =============================*/ | |
| 38 | |
| 39 LOCAL T_ACI_BAT_RSLT aci_bat_call_from_phonebook(T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 40 T_BAT_cmd_send *cmd); | |
| 41 | |
| 42 LOCAL T_ACI_BAT_RSLT aci_bat_call_with_number (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 43 T_BAT_cmd_send *cmd); | |
| 44 | |
| 45 LOCAL void aci_bat_chld_mode_mapping (T_BAT_cmd_set_percent_chld* bat_chld_param, | |
| 46 T_ACI_CHLD_MOD *mode); | |
| 47 /*================== local functions ========================================*/ | |
| 48 | |
| 49 /* | |
| 50 * special hint: | |
| 51 * There is hard coded the definition of NO_ASCIIZ (see phb.h, aci.h and aci_cmh.h), | |
| 52 * which means it is always defined regardless what busybe configures. | |
| 53 * So, we never work with NULL terminated strings, | |
| 54 * but with character arrays, which have a length information in addition | |
| 55 * to know how many characters to process. | |
| 56 * In this code there is several times this #ifdef NO_ASCIIZ | |
| 57 * just to go with the current implementation of ACI. | |
| 58 * But NULL terminated strings are not covered ! | |
| 59 */ | |
| 60 | |
| 61 LOCAL void aci_bat_clean_dial_str (char *dial_str, int dial_len) | |
| 62 { | |
| 63 #define VALID_CHARS "*#+-PpWw" | |
| 64 int i,j,k = 0; | |
| 65 int charLen = sizeof(VALID_CHARS); | |
| 66 char *valChrs = VALID_CHARS; | |
| 67 int match = FALSE; | |
| 68 | |
| 69 for (i=0; i<dial_len; i++) | |
| 70 { | |
| 71 match = FALSE; | |
| 72 if ((dial_str[i] < '0') || (dial_str[i] > 'D')) | |
| 73 { | |
| 74 for (j=0; j<charLen; j++) | |
| 75 { | |
| 76 if (dial_str[i] == valChrs[j]) /* "*#+-PpWw" */ | |
| 77 { | |
| 78 match = TRUE; | |
| 79 break; | |
| 80 } | |
| 81 } | |
| 82 } | |
| 83 else /* "0123456789ABCD" */ | |
| 84 { | |
| 85 match = TRUE; | |
| 86 } | |
| 87 if (match) | |
| 88 { | |
| 89 dial_str[k] = dial_str[i]; | |
| 90 k++; | |
| 91 } | |
| 92 } | |
| 93 if (k < dial_len) | |
| 94 { | |
| 95 dial_str[k] = 0x0; /* is there always 1 byte space for the '\0' ? */ | |
| 96 } | |
| 97 } | |
| 98 | |
| 99 | |
| 100 | |
| 101 LOCAL void aci_bat_check_clir_cug_type (U8 *dial_string, | |
| 102 T_ACI_D_CLIR_OVRD *clir_ovrd, | |
| 103 T_ACI_D_CUG_CTRL *cug_ctrl, | |
| 104 T_ACI_D_TOC *call_type) | |
| 105 { | |
| 106 if (*dial_string EQ 'i') | |
| 107 { | |
| 108 *clir_ovrd = D_CLIR_OVRD_Supp; | |
| 109 dial_string++; | |
| 110 } | |
| 111 if (*dial_string EQ 'I') | |
| 112 { | |
| 113 *clir_ovrd = D_CLIR_OVRD_Invoc; | |
| 114 dial_string++; | |
| 115 } | |
| 116 if (*dial_string EQ 'g'OR *dial_string EQ 'G') | |
| 117 { | |
| 118 *cug_ctrl = D_CUG_CTRL_Present; | |
| 119 dial_string++; | |
| 120 } | |
| 121 if (*dial_string EQ ';') | |
| 122 { | |
| 123 *call_type = D_TOC_Voice; | |
| 124 } | |
| 125 } | |
| 126 | |
| 127 #define NAME_BUF_LEN 32 | |
| 128 | |
| 129 LOCAL T_ACI_BAT_RSLT aci_bat_call_from_phonebook(T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 130 T_BAT_cmd_send *cmd) | |
| 131 { | |
| 132 T_bat_aci_client_maintain *bat_client; | |
| 133 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 134 CHAR *dial_string = NULL; | |
| 135 int i; | |
| 136 S16 index = -1; | |
| 137 S16 pos; | |
| 138 char alpha[NAME_BUF_LEN] = {'\0'}; | |
| 139 U16 lenAlpha = 0; | |
| 140 char cvtdAlpha[NAME_BUF_LEN] = {'\0'}; | |
| 141 U16 lenCvtdAlpha = 0; | |
| 142 char t[MAX_DIAL_LEN-1] = {'\0'}; | |
| 143 char *t_p = NULL; | |
| 144 | |
| 145 T_ACI_PB_STOR mem_stor = PB_STOR_NotPresent; | |
| 146 T_ACI_D_CLIR_OVRD clir_ovrd = D_CLIR_OVRD_Default; | |
| 147 T_ACI_D_CUG_CTRL cug_ctrl = D_CUG_CTRL_NotPresent; | |
| 148 T_ACI_D_TOC call_type = D_TOC_Data; | |
| 149 | |
| 150 #ifdef NO_ASCIIZ | |
| 151 T_ACI_PB_TEXT pbText; | |
| 152 #endif | |
| 153 | |
| 154 TRACE_FUNCTION ("aci_bat_call_from_phonebook()"); | |
| 155 | |
| 156 dial_string = (CHAR*)cmd->params.ptr_at_d->dial_string; | |
| 157 dial_string++; /* skip the already parsed '>'; */ | |
| 158 | |
| 159 if (*dial_string EQ '"') | |
| 160 { | |
| 161 /* call with a given name of phonebook e.g.: ATD>"Doe Joe" */ | |
| 162 dial_string = parse(dial_string,"z", | |
| 163 (LONG)NAME_BUF_LEN, | |
| 164 strlen(dial_string), | |
| 165 dial_string, | |
| 166 &lenAlpha, | |
| 167 alpha); | |
| 168 if (dial_string EQ NULL) | |
| 169 { | |
| 170 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow); | |
| 171 return (ACI_BAT_FAIL); | |
| 172 } | |
| 173 else if (strcspn(dial_string,"iIgG;") NEQ 0) | |
| 174 { | |
| 175 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow); | |
| 176 return (ACI_BAT_FAIL); | |
| 177 } | |
| 178 #ifdef NO_ASCIIZ | |
| 179 utl_chsetToSim ((UBYTE*)alpha, lenAlpha, (UBYTE*)cvtdAlpha, &lenCvtdAlpha, GSM_ALPHA_Def); | |
| 180 #else | |
| 181 TRACE_ERROR("NO_ASCIIZ is defined in aci.h, phb.c and aci_cmh.h, so NO support for NULL terminated strings"); | |
| 182 #endif | |
| 183 t_p = cvtdAlpha; | |
| 184 } | |
| 185 else | |
| 186 { | |
| 187 /* call from a specific phonebook entry e.g.: ATD>MT7 */ | |
| 188 if ((toupper(*dial_string)) >= 'A' AND (toupper(*dial_string)) <= 'Z') | |
| 189 { | |
| 190 for (i=0;phb_mem_names[i].name NEQ 0;i++) | |
| 191 { | |
| 192 strupper(dial_string); | |
| 193 if (strncmp(dial_string,phb_mem_names[i].name,2) EQ 0) | |
| 194 { | |
| 195 mem_stor=phb_mem_names[i].stor; | |
| 196 break; | |
| 197 } | |
| 198 else | |
| 199 { | |
| 200 mem_stor=PB_STOR_NotPresent; | |
| 201 } | |
| 202 } | |
| 203 if (mem_stor < 0) | |
| 204 { | |
| 205 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow); | |
| 206 return (ACI_BAT_FAIL); | |
| 207 } | |
| 208 dial_string=dial_string+2; | |
| 209 } | |
| 210 pos=strcspn(dial_string,"iIgG;"); /* determine index */ | |
| 211 if (pos EQ 0 OR pos >= (MAX_DIAL_LEN-1)) | |
| 212 { | |
| 213 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow); | |
| 214 return (ACI_BAT_FAIL); | |
| 215 } | |
| 216 strncpy(t,dial_string,pos); | |
| 217 dial_string=dial_string+pos; | |
| 218 index =(SHORT)atoi(t); | |
| 219 | |
| 220 if(!index OR index > 300) | |
| 221 { | |
| 222 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow); | |
| 223 return (ACI_BAT_FAIL); | |
| 224 } | |
| 225 t_p = NULL; | |
| 226 } | |
| 227 | |
| 228 aci_bat_check_clir_cug_type ((U8*)dial_string, &clir_ovrd, &cug_ctrl, &call_type); | |
| 229 | |
| 230 #ifdef NO_ASCIIZ | |
| 231 if ( t_p NEQ NULL ) | |
| 232 { | |
| 233 pbText.cs = CS_Sim; | |
| 234 pbText.len = (UBYTE)lenCvtdAlpha; | |
| 235 memcpy(pbText.data, t_p, pbText.len); | |
| 236 } | |
| 237 else | |
| 238 { | |
| 239 pbText.cs = CS_NotPresent; | |
| 240 pbText.len = 0; | |
| 241 } | |
| 242 | |
| 243 /* | |
| 244 * Get a pointer to the client information for convenience. | |
| 245 */ | |
| 246 bat_client=&src_infos_psi->bat_client[src_infos_psi->active_client]; | |
| 247 | |
| 248 /* | |
| 249 * Set the flag that indicates that we are waiting for a final | |
| 250 * response to the ATD. | |
| 251 */ | |
| 252 bat_client->atd_live=TRUE; | |
| 253 | |
| 254 ret = (T_ACI_BAT_RSLT)sAT_Dm((T_ACI_CMD_SRC)src_infos_psi->srcId, &pbText, mem_stor, index, clir_ovrd, cug_ctrl, call_type); | |
| 255 | |
| 256 /* | |
| 257 * If the command isn't executing, we can't still be waiting for a | |
| 258 * final response, so clear the flag. | |
| 259 */ | |
| 260 if (ret NEQ ACI_BAT_EXCT) | |
| 261 { | |
| 262 bat_client->atd_live=FALSE; | |
| 263 } | |
| 264 | |
| 265 #else | |
| 266 TRACE_ERROR("NO_ASCIIZ is defined in aci.h, phb.c and aci_cmh.h, so NO support for NULL terminated strings"); | |
| 267 #endif | |
| 268 return (ret); | |
| 269 } | |
| 270 | |
| 271 LOCAL T_ACI_BAT_RSLT aci_bat_call_with_number (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 272 T_BAT_cmd_send *cmd) | |
| 273 { | |
| 274 T_bat_aci_client_maintain *bat_client; | |
| 275 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 276 CHAR *dial_string = NULL; | |
| 277 S16 pos; | |
| 278 char t[MAX_DIAL_LEN-1] = {'\0'}; | |
| 279 | |
| 280 T_ACI_D_CLIR_OVRD clir_ovrd = D_CLIR_OVRD_Default; | |
| 281 T_ACI_D_CUG_CTRL cug_ctrl = D_CUG_CTRL_NotPresent; | |
| 282 T_ACI_D_TOC call_type = D_TOC_Data; | |
| 283 | |
| 284 TRACE_FUNCTION ("aci_bat_call_with_number()"); | |
| 285 | |
| 286 dial_string = (CHAR*)cmd->params.ptr_at_d->dial_string; | |
| 287 | |
| 288 pos = strcspn(dial_string,"iIgG;"); /* CLIR, CUG and call type are passed separately to sAT_Dn */ | |
| 289 if (pos >= MAX_DIAL_LEN-1) | |
| 290 { | |
| 291 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow); | |
| 292 return (ACI_BAT_FAIL); | |
| 293 } | |
| 294 if (pos) | |
| 295 { | |
| 296 strncpy(t, dial_string, pos); | |
| 297 dial_string = dial_string + pos; | |
| 298 t[pos]='\0'; | |
| 299 } | |
| 300 else | |
| 301 { | |
| 302 strcpy(t,dial_string); | |
| 303 } | |
| 304 | |
| 305 aci_bat_clean_dial_str (t, sizeof(t)); | |
| 306 | |
| 307 aci_bat_check_clir_cug_type ((U8*)dial_string, &clir_ovrd, &cug_ctrl, &call_type); | |
| 308 | |
| 309 /* | |
| 310 * Get a pointer to the client information for convenience. | |
| 311 */ | |
| 312 bat_client=&src_infos_psi->bat_client[src_infos_psi->active_client]; | |
| 313 | |
| 314 /* | |
| 315 * Set the flag that indicates that we are waiting for a final | |
| 316 * response to the ATD. | |
| 317 */ | |
| 318 bat_client->atd_live=TRUE; | |
| 319 | |
| 320 ret = (T_ACI_BAT_RSLT)sAT_Dn((T_ACI_CMD_SRC)src_infos_psi->srcId, t, clir_ovrd, cug_ctrl, call_type); | |
| 321 | |
| 322 /* | |
| 323 * If the command isn't executing, we can't still be waiting for a | |
| 324 * final response, so clear the flag. | |
| 325 */ | |
| 326 if (ret NEQ ACI_BAT_EXCT) | |
| 327 { | |
| 328 bat_client->atd_live=FALSE; | |
| 329 } | |
| 330 | |
| 331 return (ret); | |
| 332 } | |
| 333 | |
| 334 /* | |
| 335 +-------------------------------------------------------------------------+ | |
| 336 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 337 | STATE : code ROUTINE : aci_bat_chld_mode_mapping | | |
| 338 +-------------------------------------------------------------------------+ | |
| 339 | |
| 340 PURPOSE : Maps the CHLD mode passed by BAT application to | |
| 341 appropriate ENUM value | |
| 342 */ | |
| 343 | |
| 344 LOCAL void aci_bat_chld_mode_mapping (T_BAT_cmd_set_percent_chld* bat_chld_param, | |
| 345 T_ACI_CHLD_MOD *mode) | |
| 346 { | |
| 347 TRACE_FUNCTION("aci_bat_chld_mode_mapping()"); | |
| 348 | |
| 349 switch(bat_chld_param->n) | |
| 350 { | |
| 351 case (BAT_P_CHLD_N_RELHLDORUDUB): | |
| 352 *mode = CHLD_MOD_RelHldOrUdub; | |
| 353 break; | |
| 354 | |
| 355 case (BAT_P_CHLD_N_RELACTANDACPT): | |
| 356 if ( bat_chld_param->x EQ ((S16)BAT_PARAMETER_NOT_PRESENT) ) | |
| 357 { | |
| 358 *mode = CHLD_MOD_RelActAndAcpt; | |
| 359 } | |
| 360 else | |
| 361 { | |
| 362 *mode = CHLD_MOD_RelActSpec; | |
| 363 } | |
| 364 break; | |
| 365 | |
| 366 case(BAT_P_CHLD_N_HLDACTANDACPT): | |
| 367 if ( bat_chld_param->x EQ ((S16)BAT_PARAMETER_NOT_PRESENT) ) | |
| 368 { | |
| 369 *mode = CHLD_MOD_HldActAndAcpt; | |
| 370 } | |
| 371 else | |
| 372 { | |
| 373 *mode = CHLD_MOD_HldActExc; | |
| 374 } | |
| 375 break; | |
| 376 | |
| 377 case(BAT_P_CHLD_N_ADDHLD): | |
| 378 *mode = CHLD_MOD_AddHld; | |
| 379 break; | |
| 380 | |
| 381 case(BAT_P_CHLD_N_ECT): | |
| 382 *mode = CHLD_MOD_Ect; | |
| 383 break; | |
| 384 | |
| 385 case(BAT_P_CHLD_N_CCBS): | |
| 386 *mode = CHLD_MOD_Ccbs; | |
| 387 break; | |
| 388 | |
| 389 case(BAT_P_CHLD_N_SWAP): | |
| 390 if ( bat_chld_param->x EQ ((S16)BAT_PARAMETER_NOT_PRESENT) ) | |
| 391 { | |
| 392 *mode = CHLD_MOD_RetrieveHoldCall; | |
| 393 } | |
| 394 else | |
| 395 { | |
| 396 *mode = CHLD_MOD_RetrieveHoldCallSpec; | |
| 397 } | |
| 398 break; | |
| 399 | |
| 400 case(BAT_P_CHLD_N_RELANYSPEC): | |
| 401 *mode = CHLD_MOD_RelAnySpec; | |
| 402 break; | |
| 403 | |
| 404 case(BAT_P_CHLD_N_ONLYHOLD): | |
| 405 /* FTA requires an extra mode: Put on hold (without | |
| 406 * accepting automatically waiting or held calls) | |
| 407 */ | |
| 408 *mode = CHLD_MOD_OnlyHold; | |
| 409 break; | |
| 410 | |
| 411 case(BAT_P_CHLD_N_RELDIALCALL): | |
| 412 /* Release dialing call, without dropping current call. */ | |
| 413 *mode = CHLD_MOD_RelDialCall; | |
| 414 break; | |
| 415 | |
| 416 default: | |
| 417 break; | |
| 418 } | |
| 419 } | |
| 420 | |
| 421 /*================== global functions ========================================*/ | |
| 422 | |
| 423 /* | |
| 424 +--------------------------------------------------------------------+ | |
| 425 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 426 | STATE : code ROUTINE : BAT_D | | |
| 427 +--------------------------------------------------------------------+ | |
| 428 | |
| 429 PURPOSE : dial command for voice, data or USSD | |
| 430 | |
| 431 1. call from phone book ? --> ATD>"Doe Joe" | |
| 432 1.a with CUG ON/OFF and/or CLIP ? --> ATD>"Doe Joe"G | |
| 433 1.b what character set ? | |
| 434 2 call from specific phone book ? --> ATD>MT7 | |
| 435 2.a with CUG ON/OFF and/or CLIP ? --> ATD>MT7I | |
| 436 3. call with number ? --> ATD1234567 | |
| 437 3.a with CUG ON/OFF and/or CLIP ? --> ATD1234567g | |
| 438 4. is the call a voice call ? --> ATDxxxxxxxx; <-- semicolon ? | |
| 439 | |
| 440 up to here in general voice or data call is distinguished. | |
| 441 whether the data call is CSD, GPRS or USSD (checked by ksd_xxx() within cmhCC_Dial()) | |
| 442 is handled on CMH level. see cmhCC_Dial() | |
| 443 | |
| 444 */ | |
| 445 GLOBAL T_ACI_BAT_RSLT BAT_D (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 446 T_BAT_cmd_send *cmd) | |
| 447 { | |
| 448 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 449 U8 *dial_string = NULL; | |
| 450 TRACE_FUNCTION ("BAT_D()"); | |
| 451 | |
| 452 if (cmd->params.ptr_at_d->c_dial_string) | |
| 453 { | |
| 454 if (cmd->params.ptr_at_d->c_dial_string > MAX_DIAL_LEN-1) | |
| 455 { | |
| 456 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow); | |
| 457 return (ACI_BAT_FAIL); | |
| 458 } | |
| 459 dial_string = cmd->params.ptr_at_d->dial_string; | |
| 460 if (*dial_string EQ '>') | |
| 461 { | |
| 462 ret = aci_bat_call_from_phonebook(src_infos_psi, cmd); | |
| 463 } | |
| 464 else | |
| 465 { | |
| 466 ret = aci_bat_call_with_number(src_infos_psi, cmd); | |
| 467 } | |
| 468 } | |
| 469 else | |
| 470 { | |
| 471 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown); /* No dial string, so unknown error */ | |
| 472 } | |
| 473 return(ret); | |
| 474 } | |
| 475 | |
| 476 /* | |
| 477 +--------------------------------------------------------------------+ | |
| 478 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 479 | STATE : code ROUTINE : BAT_A | | |
| 480 +--------------------------------------------------------------------+ | |
| 481 | |
| 482 PURPOSE : ATA on binary level there is just a cmd.ctrl_params = BAT_CMD_AT_A | |
| 483 no additional parameter needed. | |
| 484 */ | |
| 485 GLOBAL T_ACI_BAT_RSLT BAT_A (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 486 T_BAT_cmd_send *cmd) | |
| 487 { | |
| 488 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 489 TRACE_FUNCTION ("BAT_A()"); | |
| 490 ret = (T_ACI_BAT_RSLT)sAT_A((T_ACI_CMD_SRC)src_infos_psi->srcId); | |
| 491 if (ret EQ ACI_BAT_FAIL) | |
| 492 { | |
| 493 if (!(ACI_BAT_VALID_ERR_DESC())) /* has sAT_A already set an error value ? */ | |
| 494 { | |
| 495 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown); /* No, so unknown error */ | |
| 496 } | |
| 497 } | |
| 498 return(ret); | |
| 499 } | |
| 500 | |
| 501 /* | |
| 502 +--------------------------------------------------------------------+ | |
| 503 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 504 | STATE : code ROUTINE : sBAT_H | | |
| 505 +--------------------------------------------------------------------+ | |
| 506 | |
| 507 PURPOSE : | |
| 508 */ | |
| 509 GLOBAL T_ACI_BAT_RSLT BAT_H (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 510 T_BAT_cmd_send *cmd) | |
| 511 { | |
| 512 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 513 TRACE_FUNCTION ("BAT_H()"); | |
| 514 ret = (T_ACI_BAT_RSLT)sAT_H((T_ACI_CMD_SRC)src_infos_psi->srcId); | |
| 515 if (ret EQ ACI_BAT_FAIL) | |
| 516 { | |
| 517 if (!(ACI_BAT_VALID_ERR_DESC())) /* has sAT_H already set an error value ? */ | |
| 518 { | |
| 519 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown); /* No, so unknown error */ | |
| 520 } | |
| 521 } | |
| 522 return(ret); | |
| 523 } | |
| 524 | |
| 525 #ifdef FAX_AND_DATA | |
| 526 /* | |
| 527 +--------------------------------------------------------------------+ | |
| 528 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 529 | STATE : code ROUTINE : sBAT_PlusCBST | | |
| 530 +--------------------------------------------------------------------+ | |
| 531 | |
| 532 PURPOSE : | |
| 533 */ | |
| 534 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCBST (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 535 T_BAT_cmd_send *cmd) | |
| 536 { | |
| 537 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 538 | |
| 539 TRACE_FUNCTION ("sBAT_PlusCBST()"); | |
| 540 | |
| 541 ret = (T_ACI_BAT_RSLT)sAT_PlusCBST((T_ACI_CMD_SRC)src_infos_psi->srcId,(T_ACI_BS_SPEED)cmd->params.ptr_set_plus_cbst->speed, | |
| 542 (T_ACI_CBST_NAM)cmd->params.ptr_set_plus_cbst->name, | |
| 543 (T_ACI_CBST_CE)cmd->params.ptr_set_plus_cbst->ce); | |
| 544 return(ret); | |
| 545 } | |
| 546 | |
| 547 /* | |
| 548 +--------------------------------------------------------------------+ | |
| 549 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 550 | STATE : code ROUTINE : qBAT_PlusCBST | | |
| 551 +--------------------------------------------------------------------+ | |
| 552 | |
| 553 PURPOSE : | |
| 554 */ | |
| 555 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCBST (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 556 T_BAT_cmd_send *cmd) | |
| 557 { | |
| 558 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 559 T_BAT_plus_cbst_speed speed = BAT_CBST_SPD_NOT_PRESENT; | |
| 560 T_BAT_plus_cbst_name name = BAT_CBST_NAM_NOT_PRESENT ; | |
| 561 T_BAT_plus_cbst_ce ce = BAT_CBST_CE_NOT_PRESENT; | |
| 562 T_BAT_cmd_response resp; | |
| 563 T_BAT_res_que_plus_cbst que_cbst_buffer; | |
| 564 | |
| 565 TRACE_FUNCTION ("qBAT_PlusCBST()"); | |
| 566 resp.ctrl_response = BAT_RES_QUE_PLUS_CBST; | |
| 567 resp.response.ptr_que_plus_cbst = &que_cbst_buffer; | |
| 568 | |
| 569 ret = (T_ACI_BAT_RSLT)qAT_PlusCBST((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 570 (T_ACI_BS_SPEED*)&speed,(T_ACI_CBST_NAM*)&name,(T_ACI_CBST_CE*)&ce); | |
| 571 if(ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 572 { | |
| 573 resp.response.ptr_que_plus_cbst->ce = ce; | |
| 574 resp.response.ptr_que_plus_cbst->speed = speed; | |
| 575 resp.response.ptr_que_plus_cbst->name = name; | |
| 576 aci_bat_send(src_infos_psi,&resp); | |
| 577 return ACI_BAT_CMPL; | |
| 578 } | |
| 579 else | |
| 580 { | |
| 581 return ACI_BAT_FAIL; | |
| 582 } | |
| 583 } | |
| 584 #endif /* FAX_AND_DATA */ | |
| 585 /* | |
| 586 +--------------------------------------------------------------------+ | |
| 587 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 588 | STATE : code ROUTINE : sBAT_PercentCTTY | | |
| 589 +--------------------------------------------------------------------+ | |
| 590 | |
| 591 PURPOSE : | |
| 592 */ | |
| 593 GLOBAL T_ACI_BAT_RSLT sBAT_PercentCTTY (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 594 T_BAT_cmd_send *cmd) | |
| 595 { | |
| 596 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 597 | |
| 598 TRACE_FUNCTION ("sBAT_PercentCTTY()"); | |
| 599 | |
| 600 ret = (T_ACI_BAT_RSLT)sAT_PercentCTTY ((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 601 CTTY_MOD_Enable, (T_ACI_CTTY_REQ)cmd->params.ptr_set_percent_ctty->req); | |
| 602 /*sending hardcoded enable mode for sAT_XXXX */ | |
| 603 | |
| 604 return(ret); | |
| 605 } | |
| 606 | |
| 607 /* | |
| 608 +--------------------------------------------------------------------+ | |
| 609 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 610 | STATE : code ROUTINE : qBAT_PercentCTTY | | |
| 611 +--------------------------------------------------------------------+ | |
| 612 | |
| 613 PURPOSE : | |
| 614 */ | |
| 615 GLOBAL T_ACI_BAT_RSLT qBAT_PercentCTTY (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 616 T_BAT_cmd_send *cmd) | |
| 617 { | |
| 618 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 619 T_BAT_percent_ctty_req req ; | |
| 620 UBYTE mode; | |
| 621 T_BAT_cmd_response resp; | |
| 622 T_BAT_res_que_percent_ctty que_tty_buffer; | |
| 623 T_BAT_trx trx; | |
| 624 T_BAT_percent_ctty_m state; | |
| 625 | |
| 626 TRACE_FUNCTION ("qBAT_PercentCTTY()"); | |
| 627 | |
| 628 resp.ctrl_response = BAT_RES_QUE_PERCENT_CTTY ; | |
| 629 resp.response.ptr_que_percent_ctty = &que_tty_buffer; | |
| 630 | |
| 631 ret = (T_ACI_BAT_RSLT)qAT_PercentCTTY ((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 632 (T_ACI_CTTY_MOD *)&mode,(T_ACI_CTTY_REQ *)&req,(T_ACI_CTTY_STAT *)&state,(T_ACI_CTTY_TRX *)&trx); | |
| 633 resp.response.ptr_que_percent_ctty->m= state ; | |
| 634 resp.response.ptr_que_percent_ctty->req = req; | |
| 635 resp.response.ptr_que_percent_ctty->trx = trx; | |
| 636 | |
| 637 aci_bat_send(src_infos_psi,&resp); | |
| 638 return(ret); | |
| 639 } | |
| 640 | |
| 641 /* | |
| 642 +--------------------------------------------------------------------+ | |
| 643 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 644 | STATE : code ROUTINE : sBAT_PlusCSTA | | |
| 645 +--------------------------------------------------------------------+ | |
| 646 | |
| 647 PURPOSE : | |
| 648 */ | |
| 649 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCSTA (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 650 T_BAT_cmd_send *cmd) | |
| 651 { | |
| 652 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 653 T_ACI_TOA type, | |
| 654 *p_type; | |
| 655 | |
| 656 TRACE_FUNCTION ("sBAT_PlusCSTA()"); | |
| 657 | |
| 658 p_type=&type; | |
| 659 if (cmd->params.ptr_set_plus_csta->type EQ ((S16)BAT_PARAMETER_NOT_PRESENT)) | |
| 660 { | |
| 661 p_type = NULL; | |
| 662 } | |
| 663 else | |
| 664 { | |
| 665 type = toa_demerge(cmd->params.ptr_set_plus_csta->type); | |
| 666 if (type.ton < 0 OR type.npi < 0) | |
| 667 { | |
| 668 ACI_ERR_DESC(ACI_ERR_CLASS_Cme,CME_ERR_OpNotAllow); | |
| 669 return (ACI_BAT_FAIL); | |
| 670 } | |
| 671 } | |
| 672 ret = (T_ACI_BAT_RSLT)sAT_PlusCSTA((T_ACI_CMD_SRC)src_infos_psi->srcId,p_type); | |
| 673 return(ret); | |
| 674 } | |
| 675 | |
| 676 /* | |
| 677 +--------------------------------------------------------------------+ | |
| 678 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 679 | STATE : code ROUTINE : qBAT_PlusCSTA | | |
| 680 +--------------------------------------------------------------------+ | |
| 681 | |
| 682 PURPOSE : | |
| 683 */ | |
| 684 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCSTA (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 685 T_BAT_cmd_send *cmd) | |
| 686 { | |
| 687 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 688 T_ACI_TOA type; | |
| 689 T_BAT_cmd_response resp; | |
| 690 T_BAT_res_que_plus_csta que_csta_buffer; | |
| 691 | |
| 692 TRACE_FUNCTION ("qBAT_PlusCSTA()"); | |
| 693 resp.ctrl_response = BAT_RES_QUE_PLUS_CSTA; | |
| 694 resp.response.ptr_que_plus_csta = &que_csta_buffer; | |
| 695 | |
| 696 ret = (T_ACI_BAT_RSLT)qAT_PlusCSTA((T_ACI_CMD_SRC)src_infos_psi->srcId,&type); | |
| 697 if (ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 698 { | |
| 699 resp.response.ptr_que_plus_csta->type = toa_merge (type); | |
| 700 aci_bat_send(src_infos_psi, &resp); | |
| 701 } | |
| 702 return(ret); | |
| 703 } | |
| 704 | |
| 705 /* | |
| 706 +--------------------------------------------------------------------+ | |
| 707 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 708 | STATE : code ROUTINE : sBAT_PercentCHLD | | |
| 709 +--------------------------------------------------------------------+ | |
| 710 | |
| 711 PURPOSE : | |
| 712 */ | |
| 713 GLOBAL T_ACI_BAT_RSLT sBAT_PercentCHLD (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 714 T_BAT_cmd_send *cmd) | |
| 715 { | |
| 716 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 717 T_ACI_CHLD_MOD mode = CHLD_MOD_NotPresent; | |
| 718 CHAR X_prm[2]; | |
| 719 CHAR* p_X_prm; | |
| 720 | |
| 721 TRACE_FUNCTION ("sBAT_PercentCHLD()"); | |
| 722 | |
| 723 X_prm[0] = (CHAR)NOT_PRESENT_8BIT; | |
| 724 p_X_prm = X_prm; | |
| 725 | |
| 726 /* | |
| 727 * Map the mode from BAT application to appropriate ENUM values | |
| 728 * present in ACI | |
| 729 */ | |
| 730 aci_bat_chld_mode_mapping (cmd->params.ptr_set_percent_chld, &mode); | |
| 731 | |
| 732 if(cmd->params.ptr_set_percent_chld->x NEQ ((S16)BAT_PARAMETER_NOT_PRESENT)) | |
| 733 { | |
| 734 X_prm[0] = (char)(cmd->params.ptr_set_percent_chld->x + 0x30); /* 0x30 = '0' */ | |
| 735 X_prm[1] = '\0'; | |
| 736 } | |
| 737 else | |
| 738 { | |
| 739 p_X_prm = NULL; | |
| 740 } | |
| 741 ret = (T_ACI_BAT_RSLT)sAT_PercentCHLD((T_ACI_CMD_SRC)src_infos_psi->srcId, mode, p_X_prm ); | |
| 742 return(ret); | |
| 743 } | |
| 744 | |
| 745 /* | |
| 746 +--------------------------------------------------------------------+ | |
| 747 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 748 | STATE : code ROUTINE : qBAT_PlusCLIP | | |
| 749 +--------------------------------------------------------------------+ | |
| 750 | |
| 751 PURPOSE : | |
| 752 */ | |
| 753 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCLIP (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 754 T_BAT_cmd_send *cmd) | |
| 755 { | |
| 756 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 757 T_ACI_CLIP_STAT stat = CLIP_STAT_NotPresent; | |
| 758 T_BAT_cmd_response resp; | |
| 759 T_BAT_res_que_plus_clip que_clip_buffer; | |
| 760 | |
| 761 TRACE_FUNCTION ("qBAT_PlusCLIP()"); | |
| 762 | |
| 763 resp.ctrl_response = BAT_RES_QUE_PLUS_CLIP; | |
| 764 resp.response.ptr_que_plus_clip = &que_clip_buffer; | |
| 765 | |
| 766 ret = (T_ACI_BAT_RSLT)qAT_PlusCLIP((T_ACI_CMD_SRC)src_infos_psi->srcId,&stat); | |
| 767 if (ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 768 { | |
| 769 resp.response.ptr_que_plus_clip->m = (T_BAT_plus_clip_m)stat ; | |
| 770 aci_bat_send(src_infos_psi, &resp); | |
| 771 } | |
| 772 return(ret); | |
| 773 } | |
| 774 | |
| 775 /* | |
| 776 +--------------------------------------------------------------------+ | |
| 777 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 778 | STATE : code ROUTINE : qBAT_PlusCDIP | | |
| 779 +--------------------------------------------------------------------+ | |
| 780 | |
| 781 PURPOSE : | |
| 782 */ | |
| 783 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCDIP (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 784 T_BAT_cmd_send *cmd) | |
| 785 { | |
| 786 T_ACI_BAT_RSLT ret = ACI_BAT_CMPL; | |
| 787 T_ACI_CDIP_STAT stat = CDIP_STAT_Unknown; | |
| 788 T_BAT_cmd_response resp; | |
| 789 T_BAT_res_que_plus_cdip que_cdip_buffer; | |
| 790 | |
| 791 TRACE_FUNCTION ("qBAT_PlusCDIP()"); | |
| 792 | |
| 793 resp.ctrl_response = BAT_RES_QUE_PLUS_CDIP; | |
| 794 resp.response.ptr_que_plus_cdip = &que_cdip_buffer; | |
| 795 | |
| 796 resp.response.ptr_que_plus_cdip->m = (T_BAT_plus_cdip_m)stat ; | |
| 797 aci_bat_send(src_infos_psi, &resp); | |
| 798 | |
| 799 return(ret); | |
| 800 } | |
| 801 | |
| 802 /* | |
| 803 +--------------------------------------------------------------------+ | |
| 804 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 805 | STATE : code ROUTINE : qBAT_PlusCOLP | | |
| 806 +--------------------------------------------------------------------+ | |
| 807 | |
| 808 PURPOSE : | |
| 809 */ | |
| 810 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCOLP (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 811 T_BAT_cmd_send *cmd) | |
| 812 { | |
| 813 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 814 T_ACI_COLP_STAT stat = COLP_STAT_NotPresent; | |
| 815 T_BAT_cmd_response resp; | |
| 816 T_BAT_res_que_plus_colp que_colp_buffer; | |
| 817 | |
| 818 TRACE_FUNCTION ("qBAT_PlusCOLP()"); | |
| 819 | |
| 820 resp.ctrl_response = BAT_RES_QUE_PLUS_COLP; | |
| 821 resp.response.ptr_que_plus_colp = &que_colp_buffer; | |
| 822 | |
| 823 ret = (T_ACI_BAT_RSLT)qAT_PlusCOLP((T_ACI_CMD_SRC)src_infos_psi->srcId,&stat); | |
| 824 if (ret EQ (T_ACI_BAT_RSLT)AT_CMPL) | |
| 825 { | |
| 826 resp.response.ptr_que_plus_colp->m = (T_BAT_plus_colp_m)stat ; | |
| 827 aci_bat_send(src_infos_psi, &resp); | |
| 828 } | |
| 829 return(ret); | |
| 830 } | |
| 831 | |
| 832 /* | |
| 833 +--------------------------------------------------------------------+ | |
| 834 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 835 | STATE : code ROUTINE : sBAT_PlusCLIR | | |
| 836 +--------------------------------------------------------------------+ | |
| 837 | |
| 838 PURPOSE : | |
| 839 */ | |
| 840 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCLIR (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 841 T_BAT_cmd_send *cmd) | |
| 842 { | |
| 843 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 844 | |
| 845 TRACE_FUNCTION ("sBAT_PlusCLIR()"); | |
| 846 | |
| 847 ret = (T_ACI_BAT_RSLT)sAT_PlusCLIR((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 848 (T_ACI_CLIR_MOD)cmd->params.ptr_set_plus_clir->n); | |
| 849 return(ret); | |
| 850 } | |
| 851 | |
| 852 /* | |
| 853 +--------------------------------------------------------------------+ | |
| 854 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 855 | STATE : code ROUTINE : qBAT_PlusCLIR | | |
| 856 +--------------------------------------------------------------------+ | |
| 857 | |
| 858 PURPOSE : | |
| 859 */ | |
| 860 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCLIR (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 861 T_BAT_cmd_send *cmd) | |
| 862 { | |
| 863 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 864 T_ACI_CLIR_STAT stat = CLIR_STAT_NotPresent; | |
| 865 T_ACI_CLIR_MOD mode = CLIR_MOD_NotPresent; | |
| 866 T_BAT_cmd_response resp; | |
| 867 T_BAT_res_que_plus_clir clir; | |
| 868 | |
| 869 TRACE_FUNCTION ("qBAT_PlusCLIR()"); | |
| 870 | |
| 871 resp.ctrl_response = BAT_RES_QUE_PLUS_CLIR; | |
| 872 resp.response.ptr_que_plus_clir = &clir; | |
| 873 | |
| 874 ret = (T_ACI_BAT_RSLT)qAT_PlusCLIR ((T_ACI_CMD_SRC)src_infos_psi->srcId,&mode,&stat); | |
| 875 | |
| 876 if(ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 877 { | |
| 878 resp.response.ptr_que_plus_clir->m = (T_BAT_plus_clir_m)stat; | |
| 879 resp.response.ptr_que_plus_clir->n = (T_BAT_plus_clir_n)mode; | |
| 880 aci_bat_send(src_infos_psi,&resp); | |
| 881 } | |
| 882 return(ret); | |
| 883 } | |
| 884 | |
| 885 /* | |
| 886 +--------------------------------------------------------------------+ | |
| 887 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 888 | STATE : code ROUTINE : sBAT_PlusCCUG | | |
| 889 +--------------------------------------------------------------------+ | |
| 890 | |
| 891 PURPOSE : | |
| 892 */ | |
| 893 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCCUG (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 894 T_BAT_cmd_send *cmd) | |
| 895 { | |
| 896 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 897 T_BAT_plus_ccug_n n = BAT_CCUG_N_NOT_PRESENT ; | |
| 898 T_BAT_plus_ccug_index index = BAT_CCUG_INDEX_NOT_PRESENT ; | |
| 899 T_BAT_plus_ccug_info info = BAT_CCUG_INFO_NOT_PRESENT ; | |
| 900 | |
| 901 TRACE_FUNCTION ("sBAT_PlusCCUG()"); | |
| 902 | |
| 903 n = cmd->params.ptr_set_plus_ccug->n; | |
| 904 index = cmd->params.ptr_set_plus_ccug->index; | |
| 905 info = cmd->params.ptr_set_plus_ccug->info; | |
| 906 | |
| 907 ret = (T_ACI_BAT_RSLT)sAT_PlusCCUG((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 908 (T_ACI_CCUG_MOD)n,(T_ACI_CCUG_IDX)index,(T_ACI_CCUG_INFO)info); | |
| 909 return(ret); | |
| 910 } | |
| 911 | |
| 912 /* | |
| 913 +--------------------------------------------------------------------+ | |
| 914 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 915 | STATE : code ROUTINE : qBAT_PlusCCUG | | |
| 916 +--------------------------------------------------------------------+ | |
| 917 | |
| 918 PURPOSE : | |
| 919 */ | |
| 920 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCCUG (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 921 T_BAT_cmd_send *cmd) | |
| 922 { | |
| 923 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 924 T_ACI_CCUG_MOD mode = CCUG_MOD_NotPresent; | |
| 925 T_ACI_CCUG_IDX idx = CCUG_IDX_NotPresent; | |
| 926 T_ACI_CCUG_INFO info = CCUG_INFO_NotPresent; | |
| 927 T_BAT_cmd_response resp; | |
| 928 T_BAT_res_que_plus_ccug que_ccug_buffer; | |
| 929 | |
| 930 TRACE_FUNCTION ("qBAT_PlusCCUG()"); | |
| 931 | |
| 932 resp.ctrl_response = BAT_RES_QUE_PLUS_CCUG; | |
| 933 resp.response.ptr_que_plus_ccug = &que_ccug_buffer; | |
| 934 | |
| 935 ret = (T_ACI_BAT_RSLT)qAT_PlusCCUG ((T_ACI_CMD_SRC)src_infos_psi->srcId,&mode,&idx,&info); | |
| 936 if(ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 937 { | |
| 938 resp.response.ptr_que_plus_ccug->n = (T_BAT_plus_ccug_n)mode; | |
| 939 resp.response.ptr_que_plus_ccug->index = (T_BAT_plus_ccug_index)idx; | |
| 940 resp.response.ptr_que_plus_ccug->info = (T_BAT_plus_ccug_info)info; | |
| 941 aci_bat_send(src_infos_psi,&resp); | |
| 942 } | |
| 943 return(ret); | |
| 944 } | |
| 945 | |
| 946 /* | |
| 947 +--------------------------------------------------------------------+ | |
| 948 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 949 | STATE : code ROUTINE : sBAT_PlusCMOD | | |
| 950 +--------------------------------------------------------------------+ | |
| 951 | |
| 952 PURPOSE : | |
| 953 */ | |
| 954 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCMOD (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 955 T_BAT_cmd_send *cmd) | |
| 956 { | |
| 957 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 958 T_BAT_plus_cmod_mode mode = BAT_CMOD_MODE_NOT_PRESENT; | |
| 959 | |
| 960 TRACE_FUNCTION ("sBAT_PlusCMOD()"); | |
| 961 | |
| 962 mode = cmd->params.ptr_set_plus_cmod->mode; | |
| 963 ret = (T_ACI_BAT_RSLT)sAT_PlusCMOD ((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 964 (T_ACI_CMOD_MOD)mode); | |
| 965 | |
| 966 return(ret); | |
| 967 } | |
| 968 | |
| 969 /* | |
| 970 +--------------------------------------------------------------------+ | |
| 971 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 972 | STATE : code ROUTINE : qBAT_PlusCMOD | | |
| 973 +--------------------------------------------------------------------+ | |
| 974 | |
| 975 PURPOSE : | |
| 976 */ | |
| 977 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCMOD (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 978 T_BAT_cmd_send *cmd) | |
| 979 { | |
| 980 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 981 T_ACI_CMOD_MOD mode = CMOD_MOD_NotPresent; | |
| 982 T_BAT_cmd_response resp; | |
| 983 T_BAT_res_que_plus_cmod que_cmod_buffer; | |
| 984 | |
| 985 TRACE_FUNCTION ("qBAT_PlusCMOD()"); | |
| 986 resp.ctrl_response = BAT_RES_QUE_PLUS_CMOD; | |
| 987 resp.response.ptr_que_plus_cmod = &que_cmod_buffer; | |
| 988 | |
| 989 ret = (T_ACI_BAT_RSLT)qAT_PlusCMOD ((T_ACI_CMD_SRC)src_infos_psi->srcId,&mode); | |
| 990 if (ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 991 { | |
| 992 resp.response.ptr_que_plus_cmod->mode = (T_BAT_plus_cmod_mode)mode; | |
| 993 aci_bat_send(src_infos_psi,&resp); | |
| 994 } | |
| 995 return(ret); | |
| 996 } | |
| 997 | |
| 998 /* | |
| 999 +--------------------------------------------------------------------+ | |
| 1000 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1001 | STATE : code ROUTINE : sBAT_PlusCR | | |
| 1002 +--------------------------------------------------------------------+ | |
| 1003 | |
| 1004 PURPOSE : | |
| 1005 */ | |
| 1006 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCR (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1007 T_BAT_cmd_send *cmd) | |
| 1008 { | |
| 1009 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1010 | |
| 1011 TRACE_FUNCTION ("sBAT_PlusCR()"); | |
| 1012 | |
| 1013 return(ret); | |
| 1014 } | |
| 1015 | |
| 1016 /* | |
| 1017 +--------------------------------------------------------------------+ | |
| 1018 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1019 | STATE : code ROUTINE : qBAT_PlusCR | | |
| 1020 +--------------------------------------------------------------------+ | |
| 1021 | |
| 1022 PURPOSE : | |
| 1023 */ | |
| 1024 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCR (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1025 T_BAT_cmd_send *cmd) | |
| 1026 { | |
| 1027 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1028 T_BAT_res_uns_plus_cr cr; | |
| 1029 | |
| 1030 TRACE_FUNCTION ("qBAT_PlusCR()"); | |
| 1031 | |
| 1032 memset(&cr,0x00,sizeof(T_BAT_res_uns_plus_cr)); | |
| 1033 | |
| 1034 /* Check This Out */ | |
| 1035 return(ret); | |
| 1036 } | |
| 1037 | |
| 1038 /* | |
| 1039 +--------------------------------------------------------------------+ | |
| 1040 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1041 | STATE : code ROUTINE : sBAT_PlusCAOC | | |
| 1042 +--------------------------------------------------------------------+ | |
| 1043 | |
| 1044 PURPOSE : | |
| 1045 */ | |
| 1046 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCAOC (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1047 T_BAT_cmd_send *cmd) | |
| 1048 { | |
| 1049 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1050 LONG ccm = 0L; | |
| 1051 SHORT mode = 0; | |
| 1052 T_BAT_cmd_response resp; | |
| 1053 T_BAT_res_set_plus_caoc caoc; | |
| 1054 | |
| 1055 TRACE_FUNCTION ("sBAT_PlusCAOC()"); | |
| 1056 | |
| 1057 resp.ctrl_response = BAT_RES_SET_PLUS_CAOC; | |
| 1058 resp.response.ptr_set_plus_caoc = &caoc; | |
| 1059 | |
| 1060 mode = cmd->params.ptr_set_plus_caoc->mode; | |
| 1061 if(mode EQ BAT_CAOC_MODE_QUERY) | |
| 1062 { | |
| 1063 ret = (T_ACI_BAT_RSLT)qAT_PlusCAOC((T_ACI_CMD_SRC)src_infos_psi->srcId,&ccm); | |
| 1064 } | |
| 1065 else | |
| 1066 { | |
| 1067 return(ACI_BAT_FAIL); | |
| 1068 } | |
| 1069 | |
| 1070 if (ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 1071 { | |
| 1072 resp.response.ptr_set_plus_caoc->ccm = ccm; | |
| 1073 aci_bat_send(src_infos_psi,&resp); | |
| 1074 } | |
| 1075 return(ret); | |
| 1076 } | |
| 1077 | |
| 1078 /* | |
| 1079 +--------------------------------------------------------------------+ | |
| 1080 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1081 | STATE : code ROUTINE : sBAT_PlusCACM | | |
| 1082 +--------------------------------------------------------------------+ | |
| 1083 | |
| 1084 PURPOSE : | |
| 1085 */ | |
| 1086 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCACM (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1087 T_BAT_cmd_send *cmd) | |
| 1088 { | |
| 1089 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1090 char pin2 [MAX_PWD_LENGTH] = {0} ; | |
| 1091 | |
| 1092 TRACE_FUNCTION ("sBAT_PlusCACM()"); | |
| 1093 | |
| 1094 memcpy(pin2,cmd->params.ptr_set_plus_cacm->passwd,cmd->params.ptr_set_plus_cacm->c_passwd); | |
| 1095 ret = (T_ACI_BAT_RSLT)sAT_PlusCACM((T_ACI_CMD_SRC)src_infos_psi->srcId,pin2); | |
| 1096 return(ret); | |
| 1097 } | |
| 1098 | |
| 1099 /* | |
| 1100 +--------------------------------------------------------------------+ | |
| 1101 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1102 | STATE : code ROUTINE : qBAT_PlusCACM | | |
| 1103 +--------------------------------------------------------------------+ | |
| 1104 | |
| 1105 PURPOSE : | |
| 1106 */ | |
| 1107 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCACM (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1108 T_BAT_cmd_send *cmd) | |
| 1109 { | |
| 1110 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1111 LONG acm = 0L; | |
| 1112 T_BAT_cmd_response resp; | |
| 1113 T_BAT_res_que_plus_cacm que_cacm_buffer; | |
| 1114 | |
| 1115 TRACE_FUNCTION ("qBAT_PlusCACM()"); | |
| 1116 | |
| 1117 resp.ctrl_response = BAT_RES_QUE_PLUS_CACM; | |
| 1118 resp.response.ptr_que_plus_cacm = &que_cacm_buffer; | |
| 1119 | |
| 1120 ret = (T_ACI_BAT_RSLT)qAT_PlusCACM((T_ACI_CMD_SRC)src_infos_psi->srcId,&acm); | |
| 1121 if (ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 1122 { | |
| 1123 resp.response.ptr_que_plus_cacm->acm = acm; | |
| 1124 aci_bat_send(src_infos_psi,&resp); | |
| 1125 } | |
| 1126 return(ret); | |
| 1127 } | |
| 1128 | |
| 1129 /* | |
| 1130 +--------------------------------------------------------------------+ | |
| 1131 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1132 | STATE : code ROUTINE : sBAT_PlusCAMM | | |
| 1133 +--------------------------------------------------------------------+ | |
| 1134 | |
| 1135 PURPOSE : | |
| 1136 */ | |
| 1137 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCAMM (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1138 T_BAT_cmd_send *cmd) | |
| 1139 { | |
| 1140 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1141 char pin2 [MAX_PWD_LENGTH] = {0}; | |
| 1142 char* p_pin2; | |
| 1143 | |
| 1144 TRACE_FUNCTION ("sBAT_PlusCAMM()"); | |
| 1145 | |
| 1146 p_pin2 = pin2; | |
| 1147 if(cmd->params.ptr_set_plus_camm->v_passwd) | |
| 1148 { | |
| 1149 memcpy(pin2,cmd->params.ptr_set_plus_camm->passwd,cmd->params.ptr_set_plus_camm->c_passwd); | |
| 1150 } | |
| 1151 /* else | |
| 1152 { | |
| 1153 p_pin2 = NULL; | |
| 1154 } */ | |
| 1155 ret = (T_ACI_BAT_RSLT)sAT_PlusCAMM((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 1156 cmd->params.ptr_set_plus_camm->acmmax,p_pin2); | |
| 1157 switch ((T_ACI_RETURN)ret) | |
| 1158 { | |
| 1159 case AT_BUSY: | |
| 1160 { | |
| 1161 ACI_ERR_DESC(ACI_ERR_CLASS_Cme,CME_ERR_SimBusy); | |
| 1162 break; | |
| 1163 } | |
| 1164 default: | |
| 1165 { | |
| 1166 ACI_ERR_DESC(ACI_ERR_CLASS_Cme,CME_ERR_OpNotAllow); | |
| 1167 break; | |
| 1168 } | |
| 1169 } | |
| 1170 return(ret); | |
| 1171 } | |
| 1172 | |
| 1173 /* | |
| 1174 +--------------------------------------------------------------------+ | |
| 1175 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1176 | STATE : code ROUTINE : qBAT_PlusCAMM | | |
| 1177 +--------------------------------------------------------------------+ | |
| 1178 | |
| 1179 PURPOSE : | |
| 1180 */ | |
| 1181 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCAMM (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1182 T_BAT_cmd_send *cmd) | |
| 1183 { | |
| 1184 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1185 LONG acmmax = 0L; | |
| 1186 T_BAT_cmd_response resp; | |
| 1187 T_BAT_res_que_plus_camm que_camm_buffer; | |
| 1188 | |
| 1189 TRACE_FUNCTION ("qBAT_PlusCAMM()"); | |
| 1190 | |
| 1191 resp.ctrl_response = BAT_RES_QUE_PLUS_CAMM; | |
| 1192 resp.response.ptr_que_plus_camm = &que_camm_buffer; | |
| 1193 ret = (T_ACI_BAT_RSLT)qAT_PlusCAMM((T_ACI_CMD_SRC)src_infos_psi->srcId,&acmmax); | |
| 1194 if (ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 1195 { | |
| 1196 resp.response.ptr_que_plus_camm->acmmax = acmmax; | |
| 1197 aci_bat_send(src_infos_psi,&resp); | |
| 1198 } | |
| 1199 return(ret); | |
| 1200 } | |
| 1201 | |
| 1202 | |
| 1203 /* | |
| 1204 +--------------------------------------------------------------------+ | |
| 1205 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1206 | STATE : code ROUTINE : sBAT_PlusCPUC | | |
| 1207 +--------------------------------------------------------------------+ | |
| 1208 | |
| 1209 PURPOSE : | |
| 1210 */ | |
| 1211 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCPUC (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1212 T_BAT_cmd_send *cmd) | |
| 1213 { | |
| 1214 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1215 char currency [MAX_CUR_LEN] = {0x00}; | |
| 1216 char cvtdCurrency [2*MAX_CUR_LEN] = {0x00}; | |
| 1217 USHORT lenCvtdCurrency = 0; | |
| 1218 char ppu [MAX_PPU_LENGTH] = {0x00}; | |
| 1219 char pin2 [MAX_PWD_LENGTH] = {0x00}; | |
| 1220 char* p_pin2; | |
| 1221 | |
| 1222 TRACE_FUNCTION ("sBAT_PlusCPUC()"); | |
| 1223 | |
| 1224 p_pin2 = pin2; | |
| 1225 | |
| 1226 memcpy(currency,cmd->params.ptr_set_plus_cpuc->currency,cmd->params.ptr_set_plus_cpuc->c_currency); | |
| 1227 memcpy(ppu,cmd->params.ptr_set_plus_cpuc->ppu,cmd->params.ptr_set_plus_cpuc->c_ppu); | |
| 1228 if(cmd->params.ptr_set_plus_cpuc->v_passwd) | |
| 1229 { | |
| 1230 memcpy(pin2,cmd->params.ptr_set_plus_cpuc->passwd,cmd->params.ptr_set_plus_cpuc->c_passwd); | |
| 1231 } | |
| 1232 else | |
| 1233 { | |
| 1234 p_pin2 = NULL; | |
| 1235 } | |
| 1236 utl_chsetToGsm ((UBYTE*)currency, | |
| 1237 cmd->params.ptr_set_plus_cpuc->c_currency, | |
| 1238 (UBYTE*)cvtdCurrency, | |
| 1239 &lenCvtdCurrency, | |
| 1240 #ifdef REL99 | |
| 1241 sizeof(cvtdCurrency), | |
| 1242 #endif /* REL99 */ | |
| 1243 GSM_ALPHA_Int); | |
| 1244 ret = (T_ACI_BAT_RSLT)sAT_PlusCPUC((T_ACI_CMD_SRC)src_infos_psi->srcId,cvtdCurrency,ppu,p_pin2); | |
| 1245 switch ((T_ACI_RETURN)ret) | |
| 1246 { | |
| 1247 case AT_BUSY: | |
| 1248 { | |
| 1249 ACI_ERR_DESC(ACI_ERR_CLASS_Cme,CME_ERR_SimBusy); | |
| 1250 break; | |
| 1251 } | |
| 1252 default: | |
| 1253 { | |
| 1254 ACI_ERR_DESC(ACI_ERR_CLASS_Cme,CME_ERR_OpNotAllow); | |
| 1255 break; | |
| 1256 } | |
| 1257 } | |
| 1258 return(ret); | |
| 1259 } | |
| 1260 | |
| 1261 /* | |
| 1262 +--------------------------------------------------------------------+ | |
| 1263 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1264 | STATE : code ROUTINE : qBAT_PlusCPUC | | |
| 1265 +--------------------------------------------------------------------+ | |
| 1266 | |
| 1267 PURPOSE : | |
| 1268 */ | |
| 1269 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCPUC (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1270 T_BAT_cmd_send *cmd) | |
| 1271 { | |
| 1272 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1273 char currency [MAX_CUR_LEN] = {0x00}; | |
| 1274 char cvtdCurrency [2*MAX_CUR_LEN] = {0x00}; | |
| 1275 USHORT lenCvtdCurrency = 0; | |
| 1276 char ppu [MAX_PPU_LENGTH] = {0x00}; | |
| 1277 T_BAT_cmd_response resp; | |
| 1278 T_BAT_res_que_plus_cpuc que_cpuc_buffer; | |
| 1279 | |
| 1280 | |
| 1281 TRACE_FUNCTION ("qBAT_PlusCPUC()"); | |
| 1282 resp.ctrl_response = BAT_RES_QUE_PLUS_CPUC; | |
| 1283 resp.response.ptr_que_plus_cpuc = &que_cpuc_buffer; | |
| 1284 | |
| 1285 ret = (T_ACI_BAT_RSLT)qAT_PlusCPUC((T_ACI_CMD_SRC)src_infos_psi->srcId,currency, ppu); | |
| 1286 if( ret NEQ ((T_ACI_BAT_RSLT)AT_CMPL) ) | |
| 1287 { | |
| 1288 return (ACI_BAT_FAIL); | |
| 1289 } | |
| 1290 utl_chsetFromGsm((UBYTE*)currency, | |
| 1291 (USHORT)strlen(currency), | |
| 1292 (UBYTE*)cvtdCurrency, | |
| 1293 sizeof(cvtdCurrency), | |
| 1294 &lenCvtdCurrency, | |
| 1295 GSM_ALPHA_Def); | |
| 1296 | |
| 1297 resp.response.ptr_que_plus_cpuc->c_currency = (U8)lenCvtdCurrency; | |
| 1298 resp.response.ptr_que_plus_cpuc->c_ppu = strlen(ppu); | |
| 1299 memcpy(resp.response.ptr_que_plus_cpuc->currency,cvtdCurrency,lenCvtdCurrency); | |
| 1300 memcpy(resp.response.ptr_que_plus_cpuc->ppu,ppu,strlen(ppu)); | |
| 1301 aci_bat_send(src_infos_psi,&resp); | |
| 1302 return(ret); | |
| 1303 } | |
| 1304 | |
| 1305 /* | |
| 1306 +--------------------------------------------------------------------+ | |
| 1307 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1308 | STATE : code ROUTINE : qBAT_PlusCLCC | | |
| 1309 +--------------------------------------------------------------------+ | |
| 1310 | |
| 1311 PURPOSE : | |
| 1312 */ | |
| 1313 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCLCC (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1314 T_BAT_cmd_send *cmd) | |
| 1315 { | |
| 1316 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1317 T_ACI_CLCC_CALDESC *calLst = NULL; | |
| 1318 UBYTE lstIdx = 0; | |
| 1319 T_BAT_cmd_response resp; | |
| 1320 T_BAT_res_que_plus_clcc que_clcc_buffer; | |
| 1321 | |
| 1322 | |
| 1323 TRACE_FUNCTION ("qBAT_PlusCLCC()"); | |
| 1324 resp.ctrl_response = BAT_RES_QUE_PLUS_CLCC; | |
| 1325 resp.response.ptr_que_plus_clcc = &que_clcc_buffer; | |
| 1326 | |
| 1327 MALLOC (calLst, MAX_CALL_NR * sizeof (T_ACI_CLCC_CALDESC)); | |
| 1328 ret = (T_ACI_BAT_RSLT)qAT_PlusCLCC((T_ACI_CMD_SRC)src_infos_psi->srcId, calLst); | |
| 1329 | |
| 1330 if( ret NEQ ((T_ACI_BAT_RSLT)AT_CMPL) ) | |
| 1331 { | |
| 1332 return (ACI_BAT_FAIL); | |
| 1333 } | |
| 1334 | |
| 1335 /* BAT has only one instance of this, so send one call info at a time */ | |
| 1336 for( lstIdx = 0; lstIdx < MAX_CALL_NR; lstIdx++ ) | |
| 1337 { | |
| 1338 if( calLst[lstIdx].idx EQ ACI_NumParmNotPresent ) | |
| 1339 break; | |
| 1340 | |
| 1341 /* Reset before sending data for each call id */ | |
| 1342 memset(resp.response.ptr_que_plus_clcc,0x00,sizeof(T_BAT_res_que_plus_clcc)); | |
| 1343 | |
| 1344 resp.response.ptr_que_plus_clcc->idx = (S16)calLst[lstIdx].idx; | |
| 1345 resp.response.ptr_que_plus_clcc->dir = (T_BAT_plus_clcc_dir)calLst[lstIdx].dir; | |
| 1346 resp.response.ptr_que_plus_clcc->stat = (T_BAT_plus_clcc_stat)calLst[lstIdx].stat; | |
| 1347 resp.response.ptr_que_plus_clcc->mode = (T_BAT_plus_clcc_mode)calLst[lstIdx].mode; | |
| 1348 resp.response.ptr_que_plus_clcc->mpty = (T_BAT_plus_clcc_mpty)calLst[lstIdx].mpty; | |
| 1349 | |
| 1350 if (calLst[lstIdx].number[0] NEQ 0x0) | |
| 1351 { | |
| 1352 resp.response.ptr_que_plus_clcc->v_number = TRUE; | |
| 1353 resp.response.ptr_que_plus_clcc->c_number = strlen(calLst[lstIdx].number); | |
| 1354 | |
| 1355 if (resp.response.ptr_que_plus_clcc->c_number > BAT_MAX_CLCC_NUMBER_LEN) | |
| 1356 resp.response.ptr_que_plus_clcc->c_number = (BAT_MAX_CLCC_NUMBER_LEN - 1); | |
| 1357 | |
| 1358 memcpy(resp.response.ptr_que_plus_clcc->number, | |
| 1359 calLst[lstIdx].number, | |
| 1360 resp.response.ptr_que_plus_clcc->c_number + 1); /* Include Null terminator */ | |
| 1361 | |
| 1362 if (calLst[lstIdx].type.ton NEQ TON_NotPresent) | |
| 1363 { | |
| 1364 S16 type = toa_merge(calLst[lstIdx].type); | |
| 1365 resp.response.ptr_que_plus_clcc->type = type; | |
| 1366 } | |
| 1367 #ifdef NO_ASCIIZ | |
| 1368 if (calLst[lstIdx].alpha.len NEQ 0x0) | |
| 1369 { | |
| 1370 resp.response.ptr_que_plus_clcc->v_alpha = TRUE; | |
| 1371 resp.response.ptr_que_plus_clcc->c_alpha = (U8)calLst[lstIdx].alpha.len; | |
| 1372 | |
| 1373 /* Limit alpha length to BAT size */ | |
| 1374 if (resp.response.ptr_que_plus_clcc->c_alpha > BAT_MAX_PHB_NUM_LEN) | |
| 1375 resp.response.ptr_que_plus_clcc->c_alpha = BAT_MAX_PHB_NUM_LEN; | |
| 1376 | |
| 1377 memcpy(resp.response.ptr_que_plus_clcc->alpha, | |
| 1378 calLst[lstIdx].alpha.data, | |
| 1379 resp.response.ptr_que_plus_clcc->c_alpha); | |
| 1380 } | |
| 1381 #else /* #ifdef NO_ASCIIZ */ | |
| 1382 if (calLst[lstIdx].alpha[0] NEQ 0x0) | |
| 1383 { | |
| 1384 resp.response.ptr_que_plus_clcc->v_alpha = TRUE; | |
| 1385 | |
| 1386 /* Limit alpha length to BAT size */ | |
| 1387 resp.response.ptr_que_plus_clcc->c_alpha = strlen(calLst[lstIdx].alpha); | |
| 1388 if (resp.response.ptr_que_plus_clcc->c_alpha > MAX_ALPHA_LEN) /* Has to be BAT_MAX..*/ | |
| 1389 resp.response.ptr_que_plus_clcc->c_alpha = (MAX_ALPHA_LEN - 1); | |
| 1390 | |
| 1391 memcpy(resp.response.ptr_que_plus_clcc->alpha, | |
| 1392 calLst[lstIdx].alpha, | |
| 1393 (resp.response.ptr_que_plus_clcc->c_alpha)+1); /* Include the NULL terminator */ | |
| 1394 } | |
| 1395 #endif /* #ifdef NO_ASCIIZ */ | |
| 1396 } | |
| 1397 | |
| 1398 aci_bat_send(src_infos_psi,&resp); | |
| 1399 } | |
| 1400 | |
| 1401 MFREE (calLst); | |
| 1402 return(ret); | |
| 1403 } | |
| 1404 | |
| 1405 /* | |
| 1406 +--------------------------------------------------------------------+ | |
| 1407 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1408 | STATE : code ROUTINE : sBAT_PlusCCWA | | |
| 1409 +--------------------------------------------------------------------+ | |
| 1410 | |
| 1411 PURPOSE : | |
| 1412 */ | |
| 1413 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCCWA (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1414 T_BAT_cmd_send *cmd) | |
| 1415 { | |
| 1416 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1417 T_BAT_plus_ccwa_mode mode = BAT_CCWA_MODE_NOT_PRESENT ; | |
| 1418 T_ACI_CLASS class_type = CLASS_NotPresent; | |
| 1419 | |
| 1420 TRACE_FUNCTION ("sBAT_PlusCCWA()"); | |
| 1421 | |
| 1422 mode = cmd->params.ptr_set_plus_ccwa->mode; | |
| 1423 class_type = (T_ACI_CLASS)cmd->params.ptr_set_plus_ccwa->bearer_class; | |
| 1424 if (mode EQ BAT_CCWA_MODE_QUERY) | |
| 1425 { | |
| 1426 ret = (T_ACI_BAT_RSLT)qAT_PlusCCWA ((T_ACI_CMD_SRC)src_infos_psi->srcId,class_type); | |
| 1427 } | |
| 1428 else | |
| 1429 { | |
| 1430 ret = (T_ACI_BAT_RSLT)sAT_PlusCCWA ((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 1431 (T_ACI_CCWA_MOD)mode,class_type); | |
| 1432 } | |
| 1433 | |
| 1434 return(ret); | |
| 1435 } | |
| 1436 | |
| 1437 /* | |
| 1438 +--------------------------------------------------------------------+ | |
| 1439 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1440 | STATE : code ROUTINE : sBAT_PlusVTS | | |
| 1441 +--------------------------------------------------------------------+ | |
| 1442 | |
| 1443 PURPOSE : | |
| 1444 */ | |
| 1445 GLOBAL T_ACI_BAT_RSLT sBAT_PlusVTS (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1446 T_BAT_cmd_send *cmd) | |
| 1447 { | |
| 1448 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1449 CHAR dtmf = '\0'; | |
| 1450 | |
| 1451 TRACE_FUNCTION ("sBAT_PlusVTS()"); | |
| 1452 | |
| 1453 dtmf = cmd->params.ptr_set_plus_vts->dtmf; | |
| 1454 ret = (T_ACI_BAT_RSLT)sAT_PlusVTS((T_ACI_CMD_SRC)src_infos_psi->srcId,dtmf,VTS_MOD_Auto); | |
| 1455 return(ret); | |
| 1456 } | |
| 1457 | |
| 1458 /* | |
| 1459 +--------------------------------------------------------------------+ | |
| 1460 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1461 | STATE : code ROUTINE : sBAT_PercentRDL | | |
| 1462 +--------------------------------------------------------------------+ | |
| 1463 | |
| 1464 PURPOSE : | |
| 1465 */ | |
| 1466 GLOBAL T_ACI_BAT_RSLT sBAT_PercentRDL (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1467 T_BAT_cmd_send *cmd) | |
| 1468 { | |
| 1469 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1470 T_BAT_percent_rdl_mode rdlmode = BAT_P_RDL_MODE_NOT_PRESENT ; | |
| 1471 | |
| 1472 TRACE_FUNCTION ("sBAT_PercentRDL()"); | |
| 1473 | |
| 1474 rdlmode = cmd->params.ptr_set_percent_rdl->mode; | |
| 1475 ret = (T_ACI_BAT_RSLT)sAT_PercentRDL ((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 1476 (T_ACI_CC_REDIAL_MODE)rdlmode, NOTIF_USER); | |
| 1477 return(ret); | |
| 1478 } | |
| 1479 | |
| 1480 /* | |
| 1481 +--------------------------------------------------------------------+ | |
| 1482 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1483 | STATE : code ROUTINE : qBAT_PercentRDL | | |
| 1484 +--------------------------------------------------------------------+ | |
| 1485 | |
| 1486 PURPOSE : | |
| 1487 */ | |
| 1488 GLOBAL T_ACI_BAT_RSLT qBAT_PercentRDL (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1489 T_BAT_cmd_send *cmd) | |
| 1490 { | |
| 1491 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1492 T_ACI_CC_REDIAL_MODE rdlmode = AUTOM_REP_NOT_PRESENT; | |
| 1493 T_ACI_CC_REDIAL_NOTIF usr_notif = NOTIF_NO_PRESENT; | |
| 1494 T_BAT_cmd_response resp; | |
| 1495 T_BAT_res_que_percent_rdl que_rdl_buffer; | |
| 1496 | |
| 1497 TRACE_FUNCTION ("qBAT_PercentRDL()"); | |
| 1498 | |
| 1499 resp.ctrl_response = BAT_RES_QUE_PERCENT_RDL; | |
| 1500 resp.response.ptr_que_percent_rdl = &que_rdl_buffer; | |
| 1501 ret = (T_ACI_BAT_RSLT)qAT_PercentRDL((T_ACI_CMD_SRC)src_infos_psi->srcId,&rdlmode, &usr_notif); | |
| 1502 if(ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 1503 { | |
| 1504 resp.response.ptr_que_percent_rdl->mode = (T_BAT_percent_rdl_mode)rdlmode; | |
| 1505 aci_bat_send(src_infos_psi,&resp); | |
| 1506 } | |
| 1507 return(ret); | |
| 1508 } | |
| 1509 | |
| 1510 #ifdef TI_PS_FF_AT_P_CMD_RDLB | |
| 1511 /* | |
| 1512 +--------------------------------------------------------------------+ | |
| 1513 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1514 | STATE : code ROUTINE : sBAT_PercentRDLB | | |
| 1515 +--------------------------------------------------------------------+ | |
| 1516 | |
| 1517 PURPOSE : | |
| 1518 */ | |
| 1519 GLOBAL T_ACI_BAT_RSLT sBAT_PercentRDLB (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1520 T_BAT_cmd_send *cmd) | |
| 1521 { | |
| 1522 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1523 T_BAT_percent_rdlb_mode rdlmode = BAT_P_RDLB_MODE_NOT_PRESENT ; | |
| 1524 | |
| 1525 TRACE_FUNCTION ("sBAT_PercentRDLB()"); | |
| 1526 | |
| 1527 rdlmode = cmd->params.ptr_set_percent_rdlb->mode; | |
| 1528 ret = (T_ACI_BAT_RSLT)sAT_PercentRDLB((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 1529 (T_ACI_CC_REDIAL_BLMODE)rdlmode,NOTIF_USER); | |
| 1530 return(ret); | |
| 1531 } | |
| 1532 | |
| 1533 /* | |
| 1534 +--------------------------------------------------------------------+ | |
| 1535 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1536 | STATE : code ROUTINE : qBAT_PercentRDLB | | |
| 1537 +--------------------------------------------------------------------+ | |
| 1538 | |
| 1539 PURPOSE : | |
| 1540 */ | |
| 1541 GLOBAL T_ACI_BAT_RSLT qBAT_PercentRDLB (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1542 T_BAT_cmd_send *cmd) | |
| 1543 { | |
| 1544 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1545 T_ACI_CC_REDIAL_BLACKL blackl; | |
| 1546 T_ACI_CC_REDIAL_NOTIF usr_notif= NOTIF_NO_PRESENT; | |
| 1547 UBYTE i,j; | |
| 1548 T_BAT_cmd_response resp; | |
| 1549 T_BAT_res_que_percent_rdlb que_rdlb_buffer; | |
| 1550 | |
| 1551 TRACE_FUNCTION ("qBAT_PercentRDLB()"); | |
| 1552 | |
| 1553 memset(&blackl, 0, sizeof(T_ACI_CC_REDIAL_BLACKL)); | |
| 1554 resp.ctrl_response = BAT_RES_QUE_PERCENT_RDLB; | |
| 1555 resp.response.ptr_que_percent_rdlb = &que_rdlb_buffer; | |
| 1556 | |
| 1557 ret = (T_ACI_BAT_RSLT)qAT_PercentRDLB ((T_ACI_CMD_SRC)src_infos_psi->srcId,&blackl,&usr_notif); | |
| 1558 if(ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 1559 { | |
| 1560 for(i=0; i<blackl.blCount; i++) /* output black list */ | |
| 1561 { | |
| 1562 memset(resp.response.ptr_que_percent_rdlb->number,0,BAT_MAX_RDLB_NUMBER_LEN); | |
| 1563 resp.response.ptr_que_percent_rdlb->type = (UBYTE)toa_merge(blackl.blNum[i].type); | |
| 1564 resp.response.ptr_que_percent_rdlb->c_number = blackl.blNum[i].numb_len; | |
| 1565 for(j=0; j<blackl.blNum[i].numb_len; j++) | |
| 1566 { | |
| 1567 blackl.blNum[i].number[j] = (blackl.blNum[i].number[j] | 0x30); | |
| 1568 /* dont know why we do this ! */ | |
| 1569 } | |
| 1570 memcpy(resp.response.ptr_que_percent_rdlb->number,blackl.blNum[i].number,blackl.blNum[i].numb_len); | |
| 1571 aci_bat_send(src_infos_psi,&resp); | |
| 1572 } | |
| 1573 } | |
| 1574 return(ret); | |
| 1575 } | |
| 1576 #endif /* TI_PS_FF_AT_P_CMD_RDLB */ | |
| 1577 /* | |
| 1578 +--------------------------------------------------------------------+ | |
| 1579 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1580 | STATE : code ROUTINE : sBAT_PercentVTS | | |
| 1581 +--------------------------------------------------------------------+ | |
| 1582 | |
| 1583 PURPOSE : | |
| 1584 */ | |
| 1585 GLOBAL T_ACI_BAT_RSLT sBAT_PercentVTS (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1586 T_BAT_cmd_send *cmd) | |
| 1587 { | |
| 1588 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1589 T_BAT_dtmf dtmf; | |
| 1590 T_BAT_percent_vts_mode mode; | |
| 1591 | |
| 1592 TRACE_FUNCTION ("sBAT_PercentVTS()"); | |
| 1593 | |
| 1594 dtmf = cmd->params.ptr_set_percent_vts->dtmf; | |
| 1595 mode = cmd->params.ptr_set_percent_vts->mode; | |
| 1596 if (mode EQ ((T_BAT_percent_vts_mode)VTS_MOD_NotPresent)) | |
| 1597 { | |
| 1598 mode = (T_BAT_percent_vts_mode)VTS_MOD_Auto; | |
| 1599 } | |
| 1600 ret = (T_ACI_BAT_RSLT)sAT_PlusVTS((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 1601 (char)dtmf,(T_ACI_VTS_MOD)mode); | |
| 1602 return(ret); | |
| 1603 } | |
| 1604 | |
| 1605 /* | |
| 1606 +--------------------------------------------------------------------+ | |
| 1607 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1608 | STATE : code ROUTINE : sBAT_PlusCSNS | | |
| 1609 +--------------------------------------------------------------------+ | |
| 1610 | |
| 1611 PURPOSE : | |
| 1612 */ | |
| 1613 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCSNS (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1614 T_BAT_cmd_send *cmd) | |
| 1615 { | |
| 1616 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1617 T_BAT_plus_csns_mode mode ; | |
| 1618 | |
| 1619 TRACE_FUNCTION ("sBAT_PlusCSNS()"); | |
| 1620 | |
| 1621 mode = cmd->params.ptr_set_plus_csns->mode; | |
| 1622 ret = (T_ACI_BAT_RSLT)sAT_PlusCSNS ((T_ACI_CMD_SRC)src_infos_psi->srcId, (T_ACI_CSNS_MOD)mode); | |
| 1623 return(ret); | |
| 1624 } | |
| 1625 | |
| 1626 /* | |
| 1627 +--------------------------------------------------------------------+ | |
| 1628 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1629 | STATE : code ROUTINE : qBAT_PlusCSNS | | |
| 1630 +--------------------------------------------------------------------+ | |
| 1631 | |
| 1632 PURPOSE : | |
| 1633 */ | |
| 1634 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCSNS (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1635 T_BAT_cmd_send *cmd) | |
| 1636 { | |
| 1637 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1638 T_ACI_CSNS_MOD mode = CSNS_MOD_NotPresent; | |
| 1639 T_BAT_cmd_response resp; | |
| 1640 T_BAT_res_que_plus_csns que_csns_buffer; | |
| 1641 | |
| 1642 TRACE_FUNCTION ("qBAT_PlusCSNS()"); | |
| 1643 | |
| 1644 resp.ctrl_response = BAT_RES_QUE_PLUS_CSNS; | |
| 1645 resp.response.ptr_que_plus_csns = &que_csns_buffer; | |
| 1646 | |
| 1647 ret = (T_ACI_BAT_RSLT)qAT_PlusCSNS ((T_ACI_CMD_SRC)src_infos_psi->srcId,&mode); | |
| 1648 if(ret EQ ((T_ACI_BAT_RSLT)AT_CMPL)) | |
| 1649 { | |
| 1650 resp.response.ptr_que_plus_csns->mode = (T_BAT_plus_csns_mode)mode; | |
| 1651 aci_bat_send(src_infos_psi,&resp); | |
| 1652 } | |
| 1653 return(ret); | |
| 1654 } | |
| 1655 | |
| 1656 #ifdef TI_PS_FF_AT_CMD_P_ECC | |
| 1657 /* | |
| 1658 +--------------------------------------------------------------------+ | |
| 1659 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1660 | STATE : code ROUTINE : sBAT_PercentECC | | |
| 1661 +--------------------------------------------------------------------+ | |
| 1662 | |
| 1663 PURPOSE : setting of additional ECC numbers by external applications | |
| 1664 */ | |
| 1665 GLOBAL T_ACI_BAT_RSLT sBAT_PercentECC(T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1666 T_BAT_cmd_send *cmd) | |
| 1667 { | |
| 1668 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1669 | |
| 1670 TRACE_FUNCTION ("sBAT_PercentECC()"); | |
| 1671 | |
| 1672 ret = (T_ACI_BAT_RSLT)sAT_PercentECC((T_ACI_CMD_SRC)src_infos_psi->srcId, | |
| 1673 cmd->params.ptr_set_percent_ecc->index, | |
| 1674 (char *)cmd->params.ptr_set_percent_ecc->number); | |
| 1675 return (ret); | |
| 1676 } | |
| 1677 #endif /* TI_PS_FF_AT_CMD_P_ECC */ | |
| 1678 /* | |
| 1679 +--------------------------------------------------------------------+ | |
| 1680 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | |
| 1681 | STATE : code ROUTINE : sBAT_PlusCHUP | | |
| 1682 +--------------------------------------------------------------------+ | |
| 1683 | |
| 1684 PURPOSE : +CHUP command (Hangs up call) | |
| 1685 */ | |
| 1686 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCHUP (T_ACI_DTI_PRC_PSI *src_infos_psi, | |
| 1687 T_BAT_cmd_send *cmd) | |
| 1688 { | |
| 1689 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; | |
| 1690 TRACE_FUNCTION ("sBAT_PlusCHUP()"); | |
| 1691 ret = (T_ACI_BAT_RSLT)sAT_PlusCHUP((T_ACI_CMD_SRC)src_infos_psi->srcId); | |
| 1692 return(ret); | |
| 1693 } | |
| 1694 | |
| 1695 | |
| 1696 |
