OSDN Git Service

(none)
[hos/hos-v4a.git] / aplfw / driver / serial / pc16550 / pc16550drv.h
1 /** 
2  *  Hyper Operating System  Application Framework
3  *
4  * @file  scidrv.h
5  * @brief %jp{16550互換シリアル用デバイスドライバ}
6  *
7  * Copyright (C) 2006-2007 by Project HOS
8  * http://sourceforge.jp/projects/hos/
9  */
10
11
12 #ifndef __HOS__pc16550drv_h__
13 #define __HOS__pc16550drv_h__
14
15
16 #include "system/sysapi/sysapi.h"
17 #include "system/file/chrdrv.h"
18 #include "pc16550hal.h"
19 #include "library/container/streambuf/streambuf.h"
20
21
22 /* PC16550用ドライバ制御部 */
23 typedef struct c_pc16550drv
24 {
25         C_CHRDRV                ChrDrv;                 /* キャラクタ型デバイスドライバを継承 */
26
27         C_PC16550HAL    Pc16550Hal;             /* ハードウェア制御クラス */
28         int                             iOpenCount;             /* オープンカウンタ */
29         int                             iIntNum;                /* 割込み番号 */
30         SYSEVT_HANDLE   hEvtSend;               /* 送信イベント */
31         SYSEVT_HANDLE   hEvtRecv;               /* 受信イベント */
32         SYSMTX_HANDLE   hMtxSend;               /* 送信排他制御ミューテックス */
33         SYSMTX_HANDLE   hMtxRecv;               /* 受信排他制御ミューテックス */
34         C_STREAMBUF             StmBufRecv;             /* 受信バッファ */
35 } C_PC16550DRV;
36
37
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42
43 void Pc16550Drv_Create(C_PC16550DRV *self, void *pRegAddr, unsigned int uiRegStep, int iIntNum, long lSysClock, int iBufSize);  /**< コンストラクタ */
44 void Pc16550Drv_Delete(C_DRVOBJ *pDrvObj);
45
46 #ifdef __cplusplus
47 }
48 #endif
49
50
51 #endif  /* __HOS__pc16550drv_h__ */
52
53
54 /* end of file */