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

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

ASP3, TINET, mbed を更新

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