view src/cs/drivers/drv_app/fchg/fchg_task.c @ 122:88229017434c
mmiSettings.h: bogotab fixes
author |
Mychaela Falconia <falcon@freecalypso.org> |
date |
Tue, 10 Nov 2020 05:59:07 +0000 (2020-11-10) |
parents |
032a561fab2b |
children |
c336ed5691a5 |
line source
/*
* The FCHG task's core function lives here.
*/
#include "fchg/fchg_env.h"
#include "fchg/fchg_func_i.h"
#include "rv/rv_general.h"
#include "rvf/rvf_api.h"
#include "rvm/rvm_use_id_list.h"
#include "abb/abb.h"
/* startup synchronization with MMI task in GPF land */
int fchg_is_running;
static void set_initial_state(void)
{
SYS_UWORD16 abb_status;
abb_status = ABB_Read_Status();
if (abb_status & CHGPRES) {
if (pwr_ctrl->config_present)
pwr_ctrl->state = FCHG_STATE_READY_TO_CHARGE;
else
pwr_ctrl->state = FCHG_STATE_NO_CHARGING;
} else
pwr_ctrl->state = FCHG_STATE_NO_EXT_PWR;
}
T_RV_RET fchg_core(void)
{
BOOLEAN error_occured = FALSE;
T_RV_HDR *msg_ptr;
rvf_send_trace("FCHG task: Initialization", 25, NULL_PARAM,
RV_TRACE_LEVEL_DEBUG_LOW, FCHG_USE_ID);
pwr_load_ffs_batt_table();
pwr_load_ffs_charging_config();
set_initial_state();
pwr_init_discharge();
fchg_is_running = 1;
/* loop to process messages */
while (error_occured == FALSE)
{
/* Wait for the necessary events (infinite wait for a msg in the mailbox 0). */
UINT16 received_event = rvf_wait (0xffff, 0);
/* If an event related to mailbox 0 is received, then */
if (received_event & RVF_TASK_MBOX_0_EVT_MASK)
{
/* Read the message in the driver mailbox and delegate action..*/
msg_ptr = (T_RV_HDR *) rvf_read_mbox(FCHG_MAILBOX);
if (msg_ptr) {
pwr_process_message(msg_ptr);
rvf_free_buf ((void *) msg_ptr);
}
}
/* Timers */
if (received_event & RVF_TIMER_0_EVT_MASK)
pwr_handle_timer();
} // end of while
return RV_OK;
}