source: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tTINETServer.c@ 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-csrc
File size: 7.0 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: tTINETServer.c 270 2017-02-09 04:03:47Z coas-nagasima $
52 */
53
54/* #[<PREAMBLE>]#
55 * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
56 * tecsmerge によるマージに使用されます
57 *
58 * 属性アクセスマクロ #_CAAM_#
59 * cep_id ID ATTR_cep_id
60 * rep_id ID ATTR_rep_id
61 *
62 * 呼び口関数 #_TCPF_#
63 * call port : cCheck signature: sIPV4AcceptCheck context: task
64 * bool_t cCheck_check( const T_IPV4EP* clientAddr );
65 *
66 * #[</PREAMBLE>]# */
67
68#include "tTINETServer_tecsgen.h"
69#include "tTINETServer_factory.h"
70
71#include <string.h>
72
73#include <netinet/in.h>
74#include <netinet/in_itron.h>
75#include <netinet/tcp.h>
76
77
78#ifndef E_OK
79#define E_OK 0 /* 正常終了 */
80#define E_ID (-18) /* 不正ID番号 */
81#endif
82
83/* 受け口関数 #_TEPF_# */
84/* #[<ENTRY_PORT>]# eC1
85 * entry port: eC1
86 * signature: sChannel
87 * context: task
88 * #[</ENTRY_PORT>]# */
89
90/* #[<ENTRY_FUNC>]# eC1_send
91 * name: eC1_send
92 * global_name: tTINETServer_eC1_send
93 * oneway: false
94 * #[</ENTRY_FUNC>]# */
95ER
96eC1_send(CELLIDX idx, const int8_t* buf, int16_t size, TMO tmo)
97{
98 ER ercd = E_OK;
99 CELLCB *p_cellcb;
100 int sz;
101
102 if (VALID_IDX(idx)) {
103 p_cellcb = GET_CELLCB(idx);
104 }
105 else {
106 return(E_ID);
107 }
108
109 /* ここに処理本体を記述します */
110#ifdef DEBUG
111 syslog( LOG_INFO, "tTINETServer: send" );
112 {
113 int i;
114 for( i = 0; i < size; i++ ){
115 printf( "%02X ", (unsigned char)buf[i] );
116 if( i % 8 == 7 )
117 putchar( '\n' );
118 }
119 putchar( '\n' );
120 }
121#endif
122 while(size>0){
123 if((sz=tcp_snd_dat( ATTR_cep_id, buf, (size_t)size, tmo )) < 0 ){
124 ercd = sz;
125 break;
126 }
127 else{
128 size -= sz;
129 }
130 }
131
132 return(ercd);
133}
134
135/* #[<ENTRY_FUNC>]# eC1_flush
136 * name: eC1_flush
137 * global_name: tTINETServer_eC1_flush
138 * oneway: false
139 * #[</ENTRY_FUNC>]# */
140ER
141eC1_flush(CELLIDX idx, TMO tmo)
142{
143 ER ercd = E_OK;
144 CELLCB *p_cellcb;
145 if (VALID_IDX(idx)) {
146 p_cellcb = GET_CELLCB(idx);
147 }
148 else {
149 return(E_ID);
150 }
151
152 /* ここに処理本体を記述します */
153
154 return(ercd);
155}
156
157/* #[<ENTRY_FUNC>]# eC1_receive
158 * name: eC1_receive
159 * global_name: tTINETServer_eC1_receive
160 * oneway: false
161 * #[</ENTRY_FUNC>]# */
162ER_UINT
163eC1_receive(CELLIDX idx, int8_t* buf, int16_t size, TMO tmo)
164{
165 ER ercd = E_OK;
166 ER_UINT sz;
167 CELLCB *p_cellcb;
168
169 if (VALID_IDX(idx)) {
170 p_cellcb = GET_CELLCB(idx);
171 }
172 else {
173 return(E_ID);
174 }
175
176 /* ここに処理本体を記述します */
177 ercd = tcp_rcv_dat( ATTR_cep_id, buf, (size_t)size, tmo );
178
179 return(ercd);
180}
181
182/* #[<ENTRY_FUNC>]# eC1_end_receive
183 * name: eC1_end_receive
184 * global_name: tTINETServer_eC1_end_receive
185 * oneway: false
186 * #[</ENTRY_FUNC>]# */
187ER
188eC1_end_receive(CELLIDX idx)
189{
190 ER ercd = E_OK;
191 CELLCB *p_cellcb;
192 if (VALID_IDX(idx)) {
193 p_cellcb = GET_CELLCB(idx);
194 }
195 else {
196 return(E_ID);
197 }
198
199 /* ここに処理本体を記述します */
200
201 return(ercd);
202}
203
204/* #[<ENTRY_FUNC>]# eC1_reset
205 * name: eC1_reset
206 * global_name: tTINETServer_eC1_reset
207 * oneway: false
208 * #[</ENTRY_FUNC>]# */
209ER
210eC1_reset(CELLIDX idx)
211{
212 ER ercd = E_OK;
213 CELLCB *p_cellcb;
214 if (VALID_IDX(idx)) {
215 p_cellcb = GET_CELLCB(idx);
216 }
217 else {
218 return(E_ID);
219 }
220
221 /* ここに処理本体を記述します */
222 syslog( LOG_INFO, "tTINETServer: reset" );
223
224 return(ercd);
225}
226
227/* #[<ENTRY_PORT>]# eOpener
228 * entry port: eOpener
229 * signature: sServerChannelOpener
230 * context: task
231 * #[</ENTRY_PORT>]# */
232
233/* #[<ENTRY_FUNC>]# eOpener_open
234 * name: eOpener_open
235 * global_name: tTINETServer_eOpener_open
236 * oneway: false
237 * #[</ENTRY_FUNC>]# */
238ER
239eOpener_open(CELLIDX idx)
240{
241 ER ercd = E_OK;
242 CELLCB *p_cellcb;
243 T_IPV4EP dst;
244
245 if (VALID_IDX(idx)) {
246 p_cellcb = GET_CELLCB(idx);
247 }
248 else {
249 return(E_ID);
250 }
251
252 /* ここに処理本体を記述します #_TEFB_# */
253 syslog( LOG_INFO, "tTINETServer: open" );
254 if( (ercd=tcp_acp_cep(ATTR_cep_id, ATTR_rep_id, &dst, TMO_FEVR)) != E_OK ){
255 syslog( LOG_INFO, "tTINETServer: accept failed" );
256 return ercd;
257 }
258
259 syslog( LOG_INFO, "tTINETServer: accepted" );
260
261 return(ercd);
262}
263
264/* #[<ENTRY_FUNC>]# eOpener_close
265 * name: eOpener_close
266 * global_name: tTINETServer_eOpener_close
267 * oneway: false
268 * #[</ENTRY_FUNC>]# */
269ER
270eOpener_close(CELLIDX idx)
271{
272 ER ercd = E_OK;
273 CELLCB *p_cellcb;
274 if (VALID_IDX(idx)) {
275 p_cellcb = GET_CELLCB(idx);
276 }
277 else {
278 return(E_ID);
279 }
280
281 /* ここに処理本体を記述します #_TEFB_# */
282 syslog( LOG_INFO, "tTINETServer: close" );
283 ercd = tcp_cls_cep( ATTR_cep_id, TMO_FEVR );
284
285 return(ercd);
286}
287
288/* #[<POSTAMBLE>]#
289 * これより下に非受け口関数を書きます
290 * #[</POSTAMBLE>]#*/
Note: See TracBrowser for help on using the repository browser.