source: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tDataqueueAdaptor_inline.h@ 270

Last change on this file since 270 was 270, checked in by coas-nagasima, 7 years ago

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-chdr
File size: 6.1 KB
Line 
1/*
2 * TECS Generator
3 * Generator for TOPPERS Embedded Component System
4 *
5 * Copyright (C) 2008-2013 by TOPPERS Project
6 *--
7 * 上記著作権者
8は,以下の(1)(4)の条件を満たす場合に限り,本ソフトウェ
9 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
10 * 変・再é…
11å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
14 * スコード中に含まれていること.
15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
16 * 用できる形で再é…
17å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
18å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
19 * 者
20マニュアルなど)に,上記の著作権表示,この利用条件および下記
21 * の無保証規定を掲載すること.
22 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23 * 用できない形で再é…
24å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
25 * と.
26 * (a) 再é…
27å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
28マニュアルなど)に,上記の著
29 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
30 * (b) 再é…
31å¸ƒã®å½¢æ…
32‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
33 * 報告すること.
34 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
35 * 害からも,上記著作権者
36およびTOPPERSプロジェクトをå…
37è²¬ã™ã‚‹ã“と.
38 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
39 * 由に基づく請求からも,上記著作権者
40およびTOPPERSプロジェクトを
41 * å…
42è²¬ã™ã‚‹ã“と.
43 *
44 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45お
46 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
47 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
48 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
49 * の責任を負わない.
50 *
51 * $Id: tDataqueueAdaptor_inline.h 270 2017-02-09 04:03:47Z coas-nagasima $
52 */
53
54/* #[<PREAMBLE>]#
55 * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
56 * tecsmerge によるマージに使用されます
57 *
58 * #[</PREAMBLE>]# */
59
60/* 受け口関数 #_TEPF_# */
61/* #[<ENTRY_PORT>]# eChannel
62 * entry port: eChannel
63 * signature: sChannel
64 * context: task
65 * #[</ENTRY_PORT>]# */
66
67/* #[<ENTRY_FUNC>]# eChannel_open
68 * name: eChannel_open
69 * global_name: tDataqueueAdaptor_eChannel_open
70 * oneway: false
71 * #[</ENTRY_FUNC>]# */
72Inline ER
73eChannel_open(CELLIDX idx, const int8_t* arg, int16_t size, TMO tmo)
74{
75 ER ercd = E_OK;
76 CELLCB *p_cellcb;
77 if (VALID_IDX(idx)) {
78 p_cellcb = GET_CELLCB(idx);
79 }
80 else {
81 return(E_ID);
82 }
83
84 /* ここに処理本体を記述します #_TEFB_# */
85
86 return(ercd);
87}
88
89/* #[<ENTRY_FUNC>]# eChannel_close
90 * name: eChannel_close
91 * global_name: tDataqueueAdaptor_eChannel_close
92 * oneway: false
93 * #[</ENTRY_FUNC>]# */
94Inline ER
95eChannel_close(CELLIDX idx)
96{
97 ER ercd = E_OK;
98 CELLCB *p_cellcb;
99 if (VALID_IDX(idx)) {
100 p_cellcb = GET_CELLCB(idx);
101 }
102 else {
103 return(E_ID);
104 }
105
106 /* ここに処理本体を記述します #_TEFB_# */
107
108 return(ercd);
109}
110
111/* #[<ENTRY_FUNC>]# eChannel_reset
112 * name: eChannel_reset
113 * global_name: tDataqueueAdaptor_eChannel_reset
114 * oneway: false
115 * #[</ENTRY_FUNC>]# */
116Inline ER
117eChannel_reset(CELLIDX idx)
118{
119 ER ercd = E_OK;
120 CELLCB *p_cellcb;
121 if (VALID_IDX(idx)) {
122 p_cellcb = GET_CELLCB(idx);
123 }
124 else {
125 return(E_ID);
126 }
127
128 /* ここに処理本体を記述します #_TEFB_# */
129 cEventflag_clear( 0 );
130
131 return(ercd);
132}
133
134/* #[<ENTRY_FUNC>]# eChannel_send
135 * name: eChannel_send
136 * global_name: tDataqueueAdaptor_eChannel_send
137 * oneway: false
138 * #[</ENTRY_FUNC>]# */
139Inline ER
140eChannel_send(CELLIDX idx, const int8_t* buf, int16_t size, TMO tmo)
141{
142 ER ercd = E_OK;
143 CELLCB *p_cellcb;
144 int i;
145 if (VALID_IDX(idx)) {
146 p_cellcb = GET_CELLCB(idx);
147 }
148 else {
149 return(E_ID);
150 }
151
152 /* ここに処理本体を記述します #_TEFB_# */
153 ercd = 0;
154 for( i = 0; i < size; i++ )
155 ercd |= cDataqueue_send( (intptr_t)((uint8_t)buf[ i ]) );
156
157 return(ercd);
158}
159
160/* #[<ENTRY_FUNC>]# eChannel_flush
161 * name: eChannel_flush
162 * global_name: tDataqueueAdaptor_eChannel_flush
163 * oneway: false
164 * #[</ENTRY_FUNC>]# */
165Inline ER
166eChannel_flush(CELLIDX idx, TMO tmo)
167{
168 ER ercd = E_OK;
169 CELLCB *p_cellcb;
170 if (VALID_IDX(idx)) {
171 p_cellcb = GET_CELLCB(idx);
172 }
173 else {
174 return(E_ID);
175 }
176
177 /* ここに処理本体を記述します #_TEFB_# */
178
179 return(ercd);
180}
181
182/* #[<ENTRY_FUNC>]# eChannel_receive
183 * name: eChannel_receive
184 * global_name: tDataqueueAdaptor_eChannel_receive
185 * oneway: false
186 * #[</ENTRY_FUNC>]# */
187Inline ER_UINT
188eChannel_receive(CELLIDX idx, int8_t* buf, int16_t size, TMO tmo)
189{
190 ER_UINT ercd = E_OK;
191 CELLCB *p_cellcb;
192 intptr_t data;
193 int i;
194 if (VALID_IDX(idx)) {
195 p_cellcb = GET_CELLCB(idx);
196 }
197 else {
198 return(E_ID);
199 }
200
201 /* ここに処理本体を記述します #_TEFB_# */
202 /* printf( "DQA: receive(%d) ", size ); */
203 for( i = 0; i < size; i++ ){
204 ercd = cDataqueue_receive( &data );
205 buf[i] = (int8_t)data;
206 if( ercd != E_OK )
207 break;
208 }
209 if( ercd != E_OK )
210 return(ercd);
211 else
212 return i;
213}
214
215/* #[<ENTRY_FUNC>]# eChannel_end_receive
216 * name: eChannel_end_receive
217 * global_name: tDataqueueAdaptor_eChannel_end_receive
218 * oneway: false
219 * #[</ENTRY_FUNC>]# */
220Inline ER
221eChannel_end_receive(CELLIDX idx)
222{
223 ER ercd = E_OK;
224 CELLCB *p_cellcb;
225 if (VALID_IDX(idx)) {
226 p_cellcb = GET_CELLCB(idx);
227 }
228 else {
229 return(E_ID);
230 }
231
232 /* ここに処理本体を記述します #_TEFB_# */
233
234 return(ercd);
235}
236
Note: See TracBrowser for help on using the repository browser.