OSDN Git Service

マルチプロジェクト型にレポジトリを変更するために移動した
[toppersasp4lpc/asp.git] / asp / pdic / uart / uart.h
1 /*
2  *  TOPPERS/ASP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Advanced Standard Profile Kernel
5  * 
6  *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
7  *              Graduate School of Information Science, Nagoya Univ., JAPAN
8  *  Copyright (C) 2010 by TOPPERS/ASP for LPC project
9  *              http://sourceforge.jp/projects/toppersasp4lpc/
10  *
11  * 
12  *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
14  *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17  *      スコード中に含まれていること.
18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21  *      の無保証規定を掲載すること.
22  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24  *      と.
25  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
27  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28  *        報告すること.
29  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
32  *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
33  *      免責すること.
34  * 
35  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
36  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
37  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
38  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
39  *  の責任を負わない.
40  * 
41  */
42 /**
43  * \defgroup TOPPERS_SIO SIOドライバ
44  * \ingroup TOPPERS_ASP
45  */
46 /* \{ */
47 /**
48  * \file uart.h
49  * \brief シリアルI/Oデバイス(SIO)ドライバ(UART汎用)
50  */
51
52 #ifndef TOPPERS_UART_H
53 #define TOPPERS_UART_H
54
55 #include "kernel.h"
56
57 /*
58  *  SIOの割込みベクタ番号
59  */
60 #if (SIO_PORTID == 1)
61 #define INHNO_SIO               INHNO_UART0
62 #define INTNO_SIO               INHNO_UART0
63 #elif (SIO_PORID == 2)
64 #define INHNO_SIO               INHNO_UART1
65 #define INTNO_SIO               INHNO_UART1
66 #elif (SIO_PORID == 3)
67 #define INHNO_SIO               INHNO_UART2
68 #define INTNO_SIO               INHNO_UART2
69 #elif (SIO_PORID == 4)
70 #define INHNO_SIO               INHNO_UART3
71 #define INTNO_SIO               INHNO_UART3
72 #endif
73
74 #define INTPRI_SIO              -3                              /* 割込み優先度 */
75 #define INTATR_SIO              0                               /* 割込み属性 */
76
77 /**
78  * \ingroup SIOAPI
79  * \brief コールバックルーチンの識別番号
80  * \details
81  * porting.txt で要請されている識別番号の宣言。 SIO_RDY_RCVと区別できる
82  * 番号なら何でもいい。
83  */
84 #define SIO_RDY_SND    1U        /* 送信可能コールバック */
85 /**
86  * \ingroup SIOAPI
87  * \brief コールバックルーチンの識別番号
88  * \details
89  * porting.txt で要請されている識別番号の宣言。 SIO_RDY_SNDと区別できる
90  * 番号なら何でもいい。
91  */
92 #define SIO_RDY_RCV    2U        /* 受信通知コールバック */
93
94 #ifndef TOPPERS_MACRO_ONLY
95
96 /**
97  * \ingroup SIOAPI
98  * \brief シリアルポートの管理ブロック
99  * \details
100  * porting.txtの8.3節で要請されている管理ブロックデータ型。
101  * シリアル・サービス・タスクとSIOペリフェラルAPIの間での管理データの
102  * やりとりに使われる。
103  */
104 typedef struct sio_port_control_block {
105         ID peripheral_index;    /**< ペリフェラル番号。0オリジン */
106         uint32_t reg_base;      /**< SIOペリフェラルのレジスタ・ベース・アドレス */
107         intptr_t exinf;                 /**< sio_opn_porが渡すexinf引数の格納場所。 */
108 } SIOPCB;
109
110 /*
111  *  SIO初期化
112  */
113 extern void sio_initialize(intptr_t exinf);
114
115 /*
116  *  シリアルオープン
117  */
118 extern SIOPCB *sio_opn_por(ID siopid, intptr_t exinf);
119
120 /*
121  *  シリアルクローズ
122  */
123 extern void sio_cls_por(SIOPCB *p_siopcb);
124
125 /*
126  *  割込みハンドラ
127  */
128 extern void sio_isr(intptr_t exinf);
129
130 /*
131  *  1文字送信
132  */
133 extern bool_t sio_snd_chr(SIOPCB *siopcb, char_t c);
134
135 /*
136  *  1文字受信
137  */
138 extern int_t sio_rcv_chr(SIOPCB *siopcb);
139
140 /*
141  *  コールバックの許可
142  */
143 extern void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
144
145 /* 
146  *  コールバックの禁止
147  */
148 extern void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
149
150 /*
151  *  送信可能コールバック
152  */
153 extern void sio_irdy_snd(intptr_t exinf);
154
155 /*
156  *  受信通知コールバック
157  */
158 extern void sio_irdy_rcv(intptr_t exinf);
159
160 /*
161  *  1文字送信(ポーリングでの出力)
162  */
163 extern void sio_pol_snd_chr(char_t c, ID siopid);
164
165 /*
166  *  ターゲットのシリアル初期化
167  */
168 extern void target_uart_init(ID siopid);
169
170 #endif /* TOPPERS_MACRO_ONLY */
171 #endif /* TOPPERS_TARGET_SERIAL_H */
172 /* \} */