source: asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/rpc/tTINETServer.c@ 359

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

SDカードの挿抜を検知するよう更新

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