pjrc.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. Copyright 2011 Jun Wako <wakojun@gmail.com>
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 2 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. #include <stdint.h>
  15. #include "usb_keyboard.h"
  16. #include "usb_mouse.h"
  17. #include "usb_extra.h"
  18. #include "host_driver.h"
  19. #include "pjrc.h"
  20. /*------------------------------------------------------------------*
  21. * Host driver
  22. *------------------------------------------------------------------*/
  23. static uint8_t keyboard_leds(void);
  24. static void send_keyboard(report_keyboard_t *report);
  25. static void send_mouse(report_mouse_t *report);
  26. static void send_system(uint16_t data);
  27. static void send_consumer(uint16_t data);
  28. static host_driver_t driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer};
  29. host_driver_t *pjrc_driver(void) { return &driver; }
  30. static uint8_t keyboard_leds(void) { return usb_keyboard_leds; }
  31. static void send_keyboard(report_keyboard_t *report) { usb_keyboard_send_report(report); }
  32. static void send_mouse(report_mouse_t *report) {
  33. #ifdef MOUSE_ENABLE
  34. usb_mouse_send(report->x, report->y, report->v, report->h, report->buttons);
  35. #endif
  36. }
  37. static void send_system(uint16_t data) {
  38. #ifdef EXTRAKEY_ENABLE
  39. usb_extra_system_send(data);
  40. #endif
  41. }
  42. static void send_consumer(uint16_t data) {
  43. #ifdef EXTRAKEY_ENABLE
  44. usb_extra_consumer_send(data);
  45. #endif
  46. }