Rev 4329 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4329 | Rev 4330 | ||
|---|---|---|---|
| Line 40... | Line 40... | ||
| 40 | #include <kbd.h> |
40 | #include <kbd.h> |
| 41 | #include <kbd_port.h> |
41 | #include <kbd_port.h> |
| 42 | #include <sysinfo.h> |
42 | #include <sysinfo.h> |
| 43 | #include <stdio.h> |
43 | #include <stdio.h> |
| 44 | #include <thread.h> |
44 | #include <thread.h> |
| - | 45 | #include <bool.h> |
|
| 45 | 46 | ||
| 46 | #define POLL_INTERVAL 10000 |
47 | #define POLL_INTERVAL 10000 |
| 47 | 48 | ||
| 48 | /** |
49 | /** |
| 49 | * SGCN buffer header. It is placed at the very beginning of the SGCN |
50 | * SGCN buffer header. It is placed at the very beginning of the SGCN |
| Line 90... | Line 91... | ||
| 90 | static uintptr_t sram_buffer_offset; |
91 | static uintptr_t sram_buffer_offset; |
| 91 | 92 | ||
| 92 | /* polling thread */ |
93 | /* polling thread */ |
| 93 | static void *sgcn_thread_impl(void *arg); |
94 | static void *sgcn_thread_impl(void *arg); |
| 94 | 95 | ||
| - | 96 | static volatile bool polling_disabled = false; |
|
| 95 | 97 | ||
| 96 | /** |
98 | /** |
| 97 | * Initializes the SGCN driver. |
99 | * Initializes the SGCN driver. |
| 98 | * Maps the physical memory (SRAM) and creates the polling thread. |
100 | * Maps the physical memory (SRAM) and creates the polling thread. |
| 99 | */ |
101 | */ |
| Line 120... | Line 122... | ||
| 120 | return 0; |
122 | return 0; |
| 121 | } |
123 | } |
| 122 | 124 | ||
| 123 | void kbd_port_yield(void) |
125 | void kbd_port_yield(void) |
| 124 | { |
126 | { |
| - | 127 | polling_disabled = true; |
|
| 125 | } |
128 | } |
| 126 | 129 | ||
| 127 | void kbd_port_reclaim(void) |
130 | void kbd_port_reclaim(void) |
| 128 | { |
131 | { |
| - | 132 | polling_disabled = false; |
|
| 129 | } |
133 | } |
| 130 | 134 | ||
| 131 | /** |
135 | /** |
| 132 | * Handler of the "key pressed" event. Reads codes of all the pressed keys from |
136 | * Handler of the "key pressed" event. Reads codes of all the pressed keys from |
| 133 | * the buffer. |
137 | * the buffer. |
| Line 160... | Line 164... | ||
| 160 | static void *sgcn_thread_impl(void *arg) |
164 | static void *sgcn_thread_impl(void *arg) |
| 161 | { |
165 | { |
| 162 | (void) arg; |
166 | (void) arg; |
| 163 | 167 | ||
| 164 | while (1) { |
168 | while (1) { |
| - | 169 | if (polling_disabled == false) |
|
| 165 | sgcn_key_pressed(); |
170 | sgcn_key_pressed(); |
| 166 | usleep(POLL_INTERVAL); |
171 | usleep(POLL_INTERVAL); |
| 167 | } |
172 | } |
| 168 | } |
173 | } |
| 169 | 174 | ||
| 170 | - | ||
| 171 | /** @} |
175 | /** @} |
| 172 | */ |
176 | */ |