8837543f153b5083d145c2280f13fce2eff5033d
[bertos.git] / drv / ser_p.h
1 /**
2  * \file
3  * <!--
4  * Copyright 2003,2004 Develer S.r.l. (http://www.develer.com/)
5  * This file is part of DevLib - See README.devlib for information.
6  * -->
7  *
8  * \brief Hardware dependent serial driver (interface)
9  *
10  * \version $Id$
11  *
12  * \author Stefano Fedrigo <aleph@develer.com>
13  * \author Giovanni Bajo <rasky@develer.com>
14  */
15
16 /*#*
17  *#* $Log$
18  *#* Revision 1.10  2006/07/19 12:56:26  bernie
19  *#* Convert to new Doxygen style.
20  *#*
21  *#* Revision 1.9  2006/02/17 22:23:06  bernie
22  *#* Update POSIX serial emulator.
23  *#*
24  *#* Revision 1.8  2005/11/04 16:20:02  bernie
25  *#* Fix reference to README.devlib in header.
26  *#*
27  *#* Revision 1.7  2005/01/14 00:47:56  aleph
28  *#* Rename callbacks; SerialHardwareVT.txSending: New callback.
29  *#*
30  *#* Revision 1.6  2004/12/08 08:56:58  bernie
31  *#* Reformat.
32  *#*
33  *#* Revision 1.5  2004/09/06 21:40:50  bernie
34  *#* Move buffer handling in chip-specific driver.
35  *#*
36  *#* Revision 1.4  2004/08/25 14:12:08  rasky
37  *#* Aggiornato il comment block dei log RCS
38  *#*
39  *#* Revision 1.3  2004/06/03 11:27:09  bernie
40  *#* Add dual-license information.
41  *#*
42  *#* Revision 1.2  2004/05/23 18:21:53  bernie
43  *#* Trim CVS logs and cleanup header info.
44  *#*
45  *#*/
46
47 #ifndef DRV_SER_P_H
48 #define DRV_SER_P_H
49
50 #include <cfg/compiler.h> /* size_t */
51
52 struct SerialHardware;
53 struct Serial;
54
55 struct SerialHardwareVT
56 {
57         void (*init)(struct SerialHardware *ctx, struct Serial *ser);
58         void (*cleanup)(struct SerialHardware *ctx);
59         void (*setBaudrate)(struct SerialHardware *ctx, unsigned long rate);
60         void (*setParity)(struct SerialHardware *ctx, int parity);
61         void (*txStart)(struct SerialHardware *ctx);
62         bool (*txSending)(struct SerialHardware *ctx);
63 };
64
65 struct SerialHardware
66 {
67         const struct SerialHardwareVT *table;
68         unsigned char *txbuffer;
69         unsigned char *rxbuffer;
70         size_t         txbuffer_size;
71         size_t         rxbuffer_size;
72 };
73
74 struct SerialHardware *ser_hw_getdesc(int unit);
75
76 #endif /* DRV_SER_P_H */