2020 November 28 Breaking Changes Update (#11053)
* Branch point for 2020 November 28 Breaking Change * Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183) * Add support for soft serial to ATmega32U2 (#10204) * Change MIDI velocity implementation to allow direct control of velocity value (#9940) * Add ability to build a subset of all keyboards based on platform. * Actually use eeprom_driver_init(). * Make bootloader_jump weak for ChibiOS. (#10417) * Joystick 16-bit support (#10439) * Per-encoder resolutions (#10259) * Share button state from mousekey to pointing_device (#10179) * Add hotfix for chibios keyboards not wake (#10088) * Add advanced/efficient RGB Matrix Indicators (#8564) * Naming change. * Support for STM32 GPIOF,G,H,I,J,K (#10206) * Add milc as a dependency and remove the installed milc (#10563) * ChibiOS upgrade: early init conversions (#10214) * ChibiOS upgrade: configuration file migrator (#9952) * Haptic and solenoid cleanup (#9700) * XD75 cleanup (#10524) * OLED display update interval support (#10388) * Add definition based on currently-selected serial driver. (#10716) * New feature: Retro Tapping per key (#10622) * Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) * Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530) * Rescale both ChibiOS and AVR backlighting. * Reduce Helix keyboard build variation (#8669) * Minor change to behavior allowing display updates to continue between task ticks (#10750) * Some GPIO manipulations in matrix.c change to atomic. (#10491) * qmk cformat (#10767) * [Keyboard] Update the Speedo firmware for v3.0 (#10657) * Maartenwut/Maarten namechange to evyd13/Evy (#10274) * [quantum] combine repeated lines of code (#10837) * Add step sequencer feature (#9703) * aeboards/ext65 refactor (#10820) * Refactor xelus/dawn60 for Rev2 later (#10584) * add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824) * [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549) * update chibios os usb for the otg driver (#8893) * Remove HD44780 References, Part 4 (#10735) * [Keyboard] Add Valor FRL TKL (+refactor) (#10512) * Fix cursor position bug in oled_write_raw functions (#10800) * Fixup version.h writing when using SKIP_VERSION=yes (#10972) * Allow for certain code in the codebase assuming length of string. (#10974) * Add AT90USB support for serial.c (#10706) * Auto shift: support repeats and early registration (#9826) * Rename ledmatrix.h to match .c file (#7949) * Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231) * Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840) * Merge point for 2020 Nov 28 Breaking Change
This commit is contained in:
		
							parent
							
								
									15385d4113
								
							
						
					
					
						commit
						c66df16644
					
				
					 884 changed files with 8121 additions and 11685 deletions
				
			
		| 
						 | 
				
			
			@ -4,9 +4,9 @@ SRC += $(ARM_ATSAM_DIR)/adc.c
 | 
			
		|||
SRC += $(ARM_ATSAM_DIR)/clks.c
 | 
			
		||||
SRC += $(ARM_ATSAM_DIR)/d51_util.c
 | 
			
		||||
SRC += $(ARM_ATSAM_DIR)/i2c_master.c
 | 
			
		||||
ifeq ($(RGB_MATRIX_ENABLE),custom)
 | 
			
		||||
  SRC += $(ARM_ATSAM_DIR)/led_matrix_programs.c
 | 
			
		||||
  SRC += $(ARM_ATSAM_DIR)/led_matrix.c
 | 
			
		||||
ifeq ($(RGB_MATRIX_DRIVER),custom)
 | 
			
		||||
  SRC += $(ARM_ATSAM_DIR)/md_rgb_matrix_programs.c
 | 
			
		||||
  SRC += $(ARM_ATSAM_DIR)/md_rgb_matrix.c
 | 
			
		||||
endif
 | 
			
		||||
SRC += $(ARM_ATSAM_DIR)/main_arm_atsam.c
 | 
			
		||||
SRC += $(ARM_ATSAM_DIR)/spi.c
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		|||
 | 
			
		||||
#    include "main_arm_atsam.h"
 | 
			
		||||
#    ifdef RGB_MATRIX_ENABLE
 | 
			
		||||
#        include "led_matrix.h"
 | 
			
		||||
#        include "md_rgb_matrix.h"
 | 
			
		||||
#        include "rgb_matrix.h"
 | 
			
		||||
#    endif
 | 
			
		||||
#    include "issi3733_driver.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -305,6 +305,10 @@ int main(void) {
 | 
			
		|||
            // dprintf("5v=%u 5vu=%u dlow=%u dhi=%u gca=%u gcd=%u\r\n", v_5v, v_5v_avg, v_5v_avg - V5_LOW, v_5v_avg - V5_HIGH, gcr_actual, gcr_desired);
 | 
			
		||||
        }
 | 
			
		||||
#endif  // CONSOLE_ENABLE
 | 
			
		||||
 | 
			
		||||
        // Run housekeeping
 | 
			
		||||
        housekeeping_task_kb();
 | 
			
		||||
        housekeeping_task_user();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 1;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		|||
 | 
			
		||||
#ifdef USE_MASSDROP_CONFIGURATOR
 | 
			
		||||
__attribute__((weak)) led_instruction_t led_instructions[] = {{.end = 1}};
 | 
			
		||||
static void                             led_matrix_massdrop_config_override(int i);
 | 
			
		||||
static void                             md_rgb_matrix_config_override(int i);
 | 
			
		||||
#endif  // USE_MASSDROP_CONFIGURATOR
 | 
			
		||||
 | 
			
		||||
void SERCOM1_0_Handler(void) {
 | 
			
		||||
| 
						 | 
				
			
			@ -188,7 +188,7 @@ void issi3733_prepare_arrays(void) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void led_matrix_prepare(void) {
 | 
			
		||||
void md_rgb_matrix_prepare(void) {
 | 
			
		||||
    for (uint8_t i = 0; i < ISSI3733_LED_COUNT; i++) {
 | 
			
		||||
        *led_map[i].rgb.r = 0;
 | 
			
		||||
        *led_map[i].rgb.g = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -199,7 +199,7 @@ void led_matrix_prepare(void) {
 | 
			
		|||
void led_set_one(int i, uint8_t r, uint8_t g, uint8_t b) {
 | 
			
		||||
    if (i < ISSI3733_LED_COUNT) {
 | 
			
		||||
#ifdef USE_MASSDROP_CONFIGURATOR
 | 
			
		||||
        led_matrix_massdrop_config_override(i);
 | 
			
		||||
        md_rgb_matrix_config_override(i);
 | 
			
		||||
#else
 | 
			
		||||
        led_buffer[i].r = r;
 | 
			
		||||
        led_buffer[i].g = g;
 | 
			
		||||
| 
						 | 
				
			
			@ -219,7 +219,7 @@ void init(void) {
 | 
			
		|||
 | 
			
		||||
    issi3733_prepare_arrays();
 | 
			
		||||
 | 
			
		||||
    led_matrix_prepare();
 | 
			
		||||
    md_rgb_matrix_prepare();
 | 
			
		||||
 | 
			
		||||
    gcr_min_counter = 0;
 | 
			
		||||
    v_5v_cat_hit    = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -290,7 +290,7 @@ void flush(void) {
 | 
			
		|||
    i2c_led_q_run();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void led_matrix_indicators(void) {
 | 
			
		||||
void md_rgb_matrix_indicators(void) {
 | 
			
		||||
    uint8_t kbled = keyboard_leds();
 | 
			
		||||
    if (kbled && rgb_matrix_config.enable) {
 | 
			
		||||
        for (uint8_t i = 0; i < ISSI3733_LED_COUNT; i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -397,7 +397,7 @@ static void led_run_pattern(led_setup_t* f, float* ro, float* go, float* bo, flo
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void led_matrix_massdrop_config_override(int i) {
 | 
			
		||||
static void md_rgb_matrix_config_override(int i) {
 | 
			
		||||
    float ro = 0;
 | 
			
		||||
    float go = 0;
 | 
			
		||||
    float bo = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +86,7 @@ extern uint8_t gcr_actual_last;
 | 
			
		|||
 | 
			
		||||
void gcr_compute(void);
 | 
			
		||||
 | 
			
		||||
void led_matrix_indicators(void);
 | 
			
		||||
void md_rgb_matrix_indicators(void);
 | 
			
		||||
 | 
			
		||||
/*-------------------------  Legacy Lighting Support  ------------------------*/
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -17,7 +17,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		|||
 | 
			
		||||
#ifdef USE_MASSDROP_CONFIGURATOR
 | 
			
		||||
 | 
			
		||||
#    include "led_matrix.h"
 | 
			
		||||
#    include "md_rgb_matrix.h"
 | 
			
		||||
 | 
			
		||||
// Teal <-> Salmon
 | 
			
		||||
led_setup_t leds_teal_salmon[] = {
 | 
			
		||||
| 
						 | 
				
			
			@ -54,6 +54,9 @@
 | 
			
		|||
#ifdef STM32_EEPROM_ENABLE
 | 
			
		||||
#    include "eeprom_stm32.h"
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef EEPROM_DRIVER
 | 
			
		||||
#    include "eeprom_driver.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "suspend.h"
 | 
			
		||||
#include "wait.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -150,6 +153,9 @@ int main(void) {
 | 
			
		|||
#ifdef STM32_EEPROM_ENABLE
 | 
			
		||||
    EEPROM_Init();
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef EEPROM_DRIVER
 | 
			
		||||
    eeprom_driver_init();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // TESTING
 | 
			
		||||
    // chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
 | 
			
		||||
| 
						 | 
				
			
			@ -230,6 +236,7 @@ int main(void) {
 | 
			
		|||
                /* Remote wakeup */
 | 
			
		||||
                if (suspend_wakeup_condition()) {
 | 
			
		||||
                    usbWakeupHost(&USB_DRIVER);
 | 
			
		||||
                    restart_usb_driver(&USB_DRIVER);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            /* Woken up */
 | 
			
		||||
| 
						 | 
				
			
			@ -258,5 +265,9 @@ int main(void) {
 | 
			
		|||
#ifdef RAW_ENABLE
 | 
			
		||||
        raw_hid_task();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        // Run housekeeping
 | 
			
		||||
        housekeeping_task_kb();
 | 
			
		||||
        housekeeping_task_user();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -165,6 +165,19 @@ static const USBEndpointConfig shared_ep_config = {
 | 
			
		|||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if STM32_USB_USE_OTG1
 | 
			
		||||
typedef struct {
 | 
			
		||||
    size_t              queue_capacity_in;
 | 
			
		||||
    size_t              queue_capacity_out;
 | 
			
		||||
    USBInEndpointState  in_ep_state;
 | 
			
		||||
    USBOutEndpointState out_ep_state;
 | 
			
		||||
    USBInEndpointState  int_ep_state;
 | 
			
		||||
    USBEndpointConfig   inout_ep_config;
 | 
			
		||||
    USBEndpointConfig   int_ep_config;
 | 
			
		||||
    const QMKUSBConfig  config;
 | 
			
		||||
    QMKUSBDriver        driver;
 | 
			
		||||
} usb_driver_config_t;
 | 
			
		||||
#else
 | 
			
		||||
typedef struct {
 | 
			
		||||
    size_t              queue_capacity_in;
 | 
			
		||||
    size_t              queue_capacity_out;
 | 
			
		||||
| 
						 | 
				
			
			@ -177,7 +190,54 @@ typedef struct {
 | 
			
		|||
    const QMKUSBConfig  config;
 | 
			
		||||
    QMKUSBDriver        driver;
 | 
			
		||||
} usb_driver_config_t;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if STM32_USB_USE_OTG1
 | 
			
		||||
/* 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, \
 | 
			
		||||
        .inout_ep_config =                                                                         \
 | 
			
		||||
            {                                                                                   \
 | 
			
		||||
                stream##_IN_MODE,      /* Interrupt EP */                                       \
 | 
			
		||||
                NULL,                  /* SETUP packet notification callback */                 \
 | 
			
		||||
                qmkusbDataTransmitted, /* IN notification callback */                           \
 | 
			
		||||
                qmkusbDataReceived,    /* OUT notification callback */                             \
 | 
			
		||||
                stream##_EPSIZE,       /* 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          = (__attribute__((aligned(4))) uint8_t[BQ_BUFFER_SIZE(stream##_IN_CAPACITY, stream##_EPSIZE)]){},  \
 | 
			
		||||
            .ob          = (__attribute__((aligned(4))) uint8_t[BQ_BUFFER_SIZE(stream##_OUT_CAPACITY, stream##_EPSIZE)]){}, \
 | 
			
		||||
        }                                                                                       \
 | 
			
		||||
    }
 | 
			
		||||
#else
 | 
			
		||||
/* Reusable initialization structure - see USBEndpointConfig comment at top of file */
 | 
			
		||||
#define QMK_USB_DRIVER_CONFIG(stream, notification, fixedsize)                                                              \
 | 
			
		||||
    {                                                                                                                       \
 | 
			
		||||
| 
						 | 
				
			
			@ -235,6 +295,7 @@ typedef struct {
 | 
			
		|||
            .ob          = (__attribute__((aligned(4))) uint8_t[BQ_BUFFER_SIZE(stream##_OUT_CAPACITY, stream##_EPSIZE)]){}, \
 | 
			
		||||
        }                                                                                                                   \
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    union {
 | 
			
		||||
| 
						 | 
				
			
			@ -327,8 +388,12 @@ static void usb_event_cb(USBDriver *usbp, usbevent_t event) {
 | 
			
		|||
            usbInitEndpointI(usbp, SHARED_IN_EPNUM, &shared_ep_config);
 | 
			
		||||
#endif
 | 
			
		||||
            for (int i = 0; i < NUM_USB_DRIVERS; i++) {
 | 
			
		||||
                #if STM32_USB_USE_OTG1
 | 
			
		||||
                usbInitEndpointI(usbp, drivers.array[i].config.bulk_in, &drivers.array[i].inout_ep_config);
 | 
			
		||||
                #else
 | 
			
		||||
                usbInitEndpointI(usbp, drivers.array[i].config.bulk_in, &drivers.array[i].in_ep_config);
 | 
			
		||||
                usbInitEndpointI(usbp, drivers.array[i].config.bulk_out, &drivers.array[i].out_ep_config);
 | 
			
		||||
                #endif
 | 
			
		||||
                if (drivers.array[i].config.int_in) {
 | 
			
		||||
                    usbInitEndpointI(usbp, drivers.array[i].config.int_in, &drivers.array[i].int_ep_config);
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -553,12 +618,21 @@ static const USBConfig usbcfg = {
 | 
			
		|||
 */
 | 
			
		||||
void init_usb_driver(USBDriver *usbp) {
 | 
			
		||||
    for (int i = 0; i < NUM_USB_DRIVERS; i++) {
 | 
			
		||||
        #if STM32_USB_USE_OTG1
 | 
			
		||||
        QMKUSBDriver *driver                       = &drivers.array[i].driver;
 | 
			
		||||
        drivers.array[i].inout_ep_config.in_state  = &drivers.array[i].in_ep_state;
 | 
			
		||||
        drivers.array[i].inout_ep_config.out_state = &drivers.array[i].out_ep_state;
 | 
			
		||||
        drivers.array[i].int_ep_config.in_state    = &drivers.array[i].int_ep_state;
 | 
			
		||||
        qmkusbObjectInit(driver, &drivers.array[i].config);
 | 
			
		||||
        qmkusbStart(driver, &drivers.array[i].config);
 | 
			
		||||
        #else
 | 
			
		||||
        QMKUSBDriver *driver                     = &drivers.array[i].driver;
 | 
			
		||||
        drivers.array[i].in_ep_config.in_state   = &drivers.array[i].in_ep_state;
 | 
			
		||||
        drivers.array[i].out_ep_config.out_state = &drivers.array[i].out_ep_state;
 | 
			
		||||
        drivers.array[i].int_ep_config.in_state  = &drivers.array[i].int_ep_state;
 | 
			
		||||
        qmkusbObjectInit(driver, &drivers.array[i].config);
 | 
			
		||||
        qmkusbStart(driver, &drivers.array[i].config);
 | 
			
		||||
        #endif
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
| 
						 | 
				
			
			@ -574,6 +648,13 @@ void init_usb_driver(USBDriver *usbp) {
 | 
			
		|||
    chVTObjectInit(&keyboard_idle_timer);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void restart_usb_driver(USBDriver *usbp) {
 | 
			
		||||
    usbStop(usbp);
 | 
			
		||||
    usbDisconnectBus(usbp);
 | 
			
		||||
    usbStart(usbp, &usbcfg);
 | 
			
		||||
    usbConnectBus(usbp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ---------------------------------------------------------
 | 
			
		||||
 *                  Keyboard functions
 | 
			
		||||
 * ---------------------------------------------------------
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,6 +35,9 @@
 | 
			
		|||
/* Initialize the USB driver and bus */
 | 
			
		||||
void init_usb_driver(USBDriver *usbp);
 | 
			
		||||
 | 
			
		||||
/* Restart the USB driver and bus */
 | 
			
		||||
void restart_usb_driver(USBDriver *usbp);
 | 
			
		||||
 | 
			
		||||
/* ---------------
 | 
			
		||||
 * Keyboard header
 | 
			
		||||
 * ---------------
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1104,6 +1104,10 @@ int main(void) {
 | 
			
		|||
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
 | 
			
		||||
        USB_USBTask();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        // Run housekeeping
 | 
			
		||||
        housekeeping_task_kb();
 | 
			
		||||
        housekeeping_task_user();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,6 +41,10 @@
 | 
			
		|||
#include "usb_descriptor.h"
 | 
			
		||||
#include "usb_descriptor_common.h"
 | 
			
		||||
 | 
			
		||||
#ifdef JOYSTICK_ENABLE
 | 
			
		||||
#    include "joystick.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// clang-format off
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -308,10 +312,17 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] = {
 | 
			
		|||
            HID_RI_USAGE(8, 0x35),      // Rz
 | 
			
		||||
#    endif
 | 
			
		||||
#    if JOYSTICK_AXES_COUNT >= 1
 | 
			
		||||
            HID_RI_LOGICAL_MINIMUM(8, -127),
 | 
			
		||||
            HID_RI_LOGICAL_MAXIMUM(8, 127),
 | 
			
		||||
     # if JOYSTICK_AXES_RESOLUTION == 8
 | 
			
		||||
            HID_RI_LOGICAL_MINIMUM(8, -JOYSTICK_RESOLUTION),
 | 
			
		||||
            HID_RI_LOGICAL_MAXIMUM(8, JOYSTICK_RESOLUTION),
 | 
			
		||||
            HID_RI_REPORT_COUNT(8, JOYSTICK_AXES_COUNT),
 | 
			
		||||
            HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
     # else
 | 
			
		||||
            HID_RI_LOGICAL_MINIMUM(16, -JOYSTICK_RESOLUTION),
 | 
			
		||||
            HID_RI_LOGICAL_MAXIMUM(16, JOYSTICK_RESOLUTION),
 | 
			
		||||
            HID_RI_REPORT_COUNT(8, JOYSTICK_AXES_COUNT),
 | 
			
		||||
            HID_RI_REPORT_SIZE(8, 0x10),
 | 
			
		||||
     # endif
 | 
			
		||||
            HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -205,7 +205,11 @@ enum usb_endpoints {
 | 
			
		|||
 | 
			
		||||
#ifdef RAW_ENABLE
 | 
			
		||||
    RAW_IN_EPNUM  = NEXT_EPNUM,
 | 
			
		||||
    #if STM32_USB_USE_OTG1
 | 
			
		||||
    #define RAW_OUT_EPNUM RAW_IN_EPNUM
 | 
			
		||||
    #else
 | 
			
		||||
    RAW_OUT_EPNUM = NEXT_EPNUM,
 | 
			
		||||
    #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef SHARED_EP_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -219,7 +223,11 @@ enum usb_endpoints {
 | 
			
		|||
    // ChibiOS has enough memory and descriptor to actually enable the endpoint
 | 
			
		||||
    // It could use the same endpoint numbers, as that's supported by ChibiOS
 | 
			
		||||
    // But the QMK code currently assumes that the endpoint numbers are different
 | 
			
		||||
    #if STM32_USB_USE_OTG1
 | 
			
		||||
    #define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM
 | 
			
		||||
    #else
 | 
			
		||||
    CONSOLE_OUT_EPNUM = NEXT_EPNUM,
 | 
			
		||||
    #endif
 | 
			
		||||
#    else
 | 
			
		||||
#        define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM
 | 
			
		||||
#    endif
 | 
			
		||||
| 
						 | 
				
			
			@ -227,17 +235,29 @@ enum usb_endpoints {
 | 
			
		|||
 | 
			
		||||
#ifdef MIDI_ENABLE
 | 
			
		||||
    MIDI_STREAM_IN_EPNUM  = NEXT_EPNUM,
 | 
			
		||||
    #if STM32_USB_USE_OTG1
 | 
			
		||||
    #define MIDI_STREAM_OUT_EPNUM MIDI_STREAM_IN_EPNUM
 | 
			
		||||
    #else
 | 
			
		||||
    MIDI_STREAM_OUT_EPNUM = NEXT_EPNUM,
 | 
			
		||||
    #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef VIRTSER_ENABLE
 | 
			
		||||
    CDC_NOTIFICATION_EPNUM = NEXT_EPNUM,
 | 
			
		||||
    CDC_IN_EPNUM           = NEXT_EPNUM,
 | 
			
		||||
    #if STM32_USB_USE_OTG1
 | 
			
		||||
    #define CDC_OUT_EPNUM  CDC_IN_EPNUM
 | 
			
		||||
    #else
 | 
			
		||||
    CDC_OUT_EPNUM          = NEXT_EPNUM,
 | 
			
		||||
    #endif
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef JOYSTICK_ENABLE
 | 
			
		||||
    JOYSTICK_IN_EPNUM  = NEXT_EPNUM,
 | 
			
		||||
    #if STM32_USB_USE_OTG1
 | 
			
		||||
    JOYSTICK_OUT_EPNUM = JOYSTICK_IN_EPNUM,
 | 
			
		||||
    #else
 | 
			
		||||
    JOYSTICK_OUT_EPNUM = NEXT_EPNUM,
 | 
			
		||||
    #endif
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -153,6 +153,10 @@ int main(void) {
 | 
			
		|||
                console_task();
 | 
			
		||||
            }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
            // Run housekeeping
 | 
			
		||||
            housekeeping_task_kb();
 | 
			
		||||
            housekeeping_task_user();
 | 
			
		||||
        } else if (suspend_wakeup_condition()) {
 | 
			
		||||
            usb_remote_wakeup();
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue