getIface() constants added

This commit is contained in:
ilia-sheremet
2015-06-13 20:15:45 +02:00
parent 3784484b16
commit bad7123b7d
6 changed files with 39 additions and 4 deletions
+12
View File
@@ -85,6 +85,17 @@ struct UAVCAN_EXPORT CanFilterConfig
{
uint32_t id;
uint32_t mask;
//bool operator == (const CanFilterConfig&) const;
bool operator==(const CanFilterConfig& rhs) const
{
return rhs.id == id && rhs.mask == mask;
}
CanFilterConfig()
: id(0)
, mask(0)
{ }
};
/**
@@ -167,6 +178,7 @@ public:
* Returns an interface by index, or null pointer if the index is out of range.
*/
virtual ICanIface* getIface(uint8_t iface_index) = 0;
virtual const ICanIface* getIface(uint8_t iface_index) const = 0;
/**
* Total number of available CAN interfaces.
+11 -1
View File
@@ -14,7 +14,8 @@
#include <set>
#include <queue>
#include "../transport/can/can.hpp"
#include <uavcan/util/method_binder.hpp>
#include <uavcan/node/subscriber.hpp>
struct TestNode : public uavcan::INode
{
@@ -74,6 +75,15 @@ struct PairableCanDriver : public uavcan::ICanDriver, public uavcan::ICanIface
return NULL;
}
virtual const uavcan::ICanIface* getIface(uavcan::uint8_t iface_index) const
{
if (iface_index == 0)
{
return this;
}
return NULL;
}
virtual uavcan::uint8_t getNumIfaces() const { return 1; }
virtual uavcan::int16_t select(uavcan::CanSelectMasks& inout_masks, uavcan::MonotonicTime blocking_deadline)
+3 -2
View File
@@ -150,9 +150,9 @@ public:
// cppcheck-suppress unusedFunction
// cppcheck-suppress functionConst
virtual uavcan::int16_t configureFilters(const uavcan::CanFilterConfig*, uavcan::uint16_t) { return -1; }
virtual uavcan::int16_t configureFilters(const uavcan::CanFilterConfig*, uavcan::uint16_t) { return 0; }
// cppcheck-suppress unusedFunction
virtual uavcan::uint16_t getNumFilters() const { return 0; }
virtual uavcan::uint16_t getNumFilters() const { return 4; } // decrease number of HW_filters from 9 to 4
virtual uavcan::uint64_t getErrorCount() const { return num_errors; }
};
@@ -232,6 +232,7 @@ public:
}
virtual uavcan::ICanIface* getIface(uavcan::uint8_t iface_index) { return &ifaces.at(iface_index); }
virtual const uavcan::ICanIface* getIface(uavcan::uint8_t iface_index) const { return &ifaces.at(iface_index); }
virtual uavcan::uint8_t getNumIfaces() const { return uavcan::uint8_t(ifaces.size()); }
};
@@ -601,6 +601,11 @@ public:
{
return (iface_index >= num_ifaces_) ? nullptr : static_cast<SocketCanIface*>(ifaces_[iface_index]);
}
const SocketCanIface* getIface(std::uint8_t iface_index) const override
{
return (iface_index >= num_ifaces_) ? nullptr : static_cast<const SocketCanIface*>(ifaces_[iface_index]);
}
std::uint8_t getNumIfaces() const override { return num_ifaces_; }
@@ -48,7 +48,7 @@ public:
uavcan::CanIOFlags flags);
virtual uavcan::int16_t receive(uavcan::CanFrame& out_frame, uavcan::MonotonicTime& out_ts_monotonic,
uavcan::UtcTime& out_ts_utc, uavcan::CanIOFlags& out_flags);
uavcan::UtcTime& out_ts_utc, uavcan::CanIOFlags& out_flags);
virtual uavcan::int16_t select(uavcan::CanSelectMasks& inout_masks, uavcan::MonotonicTime blocking_deadline);
@@ -61,6 +61,8 @@ public:
virtual uavcan::ICanIface* getIface(uavcan::uint8_t iface_index);
virtual const uavcan::ICanIface* getIface(uavcan::uint8_t iface_index) const;
virtual uavcan::uint8_t getNumIfaces() const;
};
@@ -348,6 +348,11 @@ uavcan::ICanIface* CanDriver::getIface(uavcan::uint8_t iface_index)
return (iface_index == 0) ? this : NULL;
}
const uavcan::ICanIface* CanDriver::getIface(uavcan::uint8_t iface_index) const
{
return (iface_index == 0) ? this : NULL;
}
uavcan::uint8_t CanDriver::getNumIfaces() const
{
return 1;