-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Feature: Full-Duplex Wired Split #2766
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature: Full-Duplex Wired Split #2766
Conversation
ffd742c to
47b7001
Compare
45d95af to
be7ded8
Compare
3fea122 to
6baa960
Compare
|
Related: #1110. |
64ce23f to
acd57d2
Compare
nmunnich
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couple of notes on the first commit. Haven't dealt with the split ble code bits enough to be a trustworthy reviewer there, but those bits look fine at a glance.
Not looked at the second commit at all.
| } | ||
| } | ||
|
|
||
| int zmk_split_central_invoke_behavior(uint8_t source, struct zmk_behavior_binding *binding, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| int zmk_split_central_invoke_behavior(uint8_t source, struct zmk_behavior_binding *binding, | |
| int zmk_split_central_invoke_behavior(uint8_t target, struct zmk_behavior_binding *binding, |
Minor suggestion, but I just remembered thinking the other day that this name for this variable (and similar variables in functions around the transport) would be nicer. Feel free to ignore and hit resolve.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm on the fence on this one... It requires just a tad bit more mental load to understand source/target are the same thing, just from different perspectives, but I can see where you are coming from. Leaving unresolved for now to sleep on it. Thanks.
b365a19 to
c10e8fe
Compare
|
Ok, taking this out of draft at this point, since it's gotten a fair amount of use and testing by myself and a few others. I just pushed some of the initial docs work as well, which needs review still. |
nmunnich
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor comments on the docs.
f165bbd to
c72ec43
Compare
nmunnich
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Last pair of minor queries from me. I think it's unlikely I'll notice any further things from looking at it more.
I will say I don't think this should be merged until we've had another release, which I consider #2729 to be a prerequisite for.
paulshir
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Leaving comments here as opposed to discord as it's easier to point to the issues. Tested and debugged the latest changes in polling mode with a rpi pico. Events and commands working with the changes I commented on here.
c00c7c6 to
4843ce1
Compare
Extract central/peripheral code to allow for plugging in alternate transports, instead of tying all split logic to BT.
* Depends on full-duplex hardware UART for communication. * Supports all existing central commands/peripheral events, including sensors/inputs from peripherals. * Only one wired split peripheral supported (for now) * Relies on chosen `zmk,split-uart` referencing the UART device.
Migrate split to its own dedicated config file, and add details on wired split config. Co-authored-by: Nicolas Munnich <[email protected]>
Move the system work queue stack size override on RP2040 ouf of a `ZMK_BLE` conditional so it is properly applied generally for that SoC.
8636724 to
6f7f599
Compare
|
This broke my unibody board. Had to fall back to 5ba7e26 for it to work again. It was not even working over USB. Got some errors in |
Could you provide some details such as a repo link so that we can investigate? |
|
I would love to but I pushed some "private" stuff which I first have to get rid of somehow. |
Can you share any high level details? What controller, etc? |
|
Ok. Fixed it. I am using a Nicenano V2 and a cirque trackpad. But I removed all it's (trackpad) config when I looked for the problem. So here's the repo which works when using a commit before this one: https://github.com/FearlessSpiff/raveniung-zmk-config Also what gets built with the actions is not working. So that's why I used a build locally. And here is what dmesg told me: |
Just to be sure I understand here... Did this work on latest
I assume it's also not advertising/connecting over BT? |
No, it didn't. Sorry to be unclear. I also needed to go back from this change to make it work.
Correct. Looked for it but there is no BT advertisement. |
|
@FearlessSpiff Reproduced here, and I just opened #2884 to fix this. Will merge as soon as the tests are all green. Sorry for the disruption. |
|
Saw that #2884 got merged and can confirm it is working again for me. Thanks. |
commit 905323e Author: 4pplet <[email protected]> Date: Wed Apr 2 20:58:52 2025 +0200 Update cyber60_rev_b.dts commit 8f6beeb Author: 4pplet <[email protected]> Date: Wed Apr 2 20:35:59 2025 +0200 remove archives commit fd86837 Author: 4pplet <[email protected]> Date: Wed Apr 2 20:35:13 2025 +0200 studio support and new default behaviour - adding studio support for rev b-e - updating led and buzzer code changing default behaviour: - sleep on by default (45min) - buzzer disabled by default commit acd53d4 Merge: a3c49e4 1c76bcb Author: 4pplet <[email protected]> Date: Sun Mar 30 10:07:14 2025 +0200 Merge remote-tracking branch 'upstream/main' into rev_e commit a3c49e4 Merge: 214e1e4 d733fba Author: 4pplet <[email protected]> Date: Fri Mar 28 15:09:28 2025 +0100 Merge remote-tracking branch 'upstream/main' into rev_e commit 1c76bcb Author: Nicolas Munnich <[email protected]> Date: Tue Mar 25 19:20:50 2025 +0100 blog: Add meeting notes from February (zmkfirmware#2890) Co-authored-by: Cem Aksoylar <[email protected]> commit d733fba Author: Cem Aksoylar <[email protected]> Date: Tue Mar 25 06:35:38 2025 -0700 docs: Document missing user-defined input processors (zmkfirmware#2895) commit 49f86f7 Author: Nicolas Munnich <[email protected]> Date: Mon Mar 24 02:12:50 2025 +0100 docs: Update hold-tap page (zmkfirmware#2888) Co-authored-by: Cem Aksoylar <[email protected]> commit 5bb39ec Author: Pete Johanson <[email protected]> Date: Tue Mar 18 16:49:59 2025 -0600 fix(split): Conditionally build all split code (zmkfirmware#2884) Don't add the split CMake subdirectory unless the feature is enabled. commit 147c340 Author: Pete Johanson <[email protected]> Date: Tue Mar 18 00:48:32 2025 -0600 Feature: Full-Duplex Wired Split (zmkfirmware#2766) refactor(split): Refactor split code for extension Extract central/peripheral code to allow for plugging in alternate transports, instead of tying all split logic to BT. feat(split): Add full-duplex wired split support * Depends on full-duplex hardware UART for communication. * Supports all existing central commands/peripheral events, including sensors/inputs from peripherals. * Only one wired split peripheral supported (for now) * Relies on chosen `zmk,split-uart` referencing the UART device. docs: Add wired split config docs. Migrate split to its own dedicated config file, and add details on wired split config. Co-authored-by: Nicolas Munnich <[email protected]> fix: Properly override stack size on RP2040 Move the system work queue stack size override on RP2040 ouf of a `ZMK_BLE` conditional so it is properly applied generally for that SoC. --------- Co-authored-by: Nicolas Munnich <[email protected]> commit 5ba7e26 Author: Genteure <[email protected]> Date: Tue Mar 18 06:15:57 2025 +0800 docs: update name of XIAO boards (zmkfirmware#2869) commit bffbccc Author: Cem Aksoylar <[email protected]> Date: Sun Mar 16 20:47:42 2025 -0700 chore(deps): npm update on docs (zmkfirmware#2878) commit b366df8 Author: Cem Aksoylar <[email protected]> Date: Sun Mar 16 20:14:48 2025 -0700 docs: Fix powershell tab in user setup (zmkfirmware#2879) commit 4da89bd Author: JJGadgets <[email protected]> Date: Sat Mar 15 14:25:01 2025 +0800 fix(ci): pin tj-actions/changed-files due to compromise (zmkfirmware#2874) Ideally it's be swapped out for an alternative but for now this is to mitigate. commit 214e1e4 Author: 4pplet <[email protected]> Date: Tue Mar 11 22:39:10 2025 +0100 initial commit commit 5d99204 Author: idesignstuff <[email protected]> Date: Mon Mar 10 23:52:30 2025 -0500 Update container.mdx for clarity about ZMK repo folder location (zmkfirmware#2868) commit f5a838b Author: Cem Aksoylar <[email protected]> Date: Sun Mar 9 14:59:57 2025 -0700 docs: Fix wakeup-source property location for composite kscan (zmkfirmware#2861) commit eb170c9 Author: Allister MacLeod <[email protected]> Date: Fri Mar 7 21:22:25 2025 -0500 feat(shields): Add physical layouts for tester_xiao and tester_pro_micro (zmkfirmware#2852) feat(shields): Add tester_xiao layouts Added two layouts for the XIAO tester shield: - Keys arranged to match the XIAO pinout, viewed from the front - Single row of eleven keys These layouts are abstractions since the tester_xiao shield may be used in a situation where the "keys" are actually jumper wires on a breadboard or the like. feat(shields): Add tester_pro_micro layouts Added two layouts for the Pro Micro tester shield: - Keys arranged to match the Pro Micro pinout, viewed from the front - Single row of eighteen keys commit 241ff39 Author: Pete Johanson <[email protected]> Date: Sun Mar 2 07:45:12 2025 -0700 chore(main): release 0.2.1 (zmkfirmware#2851) commit f20e6ea Author: Pete Johanson <[email protected]> Date: Sun Mar 2 06:49:07 2025 -0700 fix(behaviors): Proper comma separated device list (zmkfirmware#2850) Properly generate the comma separated list of devs in caps word/ key repeat. commit fadafc7 Author: Pete Johanson <[email protected]> Date: Sat Mar 1 11:29:58 2025 -0700 chore(main): release 0.2.0 (zmkfirmware#2693) commit 1e3e62c Author: Pete Johanson <[email protected]> Date: Fri Feb 28 18:37:55 2025 -0700 fix(pointing): Temp layer threading protection. (zmkfirmware#2729) fix(pointing): Temp layer threading protection. Ensure all layer operations occur on the system work queue thread. Fixes: zmkfirmware#2719 fix(pointing): Handle layer events to disable events Make the temp layer input processor propely handle layers getting deactivated externally before the temp layer timeout. Co-authored-by: Nicolas Munnich <[email protected]> commit 21f54e7 Author: Pete Johanson <[email protected]> Date: Wed Feb 26 15:54:29 2025 -0700 refactor(behaviors): Remove unneeded init funcs. (zmkfirmware#2843) Initialization functions are optional for Zephyr drivers, so remove all our superfluous empty init functions. commit 7186528 Author: Cem Aksoylar <[email protected]> Date: Wed Feb 26 14:54:08 2025 -0800 fix(behaviors): Make multiple sticky keys work on same key position (zmkfirmware#2758) test(behaviors): Add same position sticky key tests fix(behaviors): Make multiple sticky keys work on same key position refactor(behaviors): Remove unused param2 in sticky keys commit 9406d39 Author: Pete Johanson <[email protected]> Date: Wed Feb 26 15:01:04 2025 -0700 refactor(behaviors): Small caps word RAM reduction. (zmkfirmware#2842) Don't use lazy initialized in-memory array of devices. commit 82216be Author: Nicolas Munnich <[email protected]> Date: Wed Feb 26 21:16:50 2025 +0100 chore: Add a deprecation warning to config/boards (zmkfirmware#2811) commit ea267b0 Author: Xudong Zheng <[email protected]> Date: Wed Feb 26 13:29:30 2025 -0500 fix(ble): enforce maximum length for dynamic device name (zmkfirmware#2784) commit 2fe55c4 Author: Pete Johanson <[email protected]> Date: Wed Feb 26 11:17:23 2025 -0700 refactor(behaviors): Minor RAM usage tweaks (zmkfirmware#2839) Follow up cleanup of some config structs not marked as const. commit d2eb6de Author: Cem Aksoylar <[email protected]> Date: Tue Feb 25 16:31:57 2025 -0800 docs: Add query strings to tabs (zmkfirmware#2840) commit 209085d Author: Pete Johanson <[email protected]> Date: Tue Feb 25 12:12:27 2025 -0700 refactor(behaviors): Add max-held tap-dance config (zmkfirmware#2838) refactor(behaviors): Add max-held tap-dance config Add new `CONFIG_ZMK_BEHAVIOR_TAP_DANCE_MAX_HELD` config for reducing RAM usage on more constrained devices. refactor(behaviors): Move defaults to Kconfig.defaults commit 18d0d2f Author: Pete Johanson <[email protected]> Date: Tue Feb 25 11:38:51 2025 -0700 refactor(combos): Reduce combo RAM usage (zmkfirmware#2837) Properly mark combo configs as `const` so they are place in flash, not RAM. commit 8575fc8 Author: Cem Aksoylar <[email protected]> Date: Mon Feb 17 15:59:54 2025 -0800 docs: Inline simple physical layout info in new shield guide (zmkfirmware#2827) docs: Inline simple physical layouts in new shield guide docs: Fix broken anchor in module creation docs: Make physical layout transform label consistent and comment commit 9d234cb Author: Cem Aksoylar <[email protected]> Date: Mon Feb 17 11:55:42 2025 -0800 docs: Make default keymap in new shield guide complete (zmkfirmware#2825) Co-authored-by: Nicolas Munnich <[email protected]> commit e8ec9b6 Author: Nicolas Munnich <[email protected]> Date: Mon Feb 17 20:44:42 2025 +0100 docs: Add "planned: import/export keymap" to the studio features page (zmkfirmware#2821) commit d0d3134 Author: Nicolas Munnich <[email protected]> Date: Mon Feb 17 10:16:36 2025 +0100 docs: Improved some links to modules (zmkfirmware#2822) Co-authored-by: Cem Aksoylar <[email protected]> commit 5926269 Author: Nicolas Munnich <[email protected]> Date: Mon Feb 17 05:12:31 2025 +0100 docs: Add KiCAD note and titles to physical layouts page (zmkfirmware#2823) docs: Note that Nick Coutsos' tool can import from KiCAD docs: Add titles to some code blocks in physical layouts commit eeb8a00 Author: Nicolas Munnich <[email protected]> Date: Sat Feb 15 01:32:18 2025 +0100 docs: Add a page on module creation (zmkfirmware#2456) Co-authored-by: Cem Aksoylar <[email protected]>
refactor(split): Refactor split code for extension Extract central/peripheral code to allow for plugging in alternate transports, instead of tying all split logic to BT. feat(split): Add full-duplex wired split support * Depends on full-duplex hardware UART for communication. * Supports all existing central commands/peripheral events, including sensors/inputs from peripherals. * Only one wired split peripheral supported (for now) * Relies on chosen `zmk,split-uart` referencing the UART device. docs: Add wired split config docs. Migrate split to its own dedicated config file, and add details on wired split config. Co-authored-by: Nicolas Munnich <[email protected]> fix: Properly override stack size on RP2040 Move the system work queue stack size override on RP2040 ouf of a `ZMK_BLE` conditional so it is properly applied generally for that SoC. --------- Co-authored-by: Nicolas Munnich <[email protected]>
refactor(split): Refactor split code for extension Extract central/peripheral code to allow for plugging in alternate transports, instead of tying all split logic to BT. feat(split): Add full-duplex wired split support * Depends on full-duplex hardware UART for communication. * Supports all existing central commands/peripheral events, including sensors/inputs from peripherals. * Only one wired split peripheral supported (for now) * Relies on chosen `zmk,split-uart` referencing the UART device. docs: Add wired split config docs. Migrate split to its own dedicated config file, and add details on wired split config. Co-authored-by: Nicolas Munnich <[email protected]> fix: Properly override stack size on RP2040 Move the system work queue stack size override on RP2040 ouf of a `ZMK_BLE` conditional so it is properly applied generally for that SoC. --------- Co-authored-by: Nicolas Munnich <[email protected]>
Opening this as a draft for now, pending more extensive testing, documentation, etc.I've tested this with a very basic ZMK Uno setup, but nothing extensive dailying on a keyboard, etc.Preview docs: https://deploy-preview-2766--zmk.netlify.app/docs/config/split#wired-splits
Has gotten a fair amount of testing at this point, so moving this out of Draft.
PR check-list
Other To-Dos