FreeCalypso > hg > fc-tourmaline
annotate src/cs/drivers/drv_app/fchg/bsim_etm_cmd.c @ 275:79cfefc1e2b4
audio mode load: gracefully handle mode files of wrong AEC version
Unfortunately our change of enabling L1_NEW_AEC (which is necessary
in order to bring our Calypso ARM fw into match with the underlying
DSP reality) brings along a change in the audio mode file binary
format and file size - all those new tunable AEC parameters do need
to be stored somewhere, after all. But we already have existing
mode files in the old format, and setting AEC config to garbage when
loading old audio modes (which is what would happen without the
present change) is not an appealing proposition.
The solution implemented in the present change is as follows: the
audio mode loading code checks the file size, and if it differs
from the active version of T_AUDIO_MODE, the T_AUDIO_AEC_CFG structure
is cleared - set to the default (disabled AEC) for the compiled type
of AEC. We got lucky in that this varying T_AUDIO_AEC_CFG structure
sits at the end of T_AUDIO_MODE!
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 30 Jul 2021 02:55:48 +0000 |
parents | aec644728174 |
children |
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 } |