source: azure_iot_hub/trunk/asp3_dcre/tecsgen/tecs/rpc/TDR.cdl@ 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/plain;charset=UTF-8
File size: 6.7 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
39import_C( "tecs_rpc.h" );
40
41// Straight Order TDR
42const uint32_t TDR_SOP_MAGIC1 = (0x672A); // Client to Server
43const uint32_t TDR_SOP_MAGIC2 = (0x561E); // Server to Client
44const uint32_t TDR_EOP_MAGIC1 = (0x5A3C); // 返信を待つ (同期呼出し)
45const uint32_t TDR_EOP_MAGIC2 = (0x6D5E); // 返信を待たない(非同期呼出しまたはリターン)
46
47// Straight Order TDR for SharedChannel
48const uint32_t TDR_SHSOP_MAGIC1 = (0x98D5); // Client to Server
49const uint32_t TDR_SHSOP_MAGIC2 = (0xA9E1); // Server to Client
50const uint32_t TDR_SHEOP_MAGIC1 = (0xB5C3); // 返信を待つ (同期呼出し)
51const uint32_t TDR_SHEOP_MAGIC2 = (0x92A1); // 返信を待たない(非同期呼出しまたはリターン)
52
53/*
54 * TDR: TECS Data Representation layer
55 */
56[deviate] /* get_intptr が逸脱になる */
57signature sTDR { /* TECS Data Representation */
58
59 /* 制御関数 */
60
61 /* チャンネルのリセット */
62 ER reset( void ); /* 通信チャンネルのリセット */
63 /* 途中でエラーが発生し、送信または受信を続行できなかったときはリセットする */
64 /* 一方がリセットをかけると、他方は RESET エラーを返す */
65 /* 確認できないときは、このチャネルは放棄するしかない */
66
67 /* マジックコードの送受信 */
68 ER sendSOP( [in]bool_t b_client ); /* StartOfPacket magic を送信 */
69 ER receiveSOP( [in]bool_t b_client ); /* StartOfPacket magic を受信 */
70 /* b_client: クライアント側なら true, サーバー側なら false */
71
72 ER sendEOP( [in]bool_t b_continue ); /* EndOfPacket magic を送信(パケットの掃きだしも行う) */
73 ER receiveEOP( [in]bool_t b_continue );/* EndOfPacket magic を受信 */
74 /* b_continue: 同期呼び出しのクライアント側なら true,
75 非同期呼び出しのクライアント側またはサーバー側なら false */
76
77 /* データ送受信関数 */
78
79 /* 整数型 (推奨) */
80 ER putInt8( [in]int8_t in );
81 ER putInt16( [in]int16_t in );
82 ER putInt32( [in]int32_t in );
83 ER putInt64( [in]int64_t in );
84 ER putInt128( [in]int128_t in );
85
86 ER getInt8( [out]int8_t *out );
87 ER getInt16( [out]int16_t *out );
88 ER getInt32( [out]int32_t *out );
89 ER getInt64( [out]int64_t *out );
90 ER getInt128( [out]int128_t *out );
91
92 /* 無符号整数型 (推奨) */
93 ER putUInt8( [in]uint8_t in );
94 ER putUInt16( [in]uint16_t in );
95 ER putUInt32( [in]uint32_t in );
96 ER putUInt64( [in]uint64_t in );
97 ER putUInt128( [in]uint128_t in );
98
99 ER getUInt8( [out]uint8_t *out );
100 ER getUInt16( [out]uint16_t *out );
101 ER getUInt32( [out]uint32_t *out );
102 ER getUInt64( [out]uint64_t *out );
103 ER getUInt128( [out]uint128_t *out );
104
105 /* 文字型(推奨、8bit) */
106 ER putChar( [in]char_t in );
107 ER getChar( [out]char_t *out );
108
109 /* Bool 型 */
110 ER putBool( [in]bool_t in );
111 ER getBool( [out]bool_t *out );
112
113 /* 浮動小数型 */
114 ER putFloat32( [in]float32_t in );
115 ER putDouble64( [in]double64_t in );
116 ER getFloat32( [out]float32_t *out );
117 ER getDouble64( [out]double64_t *out );
118
119
120 /* 非推奨の型(有符号) */
121 ER putSChar( [in]schar_t in );
122 ER putShort( [in]short_t in );
123 ER putInt( [in]int_t in );
124 ER putLong( [in]long_t in );
125
126 ER getSChar( [out]schar_t *out );
127 ER getShort( [out]short_t *out );
128 ER getInt( [out]int_t *out );
129 ER getLong( [out]long_t *out );
130
131
132 /* 非推奨の型(無符号) */
133 ER putUChar( [in]uchar_t in );
134 ER putUShort( [in]ushort_t in );
135 ER putUInt( [in]uint_t in );
136 ER putULong( [in]ulong_t in );
137
138 ER getUChar( [out]unsigned char *out );
139 ER getUShort( [out]ushort_t *out );
140 ER getUInt( [out]uint_t *out );
141 ER getULong( [out]ulong_t *out );
142
143 ER putIntptr( [in]const intptr_t ptr );
144 ER getIntptr( [out]intptr_t *ptr );
145};
146
147// Straight Byte Order TECS Data Representation (Data are always sent in native endian)
148celltype tTDR {
149 call sChannel cChannel;
150 [inline]
151 entry sTDR eTDR;
152
153 var {
154 TMO tmo = C_EXP( "TMO_FEVR" );
155 };
156 require tSysLog.eSysLog;
157};
158
159// Network Byte Order (Big-endian) TECS Data Representation (Data are always sent in big-endian)
160celltype tNBOTDR {
161 call sChannel cChannel;
162 [inline]
163 entry sTDR eTDR;
164
165 var {
166 TMO tmo = C_EXP( "TMO_FEVR" );
167 };
168 require tSysLog.eSysLog;
169};
Note: See TracBrowser for help on using the repository browser.