127 Commits (e1307cc3a71e8f23c6f6c337764d6c854da009a6)

Author SHA1 Message Date
jack 9c6942ea40
Remove `config.h` include from quantum files (#19817) 3 years ago
Drashna Jaelre b585ece5ef
Add Split support for Haptic feedback (#19203) 3 years ago
Dasky c255174cf3
Implement split comms watchdog (#18599) 3 years ago
Stefan Kerkmann c76d2074b6
[Bug] Fix ST7565 handler deadlock (#18609) 3 years ago
Stefan Kerkmann 56f7b34289
[Core] rewrite locking in split transaction handlers (#18417) 3 years ago
Dasky e1aed8da08
Move fake EE_HANDS (#18352) 3 years ago
Stefan Kerkmann ed9bdcbc36
[Core] guard RPC invocation by checking RPC info against crc checksum (#17840) 3 years ago
Dasky 62eaec52e0
Init eeconfig before reading handedness (#17256) 4 years ago
Dasky 85b3b98570
Move SPLIT_HAND_PIN setup to split_pre_init (#17271)
* 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>
4 years ago
Dasky af02baae78
Allow larger SPLIT_USB_TIMEOUT with default SPLIT_USB_TIMEOUT_POLL (#17272)
* Switch SPLIT_USB_DETECT loop to uint16_t

* Add assertion
4 years ago
Stefan Kerkmann 7712a286dc
[Core] Use a mutex guard for split shared memory (#16647) 4 years ago
Nick Brassel 2f6751e48a
Asymmetric encoders, encoder tests. (#16068) 4 years ago
QMK Bot 63646e8906
Format code according to conventions (#16322) 4 years ago
Stefan Kerkmann be59e8af2b
Deprecate split transactions status field (#16023) 4 years ago
Dasky 7b31fc54df
Enable a default task throttle for split pointing. (#15925) 4 years ago
QMK Bot 5fcdff9935
Format code according to conventions (#15693) 4 years ago
Dasky 4fe6f3cd7a
Fix split pointing for analog joystick (#15691)
Co-authored-by: Nick Brassel <nick@tzarc.org>
4 years ago
Drashna Jaelre c86baf3ece
[Core] Fix bug and code regression for Split Common (#15603) 4 years ago
Dasky 7f7364c559
[Core] Split support for pointing devices. (#15304)
* 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>
4 years ago
Drashna Jaelre 4d0dd1eab7
[Bug] Revert Assymmetrical Split Encoder support (#12090) (#15311)
* Revert "fix broken macro in transport.h (#15239)"

This reverts commit 06f18e22d9.

* Revert "Rework encoders to enable asymmetric split keyboards (#12090)"

This reverts commit 32215d5bff.
4 years ago
Balz Guenat 06f18e22d9
fix broken macro in transport.h (#15239) 4 years ago
Balz Guenat 32215d5bff
Rework encoders to enable asymmetric split keyboards (#12090)
Co-authored-by: Balz Guenat <balz.guenat@siemens.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
4 years ago
Joel Challis 92385e30cd
Manually format develop (#15003) 4 years ago
Xelus22 4e1c5887c5
[Core] Refactor OLED to allow easy addition of other types (#13454)
* 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>
4 years ago
Joakim Tufvegren 0ae20e7457
Make solo half of split keyboards (more) usable. (#13523)
* 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>
4 years ago
Drashna Jaelre f56c202fb3
Fix ifdefs for OLED split sync code (#14017) 4 years ago
Drashna Jaelre 488aaa0980
Enable sync of OLED/ST7565 display on/off state on Splits (#13542)
* 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>
4 years ago
Nick Brassel 65e3760853
Fix compilation issue. (#13926) 4 years ago
Joel Challis 567da49ed0
Avoid LTO conficts on arm_atsam (#13676) 4 years ago
Drashna Jaelre ccc0b23a75
Unify matrix for split common and regular matrix (#13330) 4 years ago
Jameson Thatcher 550d9253b0
Allow invert of SPLIT_HAND_PIN logic (#13433)
* 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>
4 years ago
Drashna Jaelre 3ab805fc67
Add support for NO_PIN to all matrix types (#12238)
Co-authored-by: Nick Brassel <nick@tzarc.org>
4 years ago
Stefan Kerkmann 04bc74d8f5
Switch split_common to CRC subsystem (#13418) 4 years ago
Nick Brassel 172e6a7030
Extensible split data sync (#11930)
* 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.
5 years ago
Nick Brassel f287597c19
Use single memcmp to determine if matrix changed. (#13064)
* 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.
5 years ago
Nick Brassel e5d3e5a989
Add weak refs on reading rows/cols. (#13062) 5 years ago
James Young 7d1194de01
run: qmk cformat --core-only 5 years ago
Michael Stapelberg 82aa9ad4a5
matrix: wait for row signal to go HIGH for every row (#12945)
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.
5 years ago
Joakim Tufvegren cbdc3fb81b
Fix spelling mistake regarding LED Matrix in split_common. (#12888) 5 years ago
github-actions[bot] f5b6bef4b3
[CI] Format code according to conventions (#12772)
Co-authored-by: QMK Bot <hello@qmk.fm>
5 years ago
XScorpion2 3c2e69af79
Fixing transport's led/rgb matrix suspend state logic (#12770) 5 years ago
github-actions[bot] 15ff1927db
[CI] Format code according to conventions (#12650)
Co-authored-by: QMK Bot <hello@qmk.fm>
5 years ago
Ryan d6ab908272
LED Matrix: Split (#12633) 5 years ago
XScorpion2 ff41c22fdc
Adding keyboard level weak function for slave matrix scan (#12317) 5 years ago
github-actions[bot] d950b97115
Format code according to conventions (#12088)
Co-authored-by: QMK Bot <hello@qmk.fm>
5 years ago
XScorpion2 cde2859a65
Split RGB Matrix (#11055)
* Split RGB Matrix

* Suspend State sync for rgb matrix
5 years ago
Joel Challis 5ba4391cf2
Refactor of USB code within split_common (#11890)
* Initial refactor of usb code within split_common

* Add headers

* Correct disable condition

* Format

* Align func name
5 years ago
github-actions[bot] b0e161e33d
Format code according to conventions (#11928)
Co-authored-by: QMK Bot <hello@qmk.fm>
5 years ago
XScorpion2 d1806a26e4
Split transport mirror (#11046)
* Split transport mirror support

* Updated RGB Matrix to respond to electrical events instead of key events

* split matrix slave fix
5 years ago
QMK Bot 3a98bd75c8 Merge remote-tracking branch 'origin/master' into develop 5 years ago