source: azure_iot_hub/trunk/asp3_dcre/tecsgen/tecs/rpc/tTINETClient.c@ 389

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

ビルドが通るよう更新

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