From 950e1e8094d5a99cf70a3dffd31d255175259dc3 Mon Sep 17 00:00:00 2001 From: Allen Hill Date: Sun, 5 Jul 2026 19:37:40 -0700 Subject: [PATCH] Shift some bus functions definitions out of the header --- src/avclan/bus.cc | 16 ++++++++++++++++ src/avclan/bus.hpp | 16 ++-------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/avclan/bus.cc b/src/avclan/bus.cc index 2f93442..b500765 100644 --- a/src/avclan/bus.cc +++ b/src/avclan/bus.cc @@ -41,6 +41,10 @@ constexpr int ADDR_WIDTH = 12; } namespace avclan { + +Bus::Handle::Handle() { AVCLAN_stopEvent(); } +Bus::Handle::~Handle() { AVCLAN_startEvent(); } + void Bus::init() { AVCLAN_busInit(); }; void Bus::mute(bool mute) { AVCLAN_muteDevice(mute); }; bool Bus::is_muted() const { return AVCLAN_ismuted(); }; @@ -291,4 +295,16 @@ auto Bus::Handle::readstartbit() -> Read { void Bus::Handle::send_ACK() { AVCLAN_sendbit_ACK(); }; uint8_t Bus::Handle::read_ACK() { return AVCLAN_readbit_ACK(); }; +template <> inline avclan_bit_t Bus::Handle::sendbits<8>(uint8_t bits) { + return AVCLAN_sendbyte(&bits); +}; +template <> inline avclan_bit_t Bus::Handle::sendbits<1>(uint8_t bits) { + const avclan_bit_t bit{static_cast(bits & 1U)}; + AVCLAN_sendbit(bit); + return bit; +}; +template <> inline avclan_bit_t Bus::Handle::readbits<8>(uint8_t *bits) { + return static_cast(AVCLAN_readbyte(bits)); +}; + } // namespace avclan diff --git a/src/avclan/bus.hpp b/src/avclan/bus.hpp index 2b4c86d..980ddec 100644 --- a/src/avclan/bus.hpp +++ b/src/avclan/bus.hpp @@ -71,11 +71,11 @@ public: }; class Bus::Handle { - Handle() { AVCLAN_stopEvent(); } + Handle(); friend Bus; public: - ~Handle() { AVCLAN_startEvent(); } + ~Handle(); Handle(const Handle &) = delete; Handle(Handle &&) = delete; using Error = detail::Error; @@ -159,16 +159,4 @@ private: }; }; -template <> inline avclan_bit_t Bus::Handle::sendbits<8>(uint8_t bits) { - return AVCLAN_sendbyte(&bits); -}; -template <> inline avclan_bit_t Bus::Handle::sendbits<1>(uint8_t bits) { - const avclan_bit_t bit{static_cast(bits & 1U)}; - AVCLAN_sendbit(bit); - return bit; -}; -template <> inline avclan_bit_t Bus::Handle::readbits<8>(uint8_t *bits) { - return static_cast(AVCLAN_readbyte(bits)); -}; - } // namespace avclan