source: asp3_tinet_ecnl_arm/trunk/asp3_dcre/tecsgen/tecs/rpc/TDR.cdl@ 352

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

arm向けASP3版ECNLを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/plain;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
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 /* マジックコードの送受信 */
73 // ER sendSHSOP( [in]bool_t b_client ); /* StartOfPacket magic を送信 */
74 // ER receiveSHSOP( [in]bool_t b_client ); /* StartOfPacket magic を受信 */
75 /* b_client: クライアント側なら true, サーバー側なら false */
76
77 ER sendEOP( [in]bool_t b_continue ); /* EndOfPacket magic を送信(パケットの掃きだしも行う) */
78 ER receiveEOP( [in]bool_t b_continue );/* EndOfPacket magic を受信 */
79 /* b_continue: 同期呼び出しのクライアント側なら true,
80 非同期呼び出しのクライアント側またはサーバー側なら false */
81
82 /* データ送受信関数 */
83
84 /* 整数型 (推奨) */
85 ER putInt8( [in]int8_t in );
86 ER putInt16( [in]int16_t in );
87 ER putInt32( [in]int32_t in );
88 ER putInt64( [in]int64_t in );
89 ER putInt128( [in]int128_t in );
90
91 ER getInt8( [out]int8_t *out );
92 ER getInt16( [out]int16_t *out );
93 ER getInt32( [out]int32_t *out );
94 ER getInt64( [out]int64_t *out );
95 ER getInt128( [out]int128_t *out );
96
97 /* 無符号整数型 (推奨) */
98 ER putUInt8( [in]uint8_t in );
99 ER putUInt16( [in]uint16_t in );
100 ER putUInt32( [in]uint32_t in );
101 ER putUInt64( [in]uint64_t in );
102 ER putUInt128( [in]uint128_t in );
103
104 ER getUInt8( [out]uint8_t *out );
105 ER getUInt16( [out]uint16_t *out );
106 ER getUInt32( [out]uint32_t *out );
107 ER getUInt64( [out]uint64_t *out );
108 ER getUInt128( [out]uint128_t *out );
109
110 /* 文字型(推奨、8bit) */
111 ER putChar( [in]char_t in );
112 ER getChar( [out]char_t *out );
113
114 /* Bool 型 */
115 ER putBool( [in]bool_t in );
116 ER getBool( [out]bool_t *out );
117
118 /* 浮動小数型 */
119 ER putFloat32( [in]float32_t in );
120 ER putDouble64( [in]double64_t in );
121 ER getFloat32( [out]float32_t *out );
122 ER getDouble64( [out]double64_t *out );
123
124
125 /* 非推奨の型(有符号) */
126 ER putSChar( [in]schar_t in );
127 ER putShort( [in]short_t in );
128 ER putInt( [in]int_t in );
129 ER putLong( [in]long_t in );
130
131 ER getSChar( [out]schar_t *out );
132 ER getShort( [out]short_t *out );
133 ER getInt( [out]int_t *out );
134 ER getLong( [out]long_t *out );
135
136
137 /* 非推奨の型(無符号) */
138 ER putUChar( [in]uchar_t in );
139 ER putUShort( [in]ushort_t in );
140 ER putUInt( [in]uint_t in );
141 ER putULong( [in]ulong_t in );
142
143 ER getUChar( [out]unsigned char *out );
144 ER getUShort( [out]ushort_t *out );
145 ER getUInt( [out]uint_t *out );
146 ER getULong( [out]ulong_t *out );
147
148 ER putIntptr( [in]const intptr_t ptr );
149 ER getIntptr( [out]intptr_t *ptr );
150};
151
152// Straight Order TECS Data Representation (Straight means no endian-conversion is done)
153celltype tTDR {
154 call sChannel cChannel;
155 [inline]
156 entry sTDR eTDR;
157
158 var {
159 TMO tmo = C_EXP( "TMO_FEVR" );
160 };
161 require tSysLog.eSysLog;
162};
163
164// Network Byte Order (Big-endian) TECS Data Representation (Data are always sent in big-endian)
165celltype tNBOTDR {
166 call sChannel cChannel;
167 [inline]
168 entry sTDR eTDR;
169
170 var {
171 TMO tmo = C_EXP( "TMO_FEVR" );
172 };
173 require tSysLog.eSysLog;
174};
Note: See TracBrowser for help on using the repository browser.