FreeCalypso > hg > fc-tourmaline
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 |
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 } |