view src/cs/drivers/drv_app/kpd/kpd_power_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 945cf7f506b2
children
line wrap: on
line source

/**
 * @file   kpd_power_api.c
 *
 * Implementation of bridge function for PWR SWE interface.
 *
 * @author   Laurent Sollier (l-sollier@ti.com)
 * @version 0.1
 */

/*
 * History:
 *
 *   Date          Author       Modification
 *  ----------------------------------------
 *  11/02/2001     L Sollier    Create
 *
 *
 * (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved
 */

#include "kpd/kpd_power_api.h"
#include "kpd/kpd_messages_i.h"
#include "kpd/kpd_physical_key_def.h"
#include "kpd/kpd_env.h"

#include "rvm/rvm_use_id_list.h"

/* External declaration */
extern T_KPD_ENV_CTRL_BLK* kpd_env_ctrl_blk;

/* This variable ius defined here but is used by the PWR SWE */
T_KPD_KEYPAD Kp = {0};


/**
 * @name Functions implementation
 *
 */
/*@{*/


/**
 * function: kpd_power_key_pressed
 */
T_RV_RET kpd_power_key_pressed(void)
{
   T_RV_RET ret = RV_OK;

   T_RVF_MB_STATUS mb_status;
   T_KPD_KEY_PRESSED_MSG* msg_key_pressed;

   /* Check if initialization has been correctly done */
   if ( (kpd_env_ctrl_blk == 0) || (kpd_env_ctrl_blk->swe_is_initialized == FALSE) )
   {
      KPD_SEND_TRACE("KPD: Initialization is not yet done or failed", RV_TRACE_LEVEL_ERROR);
      return RV_INTERNAL_ERR;
   }

   /* Reserve memory for message */
   mb_status = rvf_get_buf (kpd_env_ctrl_blk->prim_id, sizeof(T_KPD_KEY_PRESSED_MSG), (void **) &msg_key_pressed);

   if (mb_status == RVF_GREEN) /* Memory allocation success */
   {
      /* Fill the message */
      msg_key_pressed->hdr.msg_id = KPD_KEY_PRESSED_MSG;
      msg_key_pressed->value = KPD_SHORT_PRESS_PWR_KEY;
      msg_key_pressed->key_to_process = TRUE;

      /* Send message to the keypad task */
      rvf_send_msg(kpd_env_ctrl_blk->addr_id, msg_key_pressed);
   }
   else
   {
      KPD_SEND_TRACE("KPD: Memory allocation error", RV_TRACE_LEVEL_ERROR);
      if (mb_status == RVF_YELLOW)
         rvf_free_buf(msg_key_pressed);
      ret = RV_MEMORY_ERR;
   }


   return ret;
}


/*@}*/