summaryrefslogtreecommitdiffstats
path: root/quantum/split_common
Commit message (Collapse)AuthorAgeFilesLines
* 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
* [Core] Use a mutex guard for split shared memory (#16647)Stefan Kerkmann2022-04-191-9/+8
|
* Asymmetric encoders, encoder tests. (#16068)Nick Brassel2022-03-082-4/+3
|
* Format code according to conventions (#16322)QMK Bot2022-02-126-109/+133
|
* Deprecate split transactions status field (#16023)Stefan Kerkmann2022-01-263-6/+4
|
* Enable a default task throttle for split pointing. (#15925)Dasky2022-01-261-1/+1
|
* Format code according to conventions (#15693)QMK Bot2021-12-311-1/+1
|
* Fix split pointing for analog joystick (#15691)Dasky2021-12-311-2/+4
| | | Co-authored-by: Nick Brassel <nick@tzarc.org>
* [Core] Fix bug and code regression for Split Common (#15603)Drashna Jaelre2021-12-281-1/+0
|
* [Core] Split support for pointing devices. (#15304)Dasky2021-12-273-0/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Draft implementation * formatting * fix combined buttons * remove pimoroni throttle * sync pointing on a throttle loop with checksum * no longer used * doh Co-authored-by: Drashna Jaelre <drashna@live.com> * switch pimoroni to a cpi equivalent * add cpi support * allow user modification of seperate mouse reports * a little tidy up * add *_RIGHT defines. * docs * doxygen comments * basic changelog * clean up pimoroni * small doc fixes * Update docs/feature_pointing_device.md Co-authored-by: Drashna Jaelre <drashna@live.com> * performance tweak if side has usb * Don't run init funtions on wrong side * renamed some variables for consistency * fix pimoroni typos * Clamp instead of OR * Promote combined values to uint16_t * Update pointing_device.c Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Nick Brassel <nick@tzarc.org>
* [Bug] Revert Assymmetrical Split Encoder support (#12090) (#15311)Drashna Jaelre2021-11-271-6/+1
| | | | | | | | | * Revert "fix broken macro in transport.h (#15239)" This reverts commit 06f18e22d9aff0afa4dce101a6a1b2cae5511365. * Revert "Rework encoders to enable asymmetric split keyboards (#12090)" This reverts commit 32215d5bff52262542a2f8d2a221b0303f02c019.
* fix broken macro in transport.h (#15239)Balz Guenat2021-11-201-1/+2
|
* Rework encoders to enable asymmetric split keyboards (#12090)Balz Guenat2021-11-201-1/+5
| | | | Co-authored-by: Balz Guenat <balz.guenat@siemens.com> Co-authored-by: Nick Brassel <nick@tzarc.org>
* Manually format develop (#15003)Joel Challis2021-11-011-24/+24
|
* [Core] Refactor OLED to allow easy addition of other types (#13454)Xelus222021-08-243-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * add docs * core changes * update keyboards to new OLED * updated users to new OLED * update layouts to new OLED * fixup docs * drashna's suggestion * fix up docs * new keyboards with oled * core split changes * remaining keyboard files * Fix The Helix keyboards oled options * reflect develop Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: mtei <2170248+mtei@users.noreply.github.com>
* Make solo half of split keyboards (more) usable. (#13523)Joakim Tufvegren2021-08-224-52/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* Fix ifdefs for OLED split sync code (#14017)Drashna Jaelre2021-08-153-6/+6
|
* Enable sync of OLED/ST7565 display on/off state on Splits (#13542)Drashna Jaelre2021-08-153-21/+105
| | | | | | | | | * Enable sync of OLED/ST7565 display on/off state on Splits * Only send if states are not matched Co-authored-by: Nick Brassel <nick@tzarc.org> Co-authored-by: Nick Brassel <nick@tzarc.org>
* Fix compilation issue. (#13926)Nick Brassel2021-08-091-1/+1
|
* Avoid LTO conficts on arm_atsam (#13676)Joel Challis2021-07-241-1/+1
|
* Unify matrix for split common and regular matrix (#13330)Drashna Jaelre2021-07-111-340/+0
|
* 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>
* Add support for NO_PIN to all matrix types (#12238)Drashna Jaelre2021-07-031-14/+52
| | | Co-authored-by: Nick Brassel <nick@tzarc.org>
* Switch split_common to CRC subsystem (#13418)Stefan Kerkmann2021-07-021-16/+1
|
* Extensible split data sync (#11930)Nick Brassel2021-06-187-420/+1062
| | | | | | | | | | | | | | | | | | | | | | | | * Extensible split data sync capability through transactions. - Split common transport has been split up between the transport layer and data layer. - Split "transactions" model used, with convergence between I2C and serial data definitions. - Slave matrix "generation count" is used to determine if the full slave matrix needs to be retrieved. - Encoders get the same "generation count" treatment. - All other blocks of data are synchronised when a change is detected. - All transmissions have a globally-configurable deadline before a transmission is forced (`FORCED_SYNC_THROTTLE_MS`, default 100ms). - Added atomicity for all core-synced data, preventing partial updates - Added retries to AVR i2c_master's i2c_start, to minimise the number of failed transactions when interrupts are disabled on the slave due to atomicity checks. - Some keyboards have had slight modifications made in order to ensure that they still build due to firmware size restrictions. * Fixup LED_MATRIX compile. * Parameterise ERROR_DISCONNECT_COUNT.
* Use single memcmp to determine if matrix changed. (#13064)Nick Brassel2021-06-091-39/+30
| | | | | | | * Use memcmp to determine if matrix changed. * Firmware size issues. * Add documentation for the lack of need of MATRIX_ROW_PINS/MATRIX_COL_PINS, when overriding low-level matrix functions.
* Add weak refs on reading rows/cols. (#13062)Nick Brassel2021-06-011-9/+9
|
* run: qmk cformat --core-onlyJames Young2021-05-291-17/+17
|
* matrix: wait for row signal to go HIGH for every row (#12945)Michael Stapelberg2021-05-201-6/+2
| | | | | | | | | | | | | | | | I noticed this discrepancy (last row of the matrix treated differently than the others) when optimizing the input latency of my keyboard controller, see also https://michael.stapelberg.ch/posts/2021-05-08-keyboard-input-latency-qmk-kinesis/ Before this commit, when tuning the delays I noticed ghost key presses when pressing the F2 key, which is on the last row of the keyboard matrix: the dead_grave key, which is on the first row of the keyboard matrix, would be incorrectly detected as pressed. After this commit, all keyboard matrix rows are interpreted correctly. I suspect that my setup is more susceptible to this nuance than others because I use GPIO_INPUT_PIN_DELAY=0 and hence don’t have another delay that might mask the problem.
* Fix spelling mistake regarding LED Matrix in split_common. (#12888)Joakim Tufvegren2021-05-141-1/+1
|
* [CI] Format code according to conventions (#12772)github-actions[bot]2021-05-021-1/+1
| | | Co-authored-by: QMK Bot <hello@qmk.fm>
* Fixing transport's led/rgb matrix suspend state logic (#12770)XScorpion22021-05-011-8/+10
|
* [CI] Format code according to conventions (#12650)github-actions[bot]2021-04-221-15/+15
| | | Co-authored-by: QMK Bot <hello@qmk.fm>
* LED Matrix: Split (#12633)Ryan2021-04-221-0/+29
|
* Adding keyboard level weak function for slave matrix scan (#12317)XScorpion22021-03-251-1/+2
|
* Format code according to conventions (#12088)github-actions[bot]2021-03-031-9/+9
| | | Co-authored-by: QMK Bot <hello@qmk.fm>
* Split RGB Matrix (#11055)XScorpion22021-03-031-0/+35
| | | | | * Split RGB Matrix * Suspend State sync for rgb matrix
* 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
* Format code according to conventions (#11928)github-actions[bot]2021-02-161-18/+18
| | | Co-authored-by: QMK Bot <hello@qmk.fm>
* Split transport mirror (#11046)XScorpion22021-02-163-13/+32
| | | | | | | * Split transport mirror support * Updated RGB Matrix to respond to electrical events instead of key events * split matrix slave fix
* Merge remote-tracking branch 'origin/master' into developQMK Bot2021-02-071-1/+1
|\
| * Migrate some tmk_core files to quantum (#11791)Joel Challis2021-02-071-1/+1
| | | | | | | | | | * Migrate some tmk_core files to quantum * Fix build errors
* | `qmk cformat`Nick Brassel2021-01-172-14/+14
| |
* | Keep track of last matrix activity. (#11552)Nick Brassel2021-01-181-8/+22
| | | | | | | | | | Co-authored-by: Dasky <daskygit@users.noreply.github.com> Co-authored-by: Dasky <daskygit@users.noreply.github.com>
* | Revert "Keep track of last matrix activity (#10730)"Nick Brassel2021-01-151-20/+9
| | | | | | | | This reverts commit 79d1db332477963555416d9fff82ecac4399bd52.
* | fix matrix_io_delay() timing in quantum/matrix.c (#9603)Takeshi ISHII2021-01-131-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix matrix_io_delay() timing in quantum/matrix.c * Updated comments explaining the need for matrix_io_delay() in quantum/matrix.c * fix matrix_io_delay() timing in quantum/split_common/matrix.c * Update quantum/matrix.c Co-authored-by: Ryan <fauxpark@gmail.com> * Update quantum/split_common/matrix.c Co-authored-by: Ryan <fauxpark@gmail.com> * Update quantum/matrix.c Co-authored-by: Ryan <fauxpark@gmail.com> * Update quantum/split_common/matrix.c Co-authored-by: Ryan <fauxpark@gmail.com> * add waitOutputPinValid() and wait_cpuclock() into quantum/quantum.h and tmk_core/common/wait.h * add matrix_output_select_delay() and matrix_output_unselect_delay() * fix quantum/matrix_common.c, tmk_core/common/matrix.h * fix tmk_core/common/wait.h * fix quantum/quantum.h, tmk_core/common/wait.h * waitOutputPinValid() rename to waitInputPinDelay() in quantum/quantum.h. * waitOutputPinValid() rename to waitInputPinDelay() in quantum/matrix_common.c * update tmk_core/common/wait.h * update comment in quantum/matrix.c, quantum/split_common/matrix.c * update quantum/quantum.h: Make more margin in the GPIO_INPUT_PIN_DELAY default value. Co-authored-by: Ryan <fauxpark@gmail.com>
* | Keep track of last matrix activity (#10730)Nick Brassel2021-01-121-9/+20
| | | | | | | | | | | | | | * Allow recording of the last matrix activity time, to simplify implementation of display timeouts and the like. * Add requested changes from code review. * Simplify split matrix last changed.
* | Fix duplicate I2C_KEYMAP_START define (#11237)Ryan2020-12-171-2/+1
| |
* | Merge remote-tracking branch 'upstream/master' into developfauxpark2020-12-182-19/+9
|\|