FreeCalypso > hg > fc-magnetite
annotate src/cs/drivers/drv_app/fchg/fchg_api.c @ 632:d968a3216ba0
new tangomdm build target
TCS211/Magnetite built for target leonardo runs just fine on the Tango-based
Caramel board, but a more proper tangomdm build target is preferable in order
to better market these Tango modems to prospective commercial customers. The
only differences are in GPIO and MCSI config:
* MCSI is enabled in the tangomdm build config.
* GPIO 1 is loudspeaker amplifier control on Leonardo, but on Tango platforms
it can be used for anything. On Caramel boards this GPIO should be
configured as an output driving high.
* GPIO 2 needs to be configured as Calypso input on Leonardo, but on Tango
platforms it can be used for anything. On Caramel boards this GPIO should be
configured as an output, either high or low is OK.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 04 Jan 2020 19:27:41 +0000 |
parents | 3a7810ca74e2 |
children |
rev | line source |
---|---|
336
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * The implementation of our external API functions lives here. |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 */ |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #include "fchg/fchg_api.h" |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include "fchg/fchg_env.h" |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include "fchg/fchg_messages.h" |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include "rv/rv_general.h" |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include "rvf/rvf_api.h" |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include "rvm/rvm_use_id_list.h" |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 T_RV_RET fchg_get_current_state(struct fchg_user_state *rstruct) |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 { |
345
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
14 if (!pwr_ctrl) |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
15 return RV_NOT_READY; |
336
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 rstruct->chg_state = pwr_ctrl->state; |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 rstruct->batt_mv = pwr_ctrl->batt_mv; |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 rstruct->batt_percent = |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 pwr_ctrl->batt_thresholds[pwr_ctrl->curr_disch_thresh].remain_capa; |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 return RV_OK; |
be011556e71f
FCHG: API implementation started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 } |
345
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
22 |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
23 T_RV_RET fchg_user_charge_control(enum fchg_user_charge_ctrl arg) |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
24 { |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
25 enum pwr_msg_id msg_id; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
26 struct pwr_req_s *msg; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
27 |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
28 if (!pwr_ctrl) |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
29 return RV_NOT_READY; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
30 switch (arg) { |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
31 case FCHG_CHARGE_START: |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
32 if (!pwr_ctrl->config_present) |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
33 return RV_NOT_READY; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
34 msg_id = USER_START_CHARGE_REQ; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
35 break; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
36 case FCHG_CHARGE_STOP: |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
37 msg_id = USER_STOP_CHARGE_REQ; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
38 break; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
39 default: |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
40 return RV_INVALID_PARAMETER; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
41 } |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
42 if (rvf_get_buf(pwr_ctrl->prim_id, sizeof(struct pwr_req_s), |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
43 (T_RVF_BUFFER **)&msg) == RVF_RED) { |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
44 rvf_send_trace( |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
45 "rvf_get_buf() failed in fchg_user_charge_control()", |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
46 50, NULL_PARAM, RV_TRACE_LEVEL_ERROR, FCHG_USE_ID); |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
47 return RV_MEMORY_ERR; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
48 } |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
49 msg->header.msg_id = msg_id; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
50 msg->header.src_addr_id = pwr_ctrl->addr_id; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
51 msg->header.dest_addr_id = pwr_ctrl->addr_id; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
52 msg->header.callback_func = NULL; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
53 if (rvf_send_msg(pwr_ctrl->addr_id, msg) != RV_OK) { |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
54 rvf_send_trace("fchg_user_charge_control(): Send failed!", 40, |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
55 NULL_PARAM, RV_TRACE_LEVEL_ERROR, FCHG_USE_ID); |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
56 rvf_free_buf(msg); |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
57 return RV_INTERNAL_ERR; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
58 } |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
59 return RV_OK; |
3a7810ca74e2
fchg_user_charge_control() API implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
60 } |