annotate src/cs/drivers/drv_app/fchg/bsim_etm_cmd.c @ 303:f76436d19a7a default tip

!GPRS config: fix long-standing AT+COPS chance hanging bug There has been a long-standing bug in FreeCalypso going back years: sometimes in the AT command bring-up sequence of an ACI-only MS, the AT+COPS command would produce only a power scan followed by cessation of protocol stack activity (only L1 ADC traces), instead of the expected network search sequence. This behaviour was seen in different FC firmware versions going back to Citrine, and seemed to follow some law of chance, not reliably repeatable. This bug has been tracked down and found to be specific to !GPRS configuration, stemming from our TCS2/TCS3 hybrid and reconstruction of !GPRS support that was bitrotten in TCS3.2/LoCosto version. ACI module psa_mms.c, needed only for !GPRS, was missing in the TCS3 version and had to be pulled from TCS2 - but as it turns out, there is a new field in the MMR_REG_REQ primitive that needs to be set correctly, and that psa_mms.c module is the place where this initialization needed to be added.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 08 Jun 2023 08:23:37 +0000
parents aec644728174
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
256
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * In this module we are going to implement our handling of
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * ETM_BSIM command packets sent from a development host.
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 */
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include "fchg/fchg_env.h"
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include "fchg/fchg_func_i.h"
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include "fchg/bsim_func_i.h"
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include "fchg/bsim_etm_cmd.h"
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include "rv/rv_general.h"
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include "rvf/rvf_api.h"
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include "rvm/rvm_use_id_list.h"
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include "etm/etm.h"
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #include "etm/etm_api.h"
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 static void bsim_cmd_query(T_ETM_PKT *resp)
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 etm_pkt_put8(resp, pwr_ctrl->state);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 etm_pkt_put8(resp,
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 pwr_ctrl->batt.percent_thresh[pwr_ctrl->curr_disch_thresh].remain_capa);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 etm_pkt_put8(resp, pwr_ctrl->bsim.start_enable);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 resp->status = BSIM_STAT_OK;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 static void bsim_cmd_discharge(T_ETM_PKT *resp, UINT8 set_percent)
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 UINT16 i;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 switch (pwr_ctrl->state) {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 case FCHG_STATE_NO_EXT_PWR:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 case FCHG_STATE_PWR_PLUG_TIMER:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 case FCHG_STATE_READY_TO_CHARGE:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 case FCHG_STATE_READY_TO_RECHARGE:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 case FCHG_STATE_RECHARGE_TIMER:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 case FCHG_STATE_NO_CHARGING:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 break;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 default:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 resp->status = BSIM_ERR_WRONG_STATE;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 return;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 for (i = 0; i < pwr_ctrl->nb_percent_thresh; i++) {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 if (pwr_ctrl->batt.percent_thresh[i].remain_capa ==
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 set_percent)
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 break;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 if (i >= pwr_ctrl->nb_percent_thresh) {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 resp->status = BSIM_ERR_INV_PERCENT;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 return;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 if (i <= pwr_ctrl->curr_disch_thresh) {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 resp->status = BSIM_ERR_INV_DISCHARGE;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 return;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 pwr_ctrl->curr_disch_thresh = i;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 if (pwr_ctrl->event_handler)
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 pwr_ctrl->event_handler(FCHG_EVENT_DISCHARGE);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 resp->status = BSIM_STAT_OK;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 static void bsim_cmd_chg_start(T_ETM_PKT *resp)
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 switch (pwr_ctrl->state) {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 case FCHG_STATE_READY_TO_CHARGE:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 case FCHG_STATE_READY_TO_RECHARGE:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 break;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 default:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 resp->status = BSIM_ERR_WRONG_STATE;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 return;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 rvf_send_trace("BSIM: simulated charging start", 30, NULL_PARAM,
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 RV_TRACE_LEVEL_DEBUG_MEDIUM, FCHG_USE_ID);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 pwr_ctrl->state = FCHG_STATE_I2V_CAL_1;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 resp->status = BSIM_STAT_OK;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 static void bsim_cmd_chg_ci2cv(T_ETM_PKT *resp)
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 if (pwr_ctrl->state != FCHG_STATE_CI_CHARGING) {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 resp->status = BSIM_ERR_WRONG_STATE;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 return;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 rvf_send_trace("BSIM: simulated charging CI->CV", 31, NULL_PARAM,
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 RV_TRACE_LEVEL_DEBUG_MEDIUM, FCHG_USE_ID);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 pwr_ctrl->state = FCHG_STATE_CV_CHARGING;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 resp->status = BSIM_STAT_OK;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 static void bsim_cmd_chg_complete(T_ETM_PKT *resp)
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 if (pwr_ctrl->state != FCHG_STATE_CV_CHARGING) {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 resp->status = BSIM_ERR_WRONG_STATE;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 return;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 rvf_send_trace("BSIM: simulated charging complete", 33, NULL_PARAM,
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 RV_TRACE_LEVEL_DEBUG_MEDIUM, FCHG_USE_ID);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 pwr_init_discharge();
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 pwr_ctrl->state = FCHG_STATE_READY_TO_RECHARGE;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 if (pwr_ctrl->event_handler)
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 pwr_ctrl->event_handler(FCHG_EVENT_CHARGING_COMPLETE);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 resp->status = BSIM_STAT_OK;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 static void bsim_cmd_set_ichg(T_ETM_PKT *resp, UINT16 ichg)
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 pwr_ctrl->ci_ichg = ichg;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 pwr_ctrl->ichg_average = ichg;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 resp->status = BSIM_STAT_OK;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 static void bsim_cmd_start_enable(T_ETM_PKT *resp, UINT8 setting)
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 pwr_ctrl->bsim.start_enable = setting;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 resp->status = BSIM_STAT_OK;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 void bsim_process_etm(T_ETM_DATA_READY *msg)
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 T_ETM_PKT *resp;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 uint8 fid;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 resp = (T_ETM_PKT *) etm_malloc(sizeof(T_ETM_PKT));
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 if (!resp) {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 rvf_send_trace(
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 "Unable to respond to ETM_BSIM: etm_malloc() failed", 50,
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 NULL_PARAM, RV_TRACE_LEVEL_ERROR, FCHG_USE_ID);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 return;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 /* init response packet */
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 resp->mid = ETM_BSIM;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 resp->size = 0;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 resp->index = 0;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 /* start processing command */
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 fid = msg->data[0];
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 etm_pkt_put8(resp, fid);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 /* command dispatch */
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 switch (fid) {
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 case BSIM_CMD_QUERY:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 bsim_cmd_query(resp);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 break;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 case BSIM_CMD_DISCHARGE:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 bsim_cmd_discharge(resp, etm_get8(msg->data + 1));
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 break;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 case BSIM_CMD_CHG_START:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 bsim_cmd_chg_start(resp);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 break;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 case BSIM_CMD_CHG_CI2CV:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 bsim_cmd_chg_ci2cv(resp);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 break;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 case BSIM_CMD_CHG_COMPLETE:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 bsim_cmd_chg_complete(resp);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 break;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 case BSIM_CMD_SET_ICHG:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 bsim_cmd_set_ichg(resp, etm_get16(msg->data + 1));
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 break;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 case BSIM_CMD_START_ENABLE:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 bsim_cmd_start_enable(resp, etm_get8(msg->data + 1));
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 break;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 default:
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 resp->status = BSIM_ERR_BAD_CMD;
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 }
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 etm_pkt_send(resp);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 etm_free(resp);
aec644728174 FCHG BSIM: ETM connection implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 }