view src/cs/drivers/drv_app/pwr/pwr_messages_i.c @ 281:a75eefbf8be4

Phone boot with PWON: weed out short button presses Every standard end user phone has a design provision, most naturally implemented in firmware, whereby the PWON button effects a boot only if it is held down long enough - short presses of this PWON button are detected, assumed to be spurious and cause the fw to power back off instead of proceeding with boot. The present change introduces this standard function in FreeCalypso.
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 24 Sep 2021 02:03:08 +0000
parents 4e78acac3d88
children
line wrap: on
line source

/*******************************************************************************
 *
 *  pwr_messages_i.c
 *
 * Purpose: Contains functions used by PWR SWE to send events to the SPI task.
 *
 *
 * 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_i.h"
#include "pwr/pwr_env.h"
#include "spi/spi_env.h"


/********************************************************************************/
/*                                                                              */
/*    Function Name: pwr_spi_battery_info                                       */
/*                                                                              */
/*    Purpose:    This function is used to send a PWR_SPI_INFO_BATTERY_EVT      */
/*                message to the SPI task.                                      */
/*                                                                              */
/********************************************************************************/
T_RV_RET pwr_spi_battery_info(CALLBACK_FUNC CallBack)
{
   T_RV_HDR *msgPtr;

   /* check if the driver has been started */
   if (pwr_env_ctrl_blk == NULL)
      return (RVM_NOT_READY);
   
   if(SPI_GBL_INFO_PTR->SpiTaskReady == FALSE)
      return(RVM_NOT_READY);

   if (rvf_get_buf (pwr_env_ctrl_blk->prim_id, sizeof (T_RV_HDR),(void **) &msgPtr) == RVF_RED)
   {
      rvf_send_trace ("PWR ERROR: Not enough memory",
                      28,
                      NULL_PARAM,
                      RV_TRACE_LEVEL_ERROR,
                      PWR_USE_ID);

      return (RV_MEMORY_ERR);
   }

   msgPtr->msg_id          = PWR_SPI_INFO_BATTERY_EVT;
   msgPtr->dest_addr_id    = pwr_env_ctrl_blk->addr_id;
   msgPtr->callback_func   = (CALLBACK_FUNC) CallBack;

   rvf_send_msg (pwr_env_ctrl_blk->addr_id, msgPtr);

   return (RV_OK);
}

#endif /* #ifdef RVM_PWR_SWE */