line source
/*******************************************************************************
*
* pwr_messages.c
*
* Purpose: Contains functions used by PWR to send events
* to the upper layer (MMI)
*
* Author Candice Bazanegue (c-brille@ti.com)
*
* (C) Texas Instruments 2001
*
******************************************************************************/
#include "rv/rv_defined_swe.h" // for RVM_PWR_SWE
#ifdef RVM_PWR_SWE
#include "rvm/rvm_use_id_list.h"
#include "rvf/rvf_api.h"
#include "pwr/pwr_messages.h"
#include "rv/rv_general.h"
#include "spi/spi_env.h"
/*******************************************************************************
**
** Function pwr_send_charger_plug_event
**
** Description This function is used to send a 'POWER_CHARGER_PLUG_IND'
** event to the upper layer.
**
*******************************************************************************/
T_RV_RET pwr_send_charger_plug_event(void)
{
T_RV_HDR *msg_p;
if (pwr_env_ctrl_blk->power_info.info_enable == TRUE)
{
if (rvf_get_buf (pwr_env_ctrl_blk->prim_id, sizeof (T_RV_HDR),(void **) &msg_p) == RVF_RED)
{
rvf_send_trace ("PWR ERROR: Not enough memory",
28,
NULL_PARAM,
RV_TRACE_LEVEL_ERROR,
PWR_USE_ID);
return (RV_MEMORY_ERR);
}
msg_p->msg_id = POWER_CHARGER_PLUG_IND;
msg_p->callback_func = NULL;
PWR_SEND_MESSAGE(pwr_env_ctrl_blk->power_info.return_path, msg_p);
}
return (RV_OK);
}
/*******************************************************************************
**
** Function pwr_send_charger_unplug_event
**
** Description This function is used to send a 'POWER_CHARGER_UNPLUG_IND'
** event to the upper layer.
**
**
*******************************************************************************/
T_RV_RET pwr_send_charger_unplug_event(void)
{
T_RV_HDR *msg_p;
if (pwr_env_ctrl_blk->power_info.info_enable == TRUE)
{
if (rvf_get_buf (pwr_env_ctrl_blk->prim_id, sizeof (T_RV_HDR),(void **) &msg_p) == RVF_RED)
{
rvf_send_trace ("PWR ERROR: Not enough memory",
28,
NULL_PARAM,
RV_TRACE_LEVEL_ERROR,
PWR_USE_ID);
return (RV_MEMORY_ERR);
}
msg_p->msg_id = POWER_CHARGER_UNPLUG_IND;
msg_p->callback_func = NULL;
PWR_SEND_MESSAGE(pwr_env_ctrl_blk->power_info.return_path, msg_p);
}
return (RV_OK);
}
/*******************************************************************************
**
** Function pwr_send_CI_charge_start_event
**
** Description This function is used to send a 'POWER_BAT_CI_CHARGE_START_IND'
** event to the upper layer.
**
**
*******************************************************************************/
T_RV_RET pwr_send_CI_charge_start_event(void)
{
T_RV_HDR *msg_p;
if (pwr_env_ctrl_blk->power_info.info_enable == TRUE)
{
if (rvf_get_buf (pwr_env_ctrl_blk->prim_id, sizeof (T_RV_HDR),(void **) &msg_p) == RVF_RED)
{
rvf_send_trace ("PWR ERROR: Not enough memory",
28,
NULL_PARAM,
RV_TRACE_LEVEL_ERROR,
PWR_USE_ID);
return (RV_MEMORY_ERR);
}
msg_p->msg_id = POWER_BAT_CI_CHARGE_START_IND;
msg_p->callback_func = NULL;
PWR_SEND_MESSAGE(pwr_env_ctrl_blk->power_info.return_path, msg_p);
}
return (RV_OK);
}
/*******************************************************************************
**
** Function pwr_send_CV_charge_start_event
**
** Description This function is used to send a 'POWER_BAT_CV_CHARGE_START_IND'
** event to the upper layer.
**
**
*******************************************************************************/
T_RV_RET pwr_send_CV_charge_start_event(void)
{
T_RV_HDR *msg_p;
if (pwr_env_ctrl_blk->power_info.info_enable == TRUE)
{
if (rvf_get_buf (pwr_env_ctrl_blk->prim_id, sizeof (T_RV_HDR),(void **) &msg_p) == RVF_RED)
{
rvf_send_trace ("PWR ERROR: Not enough memory",
28,
NULL_PARAM,
RV_TRACE_LEVEL_ERROR,
PWR_USE_ID);
return (RV_MEMORY_ERR);
}
msg_p->msg_id = POWER_BAT_CV_CHARGE_START_IND;
msg_p->callback_func = NULL;
PWR_SEND_MESSAGE(pwr_env_ctrl_blk->power_info.return_path, msg_p);
}
return (RV_OK);
}
/*******************************************************************************
**
** Function pwr_send_charge_stop_event
**
** Description This function is used to send a 'POWER_BAT_CHARGE_STOP_IND'
** event to the upper layer.
**
**
*******************************************************************************/
T_RV_RET pwr_send_charge_stop_event(void)
{
T_RV_HDR *msg_p;
if (pwr_env_ctrl_blk->power_info.info_enable == TRUE)
{
if (rvf_get_buf (pwr_env_ctrl_blk->prim_id, sizeof (T_RV_HDR),(void **) &msg_p) == RVF_RED)
{
rvf_send_trace ("PWR ERROR: Not enough memory",
28,
NULL_PARAM,
RV_TRACE_LEVEL_ERROR,
PWR_USE_ID);
return (RV_MEMORY_ERR);
}
msg_p->msg_id = POWER_BAT_CHARGE_STOP_IND;
msg_p->callback_func = NULL;
PWR_SEND_MESSAGE(pwr_env_ctrl_blk->power_info.return_path, msg_p);
}
return (RV_OK);
}
/*******************************************************************************
**
** Function pwr_send_charge_not_possible_event
**
** Description This function is used to send a 'POWER_BAT_CHARGE_NOT_POSSIBLE_IND'
** event to the upper layer.
**
**
*******************************************************************************/
T_RV_RET pwr_send_charge_not_possible_event(T_BAT_PROBLEM charge_problem)
{
T_PWR_BAT_CHARGE_NOT_POSSIBLE *msg_p;
if (pwr_env_ctrl_blk->power_info.info_enable == TRUE)
{
if (rvf_get_buf (pwr_env_ctrl_blk->prim_id, sizeof (T_PWR_BAT_CHARGE_NOT_POSSIBLE),(void **) &msg_p) == RVF_RED)
{
rvf_send_trace ("PWR ERROR: Not enough memory",
28,
NULL_PARAM,
RV_TRACE_LEVEL_ERROR,
PWR_USE_ID);
return (RV_MEMORY_ERR);
}
(msg_p->hdr).msg_id= POWER_BAT_CHARGE_NOT_POSSIBLE_IND;
(msg_p->hdr).callback_func= NULL;
msg_p->problem= charge_problem;
PWR_SEND_MESSAGE(pwr_env_ctrl_blk->power_info.return_path, msg_p);
}
return (RV_OK);
}
/*******************************************************************************
**
** Function pwr_send_bat_discharge_event
**
** Description This function is used to send a 'POWER_BAT_DISCHARGE_LEVEL_IND'
** event to the upper layer.
**
**
*******************************************************************************/
T_RV_RET pwr_send_bat_discharge_event(T_PWR_PERCENT remaining_capacity)
{
T_PWR_BAT_DISCHARGE_LEVEL *msg_p;
if (pwr_env_ctrl_blk->power_info.info_enable == TRUE)
{
if (rvf_get_buf (pwr_env_ctrl_blk->prim_id, sizeof (T_PWR_BAT_DISCHARGE_LEVEL),(void **) &msg_p) == RVF_RED)
{
rvf_send_trace ("PWR ERROR: Not enough memory",
28,
NULL_PARAM,
RV_TRACE_LEVEL_ERROR,
PWR_USE_ID);
return (RV_MEMORY_ERR);
}
(msg_p->hdr).msg_id= POWER_BAT_DISCHARGE_LEVEL_IND;
(msg_p->hdr).callback_func= NULL;
msg_p->remaining_capacity= remaining_capacity;
PWR_SEND_MESSAGE(pwr_env_ctrl_blk->power_info.return_path, msg_p);
}
return (RV_OK);
}
/*******************************************************************************
**
** Function pwr_send_low_bat_event
**
** Description This function is used to send a 'POWER_LOW_BAT_ALERT_IND'
** event to the upper layer.
**
**
*******************************************************************************/
T_RV_RET pwr_send_low_bat_event(T_PWR_PERCENT remaining_capacity)
{
T_PWR_LOW_BAT_ALERT *msg_p;
if (rvf_get_buf (pwr_env_ctrl_blk->prim_id, sizeof (T_PWR_LOW_BAT_ALERT),(void **) &msg_p) == RVF_RED)
{
rvf_send_trace ("PWR ERROR: Not enough memory",
28,
NULL_PARAM,
RV_TRACE_LEVEL_ERROR,
PWR_USE_ID);
return (RV_MEMORY_ERR);
}
(msg_p->hdr).msg_id= POWER_LOW_BAT_ALERT_IND;
(msg_p->hdr).callback_func = NULL;
msg_p->remaining_capacity= remaining_capacity;
PWR_SEND_MESSAGE(pwr_env_ctrl_blk->power_alert.return_path, msg_p);
return (RV_OK);
}
/*******************************************************************************
**
** Function pwr_send_battery_info
**
** Description This function is used to send a 'POWER_BAT_INFO_STATUS'
** event to the upper layer.
**
**
*******************************************************************************/
T_RV_RET pwr_send_battery_info(UINT16 battery_voltage, UINT16 battery_temperature,
UINT16 battery_charger_current,
BOOLEAN is_charger_plugged,
T_PWR_CHARGING_STATE is_charge_started,
T_PWR_PERCENT remaining_capacity)
{
T_PWR_BAT_INFO_STATUS *msg_p;
if (rvf_get_buf (pwr_env_ctrl_blk->prim_id, sizeof (T_PWR_BAT_INFO_STATUS),(void **) &msg_p) == RVF_RED)
{
rvf_send_trace ("PWR ERROR: Not enough memory",
28,
NULL_PARAM,
RV_TRACE_LEVEL_ERROR,
PWR_USE_ID);
return (RV_MEMORY_ERR);
}
(msg_p->hdr).msg_id= POWER_BAT_INFO_STATUS;
(msg_p->hdr).callback_func= NULL;
msg_p->bat_info.battery_voltage= battery_voltage;
msg_p->bat_info.battery_temperature= battery_temperature;
msg_p->bat_info.battery_charger_current= battery_charger_current;
msg_p->bat_info.charger_plugged= is_charger_plugged;
msg_p->bat_info.charge_started= is_charge_started;
msg_p->bat_info.remaining_capacity= remaining_capacity;
PWR_SEND_MESSAGE(pwr_env_ctrl_blk->power_info.return_path, msg_p);
return (RV_OK);
}
#endif /* #ifdef RVM_PWR_SWE */