2020 February 29 Breaking Changes Update (#8064)
This commit is contained in:
committed by
Florian Didron
parent
ae8641748e
commit
f01c45ef54
3
.gitignore
vendored
3
.gitignore
vendored
@@ -64,3 +64,6 @@ id_rsa_*
|
||||
|
||||
# python things
|
||||
__pycache__
|
||||
|
||||
# prerequisites for updating ChibiOS
|
||||
/util/fmpp*
|
||||
|
||||
1
.gitmodules
vendored
1
.gitmodules
vendored
@@ -4,7 +4,6 @@
|
||||
[submodule "lib/chibios-contrib"]
|
||||
path = lib/chibios-contrib
|
||||
url = https://github.com/qmk/ChibiOS-Contrib
|
||||
branch = k-type-fix
|
||||
[submodule "lib/ugfx"]
|
||||
path = lib/ugfx
|
||||
url = https://github.com/qmk/uGFX
|
||||
|
||||
6
Makefile
6
Makefile
@@ -618,13 +618,19 @@ endif
|
||||
# Generate the version.h file
|
||||
ifndef SKIP_GIT
|
||||
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
|
||||
CHIBIOS_VERSION := $(shell cd lib/chibios && git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
|
||||
CHIBIOS_CONTRIB_VERSION := $(shell cd lib/chibios-contrib && git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
|
||||
else
|
||||
GIT_VERSION := NA
|
||||
CHIBIOS_VERSION := NA
|
||||
CHIBIOS_CONTRIB_VERSION := NA
|
||||
endif
|
||||
ifndef SKIP_VERSION
|
||||
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
|
||||
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
|
||||
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
|
||||
$(shell echo '#define CHIBIOS_VERSION "$(CHIBIOS_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
|
||||
$(shell echo '#define CHIBIOS_CONTRIB_VERSION "$(CHIBIOS_CONTRIB_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
|
||||
else
|
||||
BUILD_DATE := NA
|
||||
endif
|
||||
|
||||
@@ -298,6 +298,7 @@ VALID_BACKLIGHT_TYPES := pwm software custom
|
||||
BACKLIGHT_ENABLE ?= no
|
||||
BACKLIGHT_DRIVER ?= pwm
|
||||
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
|
||||
ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),)
|
||||
$(error BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type)
|
||||
endif
|
||||
|
||||
@@ -29,12 +29,16 @@
|
||||
#include <string.h>
|
||||
#include <hal.h>
|
||||
|
||||
static uint8_t i2c_address;
|
||||
|
||||
static const I2CConfig i2cconfig = {
|
||||
#ifdef USE_I2CV1
|
||||
I2C1_OPMODE,
|
||||
I2C1_CLOCK_SPEED,
|
||||
I2C1_DUTY_CYCLE,
|
||||
#else
|
||||
// This configures the I2C clock to 400khz assuming a 72Mhz clock
|
||||
// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html
|
||||
STM32_TIMINGR_PRESC(I2C1_TIMINGR_PRESC) | STM32_TIMINGR_SCLDEL(I2C1_TIMINGR_SCLDEL) | STM32_TIMINGR_SDADEL(I2C1_TIMINGR_SDADEL) | STM32_TIMINGR_SCLH(I2C1_TIMINGR_SCLH) | STM32_TIMINGR_SCLL(I2C1_TIMINGR_SCLL), 0, 0
|
||||
#endif
|
||||
};
|
||||
@@ -64,58 +68,30 @@ __attribute__((weak)) void i2c_init(void) {
|
||||
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
|
||||
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
|
||||
#endif
|
||||
|
||||
// i2cInit(); //This is invoked by halInit() so no need to redo it.
|
||||
}
|
||||
|
||||
i2c_status_t i2c_start(uint8_t address) {
|
||||
#if I2C_USE_MUTUAL_EXCLUSION
|
||||
i2cAcquireBus(&I2C_DRIVER);
|
||||
#endif
|
||||
|
||||
i2c_address = address;
|
||||
i2cStart(&I2C_DRIVER, &i2cconfig);
|
||||
return I2C_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) {
|
||||
#if I2C_USE_MUTUAL_EXCLUSION
|
||||
i2cAcquireBus(&I2C_DRIVER);
|
||||
#endif
|
||||
|
||||
i2c_address = address;
|
||||
i2cStart(&I2C_DRIVER, &i2cconfig);
|
||||
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (address >> 1), data, length, 0, 0, MS2ST(timeout));
|
||||
|
||||
#if I2C_USE_MUTUAL_EXCLUSION
|
||||
i2cReleaseBus(&I2C_DRIVER);
|
||||
#endif
|
||||
|
||||
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout));
|
||||
return chibios_to_qmk(&status);
|
||||
}
|
||||
|
||||
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) {
|
||||
#if I2C_USE_MUTUAL_EXCLUSION
|
||||
i2cAcquireBus(&I2C_DRIVER);
|
||||
#endif
|
||||
|
||||
i2c_address = address;
|
||||
i2cStart(&I2C_DRIVER, &i2cconfig);
|
||||
msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (address >> 1), data, length, MS2ST(timeout));
|
||||
|
||||
#if I2C_USE_MUTUAL_EXCLUSION
|
||||
i2cReleaseBus(&I2C_DRIVER);
|
||||
#endif
|
||||
|
||||
msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, TIME_MS2I(timeout));
|
||||
return chibios_to_qmk(&status);
|
||||
}
|
||||
|
||||
i2c_status_t i2c_transmit_receive(uint8_t address, uint8_t * tx_body, uint16_t tx_length, uint8_t * rx_body, uint16_t rx_length) {
|
||||
return i2cMasterTransmitTimeout(&I2C_DRIVER, address/2, tx_body, tx_length, rx_body, rx_length, MS2ST(100));
|
||||
}
|
||||
|
||||
i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
|
||||
#if I2C_USE_MUTUAL_EXCLUSION
|
||||
i2cAcquireBus(&I2C_DRIVER);
|
||||
#endif
|
||||
|
||||
i2c_address = devaddr;
|
||||
i2cStart(&I2C_DRIVER, &i2cconfig);
|
||||
|
||||
uint8_t complete_packet[length + 1];
|
||||
@@ -124,34 +100,15 @@ i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data,
|
||||
}
|
||||
complete_packet[0] = regaddr;
|
||||
|
||||
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (devaddr >> 1), complete_packet, length + 1, 0, 0, MS2ST(timeout));
|
||||
|
||||
#if I2C_USE_MUTUAL_EXCLUSION
|
||||
i2cReleaseBus(&I2C_DRIVER);
|
||||
#endif
|
||||
|
||||
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout));
|
||||
return chibios_to_qmk(&status);
|
||||
}
|
||||
|
||||
i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
|
||||
#if I2C_USE_MUTUAL_EXCLUSION
|
||||
i2cAcquireBus(&I2C_DRIVER);
|
||||
#endif
|
||||
|
||||
i2c_address = devaddr;
|
||||
i2cStart(&I2C_DRIVER, &i2cconfig);
|
||||
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (devaddr >> 1), ®addr, 1, data, length, MS2ST(timeout));
|
||||
|
||||
#if I2C_USE_MUTUAL_EXCLUSION
|
||||
i2cReleaseBus(&I2C_DRIVER);
|
||||
#endif
|
||||
|
||||
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), ®addr, 1, data, length, TIME_MS2I(timeout));
|
||||
return chibios_to_qmk(&status);
|
||||
}
|
||||
|
||||
void i2c_stop(void) {
|
||||
i2cStop(&I2C_DRIVER);
|
||||
|
||||
#if I2C_USE_MUTUAL_EXCLUSION
|
||||
i2cReleaseBus(&I2C_DRIVER);
|
||||
#endif
|
||||
}
|
||||
void i2c_stop(void) { i2cStop(&I2C_DRIVER); }
|
||||
|
||||
@@ -60,7 +60,7 @@ void ws2812_init(void) {
|
||||
|
||||
// TODO: more dynamic baudrate
|
||||
static const SPIConfig spicfg = {
|
||||
NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN),
|
||||
0, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN),
|
||||
SPI_CR1_BR_1 | SPI_CR1_BR_0 // baudrate : fpclk / 8 => 1tick is 0.32us (2.25 MHz)
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
@@ -20,14 +20,76 @@
|
||||
*/
|
||||
|
||||
#include "hal.h"
|
||||
#include "stm32_gpio.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local variables and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if HAL_USE_PAL || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief PAL setup.
|
||||
* @details Digital I/O ports static configuration as defined in @p board.h.
|
||||
* This variable is used by the HAL when initializing the PAL driver.
|
||||
* @brief Type of STM32 GPIO port setup.
|
||||
*/
|
||||
const PALConfig pal_default_config = {
|
||||
typedef struct {
|
||||
uint32_t moder;
|
||||
uint32_t otyper;
|
||||
uint32_t ospeedr;
|
||||
uint32_t pupdr;
|
||||
uint32_t odr;
|
||||
uint32_t afrl;
|
||||
uint32_t afrh;
|
||||
} gpio_setup_t;
|
||||
|
||||
/**
|
||||
* @brief Type of STM32 GPIO initialization data.
|
||||
*/
|
||||
typedef struct {
|
||||
#if STM32_HAS_GPIOA || defined(__DOXYGEN__)
|
||||
gpio_setup_t PAData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOB || defined(__DOXYGEN__)
|
||||
gpio_setup_t PBData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOC || defined(__DOXYGEN__)
|
||||
gpio_setup_t PCData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOD || defined(__DOXYGEN__)
|
||||
gpio_setup_t PDData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOE || defined(__DOXYGEN__)
|
||||
gpio_setup_t PEData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOF || defined(__DOXYGEN__)
|
||||
gpio_setup_t PFData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOG || defined(__DOXYGEN__)
|
||||
gpio_setup_t PGData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOH || defined(__DOXYGEN__)
|
||||
gpio_setup_t PHData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOI || defined(__DOXYGEN__)
|
||||
gpio_setup_t PIData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)
|
||||
gpio_setup_t PJData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOK || defined(__DOXYGEN__)
|
||||
gpio_setup_t PKData;
|
||||
#endif
|
||||
} gpio_config_t;
|
||||
|
||||
/**
|
||||
* @brief STM32 GPIO static initialization data.
|
||||
*/
|
||||
static const gpio_config_t gpio_default_config = {
|
||||
#if STM32_HAS_GPIOA
|
||||
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR, VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
|
||||
#endif
|
||||
@@ -53,23 +115,114 @@ const PALConfig pal_default_config = {
|
||||
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR, VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOI
|
||||
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH}
|
||||
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOJ
|
||||
{VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR, VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOK
|
||||
{VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR, VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH}
|
||||
#endif
|
||||
};
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {
|
||||
gpiop->OTYPER = config->otyper;
|
||||
gpiop->OSPEEDR = config->ospeedr;
|
||||
gpiop->PUPDR = config->pupdr;
|
||||
gpiop->ODR = config->odr;
|
||||
gpiop->AFRL = config->afrl;
|
||||
gpiop->AFRH = config->afrh;
|
||||
gpiop->MODER = config->moder;
|
||||
}
|
||||
|
||||
static void stm32_gpio_init(void) {
|
||||
/* Enabling GPIO-related clocks, the mask comes from the
|
||||
registry header file.*/
|
||||
rccResetAHB(STM32_GPIO_EN_MASK);
|
||||
rccEnableAHB(STM32_GPIO_EN_MASK, true);
|
||||
|
||||
/* Initializing all the defined GPIO ports.*/
|
||||
#if STM32_HAS_GPIOA
|
||||
gpio_init(GPIOA, &gpio_default_config.PAData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOB
|
||||
gpio_init(GPIOB, &gpio_default_config.PBData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOC
|
||||
gpio_init(GPIOC, &gpio_default_config.PCData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOD
|
||||
gpio_init(GPIOD, &gpio_default_config.PDData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOE
|
||||
gpio_init(GPIOE, &gpio_default_config.PEData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOF
|
||||
gpio_init(GPIOF, &gpio_default_config.PFData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOG
|
||||
gpio_init(GPIOG, &gpio_default_config.PGData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOH
|
||||
gpio_init(GPIOH, &gpio_default_config.PHData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOI
|
||||
gpio_init(GPIOI, &gpio_default_config.PIData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOJ
|
||||
gpio_init(GPIOJ, &gpio_default_config.PJData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOK
|
||||
gpio_init(GPIOK, &gpio_default_config.PKData);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver interrupt handlers. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
__attribute__((weak)) void enter_bootloader_mode_if_requested(void) {}
|
||||
|
||||
/**
|
||||
* @brief Early initialization code.
|
||||
* @details This initialization must be performed just after stack setup
|
||||
* and before any other initialization.
|
||||
* @details GPIO ports and system clocks are initialized before everything
|
||||
* else.
|
||||
*/
|
||||
void __early_init(void) {
|
||||
enter_bootloader_mode_if_requested();
|
||||
|
||||
stm32_gpio_init();
|
||||
stm32_clock_init();
|
||||
}
|
||||
|
||||
#if HAL_USE_SDC || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief SDC card detection.
|
||||
*/
|
||||
bool sdc_lld_is_card_inserted(SDCDriver *sdcp) {
|
||||
(void)sdcp;
|
||||
/* TODO: Fill the implementation.*/
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief SDC card write protection detection.
|
||||
*/
|
||||
bool sdc_lld_is_write_protected(SDCDriver *sdcp) {
|
||||
(void)sdcp;
|
||||
/* TODO: Fill the implementation.*/
|
||||
return false;
|
||||
}
|
||||
#endif /* HAL_USE_SDC */
|
||||
|
||||
#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief MMC_SPI card detection.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
@@ -22,6 +22,10 @@
|
||||
#ifndef BOARD_H
|
||||
#define BOARD_H
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*
|
||||
* Setup for Generic STM32_F072 Board
|
||||
*/
|
||||
@@ -167,11 +171,9 @@
|
||||
#define LINE_USB_DP PAL_LINE(GPIOA, 12U)
|
||||
#define LINE_SWDIO PAL_LINE(GPIOA, 13U)
|
||||
#define LINE_SWCLK PAL_LINE(GPIOA, 14U)
|
||||
|
||||
#define LINE_SPI2_SCK PAL_LINE(GPIOB, 13U)
|
||||
#define LINE_SPI2_MISO PAL_LINE(GPIOB, 14U)
|
||||
#define LINE_SPI2_MOSI PAL_LINE(GPIOB, 15U)
|
||||
|
||||
#define LINE_MEMS_CS PAL_LINE(GPIOC, 0U)
|
||||
#define LINE_LED_RED PAL_LINE(GPIOC, 6U)
|
||||
#define LINE_LED_BLUE PAL_LINE(GPIOC, 7U)
|
||||
@@ -179,10 +181,25 @@
|
||||
#define LINE_LED_GREEN PAL_LINE(GPIOC, 9U)
|
||||
#define LINE_OSC32_IN PAL_LINE(GPIOC, 14U)
|
||||
#define LINE_OSC32_OUT PAL_LINE(GPIOC, 15U)
|
||||
|
||||
#define LINE_OSC_IN PAL_LINE(GPIOF, 0U)
|
||||
#define LINE_OSC_OUT PAL_LINE(GPIOF, 1U)
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*
|
||||
* I/O ports initial setup, this configuration is established soon after reset
|
||||
* in the initialization code.
|
||||
@@ -373,6 +390,10 @@
|
||||
#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_OSC_IN, 0U) | PIN_AFIO_AF(GPIOF_OSC_OUT, 0U) | PIN_AFIO_AF(GPIOF_PIN2, 0U) | PIN_AFIO_AF(GPIOF_PIN3, 0U) | PIN_AFIO_AF(GPIOF_PIN4, 0U) | PIN_AFIO_AF(GPIOF_PIN5, 0U) | PIN_AFIO_AF(GPIOF_PIN6, 0U) | PIN_AFIO_AF(GPIOF_PIN7, 0U))
|
||||
#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0U) | PIN_AFIO_AF(GPIOF_PIN9, 0U) | PIN_AFIO_AF(GPIOF_PIN10, 0U) | PIN_AFIO_AF(GPIOF_PIN11, 0U) | PIN_AFIO_AF(GPIOF_PIN12, 0U) | PIN_AFIO_AF(GPIOF_PIN13, 0U) | PIN_AFIO_AF(GPIOF_PIN14, 0U) | PIN_AFIO_AF(GPIOF_PIN15, 0U))
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if !defined(_FROM_ASM_)
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -3,3 +3,7 @@ BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F072XB/board.c
|
||||
|
||||
# Required include directories
|
||||
BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F072XB
|
||||
|
||||
# Shared variables
|
||||
ALLCSRC += $(BOARDSRC)
|
||||
ALLINC += $(BOARDINC)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<configuration_settings>
|
||||
<templates_path>resources/gencfg/processors/boards/stm32f0xx/templates</templates_path>
|
||||
<output_path>..</output_path>
|
||||
<hal_version>3.0.x</hal_version>
|
||||
<hal_version>5.0.x</hal_version>
|
||||
</configuration_settings>
|
||||
<board_name>ST STM32F072B-Discovery</board_name>
|
||||
<board_id>ST_STM32F072B_DISCOVERY</board_id>
|
||||
|
||||
15
drivers/boards/GENERIC_STM32_F072XB/cfg/board.fmpp
Normal file
15
drivers/boards/GENERIC_STM32_F072XB/cfg/board.fmpp
Normal file
@@ -0,0 +1,15 @@
|
||||
sourceRoot: ../../../../../tools/ftl/processors/boards/stm32f0xx/templates
|
||||
outputRoot: ..
|
||||
dataRoot: .
|
||||
|
||||
freemarkerLinks: {
|
||||
lib: ../../../../../tools/ftl/libs
|
||||
}
|
||||
|
||||
data : {
|
||||
doc1:xml (
|
||||
board.chcfg
|
||||
{
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -14,15 +14,82 @@
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#include "hal.h"
|
||||
|
||||
#if HAL_USE_PAL || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief PAL setup.
|
||||
* @details Digital I/O ports static configuration as defined in @p board.h.
|
||||
* This variable is used by the HAL when initializing the PAL driver.
|
||||
/*
|
||||
* This file has been automatically generated using ChibiStudio board
|
||||
* generator plugin. Do not edit manually.
|
||||
*/
|
||||
const PALConfig pal_default_config = {
|
||||
|
||||
#include "hal.h"
|
||||
#include "stm32_gpio.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local variables and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Type of STM32 GPIO port setup.
|
||||
*/
|
||||
typedef struct {
|
||||
uint32_t moder;
|
||||
uint32_t otyper;
|
||||
uint32_t ospeedr;
|
||||
uint32_t pupdr;
|
||||
uint32_t odr;
|
||||
uint32_t afrl;
|
||||
uint32_t afrh;
|
||||
} gpio_setup_t;
|
||||
|
||||
/**
|
||||
* @brief Type of STM32 GPIO initialization data.
|
||||
*/
|
||||
typedef struct {
|
||||
#if STM32_HAS_GPIOA || defined(__DOXYGEN__)
|
||||
gpio_setup_t PAData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOB || defined(__DOXYGEN__)
|
||||
gpio_setup_t PBData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOC || defined(__DOXYGEN__)
|
||||
gpio_setup_t PCData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOD || defined(__DOXYGEN__)
|
||||
gpio_setup_t PDData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOE || defined(__DOXYGEN__)
|
||||
gpio_setup_t PEData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOF || defined(__DOXYGEN__)
|
||||
gpio_setup_t PFData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOG || defined(__DOXYGEN__)
|
||||
gpio_setup_t PGData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOH || defined(__DOXYGEN__)
|
||||
gpio_setup_t PHData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOI || defined(__DOXYGEN__)
|
||||
gpio_setup_t PIData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)
|
||||
gpio_setup_t PJData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOK || defined(__DOXYGEN__)
|
||||
gpio_setup_t PKData;
|
||||
#endif
|
||||
} gpio_config_t;
|
||||
|
||||
/**
|
||||
* @brief STM32 GPIO static initialization data.
|
||||
*/
|
||||
static const gpio_config_t gpio_default_config = {
|
||||
#if STM32_HAS_GPIOA
|
||||
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR, VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
|
||||
#endif
|
||||
@@ -48,10 +115,71 @@ const PALConfig pal_default_config = {
|
||||
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR, VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOI
|
||||
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH}
|
||||
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOJ
|
||||
{VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR, VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOK
|
||||
{VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR, VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH}
|
||||
#endif
|
||||
};
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {
|
||||
gpiop->OTYPER = config->otyper;
|
||||
gpiop->OSPEEDR = config->ospeedr;
|
||||
gpiop->PUPDR = config->pupdr;
|
||||
gpiop->ODR = config->odr;
|
||||
gpiop->AFRL = config->afrl;
|
||||
gpiop->AFRH = config->afrh;
|
||||
gpiop->MODER = config->moder;
|
||||
}
|
||||
|
||||
static void stm32_gpio_init(void) {
|
||||
/* Enabling GPIO-related clocks, the mask comes from the
|
||||
registry header file.*/
|
||||
rccResetAHB(STM32_GPIO_EN_MASK);
|
||||
rccEnableAHB(STM32_GPIO_EN_MASK, true);
|
||||
|
||||
/* Initializing all the defined GPIO ports.*/
|
||||
#if STM32_HAS_GPIOA
|
||||
gpio_init(GPIOA, &gpio_default_config.PAData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOB
|
||||
gpio_init(GPIOB, &gpio_default_config.PBData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOC
|
||||
gpio_init(GPIOC, &gpio_default_config.PCData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOD
|
||||
gpio_init(GPIOD, &gpio_default_config.PDData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOE
|
||||
gpio_init(GPIOE, &gpio_default_config.PEData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOF
|
||||
gpio_init(GPIOF, &gpio_default_config.PFData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOG
|
||||
gpio_init(GPIOG, &gpio_default_config.PGData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOH
|
||||
gpio_init(GPIOH, &gpio_default_config.PHData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOI
|
||||
gpio_init(GPIOI, &gpio_default_config.PIData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOJ
|
||||
gpio_init(GPIOJ, &gpio_default_config.PJData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOK
|
||||
gpio_init(GPIOK, &gpio_default_config.PKData);
|
||||
#endif
|
||||
}
|
||||
|
||||
void enter_bootloader_mode_if_requested(void);
|
||||
|
||||
@@ -62,6 +190,8 @@ void enter_bootloader_mode_if_requested(void);
|
||||
*/
|
||||
void __early_init(void) {
|
||||
enter_bootloader_mode_if_requested();
|
||||
|
||||
stm32_gpio_init();
|
||||
stm32_clock_init();
|
||||
}
|
||||
|
||||
|
||||
@@ -24,10 +24,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
/* Driver hardware support. */
|
||||
/*===========================================================================*/
|
||||
|
||||
# define GDISP_HARDWARE_FLUSH TRUE // This controller requires flushing
|
||||
# define GDISP_HARDWARE_DRAWPIXEL TRUE
|
||||
# define GDISP_HARDWARE_PIXELREAD TRUE
|
||||
# define GDISP_HARDWARE_CONTROL TRUE
|
||||
# define GDISP_HARDWARE_FLUSH GFXON // This controller requires flushing
|
||||
# define GDISP_HARDWARE_DRAWPIXEL GFXON
|
||||
# define GDISP_HARDWARE_PIXELREAD GFXON
|
||||
# define GDISP_HARDWARE_CONTROL GFXON
|
||||
|
||||
# define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_GRAY256
|
||||
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
/* Driver hardware support. */
|
||||
/*===========================================================================*/
|
||||
|
||||
# define GDISP_HARDWARE_FLUSH TRUE // This controller requires flushing
|
||||
# define GDISP_HARDWARE_DRAWPIXEL TRUE
|
||||
# define GDISP_HARDWARE_PIXELREAD TRUE
|
||||
# define GDISP_HARDWARE_CONTROL TRUE
|
||||
# define GDISP_HARDWARE_BITFILLS TRUE
|
||||
# define GDISP_HARDWARE_FLUSH GFXON // This controller requires flushing
|
||||
# define GDISP_HARDWARE_DRAWPIXEL GFXON
|
||||
# define GDISP_HARDWARE_PIXELREAD GFXON
|
||||
# define GDISP_HARDWARE_CONTROL GFXON
|
||||
# define GDISP_HARDWARE_BITFILLS GFXON
|
||||
|
||||
# define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
[""]
|
||||
@@ -1,12 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
/* This keyboard/layout is used to test community layout discovery/compilation. */
|
||||
|
||||
#define _DEFAULT 0
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_DEFAULT] = LAYOUT (
|
||||
KC_B
|
||||
),
|
||||
};
|
||||
Submodule lib/chibios updated: 587968d6cb...313416b8fd
Submodule lib/chibios-contrib updated: ede48346ee...e3a3a24047
2
lib/ugfx
2
lib/ugfx
Submodule lib/ugfx updated: 3e97b74e03...40b48f470a
@@ -230,17 +230,11 @@ static const dacsample_t dac_buffer_2[DAC_BUFFER_SIZE] = {
|
||||
/*
|
||||
* DAC streaming callback.
|
||||
*/
|
||||
size_t nx = 0, ny = 0, nz = 0;
|
||||
static void end_cb1(DACDriver *dacp, dacsample_t *buffer, size_t n) {
|
||||
size_t nz = 0;
|
||||
static void end_cb1(DACDriver *dacp) {
|
||||
(void)dacp;
|
||||
|
||||
nz++;
|
||||
if (dac_buffer == buffer) {
|
||||
nx += n;
|
||||
} else {
|
||||
ny += n;
|
||||
}
|
||||
|
||||
if ((nz % 1000) == 0) {
|
||||
// palTogglePad(GPIOD, GPIOD_LED3);
|
||||
}
|
||||
|
||||
@@ -22,12 +22,15 @@
|
||||
# define TOIEx TOIE1
|
||||
|
||||
# if BACKLIGHT_PIN == B5
|
||||
# define COMxx0 COM1A0
|
||||
# define COMxx1 COM1A1
|
||||
# define OCRxx OCR1A
|
||||
# elif BACKLIGHT_PIN == B6
|
||||
# define COMxx0 COM1B0
|
||||
# define COMxx1 COM1B1
|
||||
# define OCRxx OCR1B
|
||||
# elif BACKLIGHT_PIN == B7
|
||||
# define COMxx0 COM1C0
|
||||
# define COMxx1 COM1C1
|
||||
# define OCRxx OCR1C
|
||||
# endif
|
||||
@@ -44,6 +47,7 @@
|
||||
# if (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
|
||||
# error This MCU has no C4 pin!
|
||||
# else
|
||||
# define COMxx0 COM3C0
|
||||
# define COMxx1 COM3C1
|
||||
# define OCRxx OCR3C
|
||||
# endif
|
||||
@@ -51,10 +55,12 @@
|
||||
# if (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
|
||||
# error This MCU has no C5 pin!
|
||||
# else
|
||||
# define COMxx0 COM3B0
|
||||
# define COMxx1 COM3B1
|
||||
# define OCRxx OCR3B
|
||||
# endif
|
||||
# elif BACKLIGHT_PIN == C6
|
||||
# define COMxx0 COM3A0
|
||||
# define COMxx1 COM3A1
|
||||
# define OCRxx OCR3A
|
||||
# endif
|
||||
@@ -68,12 +74,15 @@
|
||||
# define TOIEx TOIE1
|
||||
|
||||
# if BACKLIGHT_PIN == B7
|
||||
# define COMxx0 COM1C0
|
||||
# define COMxx1 COM1C1
|
||||
# define OCRxx OCR1C
|
||||
# elif BACKLIGHT_PIN == C5
|
||||
# define COMxx0 COM1B0
|
||||
# define COMxx1 COM1B1
|
||||
# define OCRxx OCR1B
|
||||
# elif BACKLIGHT_PIN == C6
|
||||
# define COMxx0 COM1A0
|
||||
# define COMxx1 COM1A1
|
||||
# define OCRxx OCR1A
|
||||
# endif
|
||||
@@ -87,9 +96,11 @@
|
||||
# define TOIEx TOIE1
|
||||
|
||||
# if BACKLIGHT_PIN == D4
|
||||
# define COMxx0 COM1B0
|
||||
# define COMxx1 COM1B1
|
||||
# define OCRxx OCR1B
|
||||
# elif BACKLIGHT_PIN == D5
|
||||
# define COMxx0 COM1A0
|
||||
# define COMxx1 COM1A1
|
||||
# define OCRxx OCR1A
|
||||
# endif
|
||||
@@ -103,9 +114,11 @@
|
||||
# define TOIEx TOIE1
|
||||
|
||||
# if BACKLIGHT_PIN == B1
|
||||
# define COMxx0 COM1A0
|
||||
# define COMxx1 COM1A1
|
||||
# define OCRxx OCR1A
|
||||
# elif BACKLIGHT_PIN == B2
|
||||
# define COMxx0 COM1B0
|
||||
# define COMxx1 COM1B1
|
||||
# define OCRxx OCR1B
|
||||
# endif
|
||||
@@ -156,22 +169,22 @@
|
||||
# endif
|
||||
|
||||
# ifndef BACKLIGHT_ON_STATE
|
||||
# define BACKLIGHT_ON_STATE 0
|
||||
# define BACKLIGHT_ON_STATE 1
|
||||
# endif
|
||||
|
||||
void backlight_on(pin_t backlight_pin) {
|
||||
# if BACKLIGHT_ON_STATE == 0
|
||||
writePinLow(backlight_pin);
|
||||
# else
|
||||
# if BACKLIGHT_ON_STATE == 1
|
||||
writePinHigh(backlight_pin);
|
||||
# else
|
||||
writePinLow(backlight_pin);
|
||||
# endif
|
||||
}
|
||||
|
||||
void backlight_off(pin_t backlight_pin) {
|
||||
# if BACKLIGHT_ON_STATE == 0
|
||||
writePinHigh(backlight_pin);
|
||||
# else
|
||||
# if BACKLIGHT_ON_STATE == 1
|
||||
writePinLow(backlight_pin);
|
||||
# else
|
||||
writePinHigh(backlight_pin);
|
||||
# endif
|
||||
}
|
||||
|
||||
@@ -199,6 +212,22 @@ static const pin_t backlight_pins[BACKLIGHT_LED_COUNT] = BACKLIGHT_PIN_INIT;
|
||||
|
||||
# else // full hardware PWM
|
||||
|
||||
static inline void enable_pwm(void) {
|
||||
# if BACKLIGHT_ON_STATE == 1
|
||||
TCCRxA |= _BV(COMxx1);
|
||||
# else
|
||||
TCCRxA |= _BV(COMxx1) | _BV(COMxx0);
|
||||
# endif
|
||||
}
|
||||
|
||||
static inline void disable_pwm(void) {
|
||||
# if BACKLIGHT_ON_STATE == 1
|
||||
TCCRxA &= ~(_BV(COMxx1));
|
||||
# else
|
||||
TCCRxA &= ~(_BV(COMxx1) | _BV(COMxx0));
|
||||
# endif
|
||||
}
|
||||
|
||||
// we support only one backlight pin
|
||||
static const pin_t backlight_pin = BACKLIGHT_PIN;
|
||||
# define FOR_EACH_LED(x) x
|
||||
@@ -309,12 +338,12 @@ void backlight_set(uint8_t level) {
|
||||
if (OCRxx) {
|
||||
TIMSKx &= ~(_BV(OCIExA));
|
||||
TIMSKx &= ~(_BV(TOIEx));
|
||||
FOR_EACH_LED(backlight_off(backlight_pin);)
|
||||
}
|
||||
# else
|
||||
// Turn off PWM control on backlight pin
|
||||
TCCRxA &= ~(_BV(COMxx1));
|
||||
disable_pwm();
|
||||
# endif
|
||||
FOR_EACH_LED(backlight_off(backlight_pin);)
|
||||
} else {
|
||||
# ifdef BACKLIGHT_PWM_TIMER
|
||||
if (!OCRxx) {
|
||||
@@ -323,7 +352,7 @@ void backlight_set(uint8_t level) {
|
||||
}
|
||||
# else
|
||||
// Turn on PWM control of backlight pin
|
||||
TCCRxA |= _BV(COMxx1);
|
||||
enable_pwm();
|
||||
# endif
|
||||
}
|
||||
// Set the brightness
|
||||
@@ -471,8 +500,13 @@ void backlight_init_ports(void) {
|
||||
"In fast PWM mode, the compare units allow generation of PWM waveforms on the OCnx pins. Setting the COMnx1:0 bits to two will produce a non-inverted PWM [..]."
|
||||
"In fast PWM mode the counter is incremented until the counter value matches either one of the fixed values 0x00FF, 0x01FF, or 0x03FF (WGMn3:0 = 5, 6, or 7), the value in ICRn (WGMn3:0 = 14), or the value in OCRnA (WGMn3:0 = 15)."
|
||||
*/
|
||||
TCCRxA = _BV(COMxx1) | _BV(WGM11); // = 0b00001010;
|
||||
TCCRxB = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001;
|
||||
# if BACKLIGHT_ON_STATE == 1
|
||||
TCCRxA = _BV(COMxx1) | _BV(WGM11);
|
||||
# else
|
||||
TCCRxA = _BV(COMxx1) | _BV(COMxx0) | _BV(WGM11);
|
||||
# endif
|
||||
|
||||
TCCRxB = _BV(WGM13) | _BV(WGM12) | _BV(CS10);
|
||||
# endif
|
||||
// Use full 16-bit resolution. Counter counts to ICR1 before reset to 0.
|
||||
ICRx = TIMER_TOP;
|
||||
|
||||
@@ -35,6 +35,13 @@
|
||||
static pin_t encoders_pad_a[] = ENCODERS_PAD_A;
|
||||
static pin_t encoders_pad_b[] = ENCODERS_PAD_B;
|
||||
|
||||
#ifndef ENCODER_DIRECTION_FLIP
|
||||
# define ENCODER_CLOCKWISE true
|
||||
# define ENCODER_COUNTER_CLOCKWISE false
|
||||
#else
|
||||
# define ENCODER_CLOCKWISE false
|
||||
# define ENCODER_COUNTER_CLOCKWISE true
|
||||
#endif
|
||||
static int8_t encoder_LUT[] = {0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0};
|
||||
|
||||
static uint8_t encoder_state[NUMBER_OF_ENCODERS] = {0};
|
||||
@@ -86,11 +93,11 @@ static void encoder_update(int8_t index, uint8_t state) {
|
||||
encoder_pulses[i] += encoder_LUT[state & 0xF];
|
||||
if (encoder_pulses[i] >= ENCODER_RESOLUTION) {
|
||||
encoder_value[index]++;
|
||||
encoder_update_kb(index, true);
|
||||
encoder_update_kb(index, ENCODER_COUNTER_CLOCKWISE);
|
||||
}
|
||||
if (encoder_pulses[i] <= -ENCODER_RESOLUTION) { // direction is arbitrary here, but this clockwise
|
||||
encoder_value[index]--;
|
||||
encoder_update_kb(index, false);
|
||||
encoder_update_kb(index, ENCODER_CLOCKWISE);
|
||||
}
|
||||
encoder_pulses[i] %= ENCODER_RESOLUTION;
|
||||
}
|
||||
@@ -113,12 +120,12 @@ void encoder_update_raw(uint8_t* slave_state) {
|
||||
while (delta > 0) {
|
||||
delta--;
|
||||
encoder_value[index]++;
|
||||
encoder_update_kb(index, true);
|
||||
encoder_update_kb(index, ENCODER_COUNTER_CLOCKWISE);
|
||||
}
|
||||
while (delta < 0) {
|
||||
delta++;
|
||||
encoder_value[index]--;
|
||||
encoder_update_kb(index, false);
|
||||
encoder_update_kb(index, ENCODER_CLOCKWISE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,26 +139,6 @@ action_t action_for_key(uint8_t layer, keypos_t key) {
|
||||
mod = mod_config((keycode >> 0x8) & 0x1F);
|
||||
action.code = ACTION_MODS_TAP_KEY(mod, keycode & 0xFF);
|
||||
break;
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
case BL_ON:
|
||||
action.code = ACTION_BACKLIGHT_ON();
|
||||
break;
|
||||
case BL_OFF:
|
||||
action.code = ACTION_BACKLIGHT_OFF();
|
||||
break;
|
||||
case BL_DEC:
|
||||
action.code = ACTION_BACKLIGHT_DECREASE();
|
||||
break;
|
||||
case BL_INC:
|
||||
action.code = ACTION_BACKLIGHT_INCREASE();
|
||||
break;
|
||||
case BL_TOGG:
|
||||
action.code = ACTION_BACKLIGHT_TOGGLE();
|
||||
break;
|
||||
case BL_STEP:
|
||||
action.code = ACTION_BACKLIGHT_STEP();
|
||||
break;
|
||||
#endif
|
||||
#ifdef SWAP_HANDS_ENABLE
|
||||
case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX:
|
||||
action.code = ACTION(ACT_SWAP_HANDS, keycode & 0xff);
|
||||
|
||||
51
quantum/process_keycode/process_backlight.c
Normal file
51
quantum/process_keycode/process_backlight.c
Normal file
@@ -0,0 +1,51 @@
|
||||
/* Copyright 2019
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "process_backlight.h"
|
||||
|
||||
#include "backlight.h"
|
||||
|
||||
bool process_backlight(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
switch (keycode) {
|
||||
case BL_ON:
|
||||
backlight_level(BACKLIGHT_LEVELS);
|
||||
return false;
|
||||
case BL_OFF:
|
||||
backlight_level(0);
|
||||
return false;
|
||||
case BL_DEC:
|
||||
backlight_decrease();
|
||||
return false;
|
||||
case BL_INC:
|
||||
backlight_increase();
|
||||
return false;
|
||||
case BL_TOGG:
|
||||
backlight_toggle();
|
||||
return false;
|
||||
case BL_STEP:
|
||||
backlight_step();
|
||||
return false;
|
||||
#ifdef BACKLIGHT_BREATHING
|
||||
case BL_BRTG:
|
||||
backlight_toggle_breathing();
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
21
quantum/process_keycode/process_backlight.h
Normal file
21
quantum/process_keycode/process_backlight.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/* Copyright 2019
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
bool process_backlight(uint16_t keycode, keyrecord_t *record);
|
||||
@@ -224,6 +224,9 @@ bool process_record_quantum(keyrecord_t *record) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
process_audio(keycode, record) &&
|
||||
#endif
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
process_backlight(keycode, record) &&
|
||||
#endif
|
||||
#ifdef STENO_ENABLE
|
||||
process_steno(keycode, record) &&
|
||||
#endif
|
||||
|
||||
@@ -88,6 +88,10 @@ extern layer_state_t layer_state;
|
||||
# include "process_music.h"
|
||||
#endif
|
||||
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
# include "process_backlight.h"
|
||||
#endif
|
||||
|
||||
#ifdef LEADER_ENABLE
|
||||
# include "process_leader.h"
|
||||
#endif
|
||||
|
||||
@@ -119,7 +119,7 @@ static THD_FUNCTION(serialThread, arg) {
|
||||
eventflags_t flags1 = 0;
|
||||
eventflags_t flags2 = 0;
|
||||
if (need_wait) {
|
||||
eventmask_t mask = chEvtWaitAnyTimeout(ALL_EVENTS, MS2ST(1000));
|
||||
eventmask_t mask = chEvtWaitAnyTimeout(ALL_EVENTS, TIME_MS2I(1000));
|
||||
if (mask & EVENT_MASK(1)) {
|
||||
flags1 = chEvtGetAndClearFlags(&sd1_listener);
|
||||
print_error("DOWNLINK", flags1, &SD1);
|
||||
@@ -192,7 +192,7 @@ void serial_link_update(void) {
|
||||
|
||||
systime_t current_time = chVTGetSystemTimeX();
|
||||
systime_t delta = current_time - last_update;
|
||||
if (changed || delta > US2ST(5000)) {
|
||||
if (changed || delta > TIME_US2I(5000)) {
|
||||
last_update = current_time;
|
||||
last_matrix = matrix;
|
||||
matrix_object_t* m = begin_write_keyboard_matrix();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/chconf.h
|
||||
* @file rt/templates/chconf.h
|
||||
* @brief Configuration file template.
|
||||
* @details A copy of this file must be placed in each project directory, it
|
||||
* contains the application specific kernel settings.
|
||||
@@ -29,6 +29,7 @@
|
||||
# define CHCONF_H
|
||||
|
||||
# define _CHIBIOS_RT_CONF_
|
||||
# define _CHIBIOS_RT_CONF_VER_6_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
@@ -41,14 +42,34 @@
|
||||
* @brief System time counter resolution.
|
||||
* @note Allowed values are 16 or 32 bits.
|
||||
*/
|
||||
# if !defined(CH_CFG_ST_RESOLUTION)
|
||||
# define CH_CFG_ST_RESOLUTION 32
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief System tick frequency.
|
||||
* @details Frequency of the system timer that drives the system ticks. This
|
||||
* setting also defines the system tick time unit.
|
||||
*/
|
||||
# if !defined(CH_CFG_ST_FREQUENCY)
|
||||
# define CH_CFG_ST_FREQUENCY 100000
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Time intervals data size.
|
||||
* @note Allowed values are 16, 32 or 64 bits.
|
||||
*/
|
||||
# if !defined(CH_CFG_INTERVALS_SIZE)
|
||||
# define CH_CFG_INTERVALS_SIZE 32
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Time types data size.
|
||||
* @note Allowed values are 16 or 32 bits.
|
||||
*/
|
||||
# if !defined(CH_CFG_TIME_TYPES_SIZE)
|
||||
# define CH_CFG_TIME_TYPES_SIZE 32
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Time delta constant for the tick-less mode.
|
||||
@@ -58,7 +79,10 @@
|
||||
* The value one is not valid, timeouts are rounded up to
|
||||
* this value.
|
||||
*/
|
||||
# define CH_CFG_ST_TIMEDELTA 0
|
||||
|
||||
# if !defined(CH_CFG_ST_TIMEDELTA)
|
||||
# define CH_CFG_ST_TIMEDELTA 2
|
||||
# endif
|
||||
|
||||
/** @} */
|
||||
|
||||
@@ -81,7 +105,9 @@
|
||||
* @note The round robin preemption is not supported in tickless mode and
|
||||
* must be set to zero in that case.
|
||||
*/
|
||||
# if !defined(CH_CFG_TIME_QUANTUM)
|
||||
# define CH_CFG_TIME_QUANTUM 0
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Managed RAM size.
|
||||
@@ -94,7 +120,9 @@
|
||||
* provide the @p __heap_base__ and @p __heap_end__ symbols.
|
||||
* @note Requires @p CH_CFG_USE_MEMCORE.
|
||||
*/
|
||||
# if !defined(CH_CFG_MEMCORE_SIZE)
|
||||
# define CH_CFG_MEMCORE_SIZE 0
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Idle thread automatic spawn suppression.
|
||||
@@ -103,7 +131,9 @@
|
||||
* function becomes the idle thread and must implement an
|
||||
* infinite loop.
|
||||
*/
|
||||
# if !defined(CH_CFG_NO_IDLE_THREAD)
|
||||
# define CH_CFG_NO_IDLE_THREAD FALSE
|
||||
# endif
|
||||
|
||||
/** @} */
|
||||
|
||||
@@ -122,7 +152,9 @@
|
||||
* @note This is not related to the compiler optimization options.
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_OPTIMIZE_SPEED)
|
||||
# define CH_CFG_OPTIMIZE_SPEED TRUE
|
||||
# endif
|
||||
|
||||
/** @} */
|
||||
|
||||
@@ -140,7 +172,9 @@
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_TM)
|
||||
# define CH_CFG_USE_TM TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Threads registry APIs.
|
||||
@@ -148,7 +182,9 @@
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_REGISTRY)
|
||||
# define CH_CFG_USE_REGISTRY TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Threads synchronization APIs.
|
||||
@@ -157,7 +193,9 @@
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_WAITEXIT)
|
||||
# define CH_CFG_USE_WAITEXIT TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Semaphores APIs.
|
||||
@@ -165,7 +203,9 @@
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_SEMAPHORES)
|
||||
# define CH_CFG_USE_SEMAPHORES TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Semaphores queuing mode.
|
||||
@@ -176,7 +216,9 @@
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY)
|
||||
# define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Mutexes APIs.
|
||||
@@ -184,7 +226,9 @@
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_MUTEXES)
|
||||
# define CH_CFG_USE_MUTEXES TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables recursive behavior on mutexes.
|
||||
@@ -194,7 +238,9 @@
|
||||
* @note The default is @p FALSE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_MUTEXES_RECURSIVE)
|
||||
# define CH_CFG_USE_MUTEXES_RECURSIVE FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs.
|
||||
@@ -204,7 +250,9 @@
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_CONDVARS)
|
||||
# define CH_CFG_USE_CONDVARS TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs with timeout.
|
||||
@@ -214,7 +262,9 @@
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_CONDVARS.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_CONDVARS_TIMEOUT)
|
||||
# define CH_CFG_USE_CONDVARS_TIMEOUT TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs.
|
||||
@@ -222,7 +272,9 @@
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_EVENTS)
|
||||
# define CH_CFG_USE_EVENTS TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs with timeout.
|
||||
@@ -232,7 +284,9 @@
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_EVENTS.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_EVENTS_TIMEOUT)
|
||||
# define CH_CFG_USE_EVENTS_TIMEOUT TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages APIs.
|
||||
@@ -241,7 +295,9 @@
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_MESSAGES)
|
||||
# define CH_CFG_USE_MESSAGES TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages queuing mode.
|
||||
@@ -252,7 +308,9 @@
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_MESSAGES.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_MESSAGES_PRIORITY)
|
||||
# define CH_CFG_USE_MESSAGES_PRIORITY TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Mailboxes APIs.
|
||||
@@ -262,7 +320,9 @@
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_MAILBOXES)
|
||||
# define CH_CFG_USE_MAILBOXES TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Core Memory Manager APIs.
|
||||
@@ -271,7 +331,9 @@
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_MEMCORE)
|
||||
# define CH_CFG_USE_MEMCORE TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Heap Allocator APIs.
|
||||
@@ -283,7 +345,9 @@
|
||||
* @p CH_CFG_USE_SEMAPHORES.
|
||||
* @note Mutexes are recommended.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_HEAP)
|
||||
# define CH_CFG_USE_HEAP TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Memory Pools Allocator APIs.
|
||||
@@ -292,7 +356,31 @@
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_MEMPOOLS)
|
||||
# define CH_CFG_USE_MEMPOOLS TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Objects FIFOs APIs.
|
||||
* @details If enabled then the objects FIFOs APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_OBJ_FIFOS)
|
||||
# define CH_CFG_USE_OBJ_FIFOS TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Pipes APIs.
|
||||
* @details If enabled then the pipes APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_PIPES)
|
||||
# define CH_CFG_USE_PIPES TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Dynamic Threads APIs.
|
||||
@@ -303,7 +391,80 @@
|
||||
* @note Requires @p CH_CFG_USE_WAITEXIT.
|
||||
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_DYNAMIC)
|
||||
# define CH_CFG_USE_DYNAMIC TRUE
|
||||
# endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Objects factory options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Objects Factory APIs.
|
||||
* @details If enabled then the objects factory APIs are included in the
|
||||
* kernel.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
# if !defined(CH_CFG_USE_FACTORY)
|
||||
# define CH_CFG_USE_FACTORY TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Maximum length for object names.
|
||||
* @details If the specified length is zero then the name is stored by
|
||||
* pointer but this could have unintended side effects.
|
||||
*/
|
||||
# if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH)
|
||||
# define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the registry of generic objects.
|
||||
*/
|
||||
# if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY)
|
||||
# define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for generic buffers.
|
||||
*/
|
||||
# if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS)
|
||||
# define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for semaphores.
|
||||
*/
|
||||
# if !defined(CH_CFG_FACTORY_SEMAPHORES)
|
||||
# define CH_CFG_FACTORY_SEMAPHORES TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for mailboxes.
|
||||
*/
|
||||
# if !defined(CH_CFG_FACTORY_MAILBOXES)
|
||||
# define CH_CFG_FACTORY_MAILBOXES TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for objects FIFOs.
|
||||
*/
|
||||
# if !defined(CH_CFG_FACTORY_OBJ_FIFOS)
|
||||
# define CH_CFG_FACTORY_OBJ_FIFOS TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for Pipes.
|
||||
*/
|
||||
# if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__)
|
||||
# define CH_CFG_FACTORY_PIPES TRUE
|
||||
# endif
|
||||
|
||||
/** @} */
|
||||
|
||||
@@ -319,7 +480,9 @@
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
# if !defined(CH_DBG_STATISTICS)
|
||||
# define CH_DBG_STATISTICS FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, system state check.
|
||||
@@ -328,7 +491,9 @@
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
# if !defined(CH_DBG_SYSTEM_STATE_CHECK)
|
||||
# define CH_DBG_SYSTEM_STATE_CHECK FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, parameters checks.
|
||||
@@ -337,7 +502,9 @@
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
# if !defined(CH_DBG_ENABLE_CHECKS)
|
||||
# define CH_DBG_ENABLE_CHECKS FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, consistency checks.
|
||||
@@ -347,7 +514,9 @@
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
# if !defined(CH_DBG_ENABLE_ASSERTS)
|
||||
# define CH_DBG_ENABLE_ASSERTS FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, trace buffer.
|
||||
@@ -355,14 +524,18 @@
|
||||
*
|
||||
* @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
# if !defined(CH_DBG_TRACE_MASK)
|
||||
# define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Trace buffer entries.
|
||||
* @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is
|
||||
* different from @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
# if !defined(CH_DBG_TRACE_BUFFER_SIZE)
|
||||
# define CH_DBG_TRACE_BUFFER_SIZE 128
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, stack checks.
|
||||
@@ -374,7 +547,9 @@
|
||||
* @note The default failure mode is to halt the system with the global
|
||||
* @p panic_msg variable set to @p NULL.
|
||||
*/
|
||||
# if !defined(CH_DBG_ENABLE_STACK_CHECK)
|
||||
# define CH_DBG_ENABLE_STACK_CHECK TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, stacks initialization.
|
||||
@@ -384,7 +559,9 @@
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
# if !defined(CH_DBG_FILL_THREADS)
|
||||
# define CH_DBG_FILL_THREADS FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, threads profiling.
|
||||
@@ -395,7 +572,9 @@
|
||||
* @note This debug option is not currently compatible with the
|
||||
* tickless mode.
|
||||
*/
|
||||
# if !defined(CH_DBG_THREADS_PROFILING)
|
||||
# define CH_DBG_THREADS_PROFILING FALSE
|
||||
# endif
|
||||
|
||||
/** @} */
|
||||
|
||||
@@ -406,6 +585,21 @@
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System structure extension.
|
||||
* @details User fields added to the end of the @p ch_system_t structure.
|
||||
*/
|
||||
# define CH_CFG_SYSTEM_EXTRA_FIELDS /* Add threads custom fields here.*/
|
||||
|
||||
/**
|
||||
* @brief System initialization hook.
|
||||
* @details User initialization code added to the @p chSysInit() function
|
||||
* just before interrupts are enabled globally.
|
||||
*/
|
||||
# define CH_CFG_SYSTEM_INIT_HOOK() \
|
||||
{ /* Add threads initialization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
* @details User fields added to the end of the @p thread_t structure.
|
||||
@@ -414,9 +608,9 @@
|
||||
|
||||
/**
|
||||
* @brief Threads initialization hook.
|
||||
* @details User initialization code added to the @p chThdInit() API.
|
||||
* @details User initialization code added to the @p _thread_init() function.
|
||||
*
|
||||
* @note It is invoked from within @p chThdInit() and implicitly from all
|
||||
* @note It is invoked from within @p _thread_init() and implicitly from all
|
||||
* the threads creation APIs.
|
||||
*/
|
||||
# define CH_CFG_THREAD_INIT_HOOK(tp) \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
@@ -28,6 +28,9 @@
|
||||
#ifndef HALCONF_H
|
||||
# define HALCONF_H
|
||||
|
||||
# define _CHIBIOS_HAL_CONF_
|
||||
# define _CHIBIOS_HAL_CONF_VER_7_0_
|
||||
|
||||
# include "mcuconf.h"
|
||||
|
||||
/**
|
||||
@@ -51,6 +54,13 @@
|
||||
# define HAL_USE_CAN FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the cryptographic subsystem.
|
||||
*/
|
||||
# if !defined(HAL_USE_CRY) || defined(__DOXYGEN__)
|
||||
# define HAL_USE_CRY FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the DAC subsystem.
|
||||
*/
|
||||
@@ -58,13 +68,6 @@
|
||||
# define HAL_USE_DAC TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the EXT subsystem.
|
||||
*/
|
||||
# if !defined(HAL_USE_EXT) || defined(__DOXYGEN__)
|
||||
# define HAL_USE_EXT FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the GPT subsystem.
|
||||
*/
|
||||
@@ -114,13 +117,6 @@
|
||||
# define HAL_USE_PWM TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the QSPI subsystem.
|
||||
*/
|
||||
# if !defined(HAL_USE_QSPI) || defined(__DOXYGEN__)
|
||||
# define HAL_USE_QSPI FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the RTC subsystem.
|
||||
*/
|
||||
@@ -149,6 +145,13 @@
|
||||
# define HAL_USE_SERIAL_USB TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SIO subsystem.
|
||||
*/
|
||||
# if !defined(HAL_USE_SIO) || defined(__DOXYGEN__)
|
||||
# define HAL_USE_SIO FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SPI subsystem.
|
||||
*/
|
||||
@@ -156,6 +159,13 @@
|
||||
# define HAL_USE_SPI FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the TRNG subsystem.
|
||||
*/
|
||||
# if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__)
|
||||
# define HAL_USE_TRNG FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the UART subsystem.
|
||||
*/
|
||||
@@ -177,6 +187,33 @@
|
||||
# define HAL_USE_WDG FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the WSPI subsystem.
|
||||
*/
|
||||
# if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__)
|
||||
# define HAL_USE_WSPI FALSE
|
||||
# endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* PAL driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
# if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__)
|
||||
# define PAL_USE_CALLBACKS FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
# if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__)
|
||||
# define PAL_USE_WAIT FALSE
|
||||
# endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* ADC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
@@ -208,6 +245,55 @@
|
||||
# define CAN_USE_SLEEP_MODE TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enforces the driver to use direct callbacks rather than OSAL events.
|
||||
*/
|
||||
# if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__)
|
||||
# define CAN_ENFORCE_USE_CALLBACKS FALSE
|
||||
# endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* CRY driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the SW fall-back of the cryptographic driver.
|
||||
* @details When enabled, this option, activates a fall-back software
|
||||
* implementation for algorithms not supported by the underlying
|
||||
* hardware.
|
||||
* @note Fall-back implementations may not be present for all algorithms.
|
||||
*/
|
||||
# if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__)
|
||||
# define HAL_CRY_USE_FALLBACK FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Makes the driver forcibly use the fall-back implementations.
|
||||
*/
|
||||
# if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__)
|
||||
# define HAL_CRY_ENFORCE_FALLBACK FALSE
|
||||
# endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* DAC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
# if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__)
|
||||
# define DAC_USE_WAIT TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
# if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
# define DAC_USE_MUTUAL_EXCLUSION TRUE
|
||||
# endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* I2C driver related settings. */
|
||||
/*===========================================================================*/
|
||||
@@ -224,7 +310,7 @@
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables an event sources for incoming packets.
|
||||
* @brief Enables the zero-copy API.
|
||||
*/
|
||||
# if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
|
||||
# define MAC_USE_ZERO_COPY FALSE
|
||||
@@ -284,6 +370,20 @@
|
||||
# define SDC_NICE_WAITING TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief OCR initialization constant for V20 cards.
|
||||
*/
|
||||
# if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__)
|
||||
# define SDC_INIT_OCR_V20 0x50FF8000U
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief OCR initialization constant for non-V20 cards.
|
||||
*/
|
||||
# if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__)
|
||||
# define SDC_INIT_OCR 0x80100000U
|
||||
# endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SERIAL driver related settings. */
|
||||
/*===========================================================================*/
|
||||
@@ -343,6 +443,14 @@
|
||||
# define SPI_USE_WAIT TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables circular transfers APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
# if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__)
|
||||
# define SPI_USE_CIRCULAR FALSE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
@@ -351,6 +459,14 @@
|
||||
# define SPI_USE_MUTUAL_EXCLUSION TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Handling method for SPI CS line.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
# if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__)
|
||||
# define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
# endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* UART driver related settings. */
|
||||
/*===========================================================================*/
|
||||
@@ -383,6 +499,26 @@
|
||||
# define USB_USE_WAIT TRUE
|
||||
# endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* WSPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
# if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||
# define WSPI_USE_WAIT TRUE
|
||||
# endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
# if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
# define WSPI_USE_MUTUAL_EXCLUSION TRUE
|
||||
# endif
|
||||
|
||||
#endif /* HALCONF_H */
|
||||
|
||||
/** @} */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
@@ -32,6 +32,7 @@
|
||||
*/
|
||||
|
||||
#define STM32F3xx_MCUCONF
|
||||
#define STM32F303_MCUCONF
|
||||
|
||||
/*
|
||||
* HAL driver system settings.
|
||||
@@ -66,9 +67,28 @@
|
||||
#define STM32_USB_CLOCK_REQUIRED TRUE
|
||||
#define STM32_USBPRE STM32_USBPRE_DIV1P5
|
||||
|
||||
#undef STM32_HSE_BYPASS
|
||||
// #error "oh no"
|
||||
// #endif
|
||||
/*
|
||||
* IRQ system settings.
|
||||
*/
|
||||
#define STM32_IRQ_EXTI0_PRIORITY 6
|
||||
#define STM32_IRQ_EXTI1_PRIORITY 6
|
||||
#define STM32_IRQ_EXTI2_PRIORITY 6
|
||||
#define STM32_IRQ_EXTI3_PRIORITY 6
|
||||
#define STM32_IRQ_EXTI4_PRIORITY 6
|
||||
#define STM32_IRQ_EXTI5_9_PRIORITY 6
|
||||
#define STM32_IRQ_EXTI10_15_PRIORITY 6
|
||||
#define STM32_IRQ_EXTI16_PRIORITY 6
|
||||
#define STM32_IRQ_EXTI17_PRIORITY 15
|
||||
#define STM32_IRQ_EXTI18_PRIORITY 6
|
||||
#define STM32_IRQ_EXTI19_PRIORITY 15
|
||||
#define STM32_IRQ_EXTI20_PRIORITY 15
|
||||
#define STM32_IRQ_EXTI21_22_29_PRIORITY 6
|
||||
#define STM32_IRQ_EXTI30_32_PRIORITY 6
|
||||
#define STM32_IRQ_EXTI33_PRIORITY 6
|
||||
#define STM32_IRQ_TIM1_BRK_TIM15_PRIORITY 7
|
||||
#define STM32_IRQ_TIM1_UP_TIM16_PRIORITY 7
|
||||
#define STM32_IRQ_TIM1_TRGCO_TIM17_PRIORITY 7
|
||||
#define STM32_IRQ_TIM1_CC_PRIORITY 7
|
||||
|
||||
/*
|
||||
* ADC driver system settings.
|
||||
@@ -114,25 +134,6 @@
|
||||
#define STM32_DAC_DAC1_CH1_DMA_PRIORITY 2
|
||||
#define STM32_DAC_DAC1_CH2_DMA_PRIORITY 2
|
||||
|
||||
/*
|
||||
* EXT driver system settings.
|
||||
*/
|
||||
#define STM32_EXT_EXTI0_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI1_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI2_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI3_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI4_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI5_9_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI10_15_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI16_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI17_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI18_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI19_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI20_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI21_22_29_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI30_32_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI33_IRQ_PRIORITY 6
|
||||
|
||||
/*
|
||||
* GPT driver system settings.
|
||||
*/
|
||||
@@ -143,6 +144,9 @@
|
||||
#define STM32_GPT_USE_TIM6 TRUE
|
||||
#define STM32_GPT_USE_TIM7 TRUE
|
||||
#define STM32_GPT_USE_TIM8 TRUE
|
||||
#define STM32_GPT_USE_TIM15 FALSE
|
||||
#define STM32_GPT_USE_TIM16 FALSE
|
||||
#define STM32_GPT_USE_TIM17 FALSE
|
||||
#define STM32_GPT_TIM1_IRQ_PRIORITY 7
|
||||
#define STM32_GPT_TIM2_IRQ_PRIORITY 7
|
||||
#define STM32_GPT_TIM3_IRQ_PRIORITY 7
|
||||
@@ -172,6 +176,7 @@
|
||||
#define STM32_ICU_USE_TIM3 FALSE
|
||||
#define STM32_ICU_USE_TIM4 FALSE
|
||||
#define STM32_ICU_USE_TIM8 FALSE
|
||||
#define STM32_ICU_USE_TIM15 FALSE
|
||||
#define STM32_ICU_TIM1_IRQ_PRIORITY 7
|
||||
#define STM32_ICU_TIM2_IRQ_PRIORITY 7
|
||||
#define STM32_ICU_TIM3_IRQ_PRIORITY 7
|
||||
@@ -183,16 +188,27 @@
|
||||
*/
|
||||
#define STM32_PWM_USE_ADVANCED FALSE
|
||||
#define STM32_PWM_USE_TIM1 FALSE
|
||||
#define STM32_PWM_USE_TIM2 TRUE
|
||||
#define STM32_PWM_USE_TIM2 FALSE
|
||||
#define STM32_PWM_USE_TIM3 TRUE
|
||||
#define STM32_PWM_USE_TIM4 TRUE
|
||||
#define STM32_PWM_USE_TIM8 FALSE
|
||||
#define STM32_PWM_USE_TIM15 FALSE
|
||||
#define STM32_PWM_USE_TIM16 FALSE
|
||||
#define STM32_PWM_USE_TIM17 FALSE
|
||||
#define STM32_PWM_TIM1_IRQ_PRIORITY 7
|
||||
#define STM32_PWM_TIM2_IRQ_PRIORITY 7
|
||||
#define STM32_PWM_TIM3_IRQ_PRIORITY 7
|
||||
#define STM32_PWM_TIM4_IRQ_PRIORITY 7
|
||||
#define STM32_PWM_TIM8_IRQ_PRIORITY 7
|
||||
|
||||
/*
|
||||
* RTC driver system settings.
|
||||
*/
|
||||
#define STM32_RTC_PRESA_VALUE 32
|
||||
#define STM32_RTC_PRESS_VALUE 1024
|
||||
#define STM32_RTC_CR_INIT 0
|
||||
#define STM32_RTC_TAMPCR_INIT 0
|
||||
|
||||
/*
|
||||
* SERIAL driver system settings.
|
||||
*/
|
||||
|
||||
@@ -22,295 +22,336 @@
|
||||
#ifndef COMMON_GFXCONF_H
|
||||
#define COMMON_GFXCONF_H
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GFX - Compatibility options //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//#define GFX_COMPAT_V2 GFXON
|
||||
//#define GFX_COMPAT_OLDCOLORS GFXON
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GOS - One of these must be defined, preferably in your Makefile //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//#define GFX_USE_OS_CHIBIOS TRUE
|
||||
//#define GFX_USE_OS_FREERTOS FALSE
|
||||
// #define GFX_FREERTOS_USE_TRACE FALSE
|
||||
//#define GFX_USE_OS_WIN32 FALSE
|
||||
//#define GFX_USE_OS_LINUX FALSE
|
||||
//#define GFX_USE_OS_OSX FALSE
|
||||
//#define GFX_USE_OS_ECOS FALSE
|
||||
//#define GFX_USE_OS_RAWRTOS FALSE
|
||||
//#define GFX_USE_OS_ARDUINO FALSE
|
||||
//#define GFX_USE_OS_KEIL FALSE
|
||||
//#define GFX_USE_OS_CMSIS FALSE
|
||||
//#define GFX_USE_OS_RAW32 FALSE
|
||||
//#define GFX_USE_OS_CHIBIOS GFXOFF
|
||||
//#define GFX_USE_OS_FREERTOS GFXOFF
|
||||
// #define GFX_FREERTOS_USE_TRACE GFXOFF
|
||||
//#define GFX_USE_OS_WIN32 GFXOFF
|
||||
//#define GFX_USE_OS_LINUX GFXOFF
|
||||
//#define GFX_USE_OS_OSX GFXOFF
|
||||
//#define GFX_USE_OS_ECOS GFXOFF
|
||||
//#define GFX_USE_OS_RAWRTOS GFXOFF
|
||||
//#define GFX_USE_OS_ARDUINO GFXOFF
|
||||
//#define GFX_USE_OS_KEIL GFXOFF
|
||||
//#define GFX_USE_OS_RTX5 GFXOFF
|
||||
//#define GFX_USE_OS_CMSIS GFXOFF
|
||||
//#define GFX_USE_OS_CMSIS2 GFXOFF
|
||||
//#define GFX_USE_OS_RAW32 GFXOFF
|
||||
//#define GFX_USE_OS_ZEPHYR GFXOFF
|
||||
//#define GFX_USE_OS_NIOS GFXOFF
|
||||
//#define GFX_USE_OS_QT GFXOFF
|
||||
// #define INTERRUPTS_OFF() optional_code
|
||||
// #define INTERRUPTS_ON() optional_code
|
||||
// These are not defined by default for some reason
|
||||
#define GOS_NEED_X_THREADS FALSE
|
||||
#define GOS_NEED_X_HEAP FALSE
|
||||
|
||||
// Options that (should where relevant) apply to all operating systems
|
||||
#define GFX_NO_INLINE FALSE
|
||||
#define GFX_NO_INLINE GFXON
|
||||
// #define GFX_COMPILER GFX_COMPILER_UNKNOWN
|
||||
// #define GFX_SHOW_COMPILER GFXOFF
|
||||
// #define GFX_CPU GFX_CPU_UNKNOWN
|
||||
// #define GFX_CPU_NO_ALIGNMENT_FAULTS GFXOFF
|
||||
// #define GFX_CPU_ENDIAN GFX_CPU_ENDIAN_UNKNOWN
|
||||
// #define GFX_OS_HEAP_SIZE 0
|
||||
// #define GFX_OS_NO_INIT FALSE
|
||||
// #define GFX_OS_INIT_NO_WARNING FALSE
|
||||
// #define GFX_OS_NO_INIT GFXOFF
|
||||
// #define GFX_OS_INIT_NO_WARNING GFXOFF
|
||||
// #define GFX_OS_PRE_INIT_FUNCTION myHardwareInitRoutine
|
||||
// #define GFX_OS_EXTRA_INIT_FUNCTION myOSInitRoutine
|
||||
// #define GFX_OS_EXTRA_DEINIT_FUNCTION myOSDeInitRoutine
|
||||
// #define GFX_OS_CALL_UGFXMAIN GFXOFF
|
||||
// #define GFX_OS_UGFXMAIN_STACKSIZE 0
|
||||
// #define GFX_EMULATE_MALLOC GFXOFF
|
||||
// #define GFX_MEM_LT64K GFXOFF
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GDISP //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GDISP TRUE
|
||||
#define GFX_USE_GDISP GFXON
|
||||
|
||||
//#define GDISP_NEED_AUTOFLUSH FALSE
|
||||
//#define GDISP_NEED_TIMERFLUSH FALSE
|
||||
//#define GDISP_NEED_VALIDATION TRUE
|
||||
//#define GDISP_NEED_CLIP TRUE
|
||||
#define GDISP_NEED_CIRCLE TRUE
|
||||
#define GDISP_NEED_ELLIPSE TRUE
|
||||
#define GDISP_NEED_ARC TRUE
|
||||
#define GDISP_NEED_ARCSECTORS TRUE
|
||||
#define GDISP_NEED_CONVEX_POLYGON TRUE
|
||||
//#define GDISP_NEED_SCROLL FALSE
|
||||
#define GDISP_NEED_PIXELREAD TRUE
|
||||
#define GDISP_NEED_CONTROL TRUE
|
||||
//#define GDISP_NEED_QUERY FALSE
|
||||
//#define GDISP_NEED_MULTITHREAD FALSE
|
||||
//#define GDISP_NEED_STREAMING FALSE
|
||||
#define GDISP_NEED_TEXT TRUE
|
||||
// #define GDISP_NEED_TEXT_WORDWRAP FALSE
|
||||
// #define GDISP_NEED_ANTIALIAS FALSE
|
||||
// #define GDISP_NEED_UTF8 FALSE
|
||||
#define GDISP_NEED_TEXT_KERNING TRUE
|
||||
// #define GDISP_INCLUDE_FONT_UI1 FALSE
|
||||
// #define GDISP_INCLUDE_FONT_UI2 FALSE // The smallest preferred font.
|
||||
// #define GDISP_INCLUDE_FONT_LARGENUMBERS FALSE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS10 FALSE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS12 FALSE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS16 FALSE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS20 FALSE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS24 FALSE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS32 FALSE
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 TRUE
|
||||
// #define GDISP_INCLUDE_FONT_FIXED_10X20 FALSE
|
||||
// #define GDISP_INCLUDE_FONT_FIXED_7X14 FALSE
|
||||
#define GDISP_INCLUDE_FONT_FIXED_5X8 TRUE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA FALSE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA FALSE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS20_AA FALSE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA FALSE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA FALSE
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA FALSE
|
||||
// #define GDISP_INCLUDE_USER_FONTS FALSE
|
||||
//#define GDISP_NEED_AUTOFLUSH GFXOFF
|
||||
//#define GDISP_NEED_TIMERFLUSH GFXOFF
|
||||
//#define GDISP_NEED_VALIDATION GFXON
|
||||
//#define GDISP_NEED_CLIP GFXON
|
||||
#define GDISP_NEED_CIRCLE GFXON
|
||||
//#define GDISP_NEED_DUALCIRCLE GFXOFF
|
||||
#define GDISP_NEED_ELLIPSE GFXON
|
||||
#define GDISP_NEED_ARC GFXON
|
||||
#define GDISP_NEED_ARCSECTORS GFXON
|
||||
#define GDISP_NEED_CONVEX_POLYGON GFXON
|
||||
//#define GDISP_NEED_SCROLL GFXOFF
|
||||
#define GDISP_NEED_PIXELREAD GFXON
|
||||
#define GDISP_NEED_CONTROL GFXON
|
||||
//#define GDISP_NEED_QUERY GFXOFF
|
||||
//#define GDISP_NEED_MULTITHREAD GFXOFF
|
||||
//#define GDISP_NEED_STREAMING GFXOFF
|
||||
#define GDISP_NEED_TEXT GFXON
|
||||
// #define GDISP_NEED_TEXT_WORDWRAP GFXOFF
|
||||
// #define GDISP_NEED_TEXT_BOXPADLR 1
|
||||
// #define GDISP_NEED_TEXT_BOXPADTB 1
|
||||
// #define GDISP_NEED_ANTIALIAS GFXOFF
|
||||
// #define GDISP_NEED_UTF8 GFXOFF
|
||||
#define GDISP_NEED_TEXT_KERNING GFXON
|
||||
// #define GDISP_INCLUDE_FONT_UI1 GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_UI2 GFXOFF // The smallest preferred font.
|
||||
// #define GDISP_INCLUDE_FONT_LARGENUMBERS GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS10 GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS12 GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS16 GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS20 GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS24 GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS32 GFXOFF
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 GFXON
|
||||
// #define GDISP_INCLUDE_FONT_FIXED_10X20 GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_FIXED_7X14 GFXOFF
|
||||
#define GDISP_INCLUDE_FONT_FIXED_5X8 GFXON
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS20_AA GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA GFXOFF
|
||||
// #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA GFXOFF
|
||||
// #define GDISP_INCLUDE_USER_FONTS GFXOFF
|
||||
|
||||
//#define GDISP_NEED_IMAGE FALSE
|
||||
// #define GDISP_NEED_IMAGE_NATIVE FALSE
|
||||
// #define GDISP_NEED_IMAGE_GIF FALSE
|
||||
// #define GDISP_NEED_IMAGE_BMP FALSE
|
||||
// #define GDISP_NEED_IMAGE_BMP_1 FALSE
|
||||
// #define GDISP_NEED_IMAGE_BMP_4 FALSE
|
||||
// #define GDISP_NEED_IMAGE_BMP_4_RLE FALSE
|
||||
// #define GDISP_NEED_IMAGE_BMP_8 FALSE
|
||||
// #define GDISP_NEED_IMAGE_BMP_8_RLE FALSE
|
||||
// #define GDISP_NEED_IMAGE_BMP_16 FALSE
|
||||
// #define GDISP_NEED_IMAGE_BMP_24 FALSE
|
||||
// #define GDISP_NEED_IMAGE_BMP_32 FALSE
|
||||
// #define GDISP_NEED_IMAGE_JPG FALSE
|
||||
// #define GDISP_NEED_IMAGE_PNG FALSE
|
||||
// #define GDISP_NEED_IMAGE_ACCOUNTING FALSE
|
||||
#ifdef EMULATOR
|
||||
# define GDISP_NEED_PIXMAP TRUE
|
||||
#endif
|
||||
// #define GDISP_NEED_PIXMAP_IMAGE FALSE
|
||||
//#define GDISP_NEED_IMAGE GFXOFF
|
||||
// #define GDISP_NEED_IMAGE_NATIVE GFXOFF
|
||||
// #define GDISP_NEED_IMAGE_GIF GFXOFF
|
||||
// #define GDISP_IMAGE_GIF_BLIT_BUFFER_SIZE 32
|
||||
// #define GDISP_NEED_IMAGE_BMP GFXOFF
|
||||
// #define GDISP_NEED_IMAGE_BMP_1 GFXON
|
||||
// #define GDISP_NEED_IMAGE_BMP_4 GFXON
|
||||
// #define GDISP_NEED_IMAGE_BMP_4_RLE GFXON
|
||||
// #define GDISP_NEED_IMAGE_BMP_8 GFXON
|
||||
// #define GDISP_NEED_IMAGE_BMP_8_RLE GFXON
|
||||
// #define GDISP_NEED_IMAGE_BMP_16 GFXON
|
||||
// #define GDISP_NEED_IMAGE_BMP_24 GFXON
|
||||
// #define GDISP_NEED_IMAGE_BMP_32 GFXON
|
||||
// #define GDISP_IMAGE_BMP_BLIT_BUFFER_SIZE 32
|
||||
// #define GDISP_NEED_IMAGE_JPG GFXOFF
|
||||
// #define GDISP_NEED_IMAGE_PNG GFXOFF
|
||||
// #define GDISP_NEED_IMAGE_PNG_INTERLACED GFXOFF
|
||||
// #define GDISP_NEED_IMAGE_PNG_TRANSPARENCY GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_BACKGROUND GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_ALPHACLIFF 32
|
||||
// #define GDISP_NEED_IMAGE_PNG_PALETTE_124 GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_PALETTE_8 GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_GRAYSCALE_124 GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_GRAYSCALE_8 GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_GRAYSCALE_16 GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_GRAYALPHA_8 GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_GRAYALPHA_16 GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_RGB_8 GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_RGB_16 GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_RGBALPHA_8 GFXON
|
||||
// #define GDISP_NEED_IMAGE_PNG_RGBALPHA_16 GFXON
|
||||
// #define GDISP_IMAGE_PNG_BLIT_BUFFER_SIZE 32
|
||||
// #define GDISP_IMAGE_PNG_FILE_BUFFER_SIZE 8
|
||||
// #define GDISP_IMAGE_PNG_Z_BUFFER_SIZE 32768
|
||||
// #define GDISP_NEED_IMAGE_ACCOUNTING GFXOFF
|
||||
|
||||
//#define GDISP_DEFAULT_ORIENTATION GDISP_ROTATE_LANDSCAPE // If not defined the native hardware orientation is used.
|
||||
//#define GDISP_NEED_PIXMAP GFXOFF
|
||||
// #define GDISP_NEED_PIXMAP_IMAGE GFXOFF
|
||||
|
||||
//#define GDISP_DEFAULT_ORIENTATION gOrientationLandscape // If not defined the native hardware orientation is used.
|
||||
//#define GDISP_LINEBUF_SIZE 128
|
||||
//#define GDISP_STARTUP_COLOR Black
|
||||
#define GDISP_NEED_STARTUP_LOGO FALSE
|
||||
//#define GDISP_STARTUP_COLOR GFX_BLACK
|
||||
#define GDISP_NEED_STARTUP_LOGO GFXOFF
|
||||
|
||||
//#define GDISP_TOTAL_DISPLAYS 2
|
||||
//#define GDISP_TOTAL_DISPLAYS 1
|
||||
|
||||
//#define GDISP_DRIVER_LIST GDISPVMT_Win32, GDISPVMT_Win32
|
||||
#ifdef GDISP_DRIVER_LIST
|
||||
// For code and speed optimization define as TRUE or FALSE if all controllers have the same capability
|
||||
# define GDISP_HARDWARE_STREAM_WRITE FALSE
|
||||
# define GDISP_HARDWARE_STREAM_READ FALSE
|
||||
# define GDISP_HARDWARE_STREAM_POS FALSE
|
||||
# define GDISP_HARDWARE_DRAWPIXEL TRUE
|
||||
# define GDISP_HARDWARE_CLEARS FALSE
|
||||
# define GDISP_HARDWARE_FILLS FALSE
|
||||
//#define GDISP_HARDWARE_BITFILLS FALSE
|
||||
# define GDISP_HARDWARE_SCROLL FALSE
|
||||
# define GDISP_HARDWARE_PIXELREAD TRUE
|
||||
# define GDISP_HARDWARE_CONTROL TRUE
|
||||
# define GDISP_HARDWARE_QUERY FALSE
|
||||
# define GDISP_HARDWARE_CLIP FALSE
|
||||
// // For code and speed optimization define as GFXON or GFXOFF if all controllers have the same capability
|
||||
# define GDISP_HARDWARE_STREAM_WRITE GFXOFF
|
||||
# define GDISP_HARDWARE_STREAM_READ GFXOFF
|
||||
# define GDISP_HARDWARE_STREAM_POS GFXOFF
|
||||
# define GDISP_HARDWARE_DRAWPIXEL GFXON
|
||||
# define GDISP_HARDWARE_CLEARS GFXOFF
|
||||
# define GDISP_HARDWARE_FILLS GFXOFF
|
||||
//#define GDISP_HARDWARE_BITFILLS GFXOFF
|
||||
# define GDISP_HARDWARE_SCROLL GFXOFF
|
||||
# define GDISP_HARDWARE_PIXELREAD GFXON
|
||||
# define GDISP_HARDWARE_CONTROL GFXON
|
||||
# define GDISP_HARDWARE_QUERY GFXOFF
|
||||
# define GDISP_HARDWARE_CLIP GFXOFF
|
||||
|
||||
# define GDISP_PIXELFORMAT GDISP_PIXELFORMAT_RGB888
|
||||
#endif
|
||||
|
||||
// The custom format is not defined for some reason, so define it as error
|
||||
// so we don't get compiler warnings
|
||||
#define GDISP_PIXELFORMAT_CUSTOM GDISP_PIXELFORMAT_ERROR
|
||||
|
||||
#define GDISP_USE_GFXNET FALSE
|
||||
#define GDISP_USE_GFXNET GFXOFF
|
||||
// #define GDISP_GFXNET_PORT 13001
|
||||
// #define GDISP_GFXNET_CUSTOM_LWIP_STARTUP FALSE
|
||||
// #define GDISP_DONT_WAIT_FOR_NET_DISPLAY FALSE
|
||||
// #define GDISP_GFXNET_UNSAFE_SOCKETS FALSE
|
||||
// #define GDISP_GFXNET_CUSTOM_LWIP_STARTUP GFXOFF
|
||||
// #define GDISP_DONT_WAIT_FOR_NET_DISPLAY GFXOFF
|
||||
// #define GDISP_GFXNET_UNSAFE_SOCKETS GFXOFF
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GWIN //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GWIN FALSE
|
||||
#define GFX_USE_GWIN GFXOFF
|
||||
|
||||
//#define GWIN_NEED_WINDOWMANAGER FALSE
|
||||
// #define GWIN_REDRAW_IMMEDIATE FALSE
|
||||
// #define GWIN_REDRAW_SINGLEOP FALSE
|
||||
// #define GWIN_NEED_FLASHING FALSE
|
||||
//#define GWIN_NEED_WINDOWMANAGER GFXOFF
|
||||
// #define GWIN_REDRAW_IMMEDIATE GFXOFF
|
||||
// #define GWIN_REDRAW_SINGLEOP GFXOFF
|
||||
// #define GWIN_NEED_FLASHING GFXOFF
|
||||
// #define GWIN_FLASHING_PERIOD 250
|
||||
|
||||
//#define GWIN_NEED_CONSOLE FALSE
|
||||
// #define GWIN_CONSOLE_USE_HISTORY FALSE
|
||||
// #define GWIN_CONSOLE_HISTORY_AVERAGING FALSE
|
||||
// #define GWIN_CONSOLE_HISTORY_ATCREATE FALSE
|
||||
// #define GWIN_CONSOLE_ESCSEQ FALSE
|
||||
// #define GWIN_CONSOLE_USE_BASESTREAM FALSE
|
||||
// #define GWIN_CONSOLE_USE_FLOAT FALSE
|
||||
//#define GWIN_NEED_GRAPH FALSE
|
||||
//#define GWIN_NEED_GL3D FALSE
|
||||
//#define GWIN_NEED_CONSOLE GFXOFF
|
||||
// #define GWIN_CONSOLE_USE_HISTORY GFXOFF
|
||||
// #define GWIN_CONSOLE_HISTORY_AVERAGING GFXOFF
|
||||
// #define GWIN_CONSOLE_HISTORY_ATCREATE GFXOFF
|
||||
// #define GWIN_CONSOLE_ESCSEQ GFXOFF
|
||||
// #define GWIN_CONSOLE_USE_BASESTREAM GFXOFF
|
||||
// #define GWIN_CONSOLE_USE_FLOAT GFXOFF
|
||||
//#define GWIN_NEED_GRAPH GFXOFF
|
||||
//#define GWIN_NEED_GL3D GFXOFF
|
||||
|
||||
//#define GWIN_NEED_WIDGET FALSE
|
||||
//#define GWIN_NEED_WIDGET GFXOFF
|
||||
//#define GWIN_FOCUS_HIGHLIGHT_WIDTH 1
|
||||
// #define GWIN_NEED_LABEL FALSE
|
||||
// #define GWIN_LABEL_ATTRIBUTE FALSE
|
||||
// #define GWIN_NEED_BUTTON FALSE
|
||||
// #define GWIN_BUTTON_LAZY_RELEASE FALSE
|
||||
// #define GWIN_NEED_SLIDER FALSE
|
||||
// #define GWIN_SLIDER_NOSNAP FALSE
|
||||
// #define GWIN_NEED_LABEL GFXOFF
|
||||
// #define GWIN_LABEL_ATTRIBUTE GFXOFF
|
||||
// #define GWIN_NEED_BUTTON GFXOFF
|
||||
// #define GWIN_BUTTON_LAZY_RELEASE GFXOFF
|
||||
// #define GWIN_NEED_SLIDER GFXOFF
|
||||
// #define GWIN_SLIDER_NOSNAP GFXOFF
|
||||
// #define GWIN_SLIDER_DEAD_BAND 5
|
||||
// #define GWIN_SLIDER_TOGGLE_INC 20
|
||||
// #define GWIN_NEED_CHECKBOX FALSE
|
||||
// #define GWIN_NEED_IMAGE FALSE
|
||||
// #define GWIN_NEED_IMAGE_ANIMATION FALSE
|
||||
// #define GWIN_NEED_RADIO FALSE
|
||||
// #define GWIN_NEED_LIST FALSE
|
||||
// #define GWIN_NEED_LIST_IMAGES FALSE
|
||||
// #define GWIN_NEED_PROGRESSBAR FALSE
|
||||
// #define GWIN_PROGRESSBAR_AUTO FALSE
|
||||
// #define GWIN_NEED_KEYBOARD FALSE
|
||||
// #define GWIN_NEED_CHECKBOX GFXOFF
|
||||
// #define GWIN_NEED_IMAGE GFXOFF
|
||||
// #define GWIN_NEED_IMAGE_ANIMATION GFXOFF
|
||||
// #define GWIN_NEED_RADIO GFXOFF
|
||||
// #define GWIN_NEED_LIST GFXOFF
|
||||
// #define GWIN_NEED_LIST_IMAGES GFXOFF
|
||||
// #define GWIN_NEED_PROGRESSBAR GFXOFF
|
||||
// #define GWIN_PROGRESSBAR_AUTO GFXOFF
|
||||
// #define GWIN_NEED_KEYBOARD GFXOFF
|
||||
// #define GWIN_KEYBOARD_DEFAULT_LAYOUT VirtualKeyboard_English1
|
||||
// #define GWIN_NEED_KEYBOARD_ENGLISH1 TRUE
|
||||
// #define GWIN_NEED_TEXTEDIT FALSE
|
||||
// #define GWIN_FLAT_STYLING FALSE
|
||||
// #define GWIN_WIDGET_TAGS FALSE
|
||||
// #define GWIN_NEED_KEYBOARD_ENGLISH1 GFXON
|
||||
// #define GWIN_NEED_TEXTEDIT GFXOFF
|
||||
// #define GWIN_FLAT_STYLING GFXOFF
|
||||
// #define GWIN_WIDGET_TAGS GFXOFF
|
||||
|
||||
//#define GWIN_NEED_CONTAINERS FALSE
|
||||
// #define GWIN_NEED_CONTAINER FALSE
|
||||
// #define GWIN_NEED_FRAME FALSE
|
||||
// #define GWIN_NEED_TABSET FALSE
|
||||
//#define GWIN_NEED_CONTAINERS GFXOFF
|
||||
// #define GWIN_NEED_CONTAINER GFXOFF
|
||||
// #define GWIN_NEED_FRAME GFXOFF
|
||||
// #define GWIN_NEED_TABSET GFXOFF
|
||||
// #define GWIN_TABSET_TABHEIGHT 18
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GTRANS //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//#define GFX_USE_GTRANS GFXOFF
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GEVENT //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GEVENT TRUE
|
||||
#define GFX_USE_GEVENT GFXON
|
||||
|
||||
//#define GEVENT_ASSERT_NO_RESOURCE FALSE
|
||||
//#define GEVENT_ASSERT_NO_RESOURCE GFXOFF
|
||||
//#define GEVENT_MAXIMUM_SIZE 32
|
||||
//#define GEVENT_MAX_SOURCE_LISTENERS 32
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GTIMER //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GTIMER FALSE
|
||||
#define GFX_USE_GTIMER GFXOFF
|
||||
|
||||
//#define GTIMER_THREAD_PRIORITY HIGH_PRIORITY
|
||||
//#define GTIMER_THREAD_PRIORITY gThreadpriorityHigh
|
||||
//#define GTIMER_THREAD_WORKAREA_SIZE 2048
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GQUEUE //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GQUEUE FALSE
|
||||
#define GFX_USE_GQUEUE GFXOFF
|
||||
|
||||
//#define GQUEUE_NEED_ASYNC FALSE
|
||||
//#define GQUEUE_NEED_GSYNC FALSE
|
||||
//#define GQUEUE_NEED_FSYNC FALSE
|
||||
//#define GQUEUE_NEED_BUFFERS FALSE
|
||||
//#define GQUEUE_NEED_ASYNC GFXOFF
|
||||
//#define GQUEUE_NEED_GSYNC GFXOFF
|
||||
//#define GQUEUE_NEED_FSYNC GFXOFF
|
||||
//#define GQUEUE_NEED_BUFFERS GFXOFF
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GINPUT //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GINPUT FALSE
|
||||
#define GFX_USE_GINPUT GFXOFF
|
||||
|
||||
//#define GINPUT_NEED_MOUSE FALSE
|
||||
// #define GINPUT_TOUCH_STARTRAW FALSE
|
||||
// #define GINPUT_TOUCH_NOTOUCH FALSE
|
||||
// #define GINPUT_TOUCH_NOCALIBRATE FALSE
|
||||
// #define GINPUT_TOUCH_NOCALIBRATE_GUI FALSE
|
||||
//#define GINPUT_NEED_MOUSE GFXOFF
|
||||
// #define GINPUT_TOUCH_STARTRAW GFXOFF
|
||||
// #define GINPUT_TOUCH_NOTOUCH GFXOFF
|
||||
// #define GINPUT_TOUCH_NOCALIBRATE GFXOFF
|
||||
// #define GINPUT_TOUCH_NOCALIBRATE_GUI GFXOFF
|
||||
// #define GINPUT_MOUSE_POLL_PERIOD 25
|
||||
// #define GINPUT_MOUSE_CLICK_TIME 300
|
||||
// #define GINPUT_TOUCH_CXTCLICK_TIME 700
|
||||
// #define GINPUT_TOUCH_USER_CALIBRATION_LOAD FALSE
|
||||
// #define GINPUT_TOUCH_USER_CALIBRATION_SAVE FALSE
|
||||
// #define GINPUT_TOUCH_USER_CALIBRATION_LOAD GFXOFF
|
||||
// #define GINPUT_TOUCH_USER_CALIBRATION_SAVE GFXOFF
|
||||
// #define GMOUSE_DRIVER_LIST GMOUSEVMT_Win32, GMOUSEVMT_Win32
|
||||
//#define GINPUT_NEED_KEYBOARD FALSE
|
||||
// #define GINPUT_TOUCH_CALIBRATION_FONT1 "* Double"
|
||||
// #define GINPUT_TOUCH_CALIBRATION_FONT2 "* Narrow"
|
||||
// #define GINPUT_TOUCH_CALIBRATION_TITLE "Calibration"
|
||||
// #define GINPUT_TOUCH_CALIBRATION_ERROR "Calibration Failed!"
|
||||
//#define GINPUT_NEED_KEYBOARD GFXOFF
|
||||
// #define GINPUT_KEYBOARD_POLL_PERIOD 200
|
||||
// #define GKEYBOARD_DRIVER_LIST GKEYBOARDVMT_Win32, GKEYBOARDVMT_Win32
|
||||
// #define GKEYBOARD_LAYOUT_OFF FALSE
|
||||
// #define GKEYBOARD_LAYOUT_SCANCODE2_US FALSE
|
||||
//#define GINPUT_NEED_TOGGLE FALSE
|
||||
//#define GINPUT_NEED_DIAL FALSE
|
||||
// #define GKEYBOARD_LAYOUT_OFF GFXOFF
|
||||
// #define GKEYBOARD_LAYOUT_SCANCODE2_US GFXOFF
|
||||
//#define GINPUT_NEED_TOGGLE GFXOFF
|
||||
//#define GINPUT_NEED_DIAL GFXOFF
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GFILE //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GFILE FALSE
|
||||
#define GFX_USE_GFILE GFXOFF
|
||||
|
||||
//#define GFILE_NEED_PRINTG FALSE
|
||||
//#define GFILE_NEED_SCANG FALSE
|
||||
//#define GFILE_NEED_STRINGS FALSE
|
||||
//#define GFILE_NEED_FILELISTS FALSE
|
||||
//#define GFILE_NEED_STDIO FALSE
|
||||
//#define GFILE_NEED_NOAUTOMOUNT FALSE
|
||||
//#define GFILE_NEED_NOAUTOSYNC FALSE
|
||||
//#define GFILE_NEED_PRINTG GFXOFF
|
||||
//#define GFILE_NEED_SCANG GFXOFF
|
||||
//#define GFILE_NEED_STRINGS GFXOFF
|
||||
//#define GFILE_NEED_FILELISTS GFXOFF
|
||||
//#define GFILE_NEED_STDIO GFXOFF
|
||||
//#define GFILE_NEED_NOAUTOMOUNT GFXOFF
|
||||
//#define GFILE_NEED_NOAUTOSYNC GFXOFF
|
||||
|
||||
//#define GFILE_NEED_MEMFS FALSE
|
||||
//#define GFILE_NEED_ROMFS FALSE
|
||||
//#define GFILE_NEED_RAMFS FALSE
|
||||
//#define GFILE_NEED_FATFS FALSE
|
||||
//#define GFILE_NEED_NATIVEFS FALSE
|
||||
//#define GFILE_NEED_CHBIOSFS FALSE
|
||||
//#define GFILE_NEED_MEMFS GFXOFF
|
||||
//#define GFILE_NEED_ROMFS GFXOFF
|
||||
//#define GFILE_NEED_RAMFS GFXOFF
|
||||
//#define GFILE_NEED_FATFS GFXOFF
|
||||
//#define GFILE_NEED_NATIVEFS GFXOFF
|
||||
//#define GFILE_NEED_CHBIOSFS GFXOFF
|
||||
//#define GFILE_NEED_USERFS GFXOFF
|
||||
|
||||
//#define GFILE_ALLOW_FLOATS FALSE
|
||||
//#define GFILE_ALLOW_DEVICESPECIFIC FALSE
|
||||
//#define GFILE_ALLOW_FLOATS GFXOFF
|
||||
//#define GFILE_ALLOW_DEVICESPECIFIC GFXOFF
|
||||
//#define GFILE_MAX_GFILES 3
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GADC //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GADC FALSE
|
||||
|
||||
#define GFX_USE_GADC GFXOFF
|
||||
// #define GADC_MAX_LOWSPEED_DEVICES 4
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GAUDIO //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GAUDIO FALSE
|
||||
// There seems to be a bug in the ugfx code, the wrong define is used
|
||||
// So define it in order to avoid warnings
|
||||
#define GFX_USE_GAUDIN GFX_USE_GAUDIO
|
||||
// #define GAUDIO_NEED_PLAY FALSE
|
||||
// #define GAUDIO_NEED_RECORD FALSE
|
||||
#define GFX_USE_GAUDIO GFXOFF
|
||||
// #define GAUDIO_NEED_PLAY GFXOFF
|
||||
// #define GAUDIO_NEED_RECORD GFXOFF
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GMISC //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GMISC TRUE
|
||||
#define GFX_USE_GMISC GFXON
|
||||
|
||||
//#define GMISC_NEED_ARRAYOPS FALSE
|
||||
//#define GMISC_NEED_FASTTRIG FALSE
|
||||
//#define GMISC_NEED_FIXEDTRIG FALSE
|
||||
//#define GMISC_NEED_INVSQRT FALSE
|
||||
// #define GMISC_INVSQRT_MIXED_ENDIAN FALSE
|
||||
// #define GMISC_INVSQRT_REAL_SLOW FALSE
|
||||
#define GMISC_NEED_MATRIXFLOAT2D TRUE
|
||||
#define GMISC_NEED_MATRIXFIXED2D FALSE
|
||||
//#define GMISC_NEED_ARRAYOPS GFXOFF
|
||||
//#define GMISC_NEED_FASTTRIG GFXOFF
|
||||
//#define GMISC_NEED_FIXEDTRIG GFXOFF
|
||||
//#define GMISC_NEED_INVSQRT GFXOFF
|
||||
// #define GMISC_INVSQRT_MIXED_ENDIAN GFXOFF
|
||||
// #define GMISC_INVSQRT_REAL_SLOW GFXOFF
|
||||
#define GMISC_NEED_MATRIXFLOAT2D GFXON
|
||||
#define GMISC_NEED_MATRIXFIXED2D GFXOFF
|
||||
//#define GMISC_NEED_HITTEST_POLY GFXOFF
|
||||
|
||||
#endif /* COMMON_GFXCONF_H */
|
||||
|
||||
@@ -352,7 +352,7 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
|
||||
|
||||
// On windows the system ticks is the same as milliseconds anyway
|
||||
if (sleep_time != TIME_INFINITE) {
|
||||
sleep_time = ST2MS(sleep_time);
|
||||
sleep_time = TIME_I2MS(sleep_time);
|
||||
}
|
||||
#endif
|
||||
geventEventWait(&event_listener, sleep_time);
|
||||
@@ -400,7 +400,7 @@ void update_status(bool changed) {
|
||||
static systime_t last_update = 0;
|
||||
systime_t current_update = chVTGetSystemTimeX();
|
||||
systime_t delta = current_update - last_update;
|
||||
if (changed || delta > MS2ST(10)) {
|
||||
if (changed || delta > TIME_MS2I(10)) {
|
||||
last_update = current_update;
|
||||
visualizer_keyboard_status_t* r = begin_write_current_status();
|
||||
*r = current_status;
|
||||
|
||||
@@ -97,8 +97,8 @@ typedef struct visualizer_state_t {
|
||||
uint32_t current_lcd_color;
|
||||
uint32_t prev_lcd_color;
|
||||
#ifdef LCD_ENABLE
|
||||
font_t font_fixed5x8;
|
||||
font_t font_dejavusansbold12;
|
||||
gFont font_fixed5x8;
|
||||
gFont font_dejavusansbold12;
|
||||
#endif
|
||||
} visualizer_state_t;
|
||||
|
||||
|
||||
@@ -110,6 +110,8 @@ else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld)","")
|
||||
LDSCRIPT = $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld
|
||||
else ifneq ("$(wildcard $(TOP_DIR)/drivers/boards/ld/$(MCU_LDSCRIPT).ld)","")
|
||||
LDSCRIPT = $(TOP_DIR)/drivers/boards/ld/$(MCU_LDSCRIPT).ld
|
||||
else ifneq ("$(wildcard $(STARTUPLD_CONTRIB)/$(MCU_LDSCRIPT).ld)","")
|
||||
LDSCRIPT = $(STARTUPLD_CONTRIB)/$(MCU_LDSCRIPT).ld
|
||||
else
|
||||
LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld
|
||||
endif
|
||||
@@ -120,6 +122,7 @@ CHIBISRC = $(STARTUPSRC) \
|
||||
$(OSALSRC) \
|
||||
$(HALSRC) \
|
||||
$(PLATFORMSRC) \
|
||||
$(PLATFORMSRC_CONTRIB) \
|
||||
$(BOARDSRC) \
|
||||
$(STREAMSSRC) \
|
||||
$(CHIBIOS)/os/various/syscalls.c
|
||||
@@ -129,9 +132,9 @@ QUANTUM_LIB_SRC += $(STARTUPASM) $(PORTASM) $(OSALASM)
|
||||
|
||||
CHIBISRC := $(patsubst $(TOP_DIR)/%,%,$(CHIBISRC))
|
||||
|
||||
EXTRAINCDIRS += $(CHIBIOS)/os/license \
|
||||
EXTRAINCDIRS += $(CHIBIOS)/os/license $(CHIBIOS)/os/oslib/include \
|
||||
$(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \
|
||||
$(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \
|
||||
$(HALINC) $(PLATFORMINC) $(PLATFORMINC_CONTRIB) $(BOARDINC) $(TESTINC) \
|
||||
$(STREAMSINC) $(CHIBIOS)/os/various $(COMMON_VPATH)
|
||||
|
||||
#
|
||||
@@ -180,6 +183,9 @@ LDFLAGS += -Wl,--script=$(LDSCRIPT)$(LDSYMBOLS)
|
||||
|
||||
OPT_DEFS += -DPROTOCOL_CHIBIOS
|
||||
|
||||
# Workaround to stop ChibiOS from complaining about new GCC -- it's been fixed for 7/8/9 already
|
||||
OPT_DEFS += -DPORT_IGNORE_GCC_VERSION_CHECK=1
|
||||
|
||||
MCUFLAGS = -mcpu=$(MCU)
|
||||
|
||||
# FPU options default (Cortex-M4 and Cortex-M7 single precision).
|
||||
|
||||
@@ -167,11 +167,16 @@ ifeq ($(strip $(LTO_ENABLE)), yes)
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LINK_TIME_OPTIMIZATION_ENABLE)), yes)
|
||||
ifeq ($(PLATFORM),CHIBIOS)
|
||||
$(info Enabling LTO on ChibiOS-targeting boards is known to have a high likelihood of failure.)
|
||||
$(info If unsure, set LINK_TIME_OPTIMIZATION_ENABLE = no.)
|
||||
endif
|
||||
EXTRAFLAGS += -flto
|
||||
TMK_COMMON_DEFS += -DLINK_TIME_OPTIMIZATION_ENABLE
|
||||
TMK_COMMON_DEFS += -DNO_ACTION_MACRO
|
||||
TMK_COMMON_DEFS += -DNO_ACTION_FUNCTION
|
||||
endif
|
||||
|
||||
# Bootloader address
|
||||
ifdef STM32_BOOTLOADER_ADDRESS
|
||||
TMK_COMMON_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS)
|
||||
|
||||
@@ -562,34 +562,6 @@ void process_action(keyrecord_t *record, action_t action) {
|
||||
action_macro_play(action_get_macro(record, action.func.id, action.func.opt));
|
||||
break;
|
||||
#endif
|
||||
#if defined(BACKLIGHT_ENABLE) | defined(LED_MATRIX_ENABLE)
|
||||
case ACT_BACKLIGHT:
|
||||
if (!event.pressed) {
|
||||
switch (action.backlight.opt) {
|
||||
case BACKLIGHT_INCREASE:
|
||||
backlight_increase();
|
||||
break;
|
||||
case BACKLIGHT_DECREASE:
|
||||
backlight_decrease();
|
||||
break;
|
||||
case BACKLIGHT_TOGGLE:
|
||||
backlight_toggle();
|
||||
break;
|
||||
case BACKLIGHT_STEP:
|
||||
backlight_step();
|
||||
break;
|
||||
case BACKLIGHT_ON:
|
||||
backlight_level(BACKLIGHT_LEVELS);
|
||||
break;
|
||||
case BACKLIGHT_OFF:
|
||||
backlight_level(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case ACT_COMMAND:
|
||||
break;
|
||||
#ifdef SWAP_HANDS_ENABLE
|
||||
case ACT_SWAP_HANDS:
|
||||
switch (action.swap.code) {
|
||||
|
||||
@@ -86,8 +86,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* 1100|opt | id(8) Macro play?
|
||||
* 1100|1111| id(8) Macro record?
|
||||
*
|
||||
* ACT_BACKLIGHT(1101):
|
||||
* 1101|opt |level(8) Backlight commands
|
||||
* 1101|xxxx xxxx xxxx (reserved)
|
||||
*
|
||||
* ACT_COMMAND(1110):
|
||||
* 1110|opt | id(8) Built-in Command exec
|
||||
@@ -116,7 +115,6 @@ enum action_kind_id {
|
||||
ACT_LAYER_TAP_EXT = 0b1011, /* Layer 16-31 */
|
||||
/* Extensions */
|
||||
ACT_MACRO = 0b1100,
|
||||
ACT_BACKLIGHT = 0b1101,
|
||||
ACT_COMMAND = 0b1110,
|
||||
ACT_FUNCTION = 0b1111
|
||||
};
|
||||
@@ -169,11 +167,6 @@ typedef union {
|
||||
uint8_t page : 2;
|
||||
uint8_t kind : 4;
|
||||
} usage;
|
||||
struct action_backlight {
|
||||
uint8_t level : 8;
|
||||
uint8_t opt : 4;
|
||||
uint8_t kind : 4;
|
||||
} backlight;
|
||||
struct action_command {
|
||||
uint8_t id : 8;
|
||||
uint8_t opt : 4;
|
||||
@@ -290,28 +283,10 @@ enum layer_param_tap_op {
|
||||
#define ACTION_DEFAULT_LAYER_BIT_XOR(part, bits) ACTION_LAYER_BITOP(OP_BIT_XOR, (part), (bits), 0)
|
||||
#define ACTION_DEFAULT_LAYER_BIT_SET(part, bits) ACTION_LAYER_BITOP(OP_BIT_SET, (part), (bits), 0)
|
||||
|
||||
/** \brief Extensions
|
||||
*/
|
||||
enum backlight_opt {
|
||||
BACKLIGHT_INCREASE = 0,
|
||||
BACKLIGHT_DECREASE = 1,
|
||||
BACKLIGHT_TOGGLE = 2,
|
||||
BACKLIGHT_STEP = 3,
|
||||
BACKLIGHT_ON = 4,
|
||||
BACKLIGHT_OFF = 5,
|
||||
};
|
||||
|
||||
/* Macro */
|
||||
#define ACTION_MACRO(id) ACTION(ACT_MACRO, (id))
|
||||
#define ACTION_MACRO_TAP(id) ACTION(ACT_MACRO, FUNC_TAP << 8 | (id))
|
||||
#define ACTION_MACRO_OPT(id, opt) ACTION(ACT_MACRO, (opt) << 8 | (id))
|
||||
/* Backlight */
|
||||
#define ACTION_BACKLIGHT_INCREASE() ACTION(ACT_BACKLIGHT, BACKLIGHT_INCREASE << 8)
|
||||
#define ACTION_BACKLIGHT_DECREASE() ACTION(ACT_BACKLIGHT, BACKLIGHT_DECREASE << 8)
|
||||
#define ACTION_BACKLIGHT_TOGGLE() ACTION(ACT_BACKLIGHT, BACKLIGHT_TOGGLE << 8)
|
||||
#define ACTION_BACKLIGHT_STEP() ACTION(ACT_BACKLIGHT, BACKLIGHT_STEP << 8)
|
||||
#define ACTION_BACKLIGHT_ON() ACTION(ACT_BACKLIGHT, BACKLIGHT_ON << 8)
|
||||
#define ACTION_BACKLIGHT_OFF() ACTION(ACT_BACKLIGHT, BACKLIGHT_OFF << 8)
|
||||
/* Command */
|
||||
#define ACTION_COMMAND(id, opt) ACTION(ACT_COMMAND, (opt) << 8 | (id))
|
||||
/* Function */
|
||||
|
||||
@@ -2,30 +2,44 @@
|
||||
|
||||
#include "timer.h"
|
||||
|
||||
static systime_t last_systime = 0;
|
||||
static systime_t overflow = 0;
|
||||
static uint32_t current_time_ms = 0;
|
||||
static uint32_t reset_point = 0;
|
||||
#if CH_CFG_ST_RESOLUTION < 32
|
||||
static uint32_t last_systime = 0;
|
||||
static uint32_t overflow = 0;
|
||||
#endif
|
||||
|
||||
void timer_init(void) { timer_clear(); }
|
||||
|
||||
void timer_clear(void) {
|
||||
last_systime = chVTGetSystemTime();
|
||||
reset_point = (uint32_t)chVTGetSystemTime();
|
||||
#if CH_CFG_ST_RESOLUTION < 32
|
||||
last_systime = reset_point;
|
||||
overflow = 0;
|
||||
current_time_ms = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
uint16_t timer_read(void) { return (uint16_t)timer_read32(); }
|
||||
|
||||
uint32_t timer_read32(void) {
|
||||
// Note: We assume that the timer update is called at least once betweeen every wrap around of the system time
|
||||
systime_t current_systime = chVTGetSystemTime();
|
||||
systime_t elapsed = current_systime - last_systime + overflow;
|
||||
uint32_t elapsed_ms = ST2MS(elapsed);
|
||||
current_time_ms += elapsed_ms;
|
||||
overflow = elapsed - MS2ST(elapsed_ms);
|
||||
last_systime = current_systime;
|
||||
uint32_t systime = (uint32_t)chVTGetSystemTime();
|
||||
|
||||
return current_time_ms;
|
||||
#if CH_CFG_ST_RESOLUTION < 32
|
||||
// If/when we need to support 64-bit chips, this may need to be modified to match the native bit-ness of the MCU.
|
||||
// At this point, the only SysTick resolution allowed other than 32 is 16 bit.
|
||||
// In the 16-bit case, at:
|
||||
// - CH_CFG_ST_FREQUENCY = 100000, overflow will occur every ~0.65 seconds
|
||||
// - CH_CFG_ST_FREQUENCY = 10000, overflow will occur every ~6.5 seconds
|
||||
// - CH_CFG_ST_FREQUENCY = 1000, overflow will occur every ~65 seconds
|
||||
// With this implementation, as long as we ensure a timer read happens at least once during the overflow period, timing should be accurate.
|
||||
if (systime < last_systime) {
|
||||
overflow += ((uint32_t)1) << CH_CFG_ST_RESOLUTION;
|
||||
}
|
||||
|
||||
last_systime = systime;
|
||||
return (uint32_t)TIME_I2MS(systime - reset_point + overflow);
|
||||
#else
|
||||
return (uint32_t)TIME_I2MS(systime - reset_point);
|
||||
#endif
|
||||
}
|
||||
|
||||
uint16_t timer_elapsed(uint16_t last) { return TIMER_DIFF_16(timer_read(), last); }
|
||||
|
||||
@@ -153,6 +153,9 @@ static void print_version(void) {
|
||||
print("BUILD: (" __DATE__ ")\n");
|
||||
#else
|
||||
print("BUILD: " STR(QMK_VERSION) " (" __TIME__ " " __DATE__ ")\n");
|
||||
# ifdef PROTOCOL_CHIBIOS
|
||||
print("CHIBIOS: " STR(CHIBIOS_VERSION) ", CONTRIB: " STR(CHIBIOS_CONTRIB_VERSION) "\n");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* build options */
|
||||
@@ -182,6 +185,9 @@ static void print_version(void) {
|
||||
#ifdef NKRO_ENABLE
|
||||
" NKRO"
|
||||
#endif
|
||||
#ifdef LINK_TIME_OPTIMIZATION_ENABLE
|
||||
" LTO"
|
||||
#endif
|
||||
|
||||
" " STR(BOOTLOADER_SIZE) "\n");
|
||||
|
||||
|
||||
@@ -45,9 +45,8 @@ uint16_t timer_elapsed(uint16_t last);
|
||||
uint32_t timer_elapsed32(uint32_t last);
|
||||
|
||||
// Utility functions to check if a future time has expired & autmatically handle time wrapping if checked / reset frequently (half of max value)
|
||||
inline bool timer_expired(uint16_t current, uint16_t future) { return (uint16_t)(current - future) < 0x8000; }
|
||||
|
||||
inline bool timer_expired32(uint32_t current, uint32_t future) { return (uint32_t)(current - future) < 0x80000000; }
|
||||
#define timer_expired(current, future) (((uint16_t)current - (uint16_t)future) < 0x8000)
|
||||
#define timer_expired32(current, future) (((uint32_t)current - (uint32_t)future) < 0x80000000)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ SRC += $(CHIBIOS_DIR)/usb_main.c
|
||||
SRC += $(CHIBIOS_DIR)/main.c
|
||||
SRC += usb_descriptor.c
|
||||
SRC += $(CHIBIOS_DIR)/usb_driver.c
|
||||
SRC += $(LIBSRC)
|
||||
|
||||
VPATH += $(TMK_PATH)/$(PROTOCOL_DIR)
|
||||
VPATH += $(TMK_PATH)/$(CHIBIOS_DIR)
|
||||
|
||||
@@ -88,15 +88,15 @@ static msg_t _put(void *ip, uint8_t b) { return obqPutTimeout(&((QMKUSBDriver *)
|
||||
|
||||
static msg_t _get(void *ip) { return ibqGetTimeout(&((QMKUSBDriver *)ip)->ibqueue, TIME_INFINITE); }
|
||||
|
||||
static msg_t _putt(void *ip, uint8_t b, systime_t timeout) { return obqPutTimeout(&((QMKUSBDriver *)ip)->obqueue, b, timeout); }
|
||||
static msg_t _putt(void *ip, uint8_t b, sysinterval_t timeout) { return obqPutTimeout(&((QMKUSBDriver *)ip)->obqueue, b, timeout); }
|
||||
|
||||
static msg_t _gett(void *ip, systime_t timeout) { return ibqGetTimeout(&((QMKUSBDriver *)ip)->ibqueue, timeout); }
|
||||
static msg_t _gett(void *ip, sysinterval_t timeout) { return ibqGetTimeout(&((QMKUSBDriver *)ip)->ibqueue, timeout); }
|
||||
|
||||
static size_t _writet(void *ip, const uint8_t *bp, size_t n, systime_t timeout) { return obqWriteTimeout(&((QMKUSBDriver *)ip)->obqueue, bp, n, timeout); }
|
||||
static size_t _writet(void *ip, const uint8_t *bp, size_t n, sysinterval_t timeout) { return obqWriteTimeout(&((QMKUSBDriver *)ip)->obqueue, bp, n, timeout); }
|
||||
|
||||
static size_t _readt(void *ip, uint8_t *bp, size_t n, systime_t timeout) { return ibqReadTimeout(&((QMKUSBDriver *)ip)->ibqueue, bp, n, timeout); }
|
||||
static size_t _readt(void *ip, uint8_t *bp, size_t n, sysinterval_t timeout) { return ibqReadTimeout(&((QMKUSBDriver *)ip)->ibqueue, bp, n, timeout); }
|
||||
|
||||
static const struct QMKUSBDriverVMT vmt = {_write, _read, _put, _get, _putt, _gett, _writet, _readt};
|
||||
static const struct QMKUSBDriverVMT vmt = {0, _write, _read, _put, _get, _putt, _gett, _writet, _readt};
|
||||
|
||||
/**
|
||||
* @brief Notification of empty buffer released into the input buffers queue.
|
||||
|
||||
@@ -499,7 +499,7 @@ static bool usb_request_hook_cb(USBDriver *usbp) {
|
||||
#endif /* NKRO_ENABLE */
|
||||
/* arm the idle timer if boot protocol & idle */
|
||||
osalSysLockFromISR();
|
||||
chVTSetI(&keyboard_idle_timer, 4 * MS2ST(keyboard_idle), keyboard_idle_timer_cb, (void *)usbp);
|
||||
chVTSetI(&keyboard_idle_timer, 4 * TIME_MS2I(keyboard_idle), keyboard_idle_timer_cb, (void *)usbp);
|
||||
osalSysUnlockFromISR();
|
||||
}
|
||||
}
|
||||
@@ -516,7 +516,7 @@ static bool usb_request_hook_cb(USBDriver *usbp) {
|
||||
if (keyboard_idle) {
|
||||
#endif /* NKRO_ENABLE */
|
||||
osalSysLockFromISR();
|
||||
chVTSetI(&keyboard_idle_timer, 4 * MS2ST(keyboard_idle), keyboard_idle_timer_cb, (void *)usbp);
|
||||
chVTSetI(&keyboard_idle_timer, 4 * TIME_MS2I(keyboard_idle), keyboard_idle_timer_cb, (void *)usbp);
|
||||
osalSysUnlockFromISR();
|
||||
}
|
||||
usbSetupTransfer(usbp, NULL, 0, NULL);
|
||||
@@ -652,7 +652,7 @@ static void keyboard_idle_timer_cb(void *arg) {
|
||||
usbStartTransmitI(usbp, KEYBOARD_IN_EPNUM, (uint8_t *)&keyboard_report_sent, KEYBOARD_EPSIZE);
|
||||
}
|
||||
/* rearm the timer */
|
||||
chVTSetI(&keyboard_idle_timer, 4 * MS2ST(keyboard_idle), keyboard_idle_timer_cb, (void *)usbp);
|
||||
chVTSetI(&keyboard_idle_timer, 4 * TIME_MS2I(keyboard_idle), keyboard_idle_timer_cb, (void *)usbp);
|
||||
}
|
||||
|
||||
/* do not rearm the timer if the condition above fails
|
||||
@@ -751,7 +751,7 @@ void send_mouse(report_mouse_t *report) {
|
||||
* every iteration - otherwise the system will remain locked,
|
||||
* no interrupts served, so USB not going through as well.
|
||||
* Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
|
||||
if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[MOUSE_IN_EPNUM]->in_state->thread, MS2ST(10)) == MSG_TIMEOUT) {
|
||||
if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[MOUSE_IN_EPNUM]->in_state->thread, TIME_MS2I(10)) == MSG_TIMEOUT) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
|
||||
172
util/chibios-upgrader.sh
Executable file
172
util/chibios-upgrader.sh
Executable file
@@ -0,0 +1,172 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eEuo pipefail
|
||||
umask 022
|
||||
|
||||
sinfo() { echo "$@" >&2 ; }
|
||||
shead() { sinfo "" ; sinfo "---------------------------------" ; sinfo "-- $@" ; sinfo "---------------------------------" ; }
|
||||
havecmd() { command command type "${1}" >/dev/null 2>&1 || return 1 ; }
|
||||
|
||||
this_script="$(realpath "${BASH_SOURCE[0]}")"
|
||||
script_dir="$(realpath "$(dirname "$this_script")")"
|
||||
qmk_firmware_dir="$(realpath "$script_dir/../")"
|
||||
|
||||
declare -A file_hashes
|
||||
|
||||
export PATH="$PATH:$script_dir/fmpp/bin"
|
||||
|
||||
build_fmpp() {
|
||||
[ -f "$script_dir/fmpp.tar.gz" ] \
|
||||
|| wget -O"$script_dir/fmpp.tar.gz" https://github.com/freemarker/fmpp/archive/v0.9.16.tar.gz
|
||||
[ -d "$script_dir/fmpp" ] \
|
||||
|| { mkdir "$script_dir/fmpp" && tar xf "$script_dir/fmpp.tar.gz" -C "$script_dir/fmpp" --strip-components=1 ; }
|
||||
pushd "$script_dir/fmpp" >/dev/null 2>&1
|
||||
sed -e "s#bootclasspath.path=.*#bootclasspath.path=$(find /usr/lib/jvm -name 'rt.jar' | sort | tail -n1)#g" \
|
||||
-e "s#ant.jar.path=.*#ant.jar.path=$(find /usr/share/java -name 'ant-1*.jar' | sort | tail -n1)#g" \
|
||||
build.properties.sample > build.properties
|
||||
sed -e 's#source="1.5"#source="1.8"#g' \
|
||||
-e 's#target="1.5"#target="1.8"#g' \
|
||||
build.xml > build.xml.new
|
||||
mv build.xml.new build.xml
|
||||
ant clean
|
||||
ant
|
||||
chmod +x "$script_dir/fmpp/bin/fmpp"
|
||||
popd >/dev/null 2>&1
|
||||
}
|
||||
|
||||
find_chibi_files() {
|
||||
local search_path="$1"
|
||||
shift
|
||||
local conditions=( "$@" )
|
||||
find "$search_path" -not -path '*/lib/chibios*' -and -not -path '*/lib/ugfx*' -and -not -path '*/util/*' -and \( "${conditions[@]}" \) | sort
|
||||
}
|
||||
|
||||
revert_chibi_files() {
|
||||
local search_path="$1"
|
||||
shead "Reverting ChibiOS config/board files..."
|
||||
for file in $(find_chibi_files "$search_path" -name chconf.h -or -name halconf.h -or -name mcuconf.h -or -name board.c -or -name board.h -or -name board.mk -or -name board.chcfg) ; do
|
||||
pushd "$search_path" >/dev/null 2>&1
|
||||
local relpath=$(realpath --relative-to="$search_path" "$file")
|
||||
git checkout upstream/master -- "$relpath" || git checkout origin/master -- "$relpath" || true
|
||||
popd >/dev/null 2>&1
|
||||
done
|
||||
}
|
||||
|
||||
populate_file_hashes() {
|
||||
local search_path="$1"
|
||||
shead "Determining duplicate config/board files..."
|
||||
for file in $(find_chibi_files "$search_path" -name chconf.h -or -name halconf.h -or -name mcuconf.h -or -name board.c -or -name board.h) ; do
|
||||
local key="file_$(clang-format "$file" | sha1sum | cut -d' ' -f1)"
|
||||
local relpath=$(realpath --relative-to="$search_path" "$file")
|
||||
file_hashes[$key]="${file_hashes[$key]:-} $relpath"
|
||||
done
|
||||
for file in $(find_chibi_files "$search_path" -name board.mk -or -name board.chcfg) ; do
|
||||
local key="file_$(cat "$file" | sha1sum | cut -d' ' -f1)"
|
||||
local relpath=$(realpath --relative-to="$search_path" "$file")
|
||||
file_hashes[$key]="${file_hashes[$key]:-} $relpath"
|
||||
done
|
||||
}
|
||||
|
||||
determine_equivalent_files() {
|
||||
local search_file="$1"
|
||||
for K in "${!file_hashes[@]}"; do
|
||||
for V in ${file_hashes[$K]}; do
|
||||
if [[ "$V" == "$search_file" ]] ; then
|
||||
for V in ${file_hashes[$K]}; do
|
||||
echo "$V"
|
||||
done
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
deploy_staged_files() {
|
||||
shead "Deploying staged files..."
|
||||
for file in $(find "$qmk_firmware_dir/util/chibios-upgrade-staging" -type f) ; do
|
||||
local relpath=$(realpath --relative-to="$qmk_firmware_dir/util/chibios-upgrade-staging" "$file")
|
||||
sinfo "Deploying staged file: $relpath"
|
||||
for other in $(determine_equivalent_files "$relpath") ; do
|
||||
sinfo " => $other"
|
||||
cp "$qmk_firmware_dir/util/chibios-upgrade-staging/$relpath" "$qmk_firmware_dir/$other"
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
swap_mcuconf_f3xx_f303() {
|
||||
shead "Swapping STM32F3xx_MCUCONF -> STM32F303_MCUCONF..."
|
||||
for file in $(find_chibi_files "$qmk_firmware_dir" -name mcuconf.h) ; do
|
||||
sed -i 's#STM32F3xx_MCUCONF#STM32F303_MCUCONF#g' "$file"
|
||||
dos2unix "$file" >/dev/null 2>&1
|
||||
done
|
||||
}
|
||||
|
||||
upgrade_conf_files_generic() {
|
||||
local search_filename="$1"
|
||||
local update_script="$2"
|
||||
shead "Updating $search_filename files ($update_script)..."
|
||||
pushd "$qmk_firmware_dir/lib/chibios/tools/updater" >/dev/null 2>&1
|
||||
for file in $(find_chibi_files "$qmk_firmware_dir" -name "$search_filename") ; do
|
||||
cp -f "$file" "$file.orig"
|
||||
clang-format --style='{IndentPPDirectives: None}' -i "$file"
|
||||
cp -f "$file" "$file.formatted"
|
||||
bash "$update_script" "$file"
|
||||
if ! diff "$file" "$file.formatted" >/dev/null 2>&1 ; then
|
||||
dos2unix "$file" >/dev/null 2>&1
|
||||
else
|
||||
cp -f "$file.orig" "$file"
|
||||
fi
|
||||
rm -f "$file.orig" "$file.formatted"
|
||||
done
|
||||
popd >/dev/null 2>&1
|
||||
}
|
||||
|
||||
upgrade_chconf_files() {
|
||||
upgrade_conf_files_generic chconf.h update_chconf_rt.sh
|
||||
}
|
||||
|
||||
upgrade_halconf_files() {
|
||||
upgrade_conf_files_generic halconf.h update_halconf.sh
|
||||
}
|
||||
|
||||
upgrade_mcuconf_files() {
|
||||
pushd "$qmk_firmware_dir/lib/chibios/tools/updater" >/dev/null 2>&1
|
||||
for f in $(find . -name 'update_mcuconf*') ; do
|
||||
upgrade_conf_files_generic mcuconf.h $f
|
||||
done
|
||||
popd >/dev/null 2>&1
|
||||
}
|
||||
|
||||
update_staged_files() {
|
||||
shead "Updating staged files with ChibiOS upgraded versions..."
|
||||
for file in $(find "$qmk_firmware_dir/util/chibios-upgrade-staging" -type f) ; do
|
||||
local relpath=$(realpath --relative-to="$qmk_firmware_dir/util/chibios-upgrade-staging" "$file")
|
||||
sinfo "Updating staged file: $relpath"
|
||||
cp "$qmk_firmware_dir/$relpath" "$qmk_firmware_dir/util/chibios-upgrade-staging/$relpath"
|
||||
done
|
||||
}
|
||||
|
||||
havecmd fmpp || build_fmpp
|
||||
revert_chibi_files "$qmk_firmware_dir"
|
||||
populate_file_hashes "$qmk_firmware_dir"
|
||||
|
||||
shead "Showing duplicate ChibiOS files..."
|
||||
for K in "${!file_hashes[@]}"; do
|
||||
sinfo ${K#file_}:
|
||||
for V in ${file_hashes[$K]}; do
|
||||
sinfo " $V"
|
||||
done
|
||||
done
|
||||
|
||||
if [ "${1:-}" == "-r" ] ; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
swap_mcuconf_f3xx_f303
|
||||
|
||||
deploy_staged_files
|
||||
upgrade_mcuconf_files
|
||||
upgrade_chconf_files
|
||||
upgrade_halconf_files
|
||||
update_staged_files
|
||||
Reference in New Issue
Block a user