Merge branch 'qmk-pre-merge-2021-09-12' into qmk-merge-2021-09-12

This commit is contained in:
Ilya Zhuravlev
2021-09-12 14:08:31 -04:00
10266 changed files with 209325 additions and 91259 deletions
@@ -99,14 +99,11 @@ static void vusb_wakeup(void) {
*/
static void setup_usb(void) { initForUsbConnectivity(); }
/** \brief Main
*
* FIXME: Needs doc
*/
int main(void) __attribute__((weak));
int main(void) {
uint16_t sof_timer = 0;
void protocol_setup(void) {
#if USB_COUNT_SOF
uint16_t sof_timer = timer_read();
sof_timer = timer_read();
#endif
#ifdef CLKPR
@@ -115,9 +112,14 @@ int main(void) {
clock_prescale_set(clock_div_1);
#endif
keyboard_setup();
}
void protocol_init(void) {
setup_usb();
sei();
keyboard_init();
host_set_driver(vusb_driver());
wait_ms(50);
@@ -125,55 +127,52 @@ int main(void) {
#ifdef SLEEP_LED_ENABLE
sleep_led_init();
#endif
}
while (1) {
void protocol_task(void) {
#if USB_COUNT_SOF
if (usbSofCount != 0) {
usbSofCount = 0;
sof_timer = timer_read();
if (vusb_suspended) {
vusb_wakeup();
}
} else {
// Suspend when no SOF in 3ms-10ms(7.1.7.4 Suspending of USB1.1)
if (!vusb_suspended && timer_elapsed(sof_timer) > 5) {
vusb_suspend();
}
}
#endif
if (usbSofCount != 0) {
usbSofCount = 0;
sof_timer = timer_read();
if (vusb_suspended) {
vusb_wakeup();
}
} else {
// Suspend when no SOF in 3ms-10ms(7.1.7.4 Suspending of USB1.1)
if (!vusb_suspended && timer_elapsed(sof_timer) > 5) {
vusb_suspend();
if (suspend_wakeup_condition()) {
vusb_send_remote_wakeup();
}
} else {
usbPoll();
}
}
#endif
if (vusb_suspended) {
vusb_suspend();
if (suspend_wakeup_condition()) {
vusb_send_remote_wakeup();
}
} else {
usbPoll();
// TODO: configuration process is inconsistent. it sometime fails.
// To prevent failing to configure NOT scan keyboard during configuration
if (usbConfiguration && usbInterruptIsReady()) {
keyboard_task();
}
vusb_transfer_keyboard();
// TODO: configuration process is inconsistent. it sometime fails.
// To prevent failing to configure NOT scan keyboard during configuration
if (usbConfiguration && usbInterruptIsReady()) {
keyboard_task();
}
vusb_transfer_keyboard();
#ifdef RAW_ENABLE
usbPoll();
usbPoll();
if (usbConfiguration && usbInterruptIsReady3()) {
raw_hid_task();
}
if (usbConfiguration && usbInterruptIsReady3()) {
raw_hid_task();
}
#endif
#ifdef CONSOLE_ENABLE
usbPoll();
usbPoll();
if (usbConfiguration && usbInterruptIsReady3()) {
console_task();
}
#endif
// Run housekeeping
housekeeping_task();
if (usbConfiguration && usbInterruptIsReady3()) {
console_task();
}
#endif
}
}
+1 -1
View File
@@ -16,7 +16,7 @@
#include <usbdrv/usbdrv.h>
#include "usb_util.h"
void usb_disable(void) { usbDeviceDisconnect(); }
void usb_disconnect(void) { usbDeviceDisconnect(); }
bool usb_connected_state(void) {
usbPoll();
+51 -12
View File
@@ -272,7 +272,8 @@ static void send_extra(uint8_t report_id, uint16_t data) {
last_id = report_id;
last_data = data;
report_extra_t report = {.report_id = report_id, .usage = data};
static report_extra_t report;
report = (report_extra_t){.report_id = report_id, .usage = data};
if (usbInterruptIsReadyShared()) {
usbSetInterruptShared((void *)&report, sizeof(report_extra_t));
}
@@ -291,6 +292,14 @@ static void send_consumer(uint16_t data) {
#endif
}
void send_digitizer(report_digitizer_t *report) {
#ifdef DIGITIZER_ENABLE
if (usbInterruptIsReadyShared()) {
usbSetInterruptShared((void *)report, sizeof(report_digitizer_t));
}
#endif
}
/*------------------------------------------------------------------*
* Request from host *
*------------------------------------------------------------------*/
@@ -513,8 +522,46 @@ const PROGMEM uchar shared_hid_report[] = {
0x95, 0x01, // Report Count (1)
0x75, 0x10, // Report Size (16)
0x81, 0x00, // Input (Data, Array, Absolute)
0xC0 // End Collection
0xC0, // End Collection
#endif
#ifdef DIGITIZER_ENABLE
// Digitizer report descriptor
0x05, 0x0D, // Usage Page (Digitizers)
0x09, 0x01, // Usage (Digitizer)
0xA1, 0x01, // Collection (Application)
0x85, REPORT_ID_DIGITIZER, // Report ID
0x09, 0x22, // Usage (Finger)
0xA1, 0x00, // Collection (Physical)
// Tip Switch (1 bit)
0x09, 0x42, // Usage (Tip Switch)
0x15, 0x00, // Logical Minimum
0x25, 0x01, // Logical Maximum
0x95, 0x01, // Report Count (1)
0x75, 0x01, // Report Size (16)
0x81, 0x02, // Input (Data, Variable, Absolute)
// In Range (1 bit)
0x09, 0x32, // Usage (In Range)
0x81, 0x02, // Input (Data, Variable, Absolute)
// Padding (6 bits)
0x95, 0x06, // Report Count (6)
0x81, 0x03, // Input (Constant)
// X/Y Position (4 bytes)
0x05, 0x01, // Usage Page (Generic Desktop)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x95, 0x01, // Report Count (1)
0x75, 0x10, // Report Size (16)
0x65, 0x33, // Unit (Inch, English Linear)
0x55, 0x0E, // Unit Exponent (-2)
0x09, 0x30, // Usage (X)
0x81, 0x02, // Input (Data, Variable, Absolute)
0x09, 0x31, // Usage (Y)
0x81, 0x02, // Input (Data, Variable, Absolute)
0xC0, // End Collection
0xC0 // End Collection
#endif
#ifdef SHARED_EP_ENABLE
};
#endif
@@ -565,14 +612,6 @@ const PROGMEM uchar console_hid_report[] = {
};
#endif
#ifndef SERIAL_NUMBER
#ifdef VIAL_ENABLE
# define SERIAL_NUMBER vial:f64c2b3c
#else
# define SERIAL_NUMBER 0
#endif
#endif
#ifndef USB_MAX_POWER_CONSUMPTION
# define USB_MAX_POWER_CONSUMPTION 500
#endif
@@ -610,10 +649,10 @@ const PROGMEM usbStringDescriptor_t usbStringDescriptorProduct = {
#if defined(SERIAL_NUMBER)
const PROGMEM usbStringDescriptor_t usbStringDescriptorSerial = {
.header = {
.bLength = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER)) - 1),
.bLength = USB_STRING_LEN(sizeof(SERIAL_NUMBER) - 1),
.bDescriptorType = USBDESCR_STRING
},
.bString = LSTR(SERIAL_NUMBER)
.bString = USBSTR(SERIAL_NUMBER)
};
#endif