123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #pragma once
- #include <uavcan/driver/can.hpp>
- namespace uavcan_lpc11c24
- {
- class CanDriver
- : public uavcan::ICanDriver
- , public uavcan::ICanIface
- , uavcan::Noncopyable
- {
- static CanDriver self;
- CanDriver() { }
- public:
-
- static CanDriver& instance() { return self; }
-
- static uavcan::uint32_t detectBitRate(void (*idle_callback)() = nullptr);
-
- int init(uavcan::uint32_t bitrate);
- bool hasReadyRx() const;
- bool hasEmptyTx() const;
-
- bool hadActivity();
-
- uavcan::uint32_t getRxQueueOverflowCount() const;
-
- bool isInBusOffState() const;
- uavcan::int16_t send(const uavcan::CanFrame& frame,
- uavcan::MonotonicTime tx_deadline,
- uavcan::CanIOFlags flags) override;
- uavcan::int16_t receive(uavcan::CanFrame& out_frame,
- uavcan::MonotonicTime& out_ts_monotonic,
- uavcan::UtcTime& out_ts_utc,
- uavcan::CanIOFlags& out_flags) override;
- uavcan::int16_t select(uavcan::CanSelectMasks& inout_masks,
- const uavcan::CanFrame* (&)[uavcan::MaxCanIfaces],
- uavcan::MonotonicTime blocking_deadline) override;
- uavcan::int16_t configureFilters(const uavcan::CanFilterConfig* filter_configs,
- uavcan::uint16_t num_configs) override;
- uavcan::uint64_t getErrorCount() const override;
- uavcan::uint16_t getNumFilters() const override;
- uavcan::ICanIface* getIface(uavcan::uint8_t iface_index) override;
- uavcan::uint8_t getNumIfaces() const override;
- };
- }
|