31#include <unordered_map>
40enum class CommStatus { Ok, NotImplemented, NotSupported, NameInUse };
60 virtual void Notify(std::shared_ptr<const NavMsg> message) = 0;
73 virtual bool SendMessage(std::shared_ptr<const NavMsg> msg,
74 std::shared_ptr<const NavAddr> addr) = 0;
89 virtual std::pair<CommStatus, std::string>
Clone() {
91 return std::pair<CommStatus, std::string>(CommStatus::NotImplemented,
"");
94 std::string Key()
const {
return NavAddr::BusToString(bus) +
"!@!" +
iface; }
96 const NavAddr::Bus bus;
100 virtual std::unordered_map<std::string, std::string> GetAttributes()
const {
104 std::unordered_map<std::string, std::string> attributes;
108 attributes[
"protocol"] = NavAddr::BusToString(bus);
111 attributes[
"protocol"] = NavAddr::BusToString(bus);
Common interface for all drivers.
virtual void SetListener(DriverListener &l)
Set the entity which will receive incoming data.
const std::string iface
Physical device for 0183, else a unique string.
virtual std::pair< CommStatus, std::string > Clone()
Create a new virtual interface using a new instance of this driver.
Interface for handling incoming messages.
virtual ~DriverListener()=default
Destroy the Driver Listener object.
virtual void Notify(std::shared_ptr< const NavMsg > message)=0
Handle a received message.
virtual void Notify(const AbstractCommDriver &driver)=0
Handle driver status change.
Raw, undecoded messages definitions.
General observable implementation with several specializations.