FreeCalypso > hg > fc-tourmaline
diff src/cs/services/mks/mks_handle_message.c @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:23:26 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/services/mks/mks_handle_message.c Fri Oct 16 06:23:26 2020 +0000 @@ -0,0 +1,116 @@ +/** + * @file mks_handle_msg.c + * + * Coding of the mks_handle_msg function, which is called when the SWE + * receives a new message. + * + * @author Laurent Sollier (l-sollier@ti.com) + * @version 0.1 + */ + +/* + * History: + * + * Date Author Modification + * ---------------------------------------- + * 11/19/2001 L Sollier Create + * + * + * (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved + */ + +#include "mks/mks_api.h" +#include "mks/mks_i.h" +#include "mks/mks_messages_i.h" + +#include "rv/rv_general.h" +#include "rvf/rvf_api.h" +#include "rvm/rvm_use_id_list.h" + +/** + * @name Functions implementation + * + */ +/*@{*/ + +/** + * function: mks_handle_msg + */ +T_RV_RET mks_handle_msg(T_RV_HDR *msg_p) +{ + if (msg_p != NULL) + { + switch (msg_p->msg_id) + { + /* A new magic key sequence is added */ + case MKS_INFOS_KEY_SEQUENCE_MSG: + { + T_MKS_INFOS_KEY_SEQUENCE_MSG* msg_infos_key_sequence_p= (T_MKS_INFOS_KEY_SEQUENCE_MSG*) msg_p; + + MKS_SEND_TRACE("MKS: 'Add magic key sequence' message received", RV_TRACE_LEVEL_DEBUG_LOW); + + mks_add_key_sequence_i(msg_infos_key_sequence_p); + break; + } + + /* A magic key sequence is removed */ + case MKS_REMOVE_KEY_SEQUENCE_MSG: + { + T_MKS_REMOVE_KEY_SEQUENCE_MSG* msg_remove_key_sequence_p= (T_MKS_REMOVE_KEY_SEQUENCE_MSG*) msg_p; + + MKS_SEND_TRACE("MKS: 'Remove magic key sequence' message received", RV_TRACE_LEVEL_DEBUG_LOW); + + mks_remove_key_sequence_i(msg_remove_key_sequence_p); + break; + } + + + /* Process a key released */ + case KPD_KEY_EVENT_MSG: + { + T_KPD_KEY_EVENT_MSG* msg_key_event_p= (T_KPD_KEY_EVENT_MSG*) msg_p; + + mks_check_key_sequence(msg_key_event_p); + break; + } + + /* Check the subscription status */ + case KPD_STATUS_MSG: + { + T_KPD_STATUS_MSG* msg_keypad_status_p= (T_KPD_STATUS_MSG*) msg_p; + + if (msg_keypad_status_p->operation == KPD_SUBSCRIBE_OP) + { + if (msg_keypad_status_p->status_value == KPD_PROCESS_OK) + { + MKS_SEND_TRACE("MKS: Keypad subscription OK", RV_TRACE_LEVEL_DEBUG_LOW); + } + else + { + MKS_SEND_TRACE("MKS: Keypad subscription failed", RV_TRACE_LEVEL_ERROR); + } + } + else + { + MKS_SEND_TRACE("MKS: Unexpected keypad status message received", RV_TRACE_LEVEL_ERROR); + } + + break; + } + + default: + { + /* Unknow message has been received */ + MKS_SEND_TRACE("MKS: Message received unknown", RV_TRACE_LEVEL_ERROR); + break; + } + } + + /* Free message */ + rvf_free_buf(msg_p); + } + + return RV_OK; +} + +/*@}*/