FreeCalypso > hg > fc-tourmaline
annotate src/cs/drivers/drv_app/fchg/bsim_etm_cmd.c @ 292:0f688d07b068
block deep sleep on activity in new PWT and vibrator drivers
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 27 Mar 2022 00:29:19 +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 } |