source: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tTINETClient.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: 6.8 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: tTINETClient.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 *
61 * #[</PREAMBLE>]# */
62
63#include "tTINETClient_tecsgen.h"
64#include "tTINETClient_factory.h"
65
66#include <string.h>
67
68#include <netinet/in.h>
69#include <netinet/in_itron.h>
70#include <netinet/tcp.h>
71
72#ifndef E_OK
73#define E_OK 0 /* 正常終了 */
74#define E_ID (-18) /* 不正ID番号 */
75#endif
76
77/* 受け口関数 #_TEPF_# */
78/* #[<ENTRY_PORT>]# eC0
79 * entry port: eC0
80 * signature: sChannel
81 * context: task
82 * #[</ENTRY_PORT>]# */
83
84/* #[<ENTRY_FUNC>]# eC0_send
85 * name: eC0_send
86 * global_name: tTINETClient_eC0_send
87 * oneway: false
88 * #[</ENTRY_FUNC>]# */
89ER
90eC0_send(CELLIDX idx, const int8_t* buf, int16_t size, TMO tmo)
91{
92 ER ercd = E_OK;
93 CELLCB *p_cellcb;
94 int sz;
95
96 if (VALID_IDX(idx)) {
97 p_cellcb = GET_CELLCB(idx);
98 }
99 else {
100 return(E_ID);
101 }
102
103 /* ここに処理本体を記述します */
104#ifdef DEBUG
105 syslog( LOG_INFO, "tTINETServer: send" );
106 {
107 int i;
108 for( i = 0; i < size; i++ ){
109 printf( "%02X ", (unsigned char)buf[i] );
110 if( i % 8 == 7 )
111 putchar( '\n' );
112 }
113 putchar( '\n' );
114 }
115#endif
116 while(size>0){
117 if((sz=tcp_snd_dat( ATTR_cep_id, (intptr_t *)buf, (size_t)size, tmo )) < 0 ){
118 ercd = sz;
119 break;
120 }
121 else{
122 size -= sz;
123 }
124 }
125
126 return(ercd);
127}
128
129/* #[<ENTRY_FUNC>]# eC0_flush
130 * name: eC0_flush
131 * global_name: tTINETClient_eC0_flush
132 * oneway: false
133 * #[</ENTRY_FUNC>]# */
134ER
135eC0_flush(CELLIDX idx, TMO tmo)
136{
137 ER ercd = E_OK;
138 CELLCB *p_cellcb;
139 if (VALID_IDX(idx)) {
140 p_cellcb = GET_CELLCB(idx);
141 }
142 else {
143 return(E_ID);
144 }
145
146 /* ここに処理本体を記述します */
147 /* write はバッファリングなしなので flush しない */
148
149 return(ercd);
150}
151
152/* #[<ENTRY_FUNC>]# eC0_receive
153 * name: eC0_receive
154 * global_name: tTINETClient_eC0_receive
155 * oneway: false
156 * #[</ENTRY_FUNC>]# */
157ER_UINT
158eC0_receive(CELLIDX idx, int8_t* buf, int16_t size, TMO tmo)
159{
160 ER ercd = E_OK;
161 CELLCB *p_cellcb;
162
163 if (VALID_IDX(idx)) {
164 p_cellcb = GET_CELLCB(idx);
165 }
166 else {
167 return(E_ID);
168 }
169
170 /* ここに処理本体を記述します */
171 ercd = tcp_rcv_dat( ATTR_cep_id, buf, (size_t)size, tmo );
172
173 return(ercd);
174}
175
176/* #[<ENTRY_FUNC>]# eC0_end_receive
177 * name: eC0_end_receive
178 * global_name: tTINETClient_eC0_end_receive
179 * oneway: false
180 * #[</ENTRY_FUNC>]# */
181ER
182eC0_end_receive(CELLIDX idx)
183{
184 ER ercd = E_OK;
185 CELLCB *p_cellcb;
186 if (VALID_IDX(idx)) {
187 p_cellcb = GET_CELLCB(idx);
188 }
189 else {
190 return(E_ID);
191 }
192
193 /* ここに処理本体を記述します #_TEFB_# */
194
195 return(ercd);
196}
197
198/* #[<ENTRY_FUNC>]# eC0_reset
199 * name: eC0_reset
200 * global_name: tTINETClient_eC0_reset
201 * oneway: false
202 * #[</ENTRY_FUNC>]# */
203ER
204eC0_reset(CELLIDX idx)
205{
206 ER ercd = E_OK;
207 CELLCB *p_cellcb;
208 if (VALID_IDX(idx)) {
209 p_cellcb = GET_CELLCB(idx);
210 }
211 else {
212 return(E_ID);
213 }
214
215 /* ここに処理本体を記述します */
216
217 return(ercd);
218}
219
220/* #[<ENTRY_PORT>]# eOpener
221 * entry port: eOpener
222 * signature: sTINETClientOpenerIPV4
223 * context: task
224 * #[</ENTRY_PORT>]# */
225
226/* #[<ENTRY_FUNC>]# eOpener_open
227 * name: eOpener_open
228 * global_name: tTINETClient_eOpener_open
229 * oneway: false
230 * #[</ENTRY_FUNC>]# */
231ER
232eOpener_open(CELLIDX idx, const T_IPV4EP* clientAddr, TMO tmo)
233{
234 ER ercd = E_OK;
235 CELLCB *p_cellcb;
236 if (VALID_IDX(idx)) {
237 p_cellcb = GET_CELLCB(idx);
238 }
239 else {
240 return(E_ID);
241 }
242
243 /* ここに処理本体を記述します #_TEFB_# */
244 puts("opening");
245 ercd=tcp_con_cep(ATTR_cep_id, NADR, clientAddr, tmo);
246 if(ercd<0){
247 puts("failed");
248 syslog( LOG_INFO, "TINETClient: connect failed");
249 }
250
251 return(ercd);
252}
253
254/* #[<ENTRY_FUNC>]# eOpener_close
255 * name: eOpener_close
256 * global_name: tTINETClient_eOpener_close
257 * oneway: false
258 * #[</ENTRY_FUNC>]# */
259ER
260eOpener_close(CELLIDX idx, TMO tmo)
261{
262 ER ercd = E_OK;
263 CELLCB *p_cellcb;
264 if (VALID_IDX(idx)) {
265 p_cellcb = GET_CELLCB(idx);
266 }
267 else {
268 return(E_ID);
269 }
270
271 /* ここに処理本体を記述します #_TEFB_# */
272 ercd = tcp_cls_cep( ATTR_cep_id, 0 ); /* mikan エラー処理 */
273
274 return(ercd);
275}
276
277/* #[<POSTAMBLE>]#
278 * これより下に非受け口関数を書きます
279 * #[</POSTAMBLE>]#*/
Note: See TracBrowser for help on using the repository browser.