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