summaryrefslogtreecommitdiffstats
path: root/tmk_core/protocol
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/protocol')
-rw-r--r--tmk_core/protocol/arm_atsam/usb/usb_protocol_hid.h7
-rw-r--r--tmk_core/protocol/chibios/main.c8
-rw-r--r--tmk_core/protocol/chibios/usb_main.c152
-rw-r--r--tmk_core/protocol/iwrap/iwrap.c3
-rw-r--r--tmk_core/protocol/iwrap/main.c2
-rw-r--r--tmk_core/protocol/lufa/adafruit_ble.cpp6
-rw-r--r--tmk_core/protocol/lufa/lufa.c7
-rw-r--r--tmk_core/protocol/mbed/HIDKeyboard.cpp260
-rw-r--r--tmk_core/protocol/mbed/HIDKeyboard.h32
-rw-r--r--tmk_core/protocol/mbed/mbed_driver.cpp21
-rw-r--r--tmk_core/protocol/mbed/mbed_driver.h3
-rw-r--r--tmk_core/protocol/ps2_io_mbed.c51
-rw-r--r--tmk_core/protocol/serial_soft.c3
-rw-r--r--tmk_core/protocol/usb_descriptor.c1048
-rw-r--r--tmk_core/protocol/vusb/vusb.c28
15 files changed, 813 insertions, 818 deletions
diff --git a/tmk_core/protocol/arm_atsam/usb/usb_protocol_hid.h b/tmk_core/protocol/arm_atsam/usb/usb_protocol_hid.h
index 2f8a39bdd8..fb97f63cef 100644
--- a/tmk_core/protocol/arm_atsam/usb/usb_protocol_hid.h
+++ b/tmk_core/protocol/arm_atsam/usb/usb_protocol_hid.h
@@ -186,9 +186,10 @@ COMPILER_PACK_RESET()
#define USB_HID_COUNTRY_UK 32 // UK
#define USB_HID_COUNTRY_US 33 // US
#define USB_HID_COUNTRY_YUGOSLAVIA 34 // Yugoslavia
-#define USB_HID_COUNTRY_TURKISH_F 35 // Turkish-F
- //! @}
- //! @}
+#define USB_HID_COUNTRY_TURKISH_F \
+ 35 // Turkish-F
+ //! @}
+ //! @}
//! @}
//! \name HID KEYS values
diff --git a/tmk_core/protocol/chibios/main.c b/tmk_core/protocol/chibios/main.c
index de2b493b84..c304f4d795 100644
--- a/tmk_core/protocol/chibios/main.c
+++ b/tmk_core/protocol/chibios/main.c
@@ -32,6 +32,11 @@
#include "sendchar.h"
#include "debug.h"
#include "printf.h"
+#include "rgblight_reconfig.h"
+
+#if (defined(RGB_MIDI) || defined(RGBLIGHT_ANIMATIONS)) && defined(RGBLIGHT_ENABLE)
+# include "rgblight.h"
+#endif
#ifdef SLEEP_LED_ENABLE
# include "sleep_led.h"
#endif
@@ -215,5 +220,8 @@ int main(void) {
#ifdef RAW_ENABLE
raw_hid_task();
#endif
+#if defined(RGBLIGHT_ANIMATIONS) && defined(RGBLIGHT_ENABLE)
+ rgblight_task();
+#endif
}
}
diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c
index c8a6bbb43f..740763de2f 100644
--- a/tmk_core/protocol/chibios/usb_main.c
+++ b/tmk_core/protocol/chibios/usb_main.c
@@ -15,6 +15,16 @@
* GPL v2 or later.
*/
+/*
+ * Implementation notes:
+ *
+ * USBEndpointConfig - Configured using explicit order instead of struct member name.
+ * This is due to ChibiOS hal LLD differences, which is dependent on hardware,
+ * "USBv1" devices have `ep_buffers` and "OTGv1" have `in_multiplier`.
+ * Given `USBv1/hal_usb_lld.h` marks the field as "not currently used" this code file
+ * makes the assumption this is safe to avoid littering with preprocessor directives.
+ */
+
#include "ch.h"
#include "hal.h"
@@ -98,7 +108,7 @@ static const USBDescriptor *usb_get_descriptor_cb(USBDriver *usbp, uint8_t dtype
#ifndef KEYBOARD_SHARED_EP
/* keyboard endpoint state structure */
static USBInEndpointState kbd_ep_state;
-/* keyboard endpoint initialization structure (IN) */
+/* keyboard endpoint initialization structure (IN) - see USBEndpointConfig comment at top of file */
static const USBEndpointConfig kbd_ep_config = {
USB_EP_MODE_TYPE_INTR, /* Interrupt EP */
NULL, /* SETUP packet notification callback */
@@ -117,7 +127,7 @@ static const USBEndpointConfig kbd_ep_config = {
/* mouse endpoint state structure */
static USBInEndpointState mouse_ep_state;
-/* mouse endpoint initialization structure (IN) */
+/* mouse endpoint initialization structure (IN) - see USBEndpointConfig comment at top of file */
static const USBEndpointConfig mouse_ep_config = {
USB_EP_MODE_TYPE_INTR, /* Interrupt EP */
NULL, /* SETUP packet notification callback */
@@ -136,7 +146,7 @@ static const USBEndpointConfig mouse_ep_config = {
/* shared endpoint state structure */
static USBInEndpointState shared_ep_state;
-/* shared endpoint initialization structure (IN) */
+/* shared endpoint initialization structure (IN) - see USBEndpointConfig comment at top of file */
static const USBEndpointConfig shared_ep_config = {
USB_EP_MODE_TYPE_INTR, /* Interrupt EP */
NULL, /* SETUP packet notification callback */
@@ -164,58 +174,62 @@ typedef struct {
QMKUSBDriver driver;
} usb_driver_config_t;
-#define QMK_USB_DRIVER_CONFIG(stream, notification, fixedsize) \
- { \
- .queue_capacity_in = stream##_IN_CAPACITY, .queue_capacity_out = stream##_OUT_CAPACITY, \
- .in_ep_config = {.ep_mode = stream##_IN_MODE, \
- .setup_cb = NULL, \
- .in_cb = qmkusbDataTransmitted, \
- .out_cb = NULL, \
- .in_maxsize = stream##_EPSIZE, \
- .out_maxsize = 0, /* The pointer to the states will be filled during initialization */ \
- .in_state = NULL, \
- .out_state = NULL, \
- .ep_buffers = 2, \
- .setup_buf = NULL}, \
- .out_ep_config = \
- { \
- .ep_mode = stream##_OUT_MODE, \
- .setup_cb = NULL, \
- .in_cb = NULL, \
- .out_cb = qmkusbDataReceived, \
- .in_maxsize = 0, \
- .out_maxsize = stream##_EPSIZE, /* The pointer to the states will be filled during initialization */ \
- .in_state = NULL, \
- .out_state = NULL, \
- .ep_buffers = 2, \
- .setup_buf = NULL, \
- }, \
- .int_ep_config = \
- { \
- .ep_mode = USB_EP_MODE_TYPE_INTR, \
- .setup_cb = NULL, \
- .in_cb = qmkusbInterruptTransmitted, \
- .out_cb = NULL, \
- .in_maxsize = CDC_NOTIFICATION_EPSIZE, \
- .out_maxsize = 0, /* The pointer to the states will be filled during initialization */ \
- .in_state = NULL, \
- .out_state = NULL, \
- .ep_buffers = 2, \
- .setup_buf = NULL, \
- }, \
- .config = { \
- .usbp = &USB_DRIVER, \
- .bulk_in = stream##_IN_EPNUM, \
- .bulk_out = stream##_OUT_EPNUM, \
- .int_in = notification, \
- .in_buffers = stream##_IN_CAPACITY, \
- .out_buffers = stream##_OUT_CAPACITY, \
- .in_size = stream##_EPSIZE, \
- .out_size = stream##_EPSIZE, \
- .fixed_size = fixedsize, \
- .ib = (uint8_t[BQ_BUFFER_SIZE(stream##_IN_CAPACITY, stream##_EPSIZE)]){}, \
- .ob = (uint8_t[BQ_BUFFER_SIZE(stream##_OUT_CAPACITY, stream##_EPSIZE)]){}, \
- } \
+/* Reusable initialization structure - see USBEndpointConfig comment at top of file */
+#define QMK_USB_DRIVER_CONFIG(stream, notification, fixedsize) \
+ { \
+ .queue_capacity_in = stream##_IN_CAPACITY, .queue_capacity_out = stream##_OUT_CAPACITY, \
+ .in_ep_config = \
+ { \
+ stream##_IN_MODE, /* Interrupt EP */ \
+ NULL, /* SETUP packet notification callback */ \
+ qmkusbDataTransmitted, /* IN notification callback */ \
+ NULL, /* OUT notification callback */ \
+ stream##_EPSIZE, /* IN maximum packet size */ \
+ 0, /* OUT maximum packet size */ \
+ NULL, /* IN Endpoint state */ \
+ NULL, /* OUT endpoint state */ \
+ 2, /* IN multiplier */ \
+ NULL /* SETUP buffer (not a SETUP endpoint) */ \
+ }, \
+ .out_ep_config = \
+ { \
+ stream##_OUT_MODE, /* Interrupt EP */ \
+ NULL, /* SETUP packet notification callback */ \
+ NULL, /* IN notification callback */ \
+ qmkusbDataReceived, /* OUT notification callback */ \
+ 0, /* IN maximum packet size */ \
+ stream##_EPSIZE, /* OUT maximum packet size */ \
+ NULL, /* IN Endpoint state */ \
+ NULL, /* OUT endpoint state */ \
+ 2, /* IN multiplier */ \
+ NULL, /* SETUP buffer (not a SETUP endpoint) */ \
+ }, \
+ .int_ep_config = \
+ { \
+ USB_EP_MODE_TYPE_INTR, /* Interrupt EP */ \
+ NULL, /* SETUP packet notification callback */ \
+ qmkusbInterruptTransmitted, /* IN notification callback */ \
+ NULL, /* OUT notification callback */ \
+ CDC_NOTIFICATION_EPSIZE, /* IN maximum packet size */ \
+ 0, /* OUT maximum packet size */ \
+ NULL, /* IN Endpoint state */ \
+ NULL, /* OUT endpoint state */ \
+ 2, /* IN multiplier */ \
+ NULL, /* SETUP buffer (not a SETUP endpoint) */ \
+ }, \
+ .config = { \
+ .usbp = &USB_DRIVER, \
+ .bulk_in = stream##_IN_EPNUM, \
+ .bulk_out = stream##_OUT_EPNUM, \
+ .int_in = notification, \
+ .in_buffers = stream##_IN_CAPACITY, \
+ .out_buffers = stream##_OUT_CAPACITY, \
+ .in_size = stream##_EPSIZE, \
+ .out_size = stream##_EPSIZE, \
+ .fixed_size = fixedsize, \
+ .ib = (uint8_t[BQ_BUFFER_SIZE(stream##_IN_CAPACITY, stream##_EPSIZE)]){}, \
+ .ob = (uint8_t[BQ_BUFFER_SIZE(stream##_OUT_CAPACITY, stream##_EPSIZE)]){}, \
+ } \
}
typedef struct {
@@ -310,7 +324,7 @@ static void usb_event_cb(USBDriver *usbp, usbevent_t event) {
case USB_EVENT_SUSPEND:
#ifdef SLEEP_LED_ENABLE
sleep_led_enable();
-#endif /* SLEEP_LED_ENABLE */
+#endif /* SLEEP_LED_ENABLE */
/* Falls into.*/
case USB_EVENT_UNCONFIGURED:
/* Falls into.*/
@@ -379,7 +393,6 @@ static void set_led_transfer_cb(USBDriver *usbp) {
/* Callback for SETUP request on the endpoint 0 (control) */
static bool usb_request_hook_cb(USBDriver *usbp) {
const USBDescriptor *dp;
- int has_report_id;
/* usbp->setup fields:
* 0: bmRequestType (bitmask)
@@ -432,26 +445,17 @@ static bool usb_request_hook_cb(USBDriver *usbp) {
switch (usbp->setup[1]) { /* bRequest */
case HID_SET_REPORT:
switch (usbp->setup[4]) { /* LSB(wIndex) (check MSB==0 and wLength==1?) */
- case KEYBOARD_INTERFACE:
#if defined(SHARED_EP_ENABLE) && !defined(KEYBOARD_SHARED_EP)
case SHARED_INTERFACE:
+ usbSetupTransfer(usbp, set_report_buf, sizeof(set_report_buf), set_led_transfer_cb);
+ return TRUE;
+ break;
#endif
+
+ case KEYBOARD_INTERFACE:
/* keyboard_led_stats = <read byte from next OUT report>
* keyboard_led_stats needs be word (or dword), otherwise we get an exception on F0 */
- has_report_id = 0;
-#if defined(SHARED_EP_ENABLE)
- if (usbp->setup[4] == SHARED_INTERFACE) {
- has_report_id = 1;
- }
-#endif
- if (usbp->setup[4] == KEYBOARD_INTERFACE && !keyboard_protocol) {
- has_report_id = 0;
- }
- if (has_report_id) {
- usbSetupTransfer(usbp, set_report_buf, sizeof(set_report_buf), set_led_transfer_cb);
- } else {
- usbSetupTransfer(usbp, (uint8_t *)&keyboard_led_stats, 1, NULL);
- }
+ usbSetupTransfer(usbp, (uint8_t *)&keyboard_led_stats, 1, NULL);
return TRUE;
break;
}
@@ -463,9 +467,9 @@ static bool usb_request_hook_cb(USBDriver *usbp) {
#ifdef NKRO_ENABLE
keymap_config.nkro = !!keyboard_protocol;
if (!keymap_config.nkro && keyboard_idle) {
-#else /* NKRO_ENABLE */
+#else /* NKRO_ENABLE */
if (keyboard_idle) {
-#endif /* NKRO_ENABLE */
+#endif /* NKRO_ENABLE */
/* arm the idle timer if boot protocol & idle */
osalSysLockFromISR();
chVTSetI(&keyboard_idle_timer, 4 * MS2ST(keyboard_idle), keyboard_idle_timer_cb, (void *)usbp);
diff --git a/tmk_core/protocol/iwrap/iwrap.c b/tmk_core/protocol/iwrap/iwrap.c
index 05e632da38..4d0ca5756b 100644
--- a/tmk_core/protocol/iwrap/iwrap.c
+++ b/tmk_core/protocol/iwrap/iwrap.c
@@ -320,7 +320,8 @@ static void send_mouse(report_mouse_t *report) {
#endif
}
-static void send_system(uint16_t data) { /* not supported */ }
+static void send_system(uint16_t data) { /* not supported */
+}
static void send_consumer(uint16_t data) {
#ifdef EXTRAKEY_ENABLE
diff --git a/tmk_core/protocol/iwrap/main.c b/tmk_core/protocol/iwrap/main.c
index 7ba780ede7..6e9b5455b1 100644
--- a/tmk_core/protocol/iwrap/main.c
+++ b/tmk_core/protocol/iwrap/main.c
@@ -393,7 +393,7 @@ static uint8_t key2asc(uint8_t key) {
case KC_BSLASH:
return '\\';
case KC_NONUS_HASH:
- return '\\';
+ return '#';
case KC_SCOLON:
return ';';
case KC_QUOTE:
diff --git a/tmk_core/protocol/lufa/adafruit_ble.cpp b/tmk_core/protocol/lufa/adafruit_ble.cpp
index 505794a80c..7b3ffdef7a 100644
--- a/tmk_core/protocol/lufa/adafruit_ble.cpp
+++ b/tmk_core/protocol/lufa/adafruit_ble.cpp
@@ -31,9 +31,9 @@
#define ConnectionUpdateInterval 1000 /* milliseconds */
#ifdef SAMPLE_BATTERY
-#ifndef BATTERY_LEVEL_PIN
-# define BATTERY_LEVEL_PIN 7
-#endif
+# ifndef BATTERY_LEVEL_PIN
+# define BATTERY_LEVEL_PIN 7
+# endif
#endif
static struct {
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index eb166c828e..8319b34e94 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -914,14 +914,11 @@ void virtser_send(const uint8_t byte) {
*/
static void setup_mcu(void) {
/* Disable watchdog if enabled by bootloader/fuses */
- MCUSR &= ~(1 << WDRF);
+ MCUSR &= ~_BV(WDRF);
wdt_disable();
/* Disable clock division */
- // clock_prescale_set(clock_div_1);
-
- CLKPR = (1 << CLKPCE);
- CLKPR = (0 << CLKPS3) | (0 << CLKPS2) | (0 << CLKPS1) | (0 << CLKPS0);
+ clock_prescale_set(clock_div_1);
}
/** \brief Setup USB
diff --git a/tmk_core/protocol/mbed/HIDKeyboard.cpp b/tmk_core/protocol/mbed/HIDKeyboard.cpp
deleted file mode 100644
index dbaf108fa1..0000000000
--- a/tmk_core/protocol/mbed/HIDKeyboard.cpp
+++ /dev/null
@@ -1,260 +0,0 @@
-#include <stdint.h>
-#include "USBHID.h"
-#include "USBHID_Types.h"
-#include "USBDescriptor.h"
-#include "HIDKeyboard.h"
-
-#define DEFAULT_CONFIGURATION (1)
-
-HIDKeyboard::HIDKeyboard(uint16_t vendor_id, uint16_t product_id, uint16_t product_release) : USBDevice(vendor_id, product_id, product_release) { USBDevice::connect(); }
-
-bool HIDKeyboard::sendReport(report_keyboard_t report) {
- USBDevice::write(EP1IN, report.raw, sizeof(report), MAX_PACKET_SIZE_EP1);
- return true;
-}
-
-uint8_t HIDKeyboard::leds() { return led_state; }
-
-bool HIDKeyboard::USBCallback_setConfiguration(uint8_t configuration) {
- if (configuration != DEFAULT_CONFIGURATION) {
- return false;
- }
-
- // Configure endpoints > 0
- addEndpoint(EPINT_IN, MAX_PACKET_SIZE_EPINT);
- // addEndpoint(EPINT_OUT, MAX_PACKET_SIZE_EPINT);
-
- // We activate the endpoint to be able to recceive data
- // readStart(EPINT_OUT, MAX_PACKET_SIZE_EPINT);
- return true;
-}
-
-uint8_t *HIDKeyboard::stringImanufacturerDesc() {
- static uint8_t stringImanufacturerDescriptor[] = {
- 0x18, /*bLength*/
- STRING_DESCRIPTOR, /*bDescriptorType 0x03*/
- 't',
- 0,
- 'm',
- 0,
- 'k',
- 0,
- '-',
- 0,
- 'k',
- 0,
- 'b',
- 0,
- 'd',
- 0,
- '.',
- 0,
- 'c',
- 0,
- 'o',
- 0,
- 'm',
- 0 /*bString iManufacturer*/
- };
- return stringImanufacturerDescriptor;
-}
-
-uint8_t *HIDKeyboard::stringIproductDesc() {
- static uint8_t stringIproductDescriptor[] = {
- 0x0a, /*bLength*/
- STRING_DESCRIPTOR, /*bDescriptorType 0x03*/
- 'm',
- 0,
- 'b',
- 0,
- 'e',
- 0,
- 'd',
- 0 /*bString iProduct*/
- };
- return stringIproductDescriptor;
-}
-
-uint8_t *HIDKeyboard::stringIserialDesc() {
- static uint8_t stringIserialDescriptor[] = {
- 0x04, /*bLength*/
- STRING_DESCRIPTOR, /*bDescriptorType 0x03*/
- '0', 0 /*bString iSerial*/
- };
- return stringIserialDescriptor;
-}
-
-uint8_t *HIDKeyboard::reportDesc() {
- static uint8_t reportDescriptor[] = {
- USAGE_PAGE(1), 0x01, // Generic Desktop
- USAGE(1), 0x06, // Keyboard
- COLLECTION(1), 0x01, // Application
-
- USAGE_PAGE(1), 0x07, // Key Codes
- USAGE_MINIMUM(1), 0xE0, USAGE_MAXIMUM(1), 0xE7, LOGICAL_MINIMUM(1), 0x00, LOGICAL_MAXIMUM(1), 0x01, REPORT_SIZE(1), 0x01, REPORT_COUNT(1), 0x08, INPUT(1), 0x02, // Data, Variable, Absolute
-
- REPORT_COUNT(1), 0x01, REPORT_SIZE(1), 0x08, INPUT(1), 0x01, // Constant
-
- REPORT_COUNT(1), 0x05, REPORT_SIZE(1), 0x01, USAGE_PAGE(1), 0x08, // LEDs
- USAGE_MINIMUM(1), 0x01, USAGE_MAXIMUM(1), 0x05, OUTPUT(1), 0x02, // Data, Variable, Absolute
-
- REPORT_COUNT(1), 0x01, REPORT_SIZE(1), 0x03, OUTPUT(1), 0x01, // Constant
-
- REPORT_COUNT(1), 0x06, REPORT_SIZE(1), 0x08, LOGICAL_MINIMUM(1), 0x00, LOGICAL_MAXIMUM(1), 0xFF, USAGE_PAGE(1), 0x07, // Key Codes
- USAGE_MINIMUM(1), 0x00, USAGE_MAXIMUM(1), 0xFF, INPUT(1), 0x00, // Data, Array
- END_COLLECTION(0),
- };
- reportLength = sizeof(reportDescriptor);
- return reportDescriptor;
-}
-
-uint16_t HIDKeyboard::reportDescLength() {
- reportDesc();
- return reportLength;
-}
-
-#define TOTAL_DESCRIPTOR_LENGTH ((1 * CONFIGURATION_DESCRIPTOR_LENGTH) + (1 * INTERFACE_DESCRIPTOR_LENGTH) + (1 * HID_DESCRIPTOR_LENGTH) + (1 * ENDPOINT_DESCRIPTOR_LENGTH))
-uint8_t *HIDKeyboard::configurationDesc() {
- static uint8_t configurationDescriptor[] = {
- CONFIGURATION_DESCRIPTOR_LENGTH, // bLength
- CONFIGURATION_DESCRIPTOR, // bDescriptorType
- LSB(TOTAL_DESCRIPTOR_LENGTH), // wTotalLength (LSB)
- MSB(TOTAL_DESCRIPTOR_LENGTH), // wTotalLength (MSB)
- 0x01, // bNumInterfaces
- DEFAULT_CONFIGURATION, // bConfigurationValue
- 0x00, // iConfiguration
- C_RESERVED | C_REMOTE_WAKEUP, // bmAttributes
- C_POWER(100), // bMaxPowerHello World from Mbed
-
- INTERFACE_DESCRIPTOR_LENGTH, // bLength
- INTERFACE_DESCRIPTOR, // bDescriptorType
- 0x00, // bInterfaceNumber
- 0x00, // bAlternateSetting
- 0x01, // bNumEndpoints
- HID_CLASS, // bInterfaceClass
- 1, // bInterfaceSubClass (boot)
- 1, // bInterfaceProtocol (keyboard)
- 0x00, // iInterface
-
- HID_DESCRIPTOR_LENGTH, // bLength
- HID_DESCRIPTOR, // bDescriptorType
- LSB(HID_VERSION_1_11), // bcdHID (LSB)
- MSB(HID_VERSION_1_11), // bcdHID (MSB)
- 0x00, // bCountryCode
- 0x01, // bNumDescriptors
- REPORT_DESCRIPTOR, // bDescriptorType
- (uint8_t)(LSB(reportDescLength())), // wDescriptorLength (LSB)
- (uint8_t)(MSB(reportDescLength())), // wDescriptorLength (MSB)
-
- ENDPOINT_DESCRIPTOR_LENGTH, // bLength
- ENDPOINT_DESCRIPTOR, // bDescriptorType
- PHY_TO_DESC(EP1IN), // bEndpointAddress
- E_INTERRUPT, // bmAttributes
- LSB(MAX_PACKET_SIZE_EPINT), // wMaxPacketSize (LSB)
- MSB(MAX_PACKET_SIZE_EPINT), // wMaxPacketSize (MSB)
- 1, // bInterval (milliseconds)
- };
- return configurationDescriptor;
-}
-
-#if 0
-uint8_t * HIDKeyboard::deviceDesc() {
- static uint8_t deviceDescriptor[] = {
- DEVICE_DESCRIPTOR_LENGTH, /* bLength */
- DEVICE_DESCRIPTOR, /* bDescriptorType */
- LSB(USB_VERSION_2_0), /* bcdUSB (LSB) */
- MSB(USB_VERSION_2_0), /* bcdUSB (MSB) */
- 0x00, /* bDeviceClass */
- 0x00, /* bDeviceSubClass */
- 0x00, /* bDeviceprotocol */
- MAX_PACKET_SIZE_EP0, /* bMaxPacketSize0 */
- (uint8_t)(LSB(0xfeed)), /* idVendor (LSB) */
- (uint8_t)(MSB(0xfeed)), /* idVendor (MSB) */
- (uint8_t)(LSB(0x1bed)), /* idProduct (LSB) */
- (uint8_t)(MSB(0x1bed)), /* idProduct (MSB) */
- (uint8_t)(LSB(0x0002)), /* bcdDevice (LSB) */
- (uint8_t)(MSB(0x0002)), /* bcdDevice (MSB) */
- 0, /* iManufacturer */
- 0, /* iProduct */
- 0, /* iSerialNumber */
- 0x01 /* bNumConfigurations */
- };
- return deviceDescriptor;
-}
-#endif
-
-bool HIDKeyboard::USBCallback_request() {
- bool success = false;
- CONTROL_TRANSFER *transfer = getTransferPtr();
- uint8_t * hidDescriptor;
-
- // Process additional standard requests
-
- if ((transfer->setup.bmRequestType.Type == STANDARD_TYPE)) {
- switch (transfer->setup.bRequest) {
- case GET_DESCRIPTOR:
- switch (DESCRIPTOR_TYPE(transfer->setup.wValue)) {
- case REPORT_DESCRIPTOR:
- if ((reportDesc() != NULL) && (reportDescLength() != 0)) {
- transfer->remaining = reportDescLength();
- transfer->ptr = reportDesc();
- transfer->direction = DEVICE_TO_HOST;
- success = true;
- }
- break;
- case HID_DESCRIPTOR:
- // Find the HID descriptor, after the configuration descriptor
- hidDescriptor = findDescriptor(HID_DESCRIPTOR);
- if (hidDescriptor != NULL) {
- transfer->remaining = HID_DESCRIPTOR_LENGTH;
- transfer->ptr = hidDescriptor;
- transfer->direction = DEVICE_TO_HOST;
- success = true;
- }
- break;
-
- default:
- break;
- }
- break;
- default:
- break;
- }
- }
-
- // Process class-specific requests
- if (transfer->setup.bmRequestType.Type == CLASS_TYPE) {
- switch (transfer->setup.bRequest) {
- case SET_REPORT:
- // LED indicator
- // TODO: check Interface and Report length?
- // if (transfer->setup.wIndex == INTERFACE_KEYBOAD) { }
- // if (transfer->setup.wLength == 1)
-
- transfer->remaining = 1;
- // transfer->ptr = ?? what ptr should be set when OUT(not used?)
- transfer->direction = HOST_TO_DEVICE;
- transfer->notify = true; /* notify with USBCallback_requestCompleted */
- success = true;
- default:
- break;
- }
- }
-
- return success;
-}
-
-void HIDKeyboard::USBCallback_requestCompleted(uint8_t *buf, uint32_t length) {
- if (length > 0) {
- CONTROL_TRANSFER *transfer = getTransferPtr();
- if (transfer->setup.bmRequestType.Type == CLASS_TYPE) {
- switch (transfer->setup.bRequest) {
- case SET_REPORT:
- led_state = buf[0];
- break;
- default:
- break;
- }
- }
- }
-}
diff --git a/tmk_core/protocol/mbed/HIDKeyboard.h b/tmk_core/protocol/mbed/HIDKeyboard.h
deleted file mode 100644
index e8ff108699..0000000000
--- a/tmk_core/protocol/mbed/HIDKeyboard.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef HIDKEYBOARD_H
-
-# include "stdint.h"
-# include "stdbool.h"
-# include "USBHID.h"
-# include "report.h"
-
-class HIDKeyboard : public USBDevice {
- public:
- HIDKeyboard(uint16_t vendor_id = 0xFEED, uint16_t product_id = 0xabed, uint16_t product_release = 0x0001);
-
- bool sendReport(report_keyboard_t report);
- uint8_t leds(void);
-
- protected:
- uint16_t reportLength;
- virtual bool USBCallback_setConfiguration(uint8_t configuration);
- virtual uint8_t* stringImanufacturerDesc();
- virtual uint8_t* stringIproductDesc();
- virtual uint8_t* stringIserialDesc();
- virtual uint16_t reportDescLength();
- virtual uint8_t* reportDesc();
- virtual uint8_t* configurationDesc();
- // virtual uint8_t * deviceDesc();
- virtual bool USBCallback_request();
- virtual void USBCallback_requestCompleted(uint8_t* buf, uint32_t length);
-
- private:
- uint8_t led_state;
-};
-
-#endif
diff --git a/tmk_core/protocol/mbed/mbed_driver.cpp b/tmk_core/protocol/mbed/mbed_driver.cpp
deleted file mode 100644
index 83086499c7..0000000000
--- a/tmk_core/protocol/mbed/mbed_driver.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "HIDKeyboard.h"
-#include "host.h"
-#include "host_driver.h"
-#include "mbed_driver.h"
-
-HIDKeyboard keyboard;
-
-/* Host driver */
-static uint8_t keyboard_leds(void);
-static void send_keyboard(report_keyboard_t *report);
-static void send_mouse(report_mouse_t *report);
-static void send_system(uint16_t data);
-static void send_consumer(uint16_t data);
-
-host_driver_t mbed_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer};
-
-static uint8_t keyboard_leds(void) { return keyboard.leds(); }
-static void send_keyboard(report_keyboard_t *report) { keyboard.sendReport(*report); }
-static void send_mouse(report_mouse_t *report) {}
-static void send_system(uint16_t data) {}
-static void send_consumer(uint16_t data) {}
diff --git a/tmk_core/protocol/mbed/mbed_driver.h b/tmk_core/protocol/mbed/mbed_driver.h
deleted file mode 100644
index dd1153b43a..0000000000
--- a/tmk_core/protocol/mbed/mbed_driver.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "host_driver.h"
-
-extern host_driver_t mbed_driver;
diff --git a/tmk_core/protocol/ps2_io_mbed.c b/tmk_core/protocol/ps2_io_mbed.c
deleted file mode 100644
index 9cec3dfbb4..0000000000
--- a/tmk_core/protocol/ps2_io_mbed.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include <stdbool.h>
-#include "ps2_io.h"
-#include "gpio_api.h"
-
-static gpio_t clock;
-static gpio_t data;
-
-/*
- * Clock
- */
-void clock_init(void) {
- gpio_init(&clock, P0_9);
- gpio_mode(&clock, OpenDrain | PullNone);
-}
-
-void clock_lo(void) {
- gpio_dir(&clock, PIN_OUTPUT);
- gpio_write(&clock, 0);
-}
-void clock_hi(void) {
- gpio_dir(&clock, PIN_OUTPUT);
- gpio_write(&clock, 1);
-}
-
-bool clock_in(void) {
- gpio_dir(&clock, PIN_INPUT);
- return gpio_read(&clock);
-}
-
-/*
- * Data
- */
-void data_init(void) {
- gpio_init(&data, P0_8);
- gpio_mode(&data, OpenDrain | PullNone);
-}
-
-void data_lo(void) {
- gpio_dir(&data, PIN_OUTPUT);
- gpio_write(&data, 0);
-}
-
-void data_hi(void) {
- gpio_dir(&data, PIN_OUTPUT);
- gpio_write(&data, 1);
-}
-
-bool data_in(void) {
- gpio_dir(&data, PIN_INPUT);
- return gpio_read(&data);
-}
diff --git a/tmk_core/protocol/serial_soft.c b/tmk_core/protocol/serial_soft.c
index b409079954..8624ef733c 100644
--- a/tmk_core/protocol/serial_soft.c
+++ b/tmk_core/protocol/serial_soft.c
@@ -68,7 +68,6 @@ POSSIBILITY OF SUCH DAMAG