aboutsummaryrefslogtreecommitdiff
path: root/protocol/pjrc/pjrc.c
diff options
context:
space:
mode:
Diffstat (limited to 'protocol/pjrc/pjrc.c')
-rw-r--r--protocol/pjrc/pjrc.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/protocol/pjrc/pjrc.c b/protocol/pjrc/pjrc.c
new file mode 100644
index 000000000..0562a12ff
--- /dev/null
+++ b/protocol/pjrc/pjrc.c
@@ -0,0 +1,76 @@
1/*
2Copyright 2011 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include <stdint.h>
19#include "usb_keyboard.h"
20#include "usb_mouse.h"
21#include "usb_extra.h"
22#include "host_driver.h"
23#include "pjrc.h"
24
25
26/*------------------------------------------------------------------*
27 * Host driver
28 *------------------------------------------------------------------*/
29static uint8_t keyboard_leds(void);
30static void send_keyboard(report_keyboard_t *report);
31static void send_mouse(report_mouse_t *report);
32static void send_system(uint16_t data);
33static void send_consumer(uint16_t data);
34
35static host_driver_t driver = {
36 keyboard_leds,
37 send_keyboard,
38 send_mouse,
39 send_system,
40 send_consumer
41};
42
43host_driver_t *pjrc_driver(void)
44{
45 return &driver;
46}
47
48static uint8_t keyboard_leds(void) {
49 return usb_keyboard_leds;
50}
51
52static void send_keyboard(report_keyboard_t *report)
53{
54 usb_keyboard_send_report(report);
55}
56
57static void send_mouse(report_mouse_t *report)
58{
59#ifdef MOUSE_ENABLE
60 usb_mouse_send(report->x, report->y, report->v, report->h, report->buttons);
61#endif
62}
63
64static void send_system(uint16_t data)
65{
66#ifdef EXTRAKEY_ENABLE
67 usb_extra_system_send(data);
68#endif
69}
70
71static void send_consumer(uint16_t data)
72{
73#ifdef EXTRAKEY_ENABLE
74 usb_extra_consumer_send(data);
75#endif
76}