Commit Graph

25 Commits

Author SHA1 Message Date
Allen Hill 2c85305c0d Finish Pico/PIO phy layer
Assisted-by: Claude Code (Opus 5)
2026-09-20 15:08:11 -07:00
Allen Hill 8a47b5b776 Refactor peripheral/bus/phy APIs (prep for pico/PIO)
- Refactor PHY to be higher-level with a field focus (controller/peripheral address,
  control byte, etc)
  - Phy layer is now device address aware (ACK's automatically) (Hardens
    previously ~implicit design to only support emulating one AVCLAN
    unit per mockingboard build)
- Redesign `phy_active` => `phy_frame_pending` (to allow
  asynchronous/buffered frame reads on pico) and embed within
  Peripheral::read
- Add `deafen` function: like mute, but also ignore incoming messages (i.e.
  don't receive/process at all). Makes `Bus::is_active` always return
  `false`.
- Add debug bus driving functions

Assisted-by: Claude Code (Opus 5)
2026-09-20 15:07:42 -07:00
Allen Hill e30dbc501d initial build system tweaks for pico hardware 2026-09-03 12:50:00 -07:00
Allen Hill f45a0f5e92 Shorten time to next phy_active check (early continue) 2026-08-13 16:25:50 -07:00
Allen Hill 994759dd39 Free up some ram 2026-08-13 16:24:55 -07:00
Allen Hill 7871e92dbe Fix Debug builds 2026-07-31 17:53:31 -07:00
Allen Hill ae539e27f6 Fix some overflow behavior when reading input msgs 2026-07-23 12:41:00 -07:00
Allen Hill 5208e083f3 Redesign (simplify) top-level avclan interface to use expected/nullable unique_ptr
- Peripheral::read/send now return `expected<unique_ptr<Frame>, Error>`
for a unified success/error interface.
- Peripheral::route returns `expected<unique_ptr<Frame>, Error>` to
distinguish intent: (intentional) non-response vs unable to respond
- Other functions with optional message semantics (handle,poll,react)
return a unique_ptr whose ownership-state indicates response intent
(i.e. send new message)

Bundled necessary changes:
- Switch Frame allocation from global to local (enabled via member
  function new/delete)
- Add new header-library tl::expected to shim avr-libstdcpp

Unrelated: Defensive `continue` added after `route`, to reduce Bus
activity check latency

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 14:47:47 -07:00
Allen Hill 200a225add Unify frame metadata setting (addrs and owning_device) 2026-07-16 13:35:25 -07:00
Allen Hill 2ed6066609 Fix miscellaneous bugs identified by Claude
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 13:15:59 -07:00
Allen Hill cd11501074 Minor reorganization 2026-07-08 09:42:02 -07:00
Allen Hill e50bde197d Complete the switch to jnk0le uart lib
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 12:49:01 -07:00
Allen Hill 9fd8c5636e Finalize C <=> C++ interface 2026-07-06 19:39:49 -07:00
Allen Hill 7ceed80128 Expose Bus mute via Peripheral 2026-07-06 17:13:05 -07:00
Allen Hill b538e07577 Establish the Lua dissector action/device/etc tables as authoritative
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 16:53:13 -07:00
Allen Hill 554fca0582 Shift Device/Action enums to avclan.h 2026-07-06 15:50:09 -07:00
Allen Hill 25e425a601 Remove unused header 2026-07-06 14:42:30 -07:00
Allen Hill 82cbb126a9 Fix (centralize) setting of controller/peripheral addrs 2026-07-06 13:05:58 -07:00
Allen Hill 6e4812e6b8 fixup dev refs 2026-07-06 11:29:49 -07:00
Allen Hill e878a61313 Port Frame object to C++ 2026-07-05 19:35:58 -07:00
Allen Hill 66bbf8639e Parameterise Peripheral by its Devices and add CDChanger as one 2026-06-27 10:29:34 -07:00
Allen Hill d98cc8acad Add C++ Bus class for the physical layer interface 2026-06-25 20:40:10 -07:00
Allen Hill 67ba8e774c fix some clang-tidy warnings 2026-06-25 18:17:09 -07:00
Allen Hill 1877bb0658 Add C++ Peripheral class 2026-06-25 18:16:38 -07:00
Allen Hill 02b370dd06 Port Queue to C++
Some knock-on changes to keep a simple design:
- Bake the data array into AVCLAN_frame_t
- Bundle the response/reaction with AVCLAN_frame_t
    - (Needed to maintain correct/simple ownership semantics with the
      cache and outgoing/incoming queues)
- Switch status frame update ticks to use a regular
  cache-originating/owned frame
2026-06-25 14:28:19 -07:00