// copyright (C) 2026 Allen Hill // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "avclan.hpp" #include "avclan_defs.h" #include #include namespace avclan { template concept Device = requires { std::integral_constant{}; } && requires(T dev, const AVCLAN_frame_t *in, AVCLAN_frame_t *out, detail::Error::Send err) { dev.init(); dev.handle(in, out); dev.enable(out); dev.react(out, err); { dev.pending() } -> std::convertible_to; dev.resolvepending(); dev.emit(out); }; } // namespace avclan