1
0
Fork 0

USB-USB converter cleanup (#16618)

This commit is contained in:
Ryan 2022-03-14 10:46:13 +11:00 committed by GitHub
parent 8fe3864fe7
commit df3770551a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 41 additions and 169 deletions

View file

@ -1,3 +1,3 @@
#pragma once #pragma once
#include QMK_KEYBOARD_H #include "usb_usb.h"

View file

@ -1,13 +1,6 @@
#pragma once #pragma once
#undef PRODUCT #undef PRODUCT
#define PRODUCT QMK BLE Adapter #define PRODUCT QMK BLE Adapter
// Turn off the mode leds on the BLE module
#define BLUEFRUIT_LE_ENABLE_MODE_LEDS 0
#define BLUEFRUIT_LE_ENABLE_POWER_LED 0
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#define NO_ACTION_ONESHOT #define NO_ACTION_ONESHOT

View file

@ -17,14 +17,3 @@ Part list:
* [Pololu 5V Step-Up Voltage Regulator U3V12F5](https://www.pololu.com/product/2115) * [Pololu 5V Step-Up Voltage Regulator U3V12F5](https://www.pololu.com/product/2115)
* [Lithium Ion Battery - 3.7v 2000mAh](https://www.adafruit.com/product/2011) * [Lithium Ion Battery - 3.7v 2000mAh](https://www.adafruit.com/product/2011)
* Some sort of switch to be able to turn it off * Some sort of switch to be able to turn it off
Building and Flashing
---------------------
```
make converter-usb_usb-ble
```
```
make converter-usb_usb-ble-avrdude
```

View file

@ -1,17 +1,7 @@
# Processor frequency # Processor frequency
F_CPU = 8000000 F_CPU = 8000000
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite EXTRAKEY_ENABLE = no
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
BLUETOOTH_ENABLE = yes BLUETOOTH_ENABLE = yes
BLUETOOTH_DRIVER = BluefruitLE BLUETOOTH_DRIVER = BluefruitLE
LTO_ENABLE = yes LTO_ENABLE = yes

View file

@ -17,6 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once #pragma once
#include "config_common.h"
/* USB Device descriptor parameter */ /* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED #define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x005B #define PRODUCT_ID 0x005B
@ -43,5 +45,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_LAYER //#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING //#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT //#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION

View file

@ -58,36 +58,31 @@ extern "C" {
*/ */
#define ROW_MASK 0xF0 #define ROW_MASK 0xF0
#define COL_MASK 0x0F #define COL_MASK 0x0F
#define CODE(row, col) (((row) << 4) | (col)) #define CODE(row, col) (((row) << 4) | (col))
#define ROW(code) (((code) & ROW_MASK) >> 4) #define ROW(code) (((code) & ROW_MASK) >> 4)
#define COL(code) ((code) & COL_MASK) #define COL(code) ((code) & COL_MASK)
#define ROW_BITS(code) (1 << COL(code)) #define ROW_BITS(code) (1 << COL(code))
// Integrated key state of all keyboards // Integrated key state of all keyboards
static report_keyboard_t local_keyboard_report; static report_keyboard_t local_keyboard_report;
static bool matrix_is_mod = false;
/* /*
* USB Host Shield HID keyboards * USB Host Shield HID keyboards
* This supports two cascaded hubs and four keyboards * This supports two cascaded hubs and four keyboards
*/ */
USB usb_host; USB usb_host;
HIDBoot<HID_PROTOCOL_KEYBOARD> kbd1(&usb_host); USBHub hub1(&usb_host);
HIDBoot<HID_PROTOCOL_KEYBOARD> kbd2(&usb_host); USBHub hub2(&usb_host);
HIDBoot<HID_PROTOCOL_KEYBOARD> kbd3(&usb_host); HIDBoot<HID_PROTOCOL_KEYBOARD> kbd1(&usb_host);
HIDBoot<HID_PROTOCOL_KEYBOARD> kbd4(&usb_host); HIDBoot<HID_PROTOCOL_KEYBOARD> kbd2(&usb_host);
HIDBoot<HID_PROTOCOL_KEYBOARD> kbd3(&usb_host);
HIDBoot<HID_PROTOCOL_KEYBOARD> kbd4(&usb_host);
KBDReportParser kbd_parser1; KBDReportParser kbd_parser1;
KBDReportParser kbd_parser2; KBDReportParser kbd_parser2;
KBDReportParser kbd_parser3; KBDReportParser kbd_parser3;
KBDReportParser kbd_parser4; KBDReportParser kbd_parser4;
USBHub hub1(&usb_host);
USBHub hub2(&usb_host);
extern "C" {
extern "C"
{
uint8_t matrix_rows(void) { return MATRIX_ROWS; } uint8_t matrix_rows(void) { return MATRIX_ROWS; }
uint8_t matrix_cols(void) { return MATRIX_COLS; } uint8_t matrix_cols(void) { return MATRIX_COLS; }
bool matrix_has_ghost(void) { return false; } bool matrix_has_ghost(void) { return false; }
@ -135,6 +130,7 @@ extern "C"
} }
uint8_t matrix_scan(void) { uint8_t matrix_scan(void) {
bool changed = false;
static uint16_t last_time_stamp1 = 0; static uint16_t last_time_stamp1 = 0;
static uint16_t last_time_stamp2 = 0; static uint16_t last_time_stamp2 = 0;
static uint16_t last_time_stamp3 = 0; static uint16_t last_time_stamp3 = 0;
@ -158,15 +154,13 @@ extern "C"
or_report(kbd_parser3.report); or_report(kbd_parser3.report);
or_report(kbd_parser4.report); or_report(kbd_parser4.report);
matrix_is_mod = true; changed = true;
dprintf("state: %02X %02X", local_keyboard_report.mods, local_keyboard_report.reserved); dprintf("state: %02X %02X", local_keyboard_report.mods, local_keyboard_report.reserved);
for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
dprintf(" %02X", local_keyboard_report.keys[i]); dprintf(" %02X", local_keyboard_report.keys[i]);
} }
dprint("\r\n"); dprint("\r\n");
} else {
matrix_is_mod = false;
} }
uint16_t timer; uint16_t timer;
@ -189,7 +183,7 @@ extern "C"
} }
} }
matrix_scan_quantum(); matrix_scan_quantum();
return 1; return changed;
} }
bool matrix_is_on(uint8_t row, uint8_t col) { bool matrix_is_on(uint8_t row, uint8_t col) {
@ -234,13 +228,11 @@ extern "C"
} }
} }
void led_set(uint8_t usb_led) void led_set(uint8_t usb_led) {
{
if (kbd1.isReady()) kbd1.SetReport(0, 0, 2, 0, 1, &usb_led); if (kbd1.isReady()) kbd1.SetReport(0, 0, 2, 0, 1, &usb_led);
if (kbd2.isReady()) kbd2.SetReport(0, 0, 2, 0, 1, &usb_led); if (kbd2.isReady()) kbd2.SetReport(0, 0, 2, 0, 1, &usb_led);
if (kbd3.isReady()) kbd3.SetReport(0, 0, 2, 0, 1, &usb_led); if (kbd3.isReady()) kbd3.SetReport(0, 0, 2, 0, 1, &usb_led);
if (kbd4.isReady()) kbd4.SetReport(0, 0, 2, 0, 1, &usb_led); if (kbd4.isReady()) kbd4.SetReport(0, 0, 2, 0, 1, &usb_led);
led_set_kb(usb_led); led_set_kb(usb_led);
} }
}
};

View file

@ -1,3 +1,3 @@
#pragma once #pragma once
#include QMK_KEYBOARD_H #include "usb_usb.h"

View file

@ -1,102 +0,0 @@
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/power.h>
#include <util/delay.h>
// LUFA
#include "lufa.h"
#include "sendchar.h"
#include "debug.h"
#include "keyboard.h"
#include "led.h"
/* LED ping configuration */
#define TMK_LED
//#define LEONARDO_LED
#if defined(TMK_LED)
// For TMK converter and Teensy
#define LED_TX_INIT (DDRD |= (1<<6))
#define LED_TX_ON (PORTD |= (1<<6))
#define LED_TX_OFF (PORTD &= ~(1<<6))
#define LED_TX_TOGGLE (PORTD ^= (1<<6))
#elif defined(LEONARDO_LED)
// For Leonardo(TX LED)
#define LED_TX_INIT (DDRD |= (1<<5))
#define LED_TX_ON (PORTD &= ~(1<<5))
#define LED_TX_OFF (PORTD |= (1<<5))
#define LED_TX_TOGGLE (PORTD ^= (1<<5))
#else
#define LED_TX_INIT
#define LED_TX_ON
#define LED_TX_OFF
#define LED_TX_TOGGLE
#endif
static void LUFA_setup(void)
{
/* Disable watchdog if enabled by bootloader/fuses */
MCUSR &= ~(1 << WDRF);
wdt_disable();
/* Disable clock division */
#if (F_CPU == 8000000)
clock_prescale_set(clock_div_2); // 16MHz crystal divided by 2
#else
clock_prescale_set(clock_div_1);
#endif
// Leonardo needs. Without this USB device is not recognized.
USB_Disable();
USB_Init();
// for Console_Task
USB_Device_EnableSOFEvents();
print_set_sendchar(sendchar);
}
int main(void)
{
// LED for debug
LED_TX_INIT;
LED_TX_ON;
debug_enable = true;
debug_keyboard = true;
host_set_driver(&lufa_driver);
keyboard_init();
LUFA_setup();
/* NOTE: Don't insert time consuming job here.
* It'll cause unclear initialization failure when DFU reset(worm start).
*/
sei();
/* Some keyboards bootup quickly and cannot be initialized with this startup wait.
// wait for startup of sendchar routine
while (USB_DeviceState != DEVICE_STATE_Configured) ;
if (debug_enable) {
_delay_ms(1000);
}
*/
debug("init: done\n");
for (;;) {
keyboard_task();
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
// LUFA Task for control request
USB_USBTask();
#endif
}
return 0;
}

View file

@ -1,3 +1,3 @@
#pragma once #pragma once
#include QMK_KEYBOARD_H #include "usb_usb.h"

View file

@ -8,15 +8,17 @@ BOOTLOADER = caterina
# change yes to no to disable # change yes to no to disable
# #
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
#MOUSEKEY_ENABLE = yes # Mouse keys MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control EXTRAKEY_ENABLE = yes # Audio control and System control
#CONSOLE_ENABLE = yes # Console for debug CONSOLE_ENABLE = no # Console for debug
#COMMAND_ENABLE = yes # Commands for debug and configuration COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover NKRO_ENABLE = no # Enable N-Key Rollover
#BACKLIGHT_ENABLE = yes BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
USB_HID_ENABLE = yes RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
CUSTOM_MATRIX = yes AUDIO_ENABLE = no # Audio output
USB_HID_ENABLE = yes
CUSTOM_MATRIX = yes
SRC = custom_matrix.cpp SRC += custom_matrix.cpp
DEFAULT_FOLDER = converter/usb_usb/hasu DEFAULT_FOLDER = converter/usb_usb/hasu

View file

@ -19,6 +19,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h" #include "quantum.h"
#if defined(KEYBOARD_converter_usb_usb_ble)
# include "ble.h"
#elif defined(KEYBOARD_converter_usb_usb_hasu)
# include "hasu.h"
#elif defined(KEYBOARD_converter_usb_usb_pro_micro)
# include "pro_micro.h"
#endif
#define XXX KC_NO #define XXX KC_NO
#define ______ KC_TRNS #define ______ KC_TRNS