FreeCalypso > hg > fc-tourmaline
view src/g23m-fad/app/app_bat_atcmds.c @ 244:96784b8974eb
Switch_ON(): detect charging mode by CHGPRES bit
Consider the following scenario: the phone is on, the user plugs in
the charger, and then executes the power-off operation. In the Iota
VRPC this sequence translates to a switch-off immediately followed
by another switch-on - but the CHGSTS bit doesn't get set on the second
switch-on cycle! Disassembly of Pirelli's fw shows that they check
the CHGPRES bit, and furthermore, if both CHGPRES and ONBSTS are set,
the code they pass to their modified Power_ON_Button() function is
the one for charging - so let's adopt the same CHGPRES check and
the same priority order for switch-on causes.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 03 May 2021 06:51:29 +0000 |
parents | fa8dc04885d8 |
children |
line wrap: on
line source
/* +------------------------------------------------------------------------------ | File: app_bat_atcmds.c +------------------------------------------------------------------------------ | Copyright 2004 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 : Example application for BAT -- at command command parser. +----------------------------------------------------------------------------- */ #include <string.h> /* String functions, e. g. strncpy(). */ #include "app_util.h" #include "p_bat.h" #include "typedefs.h" #include "vsi.h" #include "gdd.h" #include "bat.h" #include "bat_ctrl.h" #include "bat_intern.h" #ifdef FF_GPF_TCPIP #include "socket_api.h" #endif #include "app.h" /* * #define CO_FST_BAT_DEBUG * #ifdef CO_FST_BAT_DEBUG * LOCAL T_BAT_return bat_send (T_BAT_client clnt_hndl, T_BAT_cmd_send *cmd) * { TRACE_EVENT("bat_send()"); return BAT_OK; } * #else * EXTERN T_BAT_return bat_send (T_BAT_client clnt_hndl, T_BAT_cmd_send *cmd); * #endif */ EXTERN T_BAT_client clnt_table[][BAT_MAX_TEST_CLNT_NUM+1]; static char *handle_atcmd(app_cmd_entry_t *, char *,char *, char *, core_func_t ); static char *atcmd_help(app_cmd_entry_t *, char *,char *, char *, core_func_t ); static void exec_at_cmd(int at_cmd, char* param1, char* param2); static app_cmd_entry_t app_bat_atcmds_table[] = { { "at_bat_cmd", handle_atcmd, exec_at_cmd, "at_cmd [param]" }, { "at_bat_help", atcmd_help, 0, "" }, {0,0,0,0} }; /* ** Add all the BAT parameters into a union ... if each is defined in there own case statement the compiler ** adds them ALL individually onto the stack and takes up a LOT of space ... Oooops! */ static union { T_BAT_cmd_set_percent_als percent_als; /*< 0: 4> pointer to The set command structure of the %ALS command. */ T_BAT_cmd_set_percent_band percent_band; /*< 0: 4> pointer to The set command structure of the %BAND command. */ T_BAT_cmd_andc andc; /*< 0: 4> pointer to The set command structure of the &C command. */ T_BAT_cmd_set_plus_cacm plus_cacm; /*< 0: 4> pointer to The set command structure of the +CACM command. */ T_BAT_cmd_set_plus_camm plus_camm; /*< 0: 4> pointer to The set command structure of the +CAMM command. */ T_BAT_cmd_set_plus_caoc plus_caoc; /*< 0: 4> pointer to The set command structure of the +CAOC command. */ T_BAT_cmd_set_percent_cbhz percent_cbhz; /*< 0: 4> pointer to The set command structure of the %CBHZ command. */ T_BAT_cmd_set_plus_cbst plus_cbst; /*< 0: 4> pointer to The set command structure of the +CBST command. */ T_BAT_cmd_set_percent_ccbs percent_ccbs; /*< 0: 4> pointer to The set command structure of the %CCBS command. */ T_BAT_cmd_set_plus_ccfc plus_ccfc; /*< 0: 4> pointer to The set command structure of the +CCFC command. */ T_BAT_cmd_set_plus_cclk plus_cclk; /*< 0: 4> pointer to The set command structure of the +CCLK command. */ T_BAT_cmd_set_plus_ccug plus_ccug; /*< 0: 4> pointer to The set command structure of the +CCUG command. */ T_BAT_cmd_set_plus_ccwa plus_ccwa; /*< 0: 4> pointer to The set command structure of the +CCWA command. */ T_BAT_cmd_set_plus_ccwa_w plus_ccwa_w; /*< 0: 4> pointer to The set command structure of the +CCWA_W command. */ T_BAT_cmd_set_plus_cfun plus_cfun; /*< 0: 4> pointer to The set command structure of the +CFUN command. */ T_BAT_cmd_set_percent_cgaatt percent_cgaatt; /*< 0: 4> pointer to The set command structure of the %CGAATT command. */ T_BAT_cmd_set_plus_cgact plus_cgact; /*< 0: 4> pointer to The set command structure of the +CGACT command. */ T_BAT_cmd_set_plus_cgans plus_cgans; /*< 0: 4> pointer to The set command structure of the +CGANS command. */ T_BAT_cmd_set_plus_cgatt plus_cgatt; /*< 0: 4> pointer to The set command structure of the +CGATT command. */ T_BAT_cmd_set_percent_cgclass percent_cgclass; /*< 0: 4> pointer to The set command structure of the %CGCLASS command. */ T_BAT_cmd_set_plus_cgclass plus_cgclass; /*< 0: 4> pointer to The set command structure of the +CGCLASS command. */ T_BAT_cmd_set_plus_cgdata plus_cgdata; /*< 0: 4> pointer to The set command structure of the +CGDATA command. */ T_BAT_cmd_set_plus_cgdcont plus_cgdcont; /*< 0: 4> pointer to The set command structure of the +CGDCONT command. */ T_BAT_cmd_set_percent_cgmm percent_cgmm; /*< 0: 4> pointer to The set command structure of the %CGMM command. */ T_BAT_cmd_set_plus_cgpaddr plus_cgpaddr; /*< 0: 4> pointer to The set command structure of the +CGPADDR command. */ T_BAT_cmd_set_percent_cgpco percent_cgpco; /*< 0: 4> pointer to The set command structure of the %CGPCO command. */ T_BAT_cmd_set_percent_cgppp percent_cgppp; /*< 0: 4> pointer to The set command structure of the %CGPPP command. */ T_BAT_cmd_set_plus_cgqmin plus_cgqmin; /*< 0: 4> pointer to The set command structure of the +CGQMIN command. */ T_BAT_cmd_set_plus_cgqreq plus_cgqreq; /*< 0: 4> pointer to The set command structure of the +CGQREQ command. */ T_BAT_cmd_set_plus_cgsms plus_cgsms; /*< 0: 4> pointer to The set command structure of the +CGSMS command. */ T_BAT_cmd_set_percent_chld percent_chld; /*< 0: 4> pointer to The set command structure of the %CHLD command. */ T_BAT_cmd_set_percent_chpl percent_chpl; /*< 0: 4> pointer to The set command structure of the %CHPL command. */ T_BAT_cmd_set_percent_chpl_w percent_chpl_w; /*< 0: 4> pointer to The set command structure of the %CHPL_W command. */ T_BAT_cmd_set_plus_cind plus_cind; /*< 0: 4> pointer to The set command structure of the +CIND command. */ T_BAT_cmd_set_plus_clan plus_clan; /*< 0: 4> pointer to The set command structure of the +CLAN command. */ T_BAT_cmd_set_plus_clck plus_clck; /*< 0: 4> pointer to The set command structure of the +CLCK command. */ T_BAT_cmd_set_plus_clir plus_clir; /*< 0: 4> pointer to The set command structure of the +CLIR command. */ T_BAT_cmd_set_plus_clvl plus_clvl; /*< 0: 4> pointer to The set command structure of the +CLVL command. */ T_BAT_cmd_set_plus_cmer plus_cmer; /*< 0: 4> pointer to The set command structure of the +CMER command. */ T_BAT_cmd_set_plus_cmgc plus_cmgc; /*< 0: 4> pointer to The set command structure of the +CMGC command. */ T_BAT_cmd_set_plus_cmgd plus_cmgd; /*< 0: 4> pointer to The set command structure of the +CMGD command. */ T_BAT_cmd_set_plus_cmgl plus_cmgl; /*< 0: 4> pointer to The set command structure of the +CMGL command. */ T_BAT_cmd_set_plus_cmgl_w plus_cmgl_w; /*< 0: 4> pointer to The set command structure of the +CMGL_W command. */ T_BAT_cmd_set_plus_cmgr plus_cmgr; /*< 0: 4> pointer to The set command structure of the +CMGR command. */ T_BAT_cmd_set_plus_cmgr_w plus_cmgr_w; /*< 0: 4> pointer to The set command structure of the +CMGR_W command. */ T_BAT_cmd_set_plus_cmgs plus_cmgs; /*< 0: 4> pointer to The set command structure of the +CMGS command. */ T_BAT_cmd_set_plus_cmgw plus_cmgw; /*< 0: 4> pointer to The set command structure of the +CMGW command. */ T_BAT_cmd_set_plus_cmod plus_cmod; /*< 0: 4> pointer to The set command structure of the +CMOD command. */ T_BAT_cmd_set_plus_cmss plus_cmss; /*< 0: 4> pointer to The set command structure of the +CMSS command. */ T_BAT_cmd_set_plus_cmut plus_cmut; /*< 0: 4> pointer to The set command structure of the +CMUT command. */ T_BAT_cmd_set_plus_cmux plus_cmux; /*< 0: 4> pointer to The set command structure of the +CMUX command. */ T_BAT_cmd_set_plus_cnma plus_cnma; /*< 0: 4> pointer to The set command structure of the +CNMA command. */ T_BAT_cmd_set_plus_cnmi plus_cnmi; /*< 0: 4> pointer to The set command structure of the +CNMI command. */ T_BAT_cmd_set_percent_cops percent_cops; /*< 0: 4> pointer to The set command structure of the %COPS command. */ T_BAT_cmd_set_plus_cops plus_cops; /*< 0: 4> pointer to The set command structure of the +COPS command. */ T_BAT_cmd_set_percent_cops_w percent_cops_w; /*< 0: 4> pointer to The set command structure of the %COPS_W command. */ T_BAT_cmd_set_percent_cpals percent_cpals; /*< 0: 4> pointer to The set command structure of the %CPALS command. */ T_BAT_cmd_set_percent_cpals_w percent_cpals_w; /*< 0: 4> pointer to The set command structure of the %CPALS_W command. */ T_BAT_cmd_set_plus_cpbf plus_cpbf; /*< 0: 4> pointer to The set command structure of the +CPBF command. */ T_BAT_cmd_set_plus_cpbf_w plus_cpbf_w; /*< 0: 4> pointer to The set command structure of the +CPBF_W command. */ T_BAT_cmd_set_plus_cpbr plus_cpbr; /*< 0: 4> pointer to The set command structure of the +CPBR command. */ T_BAT_cmd_set_plus_cpbr_w plus_cpbr_w; /*< 0: 4> pointer to The set command structure of the +CPBR_W command. */ T_BAT_cmd_set_plus_cpbs plus_cpbs; /*< 0: 4> pointer to The set command structure of the +CPBS command. */ T_BAT_cmd_set_plus_cpbw plus_cpbw; /*< 0: 4> pointer to The set command structure of the +CPBW command. */ T_BAT_cmd_set_plus_cpbw_w plus_cpbw_w; /*< 0: 4> pointer to The set command structure of the +CPBW_W command. */ T_BAT_cmd_set_percent_cpcfu percent_cpcfu; /*< 0: 4> pointer to The set command structure of the %CPCFU command. */ T_BAT_cmd_set_percent_cphs percent_cphs; /*< 0: 4> pointer to The set command structure of the %CPHS command. */ T_BAT_cmd_set_plus_cpin plus_cpin; /*< 0: 4> pointer to The set command structure of the +CPIN command. */ T_BAT_cmd_set_percent_cpmb percent_cpmb; /*< 0: 4> pointer to The set command structure of the %CPMB command. */ T_BAT_cmd_set_percent_cpmbw percent_cpmbw; /*< 0: 4> pointer to The set command structure of the %CPMBW command. */ T_BAT_cmd_set_percent_cpmbw_w percent_cpmbw_w; /*< 0: 4> pointer to The set command structure of the %CPMBW_W command. */ T_BAT_cmd_set_percent_cpmb_w percent_cpmb_w; /*< 0: 4> pointer to The set command structure of the %CPMB_W command. */ T_BAT_cmd_set_plus_cpms plus_cpms; /*< 0: 4> pointer to The set command structure of the +CPMS command. */ T_BAT_cmd_set_percent_cpnums percent_cpnums; /*< 0: 4> pointer to The set command structure of the %CPNUMS command. */ T_BAT_cmd_set_percent_cpnums_w percent_cpnums_w; /*< 0: 4> pointer to The set command structure of the %CPNUMS_W command. */ T_BAT_cmd_set_plus_cpol plus_cpol; /*< 0: 4> pointer to The set command structure of the +CPOL command. */ T_BAT_cmd_set_plus_cpol_w plus_cpol_w; /*< 0: 4> pointer to The set command structure of the +CPOL_W command. */ T_BAT_cmd_set_percent_cprsm percent_cprsm; /*< 0: 4> pointer to The set command structure of the %CPRSM command. */ T_BAT_cmd_set_plus_cpuc plus_cpuc; /*< 0: 4> pointer to The set command structure of the +CPUC command. */ T_BAT_cmd_set_plus_cpuc_w plus_cpuc_w; /*< 0: 4> pointer to The set command structure of the +CPUC_W command. */ T_BAT_cmd_set_percent_cpvwi percent_cpvwi; /*< 0: 4> pointer to The set command structure of the %CPVWI command. */ T_BAT_cmd_set_plus_cpwd plus_cpwd; /*< 0: 4> pointer to The set command structure of the +CPWD command. */ T_BAT_cmd_set_plus_cres plus_cres; /*< 0: 4> pointer to The set command structure of the +CRES command. */ T_BAT_cmd_set_plus_crlp plus_crlp; /*< 0: 4> pointer to The set command structure of the +CRLP command. */ T_BAT_cmd_set_plus_crsm plus_crsm; /*< 0: 4> pointer to The set command structure of the +CRSM command. */ T_BAT_cmd_set_plus_csas plus_csas; /*< 0: 4> pointer to The set command structure of the +CSAS command. */ T_BAT_cmd_set_plus_csca plus_csca; /*< 0: 4> pointer to The set command structure of the +CSCA command. */ T_BAT_cmd_set_plus_cscb plus_cscb; /*< 0: 4> pointer to The set command structure of the +CSCB command. */ T_BAT_cmd_set_plus_cscs plus_cscs; /*< 0: 4> pointer to The set command structure of the +CSCS command. */ T_BAT_cmd_set_plus_csim plus_csim; /*< 0: 4> pointer to The set command structure of the +CSIM command. */ T_BAT_cmd_set_plus_csms plus_csms; /*< 0: 4> pointer to The set command structure of the +CSMS command. */ T_BAT_cmd_set_plus_csns plus_csns; /*< 0: 4> pointer to The set command structure of the +CSNS command. */ T_BAT_cmd_set_plus_csta plus_csta; /*< 0: 4> pointer to The set command structure of the +CSTA command. */ T_BAT_cmd_set_plus_csvm plus_csvm; /*< 0: 4> pointer to The set command structure of the +CSVM command. */ T_BAT_cmd_set_plus_ctfr plus_ctfr; /*< 0: 4> pointer to The set command structure of the +CTFR command. */ T_BAT_cmd_set_percent_ctty percent_ctty; /*< 0: 4> pointer to The set command structure of the %CTTY command. */ T_BAT_cmd_set_plus_ctzu plus_ctzu; /*< 0: 4> pointer to The set command structure of the +CTZU command. */ T_BAT_cmd_set_plus_cusd plus_cusd; /*< 0: 4> pointer to The set command structure of the +CUSD command. */ T_BAT_cmd_set_plus_cusd_w plus_cusd_w; /*< 0: 4> pointer to The set command structure of the +CUSD_W command. */ T_BAT_cmd_set_percent_cust percent_cust; /*< 0: 4> pointer to The set command structure of the %CUST command. */ T_BAT_cmd_set_percent_cwup percent_cwup; /*< 0: 4> pointer to The set command structure of the %CWUP command. */ T_BAT_cmd_at_d at_d; /*< 0: 4> pointer to The set command structure of the D command. */ T_BAT_cmd_set_percent_data percent_data; /*< 0: 4> pointer to The set command structure of the %DATA command. */ T_BAT_cmd_set_percent_dinf percent_dinf; /*< 0: 4> pointer to The set command structure of the %DINF command. */ T_BAT_cmd_set_plus_ds plus_ds; /*< 0: 4> pointer to The set command structure of the +DS command. */ T_BAT_cmd_at_d_w at_d_w; /*< 0: 4> pointer to The set command structure of the D_W command. */ T_BAT_cmd_set_percent_em percent_em; /*< 0: 4> pointer to The set command structure of the %EM command. */ T_BAT_cmd_set_plus_fap plus_fap; /*< 0: 4> pointer to The set command structure of the +FAP command. */ T_BAT_cmd_set_plus_fbo plus_fbo; /*< 0: 4> pointer to The set command structure of the +FBO command. */ T_BAT_cmd_set_plus_fbu plus_fbu; /*< 0: 4> pointer to The set command structure of the +FBU command. */ T_BAT_cmd_set_plus_fcc plus_fcc; /*< 0: 4> pointer to The set command structure of the +FCC command. */ T_BAT_cmd_set_plus_fclass plus_fclass; /*< 0: 4> pointer to The set command structure of the +FCLASS command. */ T_BAT_cmd_set_plus_fcq plus_fcq; /*< 0: 4> pointer to The set command structure of the +FCQ command. */ T_BAT_cmd_set_plus_fcr plus_fcr; /*< 0: 4> pointer to The set command structure of the +FCR command. */ T_BAT_cmd_set_plus_fct plus_fct; /*< 0: 4> pointer to The set command structure of the +FCT command. */ T_BAT_cmd_set_plus_fea plus_fea; /*< 0: 4> pointer to The set command structure of the +FEA command. */ T_BAT_cmd_set_plus_ffc plus_ffc; /*< 0: 4> pointer to The set command structure of the +FFC command. */ T_BAT_cmd_set_plus_fie plus_fie; /*< 0: 4> pointer to The set command structure of the +FIE command. */ T_BAT_cmd_set_plus_fis plus_fis; /*< 0: 4> pointer to The set command structure of the +FIS command. */ T_BAT_cmd_set_plus_fit plus_fit; /*< 0: 4> pointer to The set command structure of the +FIT command. */ T_BAT_cmd_set_plus_fli plus_fli; /*< 0: 4> pointer to The set command structure of the +FLI command. */ T_BAT_cmd_set_plus_flo plus_flo; /*< 0: 4> pointer to The set command structure of the +FLO command. */ T_BAT_cmd_set_plus_flp plus_flp; /*< 0: 4> pointer to The set command structure of the +FLP command. */ T_BAT_cmd_set_plus_fms plus_fms; /*< 0: 4> pointer to The set command structure of the +FMS command. */ T_BAT_cmd_set_plus_fns plus_fns; /*< 0: 4> pointer to The set command structure of the +FNS command. */ T_BAT_cmd_set_plus_fpa plus_fpa; /*< 0: 4> pointer to The set command structure of the +FPA command. */ T_BAT_cmd_set_plus_fpi plus_fpi; /*< 0: 4> pointer to The set command structure of the +FPI command. */ T_BAT_cmd_set_plus_fps plus_fps; /*< 0: 4> pointer to The set command structure of the +FPS command. */ T_BAT_cmd_set_plus_fpw plus_fpw; /*< 0: 4> pointer to The set command structure of the +FPW command. */ T_BAT_cmd_set_plus_frq plus_frq; /*< 0: 4> pointer to The set command structure of the +FRQ command. */ T_BAT_cmd_set_plus_fsa plus_fsa; /*< 0: 4> pointer to The set command structure of the +FSA command. */ T_BAT_cmd_set_plus_fsp plus_fsp; /*< 0: 4> pointer to The set command structure of the +FSP command. */ T_BAT_cmd_set_plus_icf plus_icf; /*< 0: 4> pointer to The set command structure of the +ICF command. */ T_BAT_cmd_set_plus_ifc plus_ifc; /*< 0: 4> pointer to The set command structure of the +IFC command. */ T_BAT_cmd_set_plus_ipr plus_ipr; /*< 0: 4> pointer to The set command structure of the +IPR command. */ T_BAT_cmd_set_percent_ppp percent_ppp; /*< 0: 4> pointer to The set command structure of the %PPP command. */ T_BAT_cmd_set_percent_pvrf percent_pvrf; /*< 0: 4> pointer to The set command structure of the %PVRF command. */ T_BAT_cmd_set_percent_rdl percent_rdl; /*< 0: 4> pointer to The set command structure of the %RDL command. */ T_BAT_cmd_set_percent_rdlb percent_rdlb; /*< 0: 4> pointer to The set command structure of the %RDLB command. */ T_BAT_cmd_set_percent_satc percent_satc; /*< 0: 4> pointer to The set command structure of the %SATC command. */ T_BAT_cmd_set_percent_sate percent_sate; /*< 0: 4> pointer to The set command structure of the %SATE command. */ T_BAT_cmd_set_percent_satr percent_satr; /*< 0: 4> pointer to The set command structure of the %SATR command. */ T_BAT_cmd_set_percent_satt percent_satt; /*< 0: 4> pointer to The set command structure of the %SATT command. */ T_BAT_cmd_set_percent_sncnt percent_sncnt; /*< 0: 4> pointer to The set command structure of the %SNCNT command. */ T_BAT_cmd_set_percent_vts percent_vts; /*< 0: 4> pointer to The set command structure of the %VTS command. */ T_BAT_cmd_set_plus_vts plus_vts; /*< 0: 4> pointer to The set command structure of the +VTS command. */ T_BAT_cmd_set_plus_ws46 plus_ws46; /*< 0: 4> pointer to The set command structure of the +WS46 command. */ T_BAT_cmd_set_percent_cniv percent_cniv; /*< 0: 4> pointer to The set command structure of the %CNIV command. */ T_BAT_no_parameter no_param; /*< 0: 4> pointer to Dummy structure */ } bat_params; static char *atcmd_help(app_cmd_entry_t *cmd_entry_ptr, char *param1, char *param2, char *param3, core_func_t core_func) { TRACE_EVENT("Available commands:"); TRACE_EVENT("at_bat_cmd atd [dialstring]"); TRACE_EVENT("at_bat_cmd ata"); TRACE_EVENT("at_bat_cmd at+clir"); // TRACE_EVENT("at_bat_cmd at+colp"); TRACE_EVENT("at_bat_cmd at+ceer"); // TRACE_EVENT("at_bat_cmd at+crc"); TRACE_EVENT("at_bat_cmd at+cmgs"); TRACE_EVENT("at_bat_cmd at+cpbs"); TRACE_EVENT("at_bat_cmd at+cpbr"); TRACE_EVENT("at_bat_cmd at+cfun"); TRACE_EVENT("at_bat_cmd at+cpbw"); TRACE_EVENT("at_bat_cmd at+cscs"); TRACE_EVENT("at_bat_cmd at+cusd"); TRACE_EVENT("at_bat_cmd at+ccfc"); TRACE_EVENT("at_bat_cmd at+cbst"); TRACE_EVENT("at_bat_help"); TRACE_EVENT("--------------------------------------"); return 0 ; } static char *handle_atcmd(app_cmd_entry_t *cmd_entry_ptr, char *param1, char *param2, char *param3, core_func_t core_func) { T_BAT_ctrl_params at_cmd; TRACE_FUNCTION("handle_atcmd()"); TRACE_ASSERT(param1 NEQ NULL); param1 = string_to_lower(param1); if (strcmp(param1, "atd") EQ 0 ) at_cmd = BAT_CMD_AT_D; else if (strcmp(param1, "ata") EQ 0 ) at_cmd = BAT_CMD_AT_A; else if (strcmp(param1, "ath") EQ 0 ) at_cmd = BAT_CMD_AT_H; else if (strcmp(param1, "at+clir") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CLIR; // else if (strcmp(param1, "at+colp") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_COLP; else if (strcmp(param1, "at+ceer") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CEER; // else if (strcmp(param1, "at+crc") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CRC; else if (strcmp(param1, "at+cmgs") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CMGS; else if (strcmp(param1, "at+cpbs") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CPBS; else if (strcmp(param1, "at+cpbr") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CPBR; else if (strcmp(param1, "at+cfun") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CFUN; else if (strcmp(param1, "at+cpbw") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CPBW; else if (strcmp(param1, "at+cscs") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CSCS; else if (strcmp(param1, "at+cusd") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CUSD; else if (strcmp(param1, "at+ccfc") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CCFC; else if (strcmp(param1, "at+cbst") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_CBST; else if (strcmp(param1, "at+cops") EQ 0 ) at_cmd = BAT_CMD_SET_PLUS_COPS; else if (strcmp(param1, "at%cniv") EQ 0 ) at_cmd = BAT_CMD_SET_PERCENT_CNIV; else { return("Not supported AT cmd"); } core_func(at_cmd, param2, param3); return 0; } GLOBAL void exec_at_cmd(int at_cmd, char* param1, char* param2) { T_BAT_cmd_send send_cmd; T_BAT_return ret = BAT_ERROR; T_BAT_client client = BAT_CONTROL_CHANNEL; U8 clnt_hndl_upper = 0; U8 clnt_hndl_lower = 0; bat_params.no_param.bat_dummy = 0; TRACE_FUNCTION("exec_at_cmd()"); client = get_item(param1, 0, FALSE); clnt_hndl_upper = (U8)((0xff00&client)>>8); clnt_hndl_lower = (U8)(0x00ff&client); if((clnt_hndl_lower >= BAT_MAX_TEST_CLNT_NUM) OR (clnt_hndl_upper >= BAT_MAX_TEST_INST_NUM)) { TRACE_ERROR("Input client out of bounds"); return; } if(clnt_table[clnt_hndl_upper][clnt_hndl_lower] EQ 0) { TRACE_ERROR("client handle not valid - no client handle"); return; } #if 0 client = clnt_table[0][0]; #ifndef CO_FST_BAT_DEBUG assert(client != 0); #endif #endif send_cmd.ctrl_params = (T_BAT_ctrl_params)at_cmd; switch(at_cmd) { case BAT_CMD_AT_D: { char number[] = "+493039831178;"; if (param1[0] == 0) { strcpy((char *)&(bat_params.at_d.dial_string), (const char *)param1); bat_params.at_d.c_dial_string = strlen(param1); } else { strcpy((char *)&(bat_params.at_d.dial_string), (const char *)number); bat_params.at_d.c_dial_string = strlen(number); } send_cmd.params.ptr_at_d = &bat_params.at_d; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_AT_A: { send_cmd.params.ptr_at_a = &bat_params.no_param; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_AT_H: { send_cmd.params.ptr_at_h = &bat_params.no_param; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_SET_PLUS_CLIR: { if (param1[0] == '0') bat_params.plus_clir.n = BAT_CLIR_N_SUBSCRIPTION; else if (param1[0] == '1') bat_params.plus_clir.n = BAT_CLIR_N_INVOCATION; else if (param1[0] == '2') bat_params.plus_clir.n = BAT_CLIR_N_SUPPRESSION; else bat_params.plus_clir.n = BAT_CLIR_N_SUPPRESSION; /* No, or an Invalid, Parameter was passed in */ send_cmd.params.ptr_set_plus_clir = &bat_params.plus_clir; ret = bat_send(client, &send_cmd); break; } #ifdef _SIMULATION_ #pragma message( __TODO__"BAT_CMD_SET_PLUS_COLP not defined !" ) #endif /* case BAT_CMD_SET_PLUS_COLP: { ret = bat_send(client, &send_cmd); break; } */ case BAT_CMD_SET_PLUS_CEER: { /* T_BAT_cmd_set_plus_ceer ceer; */ #ifdef _SIMULATION_ #pragma message( __TODO__"T_BAT_cmd_set_plus_ceer not defined !" ) #endif /* ceer. send_cmd.params.ptr_set_plus_ceer = &ceer; */ TRACE_ASSERT(0); ret = bat_send(client, &send_cmd); break; } #ifdef _SIMULATION_ #pragma message( __TODO__"BAT_CMD_SET_PLUS_CRC not defined !" ) #endif /* case BAT_CMD_SET_PLUS_CRC: { ret = bat_send(client, &send_cmd); break; } */ case BAT_CMD_SET_PLUS_CMGS: { U8 pdu[] = "0891941067000044F301000D91941097614246F8000011C8329BFD06098354103B2D9687E579"; strcpy((char *)&(bat_params.plus_cmgs.pdu), (const char *)pdu); bat_params.plus_cmgs.length = strlen((const char *)pdu); /* total length */ bat_params.plus_cmgs.c_pdu = bat_params.plus_cmgs.length - 9; /* length without SCA */ send_cmd.params.ptr_set_plus_cmgs = &bat_params.plus_cmgs; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_SET_PLUS_CPBS: { bat_params.plus_cpbs.storage = BAT_STORAGE_AD; send_cmd.params.ptr_set_plus_cpbs = &bat_params.plus_cpbs; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_SET_PLUS_CPBR: { bat_params.plus_cpbr.index1 = 1; bat_params.plus_cpbr.index2 = 2; send_cmd.params.ptr_set_plus_cpbr = &bat_params.plus_cpbr; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_SET_PLUS_CFUN: { bat_params.plus_cfun.fun = BAT_CFUN_FUN_FULL; bat_params.plus_cfun.rst = BAT_CFUN_RST_NOT_PRESENT; send_cmd.params.ptr_set_plus_cfun = &bat_params.plus_cfun; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_SET_PLUS_CPBW: { U8 number[] ="03076903367"; U8 text[] = "Hello World"; bat_params.plus_cpbw.index = 2; bat_params.plus_cpbw.v_number = TRUE; strcpy((char *)&(bat_params.plus_cpbw.number), (const char *)number); bat_params.plus_cpbw.c_number = strlen((const char *)number); bat_params.plus_cpbw.v_text = TRUE; strcpy((char *)&(bat_params.plus_cpbw.text), (const char *)text); bat_params.plus_cpbw.c_text = strlen((const char *)text); bat_params.plus_cpbw.type = 129; send_cmd.params.ptr_set_plus_cpbw = &bat_params.plus_cpbw; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_SET_PLUS_CSCS: { bat_params.plus_cscs.cs = BAT_CSCS_CS_UCS2; send_cmd.params.ptr_set_plus_cscs = &bat_params.plus_cscs; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_SET_PLUS_CUSD: { U8 string[] = "00230031003100310023"; bat_params.plus_cusd.n = (T_BAT_plus_cusd_n)1; #ifdef _SIMULATION_ #pragma message( __TODO__"T_BAT_VAL_plus_cusd_n: two values are missing in (0,1)" ) #endif bat_params.plus_cusd.v_str = (U8)TRUE; strcpy((char *)&(bat_params.plus_cusd.str), (const char *)string); bat_params.plus_cusd.c_str = strlen((const char *)string); bat_params.plus_cusd.dcs = 15; send_cmd.params.ptr_set_plus_cusd = &bat_params.plus_cusd; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_SET_PLUS_CCFC: { bat_params.plus_ccfc.reason = BAT_CCFC_REASON_CFU; bat_params.plus_ccfc.mode = BAT_CCFC_MODE_ERASURE; bat_params.plus_ccfc.v_number = (U8)FALSE; bat_params.plus_ccfc.type = (S16)BAT_PARAMETER_NOT_PRESENT; bat_params.plus_ccfc.bearer_class = BAT_CCFC_CLASS_VCEDATFAX; /* default */ bat_params.plus_ccfc.v_subaddr = (U8)FALSE; bat_params.plus_ccfc.satype = (S16)BAT_PARAMETER_NOT_PRESENT; bat_params.plus_ccfc.time = (T_BAT_plus_ccfc_time)BAT_CCFC_TIME_NOT_PRESENT; send_cmd.params.ptr_set_plus_ccfc = &bat_params.plus_ccfc; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_SET_PLUS_CBST: { bat_params.plus_cbst.speed = BAT_CBST_SPD_9600_V110; bat_params.plus_cbst.name = BAT_CBST_NAM_CBST_NAM_ASYNCH; bat_params.plus_cbst.ce = BAT_CBST_CE_CBST_CE_NONTRANSPARENT; send_cmd.params.ptr_set_plus_cbst= &bat_params.plus_cbst; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_SET_PLUS_COPS: { bat_params.plus_cops.mode = BAT_COPS_MODE_AUTO; bat_params.plus_cops.format = BAT_COPS_FORMAT_NOT_PRESENT; bat_params.plus_cops.v_oper = FALSE; bat_params.plus_cops.c_oper = 0; send_cmd.params.ptr_set_plus_cops = &bat_params.plus_cops; ret = bat_send(client, &send_cmd); break; } case BAT_CMD_SET_PERCENT_CNIV: { bat_params.percent_cniv.mode = BAT_CNIV_MODE_ON; send_cmd.params.ptr_set_percent_cniv= &bat_params.percent_cniv; ret = bat_send(client, &send_cmd); break; } default: TRACE_ASSERT(0); return; } TRACE_ASSERT(ret == BAT_OK); } char *app_handle_at_command(char *command) { return app_handle_command(command, app_bat_atcmds_table); } /* EOF */