source: EcnlProtoTool/trunk/asp3_dcre/syssvc/tSerialPort.cdl@ 270

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

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plain
File size: 7.4 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
5 *
6 * Copyright (C) 2015 by Ushio Laboratory
7 * Graduate School of Engineering Science, Osaka Univ., JAPAN
8 * Copyright (C) 2015,2016 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 * 上記著作権者
12は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
13 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
14 * 変・再é…
15å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
18 * スコード中に含まれていること.
19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20 * 用できる形で再é…
21å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
22å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
23 * 者
24マニュアルなど)に,上記の著作権表示,この利用条件および下記
25 * の無保証規定を掲載すること.
26 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
27 * 用できない形で再é…
28å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
29 * と.
30 * (a) 再é…
31å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
32マニュアルなど)に,上記の著
33 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
34 * (b) 再é…
35å¸ƒã®å½¢æ…
36‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
37 * 報告すること.
38 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
39 * 害からも,上記著作権者
40およびTOPPERSプロジェクトをå…
41è²¬ã™ã‚‹ã“と.
42 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
43 * 由に基づく請求からも,上記著作権者
44およびTOPPERSプロジェクトを
45 * å…
46è²¬ã™ã‚‹ã“と.
47 *
48 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
49お
50 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
51 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
52 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
53 * の責任を負わない.
54 *
55 * $Id: tSerialPort.cdl 270 2017-02-09 04:03:47Z coas-nagasima $
56 */
57
58/*
59 * シリアルインタフェースドライバのコンポーネント記述ファイル
60 */
61
62/*
63 * シリアルインタフェースドライバをTECSを用いずに呼び出すためにも必
64要
65 * な定義の取込み
66 */
67import_C("syssvc/serial.h");
68
69/*
70 * シリアルインタフェースドライバのシグニチャ
71 */
72signature sSerialPort {
73 ER open(void);
74 ER close(void);
75 ER_UINT read([out,size_is(length)] char *buffer, [in] uint_t length);
76 ER_UINT write([in,size_is(length)] const char *buffer, [in] uint_t length);
77 ER control([in] uint_t ioControl);
78 ER refer([out] T_SERIAL_RPOR *pk_rpor);
79};
80
81/*
82 * シリアルインタフェースドライバのターゲット依存部が提供する関数
83 */
84signature sSIOPort {
85 void open(void);
86 void close(void);
87 bool_t putChar([in] char c);
88 int_t getChar(void);
89 void enableCBR([in] uint_t cbrtn);
90 void disableCBR([in] uint_t cbrtn);
91};
92
93/*
94 * コールバックルーチンの識別番号(cbrtnパラメータに用いる)
95 */
96const uint_t SIOSendReady = 1; /* 送信可能コールバック */
97const uint_t SIOReceiveReady = 2; /* 受信通知コールバック */
98
99/*
100 * ターゲット依存部からのコールバック
101 */
102[callback]
103signature siSIOCBR {
104 void readySend(void);
105 void readyReceive(void);
106};
107
108/*
109 * シリアルインタフェースドライバ管理用のシグニチャ(終了処理ルーチン
110 * からの使用を想定)
111 */
112signature snSerialPortManage {
113 bool_t getChar([out] char *p_char);
114};
115
116/*
117 * シリアルポートの制御部のセルタイプ
118 */
119celltype tSerialPortMain {
120 entry sSerialPort eSerialPort;
121 entry snSerialPortManage enSerialPortManage;
122
123 call sSIOPort cSIOPort; /* 簡易SIOドライバとの接続 */
124 entry siSIOCBR eiSIOCBR;
125
126 call sSemaphore cSendSemaphore; /* 送信用セマフォとの接続 */
127 call siSemaphore ciSendSemaphore;
128 call sSemaphore cReceiveSemaphore; /* 受信用セマフォとの接続 */
129 call siSemaphore ciReceiveSemaphore;
130
131 attr {
132 uint_t receiveBufferSize = 256; /* 受信バッファサイズ */
133 uint_t sendBufferSize = 256; /* 送信バッファサイズ */
134 };
135 var {
136 bool_t openFlag = C_EXP("false"); /* オープン済みフラグ */
137 bool_t errorFlag; /* エラーフラグ */
138 uint_t ioControl; /* 動作制御の設定値 */
139
140 [size_is(receiveBufferSize)] char *receiveBuffer; /* 受信バッファ */
141 uint_t receiveReadPointer; /* 受信バッファ読出しポインタ */
142 uint_t receiveWritePointer; /* 受信バッファ書込みポインタ */
143 uint_t receiveCount; /* 受信バッファ中の文字数 */
144 char receiveFlowControl; /* 送るべきSTART/STOP */
145 bool_t receiveStopped; /* STOPを送った状æ…
146‹ã‹ï¼Ÿ */
147
148 [size_is(sendBufferSize)] char *sendBuffer; /* 送信バッファ */
149 uint_t sendReadPointer; /* 送信バッファ読出しポインタ */
150 uint_t sendWritePointer; /* 送信バッファ書込みポインタ */
151 uint_t sendCount; /* 送信バッファ中の文字数 */
152 bool_t sendStopped; /* STOPを受け取った状æ…
153‹ã‹ï¼Ÿ */
154 };
155};
156
157/*
158 * シリアルポートドライバ(複合セル)のセルタイプ
159 *
160 * シリアルポートの制御部と,それが使用する2つのセマフォ(受信用と送
161 * 信用)を複合化して,1つのコンポーネントとしている.
162 */
163composite tSerialPort {
164 entry sSerialPort eSerialPort;
165 entry snSerialPortManage enSerialPortManage;
166
167 call sSIOPort cSIOPort; /* 簡易SIOドライバとの接続 */
168 entry siSIOCBR eiSIOCBR;
169
170 attr {
171 uint_t receiveBufferSize = 256; /* 受信バッファサイズ */
172 uint_t sendBufferSize = 256; /* 送信バッファサイズ */
173 };
174
175 /* 受信用のセマフォ */
176 cell tSemaphore ReceiveSemaphore {
177 attribute = C_EXP("TA_NULL");
178 initialCount = 0;
179 maxCount =1;
180 };
181
182 /* 送信用のセマフォ */
183 cell tSemaphore SendSemaphore {
184 attribute = C_EXP("TA_NULL");
185 initialCount = 1;
186 maxCount =1;
187 };
188
189 /* シリアルポートの制御部 */
190 cell tSerialPortMain SerialPortMain {
191 /* セマフォとの結合 */
192 cReceiveSemaphore = ReceiveSemaphore.eSemaphore;
193 ciReceiveSemaphore = ReceiveSemaphore.eiSemaphore;
194 cSendSemaphore = SendSemaphore.eSemaphore;
195 ciSendSemaphore = SendSemaphore.eiSemaphore;
196
197 /* 呼び口のエクスポート */
198 cSIOPort => composite.cSIOPort;
199
200 /* 属性の継承 */
201 receiveBufferSize = composite.receiveBufferSize;
202 sendBufferSize = composite.sendBufferSize;
203 };
204
205 /* 受け口のエクスポート */
206 composite.eSerialPort => SerialPortMain.eSerialPort;
207 composite.enSerialPortManage => SerialPortMain.enSerialPortManage;
208 composite.eiSIOCBR => SerialPortMain.eiSIOCBR;
209};
Note: See TracBrowser for help on using the repository browser.