Skip to content
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

Zephyr 3.2 upgrade Beta 3 (202307-2) #19

Closed
wants to merge 56 commits into from
Closed

Conversation

chrisandreae
Copy link
Collaborator

Rebases Glove80's patchset to ZMK as of e65a7e3, PR#1243 as of b47fe6a, and PR#999 as of 433a402.

Katona added 30 commits April 3, 2022 21:54
joelspadin and others added 20 commits June 18, 2023 19:08
Changed the endpoints code to rename the existing endpoint types to
"transport" and add the concept of "endpoint instances". A transport is
the method by which data is sent, while instances allow describing
multiple endpoints that use the same transport (e.g. bluetooth profiles)

Also added new APIs to get the total number of possible endpoint
instances and assign each instance a unique index, which can be used
for tracking separate state for each endpoint in other code files.
In split_central_update_indicators_callback, it seems that the peripheral is
sometimes considered connected before the GATT characteristics have been
discovered. If this is the case, the update_hid_indicators handle will not yet
be set, and must not be written to.
As a counterpart to zmk_battery_state_of_charge()
Based on PR#1140 with several changes as described in this comment: zmkfirmware#1140 (comment)

* Minimize the api changes for bluetooth by keeping
  zmk_hid_get_keyboard_report() and returning the .body like before.
* Keeping the logic about "full" vs "body" entirely within the usb code path.
* The endpoint now calls either zmk_usb_hid_send_keyboard_report() and
  zmk_usb_hid_send_consumer_report() instead of zmk_usb_hid_send_report(...).
    - These functions now internally dispatch on protocol to either
      zmk_hid_get_keyboard_report() or a new function for boot reports
      zmk_hid_get_boot_report().
    - There's a change here from the PR version in the behavior of get_report():
      when in boot protocol, don't include the report id. I believe this is
      correct, in that implicit boot protocol report descriptor does not use
      multiple reports, so any boot protocol report should not include the report
      id field.
* Use a single definition of a boot report, used for regular reports in
  non-6KRO, and for rollover in all branches.
* Handle gaps in the zmk report when producing a boot report in HKRO mode. For
  .example, if it was 8KRO, it would be possible to have the state 0 0 0 0 0 0 0
  17 (by pressing 8 keys, and letting go of the first 7). Copying the first 6
  bytes would not show up the single pressed key.
SOF events were introduced by the boot protocol changes, and required internally
by Zephyr's idle support, but are unused within ZMK itself. Ignore them in the
usb status callback.
Adds Glove80's status indicator using RGB underglow support. Requires ZMK
PR#999 and PR#1243.

The underglow status is able to show layer state, battery levels,
caps/num/scroll-lock, BLE and USB state. The underglow positions selected for
each of these indicators is configured using the new devicetree node
zmk,underglow-indicators, which takes an array of integer LED positions for each
feature.
Disable underglow when battery below 10%, halve brightness when battery below 20%
Adds a Kconfig setting for the default EXT_POWER status at initialization time. Previously it was always initialized to on if no saved value was present.
Provides an entry point that builds and returns a combined LH + RH keyboard
firmware when provided a keymap via a POST body.

Wraps compilation with ccache, and includes a pre-warmed cache of the build in /tmp/ccache.
To maximize chance of a direct cache hit, changes the lambda driver to always build in /tmp/build.

some back of the envelope measurements (2012 xeon e3-1230v2, nixos)
clean build, no cache -> 21.308
clean build, cache -> 7.145
modified keymap, clean build, cache -> 12.127
@chrisandreae chrisandreae force-pushed the zephyr-3-2-20230730 branch 2 times, most recently from 2ce29fd to 8afe735 Compare July 30, 2023 14:03
Ensuring that it can only be run on PRs from the same repository. This means
that it will be run even when the PR doesn't merge, and against the PR head
rather than the merge.
Specifying RHS kconfig will cause both firmware images to be built, which will
take twice as long as a LHS-only build. Clients should take care to only request
a RHS build for kconfig options that affect the peripheral behaviour.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants