From f6e32b4e8d2ccc6eab5e94b509d2e39ec91ac7d6 Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 27 Mar 2020 00:11:32 +1100 Subject: V-USB: Use manufacturer and product strings from config.h (#7797) * V-USB: Use manufacturer and product strings from config.h * Update board configs --- keyboards/handwired/onekey/keymaps/adc/config.h | 1 - keyboards/handwired/onekey/keymaps/adc/keymap.c | 38 ---------------- keyboards/handwired/onekey/keymaps/adc/rules.mk | 3 -- tmk_core/protocol/vusb/vusb.c | 58 +++++++++++++++++++++++++ tmk_core/protocol/vusb/vusb.h | 12 +++++ 5 files changed, 70 insertions(+), 42 deletions(-) delete mode 100644 keyboards/handwired/onekey/keymaps/adc/config.h delete mode 100644 keyboards/handwired/onekey/keymaps/adc/keymap.c delete mode 100644 keyboards/handwired/onekey/keymaps/adc/rules.mk diff --git a/keyboards/handwired/onekey/keymaps/adc/config.h b/keyboards/handwired/onekey/keymaps/adc/config.h deleted file mode 100644 index 6f70f09bee..0000000000 --- a/keyboards/handwired/onekey/keymaps/adc/config.h +++ /dev/null @@ -1 +0,0 @@ -#pragma once diff --git a/keyboards/handwired/onekey/keymaps/adc/keymap.c b/keyboards/handwired/onekey/keymaps/adc/keymap.c deleted file mode 100644 index c5294bbc3d..0000000000 --- a/keyboards/handwired/onekey/keymaps/adc/keymap.c +++ /dev/null @@ -1,38 +0,0 @@ -#include QMK_KEYBOARD_H -#include "analog.h" -#include - -#ifndef ADC_PIN -# define ADC_PIN A0 -#endif - -enum custom_keycodes { - ADC_SAMPLE = SAFE_RANGE, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - LAYOUT(ADC_SAMPLE) // -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case ADC_SAMPLE: - if (record->event.pressed) { - int16_t val = analogReadPin(ADC_PIN); - - char buffer [50]; - sprintf(buffer, "ADC:%u\n", val); -#ifdef CONSOLE_ENABLE - printf(buffer); -#else - SEND_STRING(buffer); -#endif - } - break; - } - return false; -}; - -// adc_mux pinToMux(pin_t pin) { -// return TO_MUX( ADC_CHANNEL_IN1, 0 ); -// }; diff --git a/keyboards/handwired/onekey/keymaps/adc/rules.mk b/keyboards/handwired/onekey/keymaps/adc/rules.mk deleted file mode 100644 index a691d5488f..0000000000 --- a/keyboards/handwired/onekey/keymaps/adc/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -SRC += analog.c - -CONSOLE_ENABLE = yes diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c index 0b91bfb414..69f2c12e3f 100644 --- a/tmk_core/protocol/vusb/vusb.c +++ b/tmk_core/protocol/vusb/vusb.c @@ -346,6 +346,10 @@ const PROGMEM uchar mouse_extra_hid_report[] = { }; #endif +#ifndef SERIAL_NUMBER +# define SERIAL_NUMBER 0 +#endif + #ifndef USB_MAX_POWER_CONSUMPTION # define USB_MAX_POWER_CONSUMPTION 500 #endif @@ -355,6 +359,40 @@ const PROGMEM uchar mouse_extra_hid_report[] = { # define USB_POLLING_INTERVAL_MS 1 #endif +// clang-format off +const PROGMEM usbStringDescriptor_t usbDescriptorStringZero = { + .header = { + .bLength = USB_STRING_LEN(1), + .bDescriptorType = USBDESCR_STRING + }, + .bString = {0x0409} // US English +}; + +const PROGMEM usbStringDescriptor_t usbDescriptorStringManufacturer = { + .header = { + .bLength = USB_STRING_LEN(sizeof(STR(MANUFACTURER)) - 1), + .bDescriptorType = USBDESCR_STRING + }, + .bString = LSTR(MANUFACTURER) +}; + +const PROGMEM usbStringDescriptor_t usbDescriptorStringProduct = { + .header = { + .bLength = USB_STRING_LEN(sizeof(STR(PRODUCT)) - 1), + .bDescriptorType = USBDESCR_STRING + }, + .bString = LSTR(PRODUCT) +}; + +const PROGMEM usbStringDescriptor_t usbDescriptorStringSerial = { + .header = { + .bLength = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER)) - 1), + .bDescriptorType = USBDESCR_STRING + }, + .bString = LSTR(SERIAL_NUMBER) +}; +// clang-format on + /* * Descriptor for compite device: Keyboard + Mouse * @@ -468,6 +506,26 @@ USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq) { len = sizeof(usbDescriptorConfiguration); break; #endif + case USBDESCR_STRING: + switch (rq->wValue.bytes[0]) { + case 0: + usbMsgPtr = (unsigned char *)&usbDescriptorStringZero; + len = usbDescriptorStringZero.header.bLength; + break; + case 1: // iManufacturer + usbMsgPtr = (unsigned char *)&usbDescriptorStringManufacturer; + len = usbDescriptorStringManufacturer.header.bLength; + break; + case 2: // iProduct + usbMsgPtr = (unsigned char *)&usbDescriptorStringProduct; + len = usbDescriptorStringProduct.header.bLength; + break; + case 3: // iSerialNumber + usbMsgPtr = (unsigned char *)&usbDescriptorStringSerial; + len = usbDescriptorStringSerial.header.bLength; + break; + } + break; case USBDESCR_HID: switch (rq->wValue.bytes[0]) { case 0: diff --git a/tmk_core/protocol/vusb/vusb.h b/tmk_core/protocol/vusb/vusb.h index 7e3f8c394d..cee07207a3 100644 --- a/tmk_core/protocol/vusb/vusb.h +++ b/tmk_core/protocol/vusb/vusb.h @@ -20,6 +20,18 @@ along with this program. If not, see . #include "host_driver.h" +typedef struct usbDescriptorHeader { + uchar bLength; + uchar bDescriptorType; +} __attribute__((packed)) usbDescriptorHeader_t; + +typedef struct usbStringDescriptor { + usbDescriptorHeader_t header; + int bString[]; +} __attribute__((packed)) usbStringDescriptor_t; + +#define USB_STRING_LEN(s) (sizeof(usbDescriptorHeader_t) + ((s) << 1)) + host_driver_t *vusb_driver(void); void vusb_transfer_keyboard(void); -- cgit v1.2.3