Skip to content

Add multiACE inventory provider and live source synchronization #1

Description

@physicsG

Summary

Implement an open multiACE material-source provider for Snapmaker Orca that reads inventory and live state from the printer-side service and exposes every connected ACE unit and slot through the existing AMS-oriented machine model.

Scope

  • Add a provider abstraction for filament-source inventory.
  • Implement an initial Moonraker/HTTP/WebSocket-backed multiACE provider.
  • Parse versioned capabilities and inventory payloads.
  • Support multiple ACE units and stable per-slot source IDs.
  • Track RFID metadata, material, subtype, brand, color, remaining quantity, source state, dryer/humidity state, reachable physical heads, and currently loaded head.
  • Support manual refresh and live event updates.
  • Preserve offline/manual operation when no printer is connected.
  • Integrate with the existing Ams, AmsTray, and MachineObject::amsList model where practical.

Proposed code areas

src/slic3r/GUI/multiace/MultiAceClient.hpp
src/slic3r/GUI/multiace/MultiAceClient.cpp
src/slic3r/GUI/multiace/MultiAceSourceProvider.hpp
src/slic3r/GUI/multiace/MultiAceSourceProvider.cpp
src/slic3r/GUI/DeviceManager.hpp
src/slic3r/GUI/DeviceManager.cpp

Acceptance criteria

  • All slots from all connected ACE units are visible.
  • A source has a stable structured ID such as multiace:<unit>:<slot>.
  • Live updates do not silently change project filament definitions.
  • RFID refresh updates source metadata and marks stale routes for reconciliation.
  • Empty, loading, unloading, error, offline, and ready states are represented.
  • Optional capabilities degrade cleanly when absent.
  • Disconnect/reconnect does not corrupt inventory state.
  • Unit tests cover parser fields, malformed payloads, missing capabilities, and source-state transitions.
  • Integration tests use a fake provider and recorded REST/WebSocket fixtures.

Dependencies

This is a foundation for routing, native G-code generation, timing, and optimizer work.

Design references

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions