FreeCalypso > hg > fc-tourmaline
diff src/cs/services/mks/mks_api.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_api.c Fri Oct 16 06:23:26 2020 +0000 @@ -0,0 +1,121 @@ +/** + * @file mks_api.c + * + * Implementation of bridge functions. + * + * @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_env.h" +#include "mks/mks_i.h" +#include "mks/mks_messages_i.h" + +#include "rvm/rvm_use_id_list.h" + +#include <string.h> + +/** External declaration */ +extern T_MKS_ENV_CTRL_BLK* mks_env_ctrl_blk; + + + +/** + * @name Bridge functions implementation + * + */ +/*@{*/ + + +/** + * function: mks_add_key_sequence + */ +T_RV_RET mks_add_key_sequence(T_MKS_INFOS_KEY_SEQUENCE* infos_key_sequence_p) +{ + T_RV_RET ret = RV_INVALID_PARAMETER; + T_MKS_INFOS_KEY_SEQUENCE_MSG* msg_p; + T_RVF_MB_STATUS mb_status; + + /* Test validity of structure */ + if ((infos_key_sequence_p->nb_key_of_sequence >=3) && (infos_key_sequence_p->nb_key_of_sequence <= MKS_NB_MAX_OF_KEY_IN_KEY_SEQUENCE)) + { + if ( (infos_key_sequence_p->completion_type == MKS_SEQUENCE_COMPLETED) + || ( (infos_key_sequence_p->completion_type == MKS_POST_SEQUENCE) + && (infos_key_sequence_p->nb_key_for_post_sequence > 0) + && (infos_key_sequence_p->nb_key_for_post_sequence <= MKS_NB_MAX_OF_KEY_FOR_POST_SEQUENCE)) ) + { + /* Reserve memory for message */ + mb_status = rvf_get_buf (mks_env_ctrl_blk->prim_id, sizeof(T_MKS_INFOS_KEY_SEQUENCE_MSG), (void **) &msg_p); + + if (mb_status != RVF_RED) /* Memory allocation success */ + { + /* Fill the message */ + msg_p->hdr.msg_id = MKS_INFOS_KEY_SEQUENCE_MSG; + + msg_p->key_sequence_infos = *infos_key_sequence_p; + + /* Send message to the MKS task */ + rvf_send_msg(mks_env_ctrl_blk->addr_id, msg_p); + + ret = RV_OK; + } + else + { + MKS_SEND_TRACE("MKS: Memory allocation error", RV_TRACE_LEVEL_ERROR); + ret = RV_MEMORY_ERR; + } + } + } + + return ret; +} + +/** + * function: mks_remove_key_sequence + * + */ +T_RV_RET mks_remove_key_sequence(char name[KPD_MAX_CHAR_NAME+1]) +{ + T_MKS_REMOVE_KEY_SEQUENCE_MSG* msg_p; + T_RVF_MB_STATUS mb_status; + T_RV_RET ret = RV_OK; + + /* Reserve memory for message */ + mb_status = rvf_get_buf (mks_env_ctrl_blk->prim_id, sizeof(T_MKS_REMOVE_KEY_SEQUENCE_MSG), (void **) &msg_p); + + if (mb_status != RVF_RED) /* Memory allocation success */ + { + /* Fill the message */ + msg_p->hdr.msg_id = MKS_REMOVE_KEY_SEQUENCE_MSG; + + memcpy(msg_p->name, name, KPD_MAX_CHAR_NAME+1); + + /* Send message to the MKS task */ + rvf_send_msg(mks_env_ctrl_blk->addr_id, msg_p); + + ret = RV_OK; + } + else + { + MKS_SEND_TRACE("MKS: Memory allocation error", RV_TRACE_LEVEL_ERROR); + ret = RV_MEMORY_ERR; + } + + + return ret; +} + + +/*@}*/