FreeCalypso > hg > fc-tourmaline
annotate src/cs/drivers/drv_app/fchg/bsim_etm_cmd.c @ 281:a75eefbf8be4
Phone boot with PWON: weed out short button presses
Every standard end user phone has a design provision, most naturally
implemented in firmware, whereby the PWON button effects a boot only
if it is held down long enough - short presses of this PWON button
are detected, assumed to be spurious and cause the fw to power back off
instead of proceeding with boot. The present change introduces this
standard function in FreeCalypso.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 24 Sep 2021 02:03:08 +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 } |