FreeCalypso > hg > fc-tourmaline
comparison src/cs/drivers/drv_app/fchg/fchg_task.c @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:23:26 +0000 |
parents | |
children | 032a561fab2b |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4e78acac3d88 |
---|---|
1 /* | |
2 * The FCHG task's core function lives here. | |
3 */ | |
4 | |
5 #include "fchg/fchg_env.h" | |
6 #include "fchg/fchg_func_i.h" | |
7 #include "rv/rv_general.h" | |
8 #include "rvf/rvf_api.h" | |
9 #include "rvm/rvm_use_id_list.h" | |
10 #include "abb/abb.h" | |
11 | |
12 static void set_initial_state(void) | |
13 { | |
14 SYS_UWORD16 abb_status; | |
15 | |
16 abb_status = ABB_Read_Status(); | |
17 if (abb_status & CHGPRES) { | |
18 if (pwr_ctrl->config_present) | |
19 pwr_ctrl->state = FCHG_STATE_READY_TO_CHARGE; | |
20 else | |
21 pwr_ctrl->state = FCHG_STATE_NO_CHARGING; | |
22 } else | |
23 pwr_ctrl->state = FCHG_STATE_NO_EXT_PWR; | |
24 } | |
25 | |
26 T_RV_RET fchg_core(void) | |
27 { | |
28 BOOLEAN error_occured = FALSE; | |
29 T_RV_HDR *msg_ptr; | |
30 | |
31 rvf_send_trace("FCHG task: Initialization", 25, NULL_PARAM, | |
32 RV_TRACE_LEVEL_DEBUG_LOW, FCHG_USE_ID); | |
33 pwr_load_ffs_batt_table(); | |
34 pwr_load_ffs_charging_config(); | |
35 set_initial_state(); | |
36 pwr_init_discharge(); | |
37 | |
38 /* loop to process messages */ | |
39 while (error_occured == FALSE) | |
40 { | |
41 /* Wait for the necessary events (infinite wait for a msg in the mailbox 0). */ | |
42 UINT16 received_event = rvf_wait (0xffff, 0); | |
43 | |
44 /* If an event related to mailbox 0 is received, then */ | |
45 if (received_event & RVF_TASK_MBOX_0_EVT_MASK) | |
46 { | |
47 /* Read the message in the driver mailbox and delegate action..*/ | |
48 msg_ptr = (T_RV_HDR *) rvf_read_mbox(FCHG_MAILBOX); | |
49 if (msg_ptr) { | |
50 pwr_process_message(msg_ptr); | |
51 rvf_free_buf ((void *) msg_ptr); | |
52 } | |
53 } | |
54 | |
55 /* Timers */ | |
56 if (received_event & RVF_TIMER_0_EVT_MASK) | |
57 pwr_handle_timer(); | |
58 | |
59 } // end of while | |
60 return RV_OK; | |
61 } |