OSDN Git Service

Step 10 added.
[kozos-expbrd/kozos_expbrd.git] / firm / tools / kz_h8write / serial.h
1 /**
2  * @file serial.h
3  * @author Shinichiro Nakamura
4  * @brief シリアルポートドライバのインターフェース定義。
5  */
6
7 /*
8  * ===============================================================
9  *  Serial interface library
10  *  Version 0.0.4
11  * ===============================================================
12  * Copyright (c) 2010-2012 Shinichiro Nakamura
13  *
14  * Permission is hereby granted, free of charge, to any person
15  * obtaining a copy of this software and associated documentation
16  * files (the "Software"), to deal in the Software without
17  * restriction, including without limitation the rights to use,
18  * copy, modify, merge, publish, distribute, sublicense, and/or
19  * sell copies of the Software, and to permit persons to whom the
20  * Software is furnished to do so, subject to the following
21  * conditions:
22  *
23  * The above copyright notice and this permission notice shall be
24  * included in all copies or substantial portions of the Software.
25  *
26  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
27  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
28  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
29  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
30  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
31  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
32  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
33  * OTHER DEALINGS IN THE SOFTWARE.
34  * ===============================================================
35  */
36
37 #ifndef SERIAL_H
38 #define SERIAL_H
39
40 #include <stdio.h>
41
42 typedef struct serial SERIAL;
43
44 /**
45  * @brief ボーレート.
46  */
47 enum SerialBaud {
48     SerialBaud2400,
49     SerialBaud4800,
50     SerialBaud9600,
51     SerialBaud19200,
52     SerialBaud38400
53 };
54
55 #ifdef __cplusplus
56 extern "C" {
57 #endif
58
59 /**
60  * シリアルポートをオープンする.
61  *
62  * @param devfile シリアルポートのデバイスファイル名.
63  * @param baud ボーレート.
64  *
65  * @retval !NULL ハンドラ。
66  * @retval NULL 失敗。
67  */
68 SERIAL *serial_open(const char *devfile, const enum SerialBaud baud);
69
70 /**
71  * シリアルポートをクローズする.
72  *
73  * @param s シリアルデスクリプタへのポインタ.
74  *
75  * @return 成功したら0を返す.
76  */
77 int serial_close(SERIAL * s);
78
79 /**
80  * シリアルポートから指定バイト数の読み込みを実行する.
81  *
82  * @param s シリアルデスクリプタへのポインタ.
83  * @param buf バッファへのポインタ.
84  * @param size 読み込みバイト数.
85  *
86  * @return 成功したら0を返す.
87  */
88 int serial_read(SERIAL * s, unsigned char *buf, const size_t size);
89
90 /**
91  * シリアルポートから指定バイト数の読み込みを実行する.
92  *
93  * @param s シリアルデスクリプタへのポインタ.
94  * @param buf バッファへのポインタ.
95  * @param size 読み込みバイト数.
96  * @param ms ミリ秒単位のタイムアウト時間.
97  *
98  * @return 成功したら0を返す.
99  */
100 int serial_read_with_timeout(
101         SERIAL * s, unsigned char *buf, const size_t size, const int ms);
102
103 /**
104  * シリアルポートへ指定バイト数の書き込みを実行する.
105  *
106  * @param s シリアルデスクリプタへのポインタ.
107  * @param buf バッファへのポインタ.
108  * @param size 書き込みバイト数.
109  *
110  * @return 成功したら0を返す.
111  */
112 int serial_write(SERIAL * s, const unsigned char *buf, const size_t size);
113
114 #ifdef __cplusplus
115 }
116 #endif
117
118 #endif