aboutsummaryrefslogtreecommitdiffstats
path: root/quantum/split_common/split_util.c
Commit message (Collapse)AuthorAgeFilesLines
* [CI] Format code according to conventions (#25827)QMK Bot2025-11-301-1/+1
| | | Format code according to conventions
* Add `compiler_support.h` (#25274)Pablo Martínez2025-05-221-3/+5
|
* split_util: rename `usbIsActive` to `usb_bus_detected` (#23657)Stefan Kerkmann2024-05-051-3/+3
| | | | | | | split_util: rename usbIsActive to usb_bus_detected This follows the style rules and better reflects the intent. Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
* Update GPIO macro usages in core (#23093)Ryan2024-02-181-8/+8
|
* Align `SPLIT_HAND_MATRIX_GRID` left/right logic with `SPLIT_HAND_PIN` (#22775)Joel Challis2024-01-091-3/+3
|
* Modify split config is_keyboard_master/left checks. (#21875)Dasky2023-10-221-33/+40
| | | | | | | | | | | | | | | * rework split configuration * Apply suggestions from code review Co-authored-by: Joel Challis <git@zvecr.com> * lint * missed return --------- Co-authored-by: Joel Challis <git@zvecr.com>
* Remove old OLED API code (#21651)Ryan2023-07-311-3/+0
|
* Revert "[Bug] Fix compilation error when Split Watchdog enabled" (#21572)Ryan2023-07-211-4/+0
|
* [Bug] Fix compilation error when Split Watchdog enabled (#21543)Drashna Jaelre2023-07-211-0/+4
|
* haptic: naming cleanups (#21551)Ryan2023-07-211-0/+1
|
* quantum: remove direct `quantum.h` includes (#21507)Ryan2023-07-161-1/+1
|
* Remove `config.h` include from quantum files (#19817)jack2023-02-121-1/+0
|
* Implement split comms watchdog (#18599)Dasky2022-10-061-0/+43
|
* Move fake EE_HANDS (#18352)Dasky2022-09-161-0/+14
|
* Init eeconfig before reading handedness (#17256)Dasky2022-06-201-0/+4
|
* Move SPLIT_HAND_PIN setup to split_pre_init (#17271)Dasky2022-06-061-1/+4
| | | | | | | | | | | * Move SPLIT_HAND_PIN setup to split_pre_init * doppelganger should use old behaviour * Add comment for future Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Joel Challis <git@zvecr.com>
* Allow larger SPLIT_USB_TIMEOUT with default SPLIT_USB_TIMEOUT_POLL (#17272)Dasky2022-06-011-1/+2
| | | | | * Switch SPLIT_USB_DETECT loop to uint16_t * Add assertion
* Format code according to conventions (#16322)QMK Bot2022-02-121-8/+12
|
* Make solo half of split keyboards (more) usable. (#13523)Joakim Tufvegren2021-08-221-0/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Make solo half of split keyboards (more) usable. Using only one half of a split keyboard (that's using the split_common framework to communicate) is not a great experience, since several read timeouts per scan cycle cause an unusably slow scan rate. This change blocks all split communication attempts for 500 ms (configurable) after an error occurs, causing the scan rate to become at least _more_ usable, but might need some tweaking to work fully on most keyboards. One read timeout still needs to occur after the 500 ms has passed, and if that timeout isn't low enough, some scan cycles may still be too slow. * Fix lint complaint. * Require 25 consecutive comm errors to see comms as disconnected. The number of max errors can be overridden by defining `SPLIT_MAX_CONNECTION_ERRORS`. * Add comments to new defines, and ability to disable disconnection check. Also increase `SPLIT_MAX_CONNECTION_ERRORS` to 40, since it's divisible by most relevant numbers for the description. * Make lint happy ...again * Only update `connection_check_timer` when needed. * Add new defines to split keyboard documentation. * Move connection timeout logic to transport.c, add `is_transport_connected`. * Use split_common disconnection logic in matrix.c. Instead of doing more or less the same thing twice. * Move disconnection logic to `transport_master`. Is a cleaner implementation, and causes the scan rate while disconnected to increase instead of decrease. * Lint fixes. * Lower default `SERIAL_USART_TIMEOUT` to 20 ms. The read timeout must be low enough to not cause exessively long scan cycles when using a solo split half. 10 ms was determined from testing to work fine even with the slowest defined baudrate of 19200 (5 ms was too low for that case), so 20 ms should be fine for most cases. * Remove `SERIAL_USART_TIMEOUT` from ergodox_infinity/config.h Was somewhat mistakenly included in an earlier PR. * Fix building with `USE_I2C`. * Reduce built firmware size. Not really sure why this works, the idea was taken from tzarc's work on split disconnection. * Tweak and improve opt-out for split disconnection logic. There are now two ways to opt out from this feature: * Set `SPLIT_MAX_CONNECTION_ERRORS` to 0. This will completely disable the connection status checks (also affects the slave matrix reset logic in matrix.c, though). * Set `SPLIT_CONNECTION_CHECK_TIMEOUT` to 0. This will only disable the communication throttling while disconnected. Will make the firmware smaller. * Make split disconnection logic work with custom transports. Includes a fallback implementation for keyboards using a custom split_util.c but not a custom matrix.c (currently no such keyboard seems to be merged, though). * Remove unnecessary include of timer.h Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Joel Challis <git@zvecr.com>
* Avoid LTO conficts on arm_atsam (#13676)Joel Challis2021-07-241-1/+1
|
* Allow invert of SPLIT_HAND_PIN logic (#13433)Jameson Thatcher2021-07-051-0/+4
| | | | | | | | | | | | | | | | | | | * added support for inverting the hand pin for split keyboards * Added docs about SPLIT_HAND_LOW_IS_LEFT * Update docs/feature_split_keyboard.md bring #define for split hand pin low for left half name in line with grid pin define Co-authored-by: Joel Challis <git@zvecr.com> * Update quantum/split_common/split_util.c update split hand pin low is left name to match split hand grid define Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Joel Challis <git@zvecr.com>
* Refactor of USB code within split_common (#11890)Joel Challis2021-02-281-46/+24
| | | | | | | | | | | * Initial refactor of usb code within split_common * Add headers * Correct disable condition * Format * Align func name
* Run cformat and dos2unix manually (#11235)Ryan2020-12-171-4/+4
|
* Normalise include statements in core code (#11153)Ryan2020-12-111-1/+1
| | | | | * Normalise include statements in core code * Missed one
* Fix SPLIT_KEYBOARD compilation for ATMega*U2, which doesn't have VBUS/OTG ↵sol2020-10-011-1/+1
| | | | | control (#10460) Co-authored-by: s-ol <s-ol@users.noreply.github.com>
* add SPLIT_HAND_MATRIX_GRID support (#8685)Takeshi ISHII2020-07-041-0/+24
| | | Co-authored-by: Danny <nooges@users.noreply.github.com>
* Fixed slave-side keyboard half unresponsiveness (#9360)Adrian2020-06-101-1/+4
| | | | | | | | | | * Fixed slave-side keyboard half unresponsiveness due to how LUFA handles USB_Disable() * changes to formatting Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Joel Challis <git@zvecr.com>
* Fix build. (#9163)Nick Brassel2020-05-211-1/+1
|
* Use LUFA funcs for split_util (#8594)Joel Challis2020-05-211-21/+44
|
* Split - Avoid race condition during matrix_init_quantum (#8235)Joel Challis2020-02-251-15/+14
| | | | | | * Avoid race condition during matrix_init_quantum * spelling is hard
* Reduce SPLIT_USB_TIMEOUT by 500ms (#7637)Joel Challis2020-02-051-4/+8
| | | | | | | | | | * Update SPLIT_USB_TIMEOUT -500ms * Align keyboard level SPLIT_USB_TIMEOUT defaults * Align keyboard level SPLIT_USB_TIMEOUT_POLL * Review fixes
* Disable usb on slave half to resolve random 'lockup' (#7649)Joel Challis2019-12-161-1/+3
|
* Remove check for EH define (#7525)Danny2019-12-021-1/+1
| | | Its use in lets_split_eh was factored out in https://github.com/qmk/qmk_firmware/pull/6411
* SPLIT - Remove NO_USB_STARTUP_CHECK requirement for usb detection (#7053)Joel Challis2019-10-181-0/+6
| | | | | | | | | | * Avoid NO_USB_STARTUP_CHECK - Disable USB as checks seem to enable it somehow * Update quantum/split_common/split_util.c Co-Authored-By: fauxpark <fauxpark@gmail.com> * Also remove NO_USB_STARTUP_CHECK from vitamins_included/rev1
* ARM split - detect USB to select master/slave (#6424)Joel Challis2019-10-121-6/+27
| | | | | | | | | | | | * Initial split refactor to allow usb master detection * Add split USB detect docs * Add SPLIT_USB_DETECT demo mode limitation * fix rebase issues * clang-format
* ARM split - Add bootmagic/magic keycodes for setting handedness (#6545)Joel Challis2019-09-241-2/+1
| | | | | | | | | | * Add docs on bootmagic/magic keycodes for setting handedness * Clang format fixes * Maintain backwards compatibility * Maintain backwards compatibility
* clang-format changesskullY2019-08-311-49/+37
|
* Small fix to allow board to override split keyboard master checkzvecr2019-07-051-0/+1
|
* Add support for RGB LEDs wired directly to each half's controller (#5392)Danny2019-03-241-11/+21
| | | | | | | | | | | | | | | | * Add support for wiring RGB LEDs for both halves directly to their respective controllers RGB LEDs for each half don't need to be chained together across the TRRS cable with this * Add split RGB LED support for serial * Update config/rules for bakingpy layout * Un-nest ifdefs for hand detection * Read RGB config state from memory instead of EEPROM for serial updates * Reuse existing LED pointer instead of creating new one
* Next set of split_common changes (#4974)James Churchill2019-03-121-5/+0
| | | | | | | | | | | | | | | | * Update split_common to use standard i2c drivers * Eliminate RGB_DIRTY/BACKLIT_DIRTY * Fix avr i2c_master error handling * Fix i2c_slave addressing * Remove unneeded timeout on i2c_stop() * Fix RGB I2C transfers * Remove incorrect comment
* Simplify split_common Code significantly (#4772)James Churchill2019-01-171-105/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Eliminate separate slave loop Both master and slave run the standard keyboard_task main loop now. * Refactor i2c/serial specific code Simplify some of the preprocessor mess by using common function names. * Fix missing #endif * Move direct pin mapping support from miniaxe to split_common For boards with more pins than sense--sorry, switches. * Reordering and reformatting only * Don't run matrix_scan_quantum on slave side * Clean up the offset/slaveOffset calculations * Cut undebounced matrix size in half * Refactor debouncing * Minor fixups * Split split_common transport and debounce code into their own files Can now be replaced with custom versions per keyboard using CUSTOM_TRANSPORT = yes and CUSTOM_DEBOUNCE = yes * Refactor debounce for non-split keyboards too * Update handwired/xealous to build using new split_common * Fix debounce breaking basic test * Dodgy method to allow a split kb to only include one of i2c/serial SPLIT_TRANSPORT = serial or SPLIT_TRANSPORT = i2c will include only that driver code in the binary. SPLIT_TRANSPORT = custom (or anything else) will include neither, the keyboard must supply it's own code if SPLIT_TRANSPORT is not defined then the original behaviour (include both avr i2c and serial code) is maintained. This could be better but it would require explicitly updating all the existing split keyboards. * Enable LTO to get lets_split/sockets under the line * Add docs for SPLIT_TRANSPORT, CUSTOM_MATRIX, CUSTOM_DEBOUNCE * Remove avr-specific sei() from split matrix_setup Not needed now that slave doesn't have a separate main loop. Both sides (on avr) call sei() in lufa's main() after exiting keyboard_setup(). * Fix QUANTUM_LIB_SRC references and simplify SPLIT_TRANSPORT. * Add comments and fix formatting.
* Add explicit eeprom include in split_commonJames Churchill2019-01-041-0/+4
| | | | Fixes builds that set EE_HANDS.
* Convert split_common to use generic GPIO apiJames Churchill2019-01-041-12/+3
|
* Fix Split Common Split_util.c typoDrashna Jaelre2018-12-281-1/+1
|
* Update split keyboard docs (#4735)Danny2018-12-281-2/+1
| | | | | | * Remove unused I2C_MASTER_RIGHT setting * Update documentation about split keyboard options
* Replace serial.c of quantum/split_common/ (#4669)Takeshi ISHII2018-12-241-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add provisional Helix implementation to test the quantum/split_common. * copy keyboards/helix/serial.[ch] to quantum/split_common/ * Make serial.c a pure driver. Remove buffer name and buffer size from serial.c. They should be placed in the caller(matrix.c, split_utils.c). * remove quantum/split_common/serial_backward_compatibility.h * Changed array serial_master_buffer to structure serial_m2s_buffer. * Changed array serial_slave_buffer to structure serial_s2m_buffer. * Change keyboards/miniaxe/matrix.c I also made changes to quantum/split_comon/matrix.c to keyboards/miniaxe/matrix.c. Note: I contacted @ka2hiro, creator of miniaxe, and I got permission to change keyboards/miniaxe/matrix.c. * update history comment in quantum/split_common/serial.c * Revert "Add provisional Helix implementation to test the quantum/split_common." This reverts commit 168c82ef82c88e79979d9796bab9cc819cc2f685. * fix keyboards/miniaxe/matrix.c, quantum/split_common/matrix.c avr-gcc 4.9.[23] report error. avr-gcc 5.4.0, avr-gcc 7.3.0 pass. It is funny. * update comment quantum/split_common/serial.c * Reserve RGBLIGHT_SPLIT macro in quantum/split_common
* Remove old declarationDrashna Jaelre2018-11-021-1/+0
| | | Co-Authored-By: nooges <nooges@users.noreply.github.com>
* Move disable JTAG code from `keyboard_init` to `keyboard_setup`Danny Nguyen2018-11-021-14/+0
| | | | This way all split keyboards are using that code instead of just those using split_common with the fix
* Add pointer(?) to disable_JTAG to prevent compiler errors (#4310)Drashna Jaelre2018-10-311-6/+7
|
* Added JTAG disable code to the split_common (#4309)That-Canadian2018-10-311-0/+14
| | | | | Added JTAG disable code to the split_common slave code since the slave never calls keyboard_init(). In the future the slave should likely be modified to call keyboard_init() in some way, but without calling any of the unnecessary USB initialization code.