source: asp3_tinet_ecnl_arm/trunk/asp3_dcre/tecsgen/tecs/rpc/tDataqueueAdaptor_inline.h@ 352

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

arm向けASP3版ECNLを追加

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