1 #ifndef H_CAN_INTERFACE 2 #define H_CAN_INTERFACE 8 #include <boost/system/error_code.hpp> 18 static const unsigned int ID_MASK = (1u << 29)-1;
20 static const unsigned int RTR_MASK = (1u << 30);
33 [[deprecated(
"use key() instead")]]
explicit operator unsigned int()
const {
return key(); }
44 Header(
unsigned int i,
bool extended,
bool rtr,
bool error)
64 std::array<value_type, 8>
data;
94 State() : driver_state(closed), internal_error(0) {}
95 virtual bool isReady()
const {
return driver_state == ready; }
108 void operator()(
const U & u)
const {
if(callable_) callable_(u); }
127 return this->createStateListener(std::bind(callable, inst, std::placeholders::_1));
148 virtual bool send(
const Frame & msg) = 0;
158 return this->createMsgListener(std::bind(callable, inst, std::placeholders::_1));
170 return this->createMsgListener(header, std::bind(callable, inst, std::placeholders::_1));
180 [[deprecated(
"provide settings explicitly")]]
virtual bool init(
const std::string &device,
bool loopback) = 0;
191 ROSCANOPEN_ERROR(
"socketcan_interface",
"Driver does not support custom settings");
192 #pragma GCC diagnostic push 193 #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194 return init(device, loopback);
195 #pragma GCC diagnostic pop 203 virtual bool recover() = 0;
208 virtual State getState() = 0;
215 virtual void shutdown() = 0;
217 virtual bool translateError(
unsigned int internal_error, std::string & str) = 0;
219 virtual bool doesLoopBack()
const = 0;
221 virtual void run() = 0;
StateInterface::StateListenerConstSharedPtr StateListenerConstSharedPtr
std::array< value_type, 8 > data
array for 8 data bytes with bounds checking
StateListener::ListenerConstSharedPtr StateListenerConstSharedPtr
std::shared_ptr< DriverInterface > DriverInterfaceSharedPtr
std::shared_ptr< const Listener > ListenerConstSharedPtr
void run(class_loader::ClassLoader *loader)
#define ROSCANOPEN_ERROR(name, args)
std::function< void(const Frame &)> FrameFunc
Frame(const Header &h, unsigned char l=0)
StateListenerConstSharedPtr createStateListenerM(Instance inst, Callable callable)
FrameListenerConstSharedPtr createMsgListenerM(const Frame::Header &header, Instance inst, Callable callable)
FrameListener::ListenerConstSharedPtr FrameListenerConstSharedPtr
std::shared_ptr< CommInterface > CommInterfaceSharedPtr
Listener(const T &callable)
std::function< void(const State &)> StateFunc
virtual bool isReady() const
virtual ~StateInterface()
CommInterface::FrameListenerConstSharedPtr FrameListenerConstSharedPtr
virtual bool init(const std::string &device, bool loopback, SettingsConstSharedPtr settings)
std::shared_ptr< const Settings > SettingsConstSharedPtr
void operator()(const U &u) const
virtual ~DriverInterface()
const value_type * c_array() const
unsigned int internal_error
driver specific error
unsigned char dlc
len of data
std::shared_ptr< StateInterface > StateInterfaceSharedPtr
FrameListenerConstSharedPtr createMsgListenerM(Instance inst, Callable callable)
boost::system::error_code error_code
device access error