diff options
author | Ryan <fauxpark@gmail.com> | 2020-03-27 00:11:32 +1100 |
---|---|---|
committer | Florian Didron <fdidron@users.noreply.github.com> | 2020-06-12 17:00:27 +0900 |
commit | f6e32b4e8d2ccc6eab5e94b509d2e39ec91ac7d6 (patch) | |
tree | f04f272e2c2c5a3ba1361bb326142df2171af011 | |
parent | 694777041b1d08cca595cfcb65c5e7a8528ed1ba (diff) |
V-USB: Use manufacturer and product strings from config.h (#7797)
* V-USB: Use manufacturer and product strings from config.h
* Update board configs
-rw-r--r-- | keyboards/handwired/onekey/keymaps/adc/config.h | 1 | ||||
-rw-r--r-- | keyboards/handwired/onekey/keymaps/adc/keymap.c | 38 | ||||
-rw-r--r-- | keyboards/handwired/onekey/keymaps/adc/rules.mk | 3 | ||||
-rw-r--r-- | tmk_core/protocol/vusb/vusb.c | 58 | ||||
-rw-r--r-- | tmk_core/protocol/vusb/vusb.h | 12 |
5 files changed, 70 insertions, 42 deletions
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 <stdio.h> - -#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 <http://www.gnu.org/licenses/>. #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); |