source: azure_iot_hub/trunk/asp3_dcre/tecsgen/tecs/rpc/tRPCSharedChannelMan.c@ 388

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

Azure IoT Hub Device C SDK を使ったサンプルの追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-csrc
File size: 8.4 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: tRPCSharedChannelMan.c 388 2019-05-22 11:25:18Z coas-nagasima $
52 */
53
54/* #[<PREAMBLE>]#
55 * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
56 * tecsmerge によるマージに使用されます
57 *
58 * 呼び口関数 #_TCPF_#
59 * call port : cSemaphore signature: sSemaphore context: task
60 * ER cSemaphore_signal( );
61 * ER cSemaphore_wait( );
62 * ER cSemaphore_waitPolling( );
63 * ER cSemaphore_waitTimeout( TMO timeout );
64 * ER cSemaphore_initialize( );
65 * ER cSemaphore_refer( T_RSEM* pk_semaphore_status );
66 * call port : cClientSideTDR signature: sTDR context: task
67 * ER cClientSideTDR_open( const int8_t* arg, int16_t size, TMO tmo );
68 * ER cClientSideTDR_close( );
69 * ER cClientSideTDR_reset( );
70 * ER cClientSideTDR_sop( int_t no );
71 * ER cClientSideTDR_is_sop( int_t no );
72 * ER cClientSideTDR_eop( int_t no );
73 * ER cClientSideTDR_is_eop( int_t no );
74 * ER cClientSideTDR_set_tmo( TMO tmo );
75 * ER cClientSideTDR_put_int8( int8_t in );
76 * ER cClientSideTDR_put_int16( int16_t in );
77 * ER cClientSideTDR_put_int32( int32_t in );
78 * ER cClientSideTDR_put_int64( int64_t in );
79 * ER cClientSideTDR_put_int128( int128_t in );
80 * ER cClientSideTDR_get_int8( int8_t* out );
81 * ER cClientSideTDR_get_int16( int16_t* out );
82 * ER cClientSideTDR_get_int32( int32_t* out );
83 * ER cClientSideTDR_get_int64( int64_t* out );
84 * ER cClientSideTDR_get_int128( int128_t* out );
85 * ER cClientSideTDR_put_char( char_t in );
86 * ER cClientSideTDR_put_short( short in );
87 * ER cClientSideTDR_put_int( int_t in );
88 * ER cClientSideTDR_put_long( long_t in );
89 * ER cClientSideTDR_get_char( char_t* out );
90 * ER cClientSideTDR_get_short( short* out );
91 * ER cClientSideTDR_get_int( int_t* out );
92 * ER cClientSideTDR_get_long( long_t* out );
93 * ER cClientSideTDR_put_intptr( const void* ptr );
94 * ER cClientSideTDR_get_intptr( void** ptr );
95 *
96 * #[</PREAMBLE>]# */
97
98#include "tRPCSharedChannelMan_tecsgen.h"
99
100#ifndef E_OK
101#define E_OK 0 /* success */
102#define E_ID (-18) /* illegal ID */
103#endif
104
105
106/* 受け口関数 #_TEPF_# */
107/* #[<ENTRY_PORT>]# eSemaphore
108 * entry port: eSemaphore
109 * signature: sSemaphore
110 * context: task
111 * #[</ENTRY_PORT>]# */
112
113/* #[<ENTRY_FUNC>]# eSemaphore_signal
114 * name: eSemaphore_signal
115 * global_name: tRPCSharedTaskMain_eSemaphore_signal
116 * oneway: false
117 * #[</ENTRY_FUNC>]# */
118ER
119eSemaphore_signal(CELLIDX idx, int_t subscript)
120{
121 ER ercd = E_OK;
122 CELLCB *p_cellcb;
123 if (VALID_IDX(idx)) {
124 p_cellcb = GET_CELLCB(idx);
125 }
126 else {
127 return(E_ID);
128 }
129
130 /* ここに処理本体を記述します #_TEFB_# */
131 cClientSideTDR_putInt16( RPC_CHANNEL_MAN_EOP_MAGIC );
132 ercd = cSemaphore_signal();
133 // syslog( LOG_INFO, "tRPCSharedTaskMain: cSemaphore_signal" );
134
135 return(ercd);
136}
137
138/* #[<ENTRY_FUNC>]# eSemaphore_wait
139 * name: eSemaphore_wait
140 * global_name: tRPCSharedTaskMain_eSemaphore_wait
141 * oneway: false
142 * #[</ENTRY_FUNC>]# */
143ER
144eSemaphore_wait(CELLIDX idx, int_t subscript)
145{
146 ER ercd = E_OK;
147 CELLCB *p_cellcb;
148 if (VALID_IDX(idx)) {
149 p_cellcb = GET_CELLCB(idx);
150 }
151 else {
152 return(E_ID);
153 }
154
155 /* ここに処理本体を記述します #_TEFB_# */
156 ercd = cSemaphore_wait();
157 if( ercd == E_OK ){
158 // syslog( LOG_INFO, "tRPCSharedTaskMain: cSemaphore_wait" );
159
160 cClientSideTDR_putInt16( RPC_CHANNEL_MAN_SOP_MAGIC );
161 cClientSideTDR_putInt16( subscript );
162 }
163
164 return(ercd);
165}
166
167/* #[<ENTRY_FUNC>]# eSemaphore_waitPolling
168 * name: eSemaphore_waitPolling
169 * global_name: tRPCSharedTaskMain_eSemaphore_waitPolling
170 * oneway: false
171 * #[</ENTRY_FUNC>]# */
172ER
173eSemaphore_waitPolling(CELLIDX idx, int_t subscript)
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 /* ここに処理本体を記述します #_TEFB_# */
185 ercd = cSemaphore_waitPolling();
186 if( ercd == E_OK ){
187 cClientSideTDR_putInt16( RPC_CHANNEL_MAN_SOP_MAGIC );
188 cClientSideTDR_putInt16( subscript );
189 }
190
191 return(ercd);
192}
193
194/* #[<ENTRY_FUNC>]# eSemaphore_waitTimeout
195 * name: eSemaphore_waitTimeout
196 * global_name: tRPCSharedTaskMain_eSemaphore_waitTimeout
197 * oneway: false
198 * #[</ENTRY_FUNC>]# */
199ER
200eSemaphore_waitTimeout(CELLIDX idx, int_t subscript, TMO timeout)
201{
202 ER ercd = E_OK;
203 CELLCB *p_cellcb;
204 if (VALID_IDX(idx)) {
205 p_cellcb = GET_CELLCB(idx);
206 }
207 else {
208 return(E_ID);
209 }
210
211 /* ここに処理本体を記述します #_TEFB_# */
212 ercd = cSemaphore_waitTimeout(timeout);
213 if( ercd == E_OK ){
214 // syslog( LOG_INFO, "tRPCSharedTaskMain: cSemaphore_waitTimeout" );
215
216 cClientSideTDR_putInt16( RPC_CHANNEL_MAN_SOP_MAGIC );
217 cClientSideTDR_putInt16( subscript );
218 }
219
220 return(ercd);
221}
222
223/* #[<ENTRY_FUNC>]# eSemaphore_initialize
224 * name: eSemaphore_initialize
225 * global_name: tRPCSharedTaskMain_eSemaphore_initialize
226 * oneway: false
227 * #[</ENTRY_FUNC>]# */
228ER
229eSemaphore_initialize(CELLIDX idx, int_t subscript)
230{
231 ER ercd = E_OK;
232 CELLCB *p_cellcb;
233 if (VALID_IDX(idx)) {
234 p_cellcb = GET_CELLCB(idx);
235 }
236 else {
237 return(E_ID);
238 }
239
240 /* ここに処理本体を記述します #_TEFB_# */
241
242 return(ercd);
243}
244
245/* #[<ENTRY_FUNC>]# eSemaphore_refer
246 * name: eSemaphore_refer
247 * global_name: tRPCSharedTaskMain_eSemaphore_refer
248 * oneway: false
249 * #[</ENTRY_FUNC>]# */
250ER
251eSemaphore_refer(CELLIDX idx, int_t subscript, T_RSEM* pk_semaphore_status)
252{
253 ER ercd = E_OK;
254 CELLCB *p_cellcb;
255 if (VALID_IDX(idx)) {
256 p_cellcb = GET_CELLCB(idx);
257 }
258 else {
259 return(E_ID);
260 }
261
262 /* ここに処理本体を記述します #_TEFB_# */
263
264 return(ercd);
265}
266
267/* #[<POSTAMBLE>]#
268 * これより下に非受け口関数を書きます
269 * #[</POSTAMBLE>]#*/
Note: See TracBrowser for help on using the repository browser.