#pragma once #include #include namespace cms { struct CanSnapshot { std::array positions{{-1,-1,-1,-1}}; // LF, RF, LR, RR double age_ms{-1}; bool valid{false}; std::string source{"hardware"},side{"left"}; }; class CanInput { public: explicit CanInput(bool enabled); ~CanInput(); CanInput(CanInput const&)=delete; CanInput& operator=(CanInput const&)=delete; CanSnapshot snapshot(std::string const& side,double timeoutMs) const; private: bool opened_{}; }; std::string activeDoor(CanSnapshot const& state); }