summaryrefslogtreecommitdiffstats
path: root/quantum
diff options
context:
space:
mode:
Diffstat (limited to 'quantum')
-rw-r--r--quantum/audio/audio_arm.c10
-rw-r--r--quantum/backlight/backlight_avr.c58
-rw-r--r--quantum/encoder.c15
-rw-r--r--quantum/keymap_common.c20
-rw-r--r--quantum/process_keycode/process_backlight.c51
-rw-r--r--quantum/process_keycode/process_backlight.h21
-rw-r--r--quantum/quantum.c3
-rw-r--r--quantum/quantum.h4
-rw-r--r--quantum/serial_link/system/serial_link.c4
-rw-r--r--quantum/stm32/chconf.h269
-rw-r--r--quantum/stm32/halconf.h166
-rw-r--r--quantum/stm32/mcuconf.h62
-rw-r--r--quantum/visualizer/common_gfxconf.h453
-rw-r--r--quantum/visualizer/visualizer.c4
-rw-r--r--quantum/visualizer/visualizer.h4
15 files changed, 812 insertions, 332 deletions
diff --git a/quantum/audio/audio_arm.c b/quantum/audio/audio_arm.c
index e4483c3028..fba7c59873 100644
--- a/quantum/audio/audio_arm.c
+++ b/quantum/audio/audio_arm.c
@@ -218,17 +218,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);
}
diff --git a/quantum/backlight/backlight_avr.c b/quantum/backlight/backlight_avr.c
index 7cf1e0fb30..519c0c2cf2 100644
--- a/quantum/backlight/backlight_avr.c
+++ b/quantum/backlight/backlight_avr.c
@@ -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;
diff --git a/quantum/encoder.c b/quantum/encoder.c
index 8e11562eb7..81ec1bb376 100644
--- a/quantum/encoder.c
+++ b/quantum/encoder.c
@@ -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);
}
}
}
diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c
index c82c446399..f34ba26e5a 100644
--- a/quantum/keymap_common.c
+++ b/quantum/keymap_common.c
@@ -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);
diff --git a/quantum/process_keycode/process_backlight.c b/quantum/process_keycode/process_backlight.c
new file mode 100644
index 0000000000..4d12f6813a
--- /dev/null
+++ b/quantum/process_keycode/process_backlight.c
@@ -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;
+}
diff --git a/quantum/process_keycode/process_backlight.h b/quantum/process_keycode/process_backlight.h
new file mode 100644
index 0000000000..7fe887ae67
--- /dev/null
+++ b/quantum/process_keycode/process_backlight.h
@@ -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);
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 1b5ce3292c..7c19a3bbb6 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -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
diff --git a/quantum/quantum.h b/quantum/quantum.h
index fbd5e90792..7dc14e6280 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -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
diff --git a/quantum/serial_link/system/serial_link.c b/quantum/serial_link/system/serial_link.c
index feac64e297..c59c068944 100644
--- a/quantum/serial_link/system/serial_link.c
+++ b/quantum/serial_link/system/serial_link.c
@@ -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();
diff --git a/quantum/stm32/chconf.h b/quantum/stm32/chconf.h
index 6b691950a6..b6e66f9e49 100644
--- a/quantum/stm32/chconf.h
+++ b/quantum/stm32/chconf.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.
@@ -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.
*/
-# define CH_CFG_ST_RESOLUTION 32
+# 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.
*/
-# define CH_CFG_ST_FREQUENCY 100000
+# 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,9 @@
* The value one is not valid, timeouts are rounded up to
* this value.
*/
-# define CH_CFG_ST_TIMEDELTA 2
+# if !defined(CH_CFG_ST_TIMEDELTA)
+# define CH_CFG_ST_TIMEDELTA 2
+# endif
/** @} */
@@ -81,7 +104,9 @@
* @note The round robin preemption is not supported in tickless mode and
* must be set to zero in that case.
*/
-# define CH_CFG_TIME_QUANTUM 0
+# if !defined(CH_CFG_TIME_QUANTUM)
+# define CH_CFG_TIME_QUANTUM 0
+# endif
/**
* @brief Managed RAM size.
@@ -94,7 +119,9 @@
* provide the @p __heap_base__ and @p __heap_end__ symbols.
* @note Requires @p CH_CFG_USE_MEMCORE.
*/
-# define CH_CFG_MEMCORE_SIZE 0
+# if !defined(CH_CFG_MEMCORE_SIZE)
+# define CH_CFG_MEMCORE_SIZE 0
+# endif
/**
* @brief Idle thread automatic spawn suppression.
@@ -103,7 +130,9 @@
* function becomes the idle thread and must implement an
* infinite loop.
*/
-# define CH_CFG_NO_IDLE_THREAD FALSE
+# if !defined(CH_CFG_NO_IDLE_THREAD)
+# define CH_CFG_NO_IDLE_THREAD FALSE
+# endif
/** @} */
@@ -122,7 +151,9 @@
* @note This is not related to the compiler optimization options.
* @note The default is @p TRUE.
*/
-# define CH_CFG_OPTIMIZE_SPEED TRUE
+# if !defined(CH_CFG_OPTIMIZE_SPEED)
+# define CH_CFG_OPTIMIZE_SPEED TRUE
+# endif
/** @} */
@@ -140,7 +171,9 @@
*
* @note The default is @p TRUE.
*/
-# define CH_CFG_USE_TM TRUE
+# if !defined(CH_CFG_USE_TM)
+# define CH_CFG_USE_TM TRUE
+# endif
/**
* @brief Threads registry APIs.
@@ -148,7 +181,9 @@
*
* @note The default is @p TRUE.
*/
-# define CH_CFG_USE_REGISTRY TRUE
+# if !defined(CH_CFG_USE_REGISTRY)
+# define CH_CFG_USE_REGISTRY TRUE
+# endif
/**
* @brief Threads synchronization APIs.
@@ -157,7 +192,9 @@
*
* @note The default is @p TRUE.
*/
-# define CH_CFG_USE_WAITEXIT TRUE
+# if !defined(CH_CFG_USE_WAITEXIT)
+# define CH_CFG_USE_WAITEXIT TRUE
+# endif
/**
* @brief Semaphores APIs.
@@ -165,7 +202,9 @@
*
* @note The default is @p TRUE.
*/
-# define CH_CFG_USE_SEMAPHORES TRUE
+# if !defined(CH_CFG_USE_SEMAPHORES)
+# define CH_CFG_USE_SEMAPHORES TRUE
+# endif
/**
* @brief Semaphores queuing mode.
@@ -176,7 +215,9 @@
* requirements.
* @note Requires @p CH_CFG_USE_SEMAPHORES.
*/
-# define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE
+# if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY)
+# define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE
+# endif
/**
* @brief Mutexes APIs.
@@ -184,7 +225,9 @@
*
* @note The default is @p TRUE.
*/
-# define CH_CFG_USE_MUTEXES TRUE
+# if !defined(CH_CFG_USE_MUTEXES)
+# define CH_CFG_USE_MUTEXES TRUE
+# endif
/**
* @brief Enables recursive behavior on mutexes.
@@ -194,7 +237,9 @@
* @note The default is @p FALSE.
* @note Requires @p CH_CFG_USE_MUTEXES.
*/
-# define CH_CFG_USE_MUTEXES_RECURSIVE FALSE
+# if !defined(CH_CFG_USE_MUTEXES_RECURSIVE)
+# define CH_CFG_USE_MUTEXES_RECURSIVE FALSE
+# endif
/**
* @brief Conditional Variables APIs.
@@ -204,7 +249,9 @@
* @note The default is @p TRUE.
* @note Requires @p CH_CFG_USE_MUTEXES.
*/
-# define CH_CFG_USE_CONDVARS TRUE
+# if !defined(CH_CFG_USE_CONDVARS)
+# define CH_CFG_USE_CONDVARS TRUE
+# endif
/**
* @brief Conditional Variables APIs with timeout.
@@ -214,7 +261,9 @@
* @note The default is @p TRUE.
* @note Requires @p CH_CFG_USE_CONDVARS.
*/
-# define CH_CFG_USE_CONDVARS_TIMEOUT TRUE
+# if !defined(CH_CFG_USE_CONDVARS_TIMEOUT)
+# define CH_CFG_USE_CONDVARS_TIMEOUT TRUE
+# endif
/**
* @brief Events Flags APIs.
@@ -222,7 +271,9 @@
*
* @note The default is @p TRUE.
*/
-# define CH_CFG_USE_EVENTS TRUE
+# if !defined(CH_CFG_USE_EVENTS)
+# define CH_CFG_USE_EVENTS TRUE
+# endif
/**
* @brief Events Flags APIs with timeout.
@@ -232,7 +283,9 @@
* @note The default is @p TRUE.
* @note Requires @p CH_CFG_USE_EVENTS.
*/
-# define CH_CFG_USE_EVENTS_TIMEOUT TRUE
+# if !defined(CH_CFG_USE_EVENTS_TIMEOUT)
+# define CH_CFG_USE_EVENTS_TIMEOUT TRUE
+# endif
/**
* @brief Synchronous Messages APIs.
@@ -241,7 +294,9 @@
*
* @note The default is @p TRUE.
*/
-# define CH_CFG_USE_MESSAGES TRUE
+# if !defined(CH_CFG_USE_MESSAGES)
+# define CH_CFG_USE_MESSAGES TRUE
+# endif
/**
* @brief Synchronous Messages queuing mode.
@@ -252,7 +307,9 @@
* requirements.
* @note Requires @p CH_CFG_USE_MESSAGES.
*/
-# define CH_CFG_USE_MESSAGES_PRIORITY TRUE
+# if !defined(CH_CFG_USE_MESSAGES_PRIORITY)
+# define CH_CFG_USE_MESSAGES_PRIORITY TRUE
+# endif
/**
* @brief Mailboxes APIs.
@@ -262,7 +319,9 @@
* @note The default is @p TRUE.
* @note Requires @p CH_CFG_USE_SEMAPHORES.
*/
-# define CH_CFG_USE_MAILBOXES TRUE
+# if !defined(CH_CFG_USE_MAILBOXES)
+# define CH_CFG_USE_MAILBOXES TRUE
+# endif
/**
* @brief Core Memory Manager APIs.
@@ -271,7 +330,9 @@
*
* @note The default is @p TRUE.
*/
-# define CH_CFG_USE_MEMCORE TRUE
+# if !defined(CH_CFG_USE_MEMCORE)
+# define CH_CFG_USE_MEMCORE TRUE
+# endif
/**
* @brief Heap Allocator APIs.
@@ -283,7 +344,9 @@
* @p CH_CFG_USE_SEMAPHORES.
* @note Mutexes are recommended.
*/
-# define CH_CFG_USE_HEAP TRUE
+# if !defined(CH_CFG_USE_HEAP)
+# define CH_CFG_USE_HEAP TRUE
+# endif
/**
* @brief Memory Pools Allocator APIs.
@@ -292,7 +355,31 @@
*
* @note The default is @p TRUE.
*/
-# define CH_CFG_USE_MEMPOOLS 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 +390,80 @@
* @note Requires @p CH_CFG_USE_WAITEXIT.
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
*/
-# define CH_CFG_USE_DYNAMIC TRUE
+# 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 +479,9 @@
*
* @note The default is @p FALSE.
*/
-# define CH_DBG_STATISTICS FALSE
+# if !defined(CH_DBG_STATISTICS)
+# define CH_DBG_STATISTICS FALSE
+# endif
/**
* @brief Debug option, system state check.
@@ -328,7 +490,9 @@
*
* @note The default is @p FALSE.
*/
-# define CH_DBG_SYSTEM_STATE_CHECK FALSE
+# if !defined(CH_DBG_SYSTEM_STATE_CHECK)
+# define CH_DBG_SYSTEM_STATE_CHECK FALSE
+# endif
/**
* @brief Debug option, parameters checks.
@@ -337,7 +501,9 @@
*
* @note The default is @p FALSE.
*/
-# define CH_DBG_ENABLE_CHECKS FALSE
+# if !defined(CH_DBG_ENABLE_CHECKS)
+# define CH_DBG_ENABLE_CHECKS FALSE
+# endif
/**
* @brief Debug option, consistency checks.
@@ -347,7 +513,9 @@
*
* @note The default is @p FALSE.
*/
-# define CH_DBG_ENABLE_ASSERTS FALSE
+# if !defined(CH_DBG_ENABLE_ASSERTS)
+# define CH_DBG_ENABLE_ASSERTS FALSE
+# endif
/**
* @brief Debug option, trace buffer.
@@ -355,14 +523,18 @@
*
* @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
*/
-# define CH_DBG_TRACE_MASK 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.
*/
-# define CH_DBG_TRACE_BUFFER_SIZE 128
+# if !defined(CH_DBG_TRACE_BUFFER_SIZE)
+# define CH_DBG_TRACE_BUFFER_SIZE 128
+# endif
/**
* @brief Debug option, stack checks.
@@ -374,7 +546,9 @@
* @note The default failure mode is to halt the system with the global
* @p panic_msg variable set to @p NULL.
*/
-# define CH_DBG_ENABLE_STACK_CHECK TRUE
+# if !defined(CH_DBG_ENABLE_STACK_CHECK)
+# define CH_DBG_ENABLE_STACK_CHECK TRUE
+# endif
/**
* @brief Debug option, stacks initialization.
@@ -384,7 +558,9 @@
*
* @note The default is @p FALSE.
*/
-# define CH_DBG_FILL_THREADS FALSE
+# if !defined(CH_DBG_FILL_THREADS)
+# define CH_DBG_FILL_THREADS FALSE
+# endif
/**
* @brief Debug option, threads profiling.
@@ -395,7 +571,9 @@
* @note This debug option is not currently compatible with the
* tickless mode.
*/
-# define CH_DBG_THREADS_PROFILING FALSE
+# if !defined(CH_DBG_THREADS_PROFILING)
+# define CH_DBG_THREADS_PROFILING FALSE
+# endif
/** @} */
@@ -407,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 +607,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) \
diff --git a/quantum/stm32/halconf.h b/quantum/stm32/halconf.h
index 72e011d3dc..106f0f5755 100644
--- a/quantum/stm32/halconf.h
+++ b/quantum/stm32/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.
@@ -28,6 +28,9 @@
#ifndef HALCONF_H
# define HALCONF_H
+# define _CHIBIOS_HAL_CONF_
+# define _CHIBIOS_HAL_CONF_VER_7_0_
+
# include "mcuconf.h"
/**
@@ -52,17 +55,17 @@
# endif
/**
- * @brief Enables the DAC subsystem.
+ * @brief Enables the cryptographic subsystem.
*/
-# if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
-# define HAL_USE_DAC TRUE
+# if !defined(HAL_USE_CRY) || defined(__DOXYGEN__)
+# define HAL_USE_CRY FALSE
# endif
/**
- * @brief Enables the EXT subsystem.
+ * @brief Enables the DAC subsystem.
*/
-# if !defined(HAL_USE_EXT) || defined(__DOXYGEN__)
-# define HAL_USE_EXT FALSE
+# if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
+# define HAL_USE_DAC TRUE
# endif
/**
@@ -115,13 +118,6 @@
# endif
/**
- * @brief Enables the QSPI subsystem.
- */
-# if !defined(HAL_USE_QSPI) || defined(__DOXYGEN__)
-# define HAL_USE_QSPI FALSE
-# endif
-
-/**
* @brief Enables the RTC subsystem.
*/
# if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
@@ -150,6 +146,13 @@
# endif