FreeCalypso > hg > fc-magnetite
view src/aci2/aci/aci_bat_sim.c @ 18:c8bd5a927942
src/condat3: import of "condat" tree from TCS3.2, pruned
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 27 Sep 2016 21:25:36 +0000 |
parents | 93999a60b835 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : GSM-F&D (8411) | Modul : ACI_BAT +----------------------------------------------------------------------------- | Copyright 2002 Texas Instruments Berlin, AG | All rights reserved. | | This file is confidential and a trade secret of Texas | Instruments Berlin, AG | The receipt of or possession of this file does not convey | any rights to reproduce or disclose its contents or to | manufacture, use, or sell anything it may describe, in | whole, or in part, without the specific written consent of | Texas Instruments Berlin, AG. +----------------------------------------------------------------------------- | Purpose : This BAT wrapper modul is ... | +----------------------------------------------------------------------------- */ #include "aci_all.h" /* includes prim.h, which includes p_bat.h */ #include "aci_cmh.h" /* prototypes of sAT_,qAT_,tAT_ */ #include "aci_bat_cmh.h" /* prototypes of sBAT_,qBAT_,tBAT_ */ #include "ati_cmd.h" #include "aci_cmd.h" #include "aci_bat.h" #include "psa.h" #include "cmh.h" #include "audio.h" #include "aci_ext_pers.h" #include "aci_slock.h" /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : sBAT_PlusCPIN | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT sBAT_PlusCPIN (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; char pinOld [MAX_PWD_LENGTH]={0}; char pinNew [MAX_PWD_LENGTH]={0}; char* p_pinNew; UBYTE slockBlocked = 0; TRACE_FUNCTION ("sBAT_PlusCPIN()"); p_pinNew = pinNew; memset(pinOld,0,MAX_PWD_LENGTH); memcpy(pinOld,cmd->params.ptr_set_plus_cpin->pin,cmd->params.ptr_set_plus_cpin->c_pin); if(cmd->params.ptr_set_plus_cpin->v_newpin) { memcpy(pinNew,cmd->params.ptr_set_plus_cpin->newpin,cmd->params.ptr_set_plus_cpin->c_newpin); } else { p_pinNew = NULL; } #ifdef SIM_PERS slockBlocked = AciSLockShrd.blocked; #endif ret = sAT_PlusCPIN (src_infos_psi->srcId,pinOld,p_pinNew); switch(ret) { case(AT_EXCT): case (AT_FAIL): { break; } case(AT_BUSY): { ACI_ERR_DESC(ACI_ERR_CLASS_Cme, CME_ERR_SimBusy); break; } case(AT_CMPL): { if (!slockBlocked) { ACI_ERR_DESC(ACI_ERR_CLASS_Cme, CME_ERR_Unknown); } break; } } return(ret); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : qBAT_PlusCPIN | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT qBAT_PlusCPIN (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; T_ACI_CPIN_RSLT code; T_BAT_cmd_response resp; T_BAT_res_que_plus_cpin que_cpin_buffer; TRACE_FUNCTION ("qBAT_PlusCPIN()"); ret= qAT_PlusCPIN (src_infos_psi->srcId,&code); resp.ctrl_response = BAT_RES_QUE_PLUS_CPIN; /*PIN status is requested*/ resp.response.ptr_que_plus_cpin = &que_cpin_buffer; switch (ret) { case(AT_CMPL): { resp.response.ptr_que_plus_cpin->code = code; aci_bat_send(src_infos_psi,&resp); break; } case(AT_EXCT): default : { break; } } return(ret); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : sBAT_PlusCPOL | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT sBAT_PlusCPOL (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; T_BAT_plus_cpol_format format = BAT_CPOL_FORMAT_NOT_PRESENT ; SHORT index = (SHORT)BAT_PARAMETER_NOT_PRESENT; char op[20] = {0}; char* p_op; TRACE_FUNCTION ("sBAT_PlusCPOL()"); p_op = op; index = cmd->params.ptr_set_plus_cpol->index; format = cmd->params.ptr_set_plus_cpol->format; if(cmd->params.ptr_set_plus_cpol->v_oper) { memcpy(op,cmd->params.ptr_set_plus_cpol->oper,cmd->params.ptr_set_plus_cpol->c_oper); } else { p_op = NULL; } ret=sAT_PlusCPOL(src_infos_psi->srcId,index,format,p_op, (SHORT)BAT_PARAMETER_NOT_PRESENT,CPOL_MOD_NotPresent); return(ret); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : tBAT_PlusCPOL | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT tBAT_PlusCPOL (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; SHORT lastIdx=0,usdNtry=0; T_BAT_cmd_response resp; T_BAT_res_tst_plus_cpol tst_cpol_buffer; TRACE_FUNCTION ("tBAT_PlusCPOL()"); resp.ctrl_response = BAT_RES_TST_PLUS_CPOL; resp.response.ptr_tst_plus_cpol = &tst_cpol_buffer; ret = tAT_PlusCPOL(src_infos_psi->srcId,&lastIdx,&usdNtry); if (ret EQ AT_CMPL) { resp.response.ptr_tst_plus_cpol->index1 = 1; resp.response.ptr_tst_plus_cpol->index2 = lastIdx; aci_bat_send(src_infos_psi,&resp); } return ret; } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : qBAT_PlusCPOL | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT qBAT_PlusCPOL (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; T_ACI_CPOL_LST plmnSelLst; T_BAT_cmd_response resp; T_BAT_res_que_plus_cpol que_cpol_buffer; SHORT startIdx=0,lastIdx=0; UBYTE idx; BOOL loop; TRACE_FUNCTION ("qBAT_PlusCPOL()"); resp.ctrl_response = BAT_RES_QUE_PLUS_CPOL; resp.response.ptr_que_plus_cpol = &que_cpol_buffer; switch (qAT_PlusCPOL ( src_infos_psi->srcId,1, &lastIdx,&plmnSelLst[0],CPOL_MOD_NotPresent)) { case AT_CMPL: { loop = TRUE; do { if( lastIdx EQ BAT_PARAMETER_NOT_PRESENT ) { break; } startIdx = lastIdx+1; for( idx=0; idx < MAX_OPER; idx++ ) { if( plmnSelLst[idx].index EQ BAT_PARAMETER_NOT_PRESENT ) { loop = FALSE; break; } resp.response.ptr_que_plus_cpol->format = plmnSelLst[idx].format; resp.response.ptr_que_plus_cpol->index = (U8)plmnSelLst[idx].index; resp.response.ptr_que_plus_cpol->c_oper = strlen(plmnSelLst[idx].oper); memcpy(resp.response.ptr_que_plus_cpol->oper,plmnSelLst[idx].oper,strlen(plmnSelLst[idx].oper)); aci_bat_send(src_infos_psi,&resp); } if( qAT_PlusCPOL(src_infos_psi->srcId, startIdx, &lastIdx, &plmnSelLst[0], CPOL_MOD_NotPresent) EQ AT_FAIL OR !loop) { break; } } while( loop ); return ACI_BAT_CMPL; } case AT_EXCT: { return ACI_BAT_EXCT; } default: { return ACI_BAT_FAIL; } } } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : sBAT_PlusCNUM | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT sBAT_PlusCNUM (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; TRACE_FUNCTION ("sBAT_PlusCNUM()"); if(qAT_PlusCNUM ( src_infos_psi->srcId, CNUM_MOD_NewRead) EQ AT_EXCT) { return ACI_BAT_EXCT; } return ret; } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : sBAT_PlusCFUN | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT sBAT_PlusCFUN (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; T_BAT_plus_cfun_fun fun = BAT_CFUN_FUN_NOT_PRESENT; T_BAT_plus_cfun_rst rst = BAT_CFUN_RST_NOT_PRESENT; TRACE_FUNCTION ("sBAT_PlusCFUN()"); /* * This relies on T_BAT_VAL_plus_cfun_fun being identical to * T_ACI_CFUN_FUN and T_BAT_VAL_plus_cfun_rst being identical * to T_ACI_CFUN_RST. At the time of writing, they are. */ fun=(T_ACI_CFUN_FUN)cmd->params.ptr_set_plus_cfun->fun; rst=(T_ACI_CFUN_RST)cmd->params.ptr_set_plus_cfun->rst; /* * Call the corresponding sAT function. T_ACI_BAT_RSLT is * assumed to be equivalent to T_ACI_RESULT. */ ret=(T_ACI_BAT_RSLT)sAT_PlusCFUN(src_infos_psi->srcId,fun,rst); return(ret); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : qBAT_PlusCFUN | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT qBAT_PlusCFUN (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; T_ACI_CFUN_FUN fun; TRACE_FUNCTION ("qBAT_PlusCFUN()"); /* * Call the corresponding sAT function. T_ACI_BAT_RSLT is * assumed to be equivalent to T_ACI_RESULT. */ ret=(T_ACI_BAT_RSLT)qAT_PlusCFUN(src_infos_psi->srcId,&fun); /* * If the query completes, we must send a response. */ if (ret==ACI_BAT_CMPL) { T_BAT_cmd_response resp; T_BAT_res_que_plus_cfun cfun_data; resp.ctrl_response=BAT_RES_QUE_PLUS_CFUN; resp.response.ptr_que_plus_cfun=&cfun_data; /* * This relies on T_BAT_plus_cfun_fun being identical to * T_ACI_CFUN_FUN. */ cfun_data.fun=(T_BAT_plus_cfun_fun)fun; aci_bat_send(src_infos_psi,&resp); } return(ret); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : sBAT_PlusCIMI | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT sBAT_PlusCIMI (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; CHAR imsi[MAX_IMSI_LEN+1]; T_BAT_cmd_response resp; T_BAT_res_set_plus_cimi set_cimi_buffer; TRACE_FUNCTION ("sBAT_PlusCIMI()"); resp.ctrl_response = BAT_RES_SET_PLUS_CIMI ; resp.response.ptr_set_plus_cimi = &set_cimi_buffer; ret = qAT_PlusCIMI(src_infos_psi->srcId, imsi); if (ret EQ AT_CMPL) { resp.response.ptr_set_plus_cimi->c_imsi = strlen(imsi); memcpy(resp.response.ptr_set_plus_cimi->imsi,imsi,resp.response.ptr_set_plus_cimi->c_imsi); aci_bat_send(src_infos_psi,&resp); } return ret; } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : sBAT_PlusCRSM | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT sBAT_PlusCRSM (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; T_BAT_plus_crsm_command command; UBYTE *data; USHORT lenData = 0; SHORT fileId = (SHORT)BAT_PARAMETER_NOT_PRESENT, p1 = (SHORT)BAT_PARAMETER_NOT_PRESENT, p2 = (SHORT)BAT_PARAMETER_NOT_PRESENT, p3 = (SHORT)BAT_PARAMETER_NOT_PRESENT; TRACE_FUNCTION ("sBAT_PlusCRSM()"); command = cmd->params.ptr_set_plus_crsm->command; if(cmd->params.ptr_set_plus_crsm->fileid NEQ BAT_PARAMETER_NOT_PRESENT) { fileId = (SHORT)cmd->params.ptr_set_plus_crsm->fileid; } p1 = cmd->params.ptr_set_plus_crsm->p1; p2 = cmd->params.ptr_set_plus_crsm->p2; p3 = cmd->params.ptr_set_plus_crsm->p3; data = cmd->params.ptr_set_plus_crsm->data; ret=sAT_PlusCRSM( src_infos_psi->srcId, command, fileId, p1,p2,p3, (SHORT)cmd->params.ptr_set_plus_crsm->c_data, data); return(ret); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : sBAT_PlusCSIM | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT sBAT_PlusCSIM (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; UBYTE *data; USHORT lenData = 0; TRACE_FUNCTION ("sBAT_PlusCSIM()"); data = cmd->params.ptr_set_plus_csim->command; lenData=(USHORT)cmd->params.ptr_set_plus_csim->c_command; if (lenData EQ 0) return ACI_BAT_FAIL; ret = sAT_PlusCSIM( src_infos_psi->srcId, lenData, data ); return ret; } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : qBAT_PercentATR | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT qBAT_PercentATR (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; UBYTE phase; UBYTE atr_len; UBYTE atr_info[MAX_SIM_ATR]; T_BAT_cmd_response resp; T_BAT_res_que_percent_atr que_atr_buffer; TRACE_FUNCTION ("qBAT_PercentATR()"); resp.ctrl_response = BAT_RES_QUE_PERCENT_ATR ; resp.response.ptr_que_percent_atr = &que_atr_buffer; ret = qAT_PercentATR( src_infos_psi->srcId, &phase, &atr_len, atr_info ); if(ret EQ AT_CMPL) { resp.response.ptr_que_percent_atr->phase = phase ; resp.response.ptr_que_percent_atr->c_atr = atr_len; memcpy(resp.response.ptr_que_percent_atr->atr,atr_info,resp.response.ptr_que_percent_atr->c_atr); aci_bat_send(src_infos_psi,&resp); } return(ret); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : sBAT_PercentPVRF | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT sBAT_PercentPVRF (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; CHAR pin[10]; CHAR newpin[10]; CHAR* p_newpin; TRACE_FUNCTION ("sBAT_PercentPVRF()"); p_newpin = newpin; memset(pin,0,sizeof(pin)); if (cmd->params.ptr_set_percent_pvrf->type > BAT_P_PVRF_TYPE_PUK2) { ACI_ERR_DESC(ACI_ERR_CLASS_Cme,CME_ERR_OpNotAllow); return (ACI_BAT_FAIL); } memcpy(pin,cmd->params.ptr_set_percent_pvrf->pin,cmd->params.ptr_set_percent_pvrf->c_pin); if(cmd->params.ptr_set_percent_pvrf->v_newpin) { memcpy(newpin,cmd->params.ptr_set_percent_pvrf->newpin,cmd->params.ptr_set_percent_pvrf->c_newpin); } else { p_newpin = NULL; } ret = sAT_PercentPVRF (src_infos_psi->srcId,cmd->params.ptr_set_percent_pvrf->type, pin, p_newpin); return(ret); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : qBAT_PercentPVRF | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT qBAT_PercentPVRF (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; T_BAT_cmd_response resp; T_BAT_res_que_percent_pvrf que_pvrf_buffer; SHORT pn1cnt = 0; SHORT pn2cnt = 0; SHORT pk1cnt = 0; SHORT pk2cnt = 0; T_BAT_percent_pvrf_ps1 ps1 = BAT_P_PVRF_PS1_NOT_PRESENT ; T_BAT_percent_pvrf_ps2 ps2 = BAT_P_PVRF_PS1_NOT_PRESENT ; TRACE_FUNCTION ("qBAT_PercentPVRF()"); resp.ctrl_response = BAT_RES_QUE_PERCENT_PVRF ; resp.response.ptr_que_percent_pvrf = &que_pvrf_buffer; ret = qAT_PercentPVRF(src_infos_psi->srcId, &pn1cnt, &pn2cnt, &pk1cnt, &pk2cnt,(T_ACI_PVRF_STAT *)&ps1,(T_ACI_PVRF_STAT *)&ps2); resp.response.ptr_que_percent_pvrf->pn1cnt = pn1cnt; resp.response.ptr_que_percent_pvrf->pn2cnt = pn2cnt; resp.response.ptr_que_percent_pvrf->pk1cnt = pk1cnt; resp.response.ptr_que_percent_pvrf->pk2cnt = pk2cnt; resp.response.ptr_que_percent_pvrf->ps1 = ps1; resp.response.ptr_que_percent_pvrf->ps2 = ps2; aci_bat_send(src_infos_psi,&resp); return (ACI_BAT_CMPL); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : sBAT_PercentCUST | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT sBAT_PercentCUST (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; TRACE_FUNCTION ("sBAT_PercentCUST()"); switch(cmd->params.ptr_set_percent_cust->mode) { case(BAT_P_CUST_MODE_NORMAL): case(BAT_P_CUST_MODE_BEHAVIOUR_1): { if (sAT_PercentCUST(src_infos_psi->srcId, (UBYTE)(cmd->params.ptr_set_percent_cust->mode)) EQ AT_FAIL) { return (ACI_BAT_FAIL); } break; } default: { ACI_ERR_DESC(ACI_ERR_CLASS_Cme,CME_ERR_Unknown); return (ACI_BAT_FAIL); } } return ACI_BAT_CMPL; } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : qBAT_PercentCUST | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT qBAT_PercentCUST (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; T_BAT_percent_cust_mode mode; T_BAT_cmd_response resp; T_BAT_res_que_percent_cust que_cust_buffer; TRACE_FUNCTION ("qBAT_PercentCUST()"); resp.ctrl_response = BAT_RES_QUE_PERCENT_CUST; resp.response.ptr_que_percent_cust = &que_cust_buffer; ret = qAT_PercentCUST(src_infos_psi->srcId,(T_CUST_MOD *)&mode); if (ret NEQ AT_CMPL) { return (ACI_BAT_FAIL); } resp.response.ptr_que_percent_cust->mode = mode; aci_bat_send(src_infos_psi,&resp); return(ret); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : sBAT_PercentSATCC | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT sBAT_PercentSATCC (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; TRACE_FUNCTION ("sBAT_PercentSATCC()"); ret = sAT_PercentSATCC(src_infos_psi->srcId, cmd->params.ptr_set_percent_satcc->mode); return ret; } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : qBAT_PercentSATCC | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT qBAT_PercentSATCC (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_BAT_RSLT ret = ACI_BAT_FAIL; T_BAT_percent_satcc_mode mode; T_BAT_cmd_response resp; T_BAT_res_que_percent_satcc que_satcc_buffer; TRACE_FUNCTION ("qBAT_PercentSATCC()"); resp.ctrl_response = BAT_RES_QUE_PERCENT_SATCC; resp.response.ptr_que_percent_satcc = &que_satcc_buffer; ret = qAT_PercentSATCC(src_infos_psi->srcId,(T_SAT_CC_MOD *)&mode); if(ret EQ ACI_BAT_CMPL) { resp.response.ptr_que_percent_satcc->mode = mode; aci_bat_send(src_infos_psi,&resp); } return(ret); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT | | STATE : code ROUTINE : sBAT_PlusEFRSLT | +--------------------------------------------------------------------+ PURPOSE : */ GLOBAL T_ACI_BAT_RSLT sBAT_PercentEFRSLT (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd) { T_ACI_EFRSLT_RES result; T_ACI_BAT_RSLT ret; TRACE_FUNCTION ("sBAT_PercentEFRSLT()"); /* * This relies on T_BAT_percent_efrslt_result being identical to * T_ACI_EFRSLT_RES. */ result=(T_ACI_EFRSLT_RES)cmd->params.ptr_set_percent_efrslt->result; /* * Call the corresponding ACI function. T_ACI_BAT_RSLT is * assumed to be equivalent to T_ACI_RESULT. */ ret=(T_ACI_BAT_RSLT)sAT_PercentEFRSLT(src_infos_psi->srcId,result); return(ret); }