comparison src/cs/drivers/drv_app/kpd/kpd_power_api.c @ 0:b6a5e36de839

src/cs: initial import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 04:39:26 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:b6a5e36de839
1 /**
2 * @file kpd_power_api.c
3 *
4 * Implementation of bridge function for PWR SWE interface.
5 *
6 * @author Laurent Sollier (l-sollier@ti.com)
7 * @version 0.1
8 */
9
10 /*
11 * History:
12 *
13 * Date Author Modification
14 * ----------------------------------------
15 * 11/02/2001 L Sollier Create
16 *
17 *
18 * (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved
19 */
20
21 #include "kpd/kpd_power_api.h"
22 #include "kpd/kpd_messages_i.h"
23 #include "kpd/kpd_physical_key_def.h"
24 #include "kpd/kpd_env.h"
25
26 #include "rvm/rvm_use_id_list.h"
27
28 /* External declaration */
29 extern T_KPD_ENV_CTRL_BLK* kpd_env_ctrl_blk;
30
31 /* This variable ius defined here but is used by the PWR SWE */
32 T_KPD_KEYPAD Kp = {0};
33
34
35 /**
36 * @name Functions implementation
37 *
38 */
39 /*@{*/
40
41
42 /**
43 * function: kpd_power_key_pressed
44 */
45 T_RV_RET kpd_power_key_pressed(void)
46 {
47 T_RV_RET ret = RV_OK;
48
49 T_RVF_MB_STATUS mb_status;
50 T_KPD_KEY_PRESSED_MSG* msg_key_pressed;
51
52 /* Check if initialization has been correctly done */
53 if ( (kpd_env_ctrl_blk == 0) || (kpd_env_ctrl_blk->swe_is_initialized == FALSE) )
54 {
55 KPD_SEND_TRACE("KPD: Initialization is not yet done or failed", RV_TRACE_LEVEL_ERROR);
56 return RV_INTERNAL_ERR;
57 }
58
59 /* Reserve memory for message */
60 mb_status = rvf_get_buf (kpd_env_ctrl_blk->prim_id, sizeof(T_KPD_KEY_PRESSED_MSG), (void **) &msg_key_pressed);
61
62 if (mb_status == RVF_GREEN) /* Memory allocation success */
63 {
64 /* Fill the message */
65 msg_key_pressed->hdr.msg_id = KPD_KEY_PRESSED_MSG;
66 msg_key_pressed->value = KPD_SHORT_PRESS_PWR_KEY;
67 msg_key_pressed->key_to_process = TRUE;
68
69 /* Send message to the keypad task */
70 rvf_send_msg(kpd_env_ctrl_blk->addr_id, msg_key_pressed);
71 }
72 else
73 {
74 KPD_SEND_TRACE("KPD: Memory allocation error", RV_TRACE_LEVEL_ERROR);
75 if (mb_status == RVF_YELLOW)
76 rvf_free_buf(msg_key_pressed);
77 ret = RV_MEMORY_ERR;
78 }
79
80
81 return ret;
82 }
83
84
85 /*@}*/