8908db2786a8e98e4d143d22cec5ad8d92125c37
[bertos.git] / hw / hw_kbd.h
1 /*!
2  * \file
3  * <!--
4  * Copyright 2003, 2004, 2005, 2006 Develer S.r.l. (http://www.develer.com/)
5  * Copyright 2000 Bernardo Innocenti
6  * All Rights Reserved.
7  * -->
8  *
9  * \brief Keyboard hardware-specific definitions
10  *
11  * \version $Id$
12  *
13  * \author Francesco Sacchi <batt@develer.com>
14  * \author Stefano Fedrigo <a@develer.com>
15  */
16
17 /*#*
18  *#* $Log$
19  *#* Revision 1.1  2006/02/10 12:31:03  bernie
20  *#* Add templates for hw definitions.
21  *#*
22  *#*/
23
24 #ifndef HW_KBD_H
25 #define HW_KBD_H
26
27
28 #include "kbd_map.h"
29 #include <cfg/macros.h>
30 #include <cfg/debug.h>
31
32
33  /*!
34  * \name CPU ports <-> switches assignement
35  * @{
36  */
37
38 #define K_RPT_MASK (K_UP | K_DOWN | K_OK | K_CANCEL)
39 /*@}*/
40
41
42 #define KBD_HW_INIT \
43         do { \
44         } while (0)
45
46
47 /*!
48  * Read the keyboard ports and return the mask of
49  * depressed keys.
50  */
51 INLINE keymask_t kbd_readkeys(void)
52 {
53         keymask_t key = 0;
54
55         uint32_t mask = 0xF;
56
57         if (!(mask & 1))
58                 key |= K_OK;
59         if (!(mask & 2))
60                 key |= K_CANCEL;
61         if (!(mask & 4))
62                 key |= K_UP;
63         if (!(mask & 8))
64                 key |= K_DOWN;
65
66         return key;
67 }
68
69 #endif /* HW_KBD_H */