Commit Graph

12 Commits

Author SHA1 Message Date
Pete Johanson
0820991901 fix(studio): Properly return complete keymap from RPC (#2696)
Ensure the set active physical layout RPC returns the full keymap
details including the available layers.
2024-12-06 18:10:58 -05:00
Peter Johanson
ea1a09bf99 fix: Optimize layout changes by doing runtime mapping
* To avoid tons of migration, extra flash writes, etc, we keep
  the keymaps and settings using a key position index that's tied
  to the stock layout, and at runtime mapping key positions as
  needed.
2024-10-18 15:30:13 -06:00
Pete Johanson
dab4b2cdf3 fix(studio): Reduce stack usage. (#2547)
* Imply nanopb setting for reduced stack usage.
2024-10-10 12:49:51 -04:00
Peter Johanson
29b39f2b9f feat: A few enhancements to our RPC messages.
* More fine grained status reporting when saving changes. Needed to we
  can notify the client if we've got errors saving settings due to
  running out of space, etc.
* Return the max layer name lenght in the keymap payload, for the UI to
  leverage.
2024-10-03 15:10:58 -06:00
Peter Johanson
5d4b6df6a7 feat(studio): Log entry into all RPC. 2024-09-25 17:46:50 -06:00
Peter Johanson
21e1b2acad feat: Add RPC thread analysis support. 2024-09-25 17:46:50 -06:00
Peter Johanson
1baf18d671 chore: Better errno formatting in logs. 2024-09-19 01:15:13 -06:00
Peter Johanson
6ae07d222a feat: Bit of extra studio keymap logging. 2024-09-18 13:08:35 -06:00
Maxime Vincent
67d595f29f pre-commit: re-format using clang-format hook (v18.1.8) 2024-09-13 16:04:26 -06:00
Peter Johanson
5176fbea6a fix: Locking fix for RPC subsystem. 2024-09-05 12:22:08 -06:00
Peter Johanson
c8c19598a7 feat(keymap): Add binding get/set, layer movement
* Add keymap API for getting/setting a bindings
  in keymap layers.
* Add layer move support via intemediary ordering array.
* Add settings storage for keymap changes.
2024-09-05 12:22:08 -06:00
Peter Johanson
feda96eb40 feat(studio): Initial RPC infrastructure and subsystems.
* UART and BLE/GATT transports for a protobuf encoded RPC
  request/response protocol.
* Custom framing protocol is used to frame a give message.
* Requests/responses are divided into major "subsystems" which
  handle requests and create response messages.
* Notification support, including mapping local events to RPC
  notifications by a given subsystem.
* Meta responses for "no response" and "unlock needed".
* Initial basic lock state support in a new core section, and allow specifying
  if a given RPC callback requires unlocked state or not.
* Add behavior subsystem with full metadata support and examples of
  using callback to serialize a repeated field without extra stack space needed.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-08-15 11:45:18 -06:00