M .gitignore => .gitignore +0 -1
@@ 19,7 19,6 @@
# QMK-specific
api_data/v1
-doxygen/
quantum/version.h
*.bin
*.eep
M Doxyfile => Doxyfile +3 -3
@@ 21,7 21,7 @@ DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "QMK Firmware"
PROJECT_NUMBER = https://github.com/qmk/qmk_firmware
PROJECT_BRIEF = "Keyboard controller firmware for Atmel AVR and ARM USB families"
-OUTPUT_DIRECTORY = doxygen
+OUTPUT_DIRECTORY = .build/doxygen
ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
@@ 145,7 145,7 @@ FILE_PATTERNS = *.c \
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
-EXCLUDE_PATTERNS =
+EXCLUDE_PATTERNS = */protocol/arm_atsam/*
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
@@ 209,7 209,7 @@ EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
-PREDEFINED =
+PREDEFINED = __DOXYGEN__ PROGMEM
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
M lib/python/qmk/cli/generate/docs.py => lib/python/qmk/cli/generate/docs.py +10 -6
@@ 7,7 7,9 @@ from subprocess import DEVNULL
from milc import cli
DOCS_PATH = Path('docs/')
-BUILD_PATH = Path('.build/docs/')
+BUILD_PATH = Path('.build/')
+BUILD_DOCS_PATH = BUILD_PATH / 'docs'
+DOXYGEN_PATH = BUILD_PATH / 'doxygen'
@cli.subcommand('Build QMK documentation.', hidden=False if cli.config.user.developer else True)
@@ 18,10 20,12 @@ def generate_docs(cli):
* [ ] Add a real build step... something static docs
"""
- if BUILD_PATH.exists():
- shutil.rmtree(BUILD_PATH)
+ if BUILD_DOCS_PATH.exists():
+ shutil.rmtree(BUILD_DOCS_PATH)
+ if DOXYGEN_PATH.exists():
+ shutil.rmtree(DOXYGEN_PATH)
- shutil.copytree(DOCS_PATH, BUILD_PATH)
+ shutil.copytree(DOCS_PATH, BUILD_DOCS_PATH)
# When not verbose we want to hide all output
args = {
@@ 34,6 38,6 @@ def generate_docs(cli):
# Generate internal docs
cli.run(['doxygen', 'Doxyfile'], **args)
- cli.run(['moxygen', '-q', '-a', '-g', '-o', BUILD_PATH / 'internals_%s.md', 'doxygen/xml'], **args)
+ cli.run(['moxygen', '-q', '-g', '-o', BUILD_DOCS_PATH / 'internals_%s.md', DOXYGEN_PATH / 'xml'], **args)
- cli.log.info('Successfully generated internal docs to %s.', BUILD_PATH)
+ cli.log.info('Successfully generated internal docs to %s.', BUILD_DOCS_PATH)
M quantum/encoder.c => quantum/encoder.c +7 -1
@@ 59,6 59,10 @@ static uint8_t thisHand, thatHand;
static uint8_t encoder_value[NUMBER_OF_ENCODERS] = {0};
#endif
+__attribute__((weak)) void encoder_wait_pullup_charge(void) {
+ wait_us(100);
+}
+
__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) {
return true;
}
@@ 88,7 92,9 @@ void encoder_init(void) {
for (int i = 0; i < NUMBER_OF_ENCODERS; i++) {
setPinInputHigh(encoders_pad_a[i]);
setPinInputHigh(encoders_pad_b[i]);
-
+ }
+ encoder_wait_pullup_charge();
+ for (int i = 0; i < NUMBER_OF_ENCODERS; i++) {
encoder_state[i] = (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1);
}