FreeCalypso > hg > fc-tourmaline
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4e78acac3d88 |
---|---|
1 /** | |
2 * @file mks_api.c | |
3 * | |
4 * Implementation of bridge functions. | |
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/19/2001 L Sollier Create | |
16 * | |
17 * | |
18 * (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved | |
19 */ | |
20 | |
21 #include "mks/mks_api.h" | |
22 #include "mks/mks_env.h" | |
23 #include "mks/mks_i.h" | |
24 #include "mks/mks_messages_i.h" | |
25 | |
26 #include "rvm/rvm_use_id_list.h" | |
27 | |
28 #include <string.h> | |
29 | |
30 /** External declaration */ | |
31 extern T_MKS_ENV_CTRL_BLK* mks_env_ctrl_blk; | |
32 | |
33 | |
34 | |
35 /** | |
36 * @name Bridge functions implementation | |
37 * | |
38 */ | |
39 /*@{*/ | |
40 | |
41 | |
42 /** | |
43 * function: mks_add_key_sequence | |
44 */ | |
45 T_RV_RET mks_add_key_sequence(T_MKS_INFOS_KEY_SEQUENCE* infos_key_sequence_p) | |
46 { | |
47 T_RV_RET ret = RV_INVALID_PARAMETER; | |
48 T_MKS_INFOS_KEY_SEQUENCE_MSG* msg_p; | |
49 T_RVF_MB_STATUS mb_status; | |
50 | |
51 /* Test validity of structure */ | |
52 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)) | |
53 { | |
54 if ( (infos_key_sequence_p->completion_type == MKS_SEQUENCE_COMPLETED) | |
55 || ( (infos_key_sequence_p->completion_type == MKS_POST_SEQUENCE) | |
56 && (infos_key_sequence_p->nb_key_for_post_sequence > 0) | |
57 && (infos_key_sequence_p->nb_key_for_post_sequence <= MKS_NB_MAX_OF_KEY_FOR_POST_SEQUENCE)) ) | |
58 { | |
59 /* Reserve memory for message */ | |
60 mb_status = rvf_get_buf (mks_env_ctrl_blk->prim_id, sizeof(T_MKS_INFOS_KEY_SEQUENCE_MSG), (void **) &msg_p); | |
61 | |
62 if (mb_status != RVF_RED) /* Memory allocation success */ | |
63 { | |
64 /* Fill the message */ | |
65 msg_p->hdr.msg_id = MKS_INFOS_KEY_SEQUENCE_MSG; | |
66 | |
67 msg_p->key_sequence_infos = *infos_key_sequence_p; | |
68 | |
69 /* Send message to the MKS task */ | |
70 rvf_send_msg(mks_env_ctrl_blk->addr_id, msg_p); | |
71 | |
72 ret = RV_OK; | |
73 } | |
74 else | |
75 { | |
76 MKS_SEND_TRACE("MKS: Memory allocation error", RV_TRACE_LEVEL_ERROR); | |
77 ret = RV_MEMORY_ERR; | |
78 } | |
79 } | |
80 } | |
81 | |
82 return ret; | |
83 } | |
84 | |
85 /** | |
86 * function: mks_remove_key_sequence | |
87 * | |
88 */ | |
89 T_RV_RET mks_remove_key_sequence(char name[KPD_MAX_CHAR_NAME+1]) | |
90 { | |
91 T_MKS_REMOVE_KEY_SEQUENCE_MSG* msg_p; | |
92 T_RVF_MB_STATUS mb_status; | |
93 T_RV_RET ret = RV_OK; | |
94 | |
95 /* Reserve memory for message */ | |
96 mb_status = rvf_get_buf (mks_env_ctrl_blk->prim_id, sizeof(T_MKS_REMOVE_KEY_SEQUENCE_MSG), (void **) &msg_p); | |
97 | |
98 if (mb_status != RVF_RED) /* Memory allocation success */ | |
99 { | |
100 /* Fill the message */ | |
101 msg_p->hdr.msg_id = MKS_REMOVE_KEY_SEQUENCE_MSG; | |
102 | |
103 memcpy(msg_p->name, name, KPD_MAX_CHAR_NAME+1); | |
104 | |
105 /* Send message to the MKS task */ | |
106 rvf_send_msg(mks_env_ctrl_blk->addr_id, msg_p); | |
107 | |
108 ret = RV_OK; | |
109 } | |
110 else | |
111 { | |
112 MKS_SEND_TRACE("MKS: Memory allocation error", RV_TRACE_LEVEL_ERROR); | |
113 ret = RV_MEMORY_ERR; | |
114 } | |
115 | |
116 | |
117 return ret; | |
118 } | |
119 | |
120 | |
121 /*@}*/ |