view src/cs/drivers/drv_app/fchg/fchg_api.c @ 548:9f191ca0051f

implemented ability to enable -D_FF_RV_EXIST_ in TIF library It is not clear if this quirk is intentional or not, but TI's production version of tif_na7_db_{fl,ir}.lib was built without -D_FF_RV_EXIST_, and as a result, the code that is present in the source for the TRACEMASK_IN_FFS feature was not compiled in, making the feature unavailable. The present change makes it possible to re-enable this code (when TIF libraries are being rebuilt from source rather than used as blobs) by setting TRACEMASK_IN_FFS=1 on the configure line. The new code is NOT enabled by default: it is not a change which we can justify inflicting on our production firmwares.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 18 Nov 2018 08:09:17 +0000
parents 3a7810ca74e2
children
line wrap: on
line source

/*
 * The implementation of our external API functions lives here.
 */

#include "fchg/fchg_api.h"
#include "fchg/fchg_env.h"
#include "fchg/fchg_messages.h"
#include "rv/rv_general.h"
#include "rvf/rvf_api.h"
#include "rvm/rvm_use_id_list.h"

T_RV_RET fchg_get_current_state(struct fchg_user_state *rstruct)
{
	if (!pwr_ctrl)
		return RV_NOT_READY;
	rstruct->chg_state = pwr_ctrl->state;
	rstruct->batt_mv = pwr_ctrl->batt_mv;
	rstruct->batt_percent =
	    pwr_ctrl->batt_thresholds[pwr_ctrl->curr_disch_thresh].remain_capa;
	return RV_OK;
}

T_RV_RET fchg_user_charge_control(enum fchg_user_charge_ctrl arg)
{
	enum pwr_msg_id msg_id;
	struct pwr_req_s *msg;

	if (!pwr_ctrl)
		return RV_NOT_READY;
	switch (arg) {
	case FCHG_CHARGE_START:
		if (!pwr_ctrl->config_present)
			return RV_NOT_READY;
		msg_id = USER_START_CHARGE_REQ;
		break;
	case FCHG_CHARGE_STOP:
		msg_id = USER_STOP_CHARGE_REQ;
		break;
	default:
		return RV_INVALID_PARAMETER;
	}
	if (rvf_get_buf(pwr_ctrl->prim_id, sizeof(struct pwr_req_s),
			(T_RVF_BUFFER **)&msg) == RVF_RED) {
		rvf_send_trace(
			"rvf_get_buf() failed in fchg_user_charge_control()",
			50, NULL_PARAM, RV_TRACE_LEVEL_ERROR, FCHG_USE_ID);
		return RV_MEMORY_ERR;
	}
	msg->header.msg_id        = msg_id;
	msg->header.src_addr_id   = pwr_ctrl->addr_id;
	msg->header.dest_addr_id  = pwr_ctrl->addr_id;
	msg->header.callback_func = NULL;
	if (rvf_send_msg(pwr_ctrl->addr_id, msg) != RV_OK) {
		rvf_send_trace("fchg_user_charge_control(): Send failed!", 40,
				NULL_PARAM, RV_TRACE_LEVEL_ERROR, FCHG_USE_ID);
		rvf_free_buf(msg);
		return RV_INTERNAL_ERR;
	}
	return RV_OK;
}