Acceptance filter update for new transport layer corrections

This commit is contained in:
ilia-sheremet
2015-07-25 20:25:06 +01:00
parent 5fa5a4f365
commit b204cb36d8
3 changed files with 18 additions and 12 deletions
@@ -16,10 +16,8 @@
namespace uavcan namespace uavcan
{ {
/**
* These arguments defines whether acceptance filter configuration has anonymous massages or not
*/
enum AnonMassagePresence {WithAnonMsg,NoAnonMsg};
/** /**
* This class configures hardware acceptance filters (if this feature is present on the particular CAN driver) to * This class configures hardware acceptance filters (if this feature is present on the particular CAN driver) to
@@ -38,6 +36,13 @@ enum AnonMassagePresence {WithAnonMsg,NoAnonMsg};
*/ */
class CanAcceptanceFilterConfigurator class CanAcceptanceFilterConfigurator
{ {
public:
/**
* These arguments defines whether acceptance filter configuration has anonymous messages or not
*/
enum AnonMessagePresence {WithAnonMsg,NoAnonMsg};
private:
/** /**
* Below constants based on UAVCAN transport layer specification. Masks and ID's depends on message * Below constants based on UAVCAN transport layer specification. Masks and ID's depends on message
* TypeID, TransferID (RequestNotResponse - for service types, ServiceNotMessage - for all types of messages). * TypeID, TransferID (RequestNotResponse - for service types, ServiceNotMessage - for all types of messages).
@@ -51,7 +56,7 @@ class CanAcceptanceFilterConfigurator
* HW filters. * HW filters.
* DefaultAnonMsgMask = 00000 00000000 00000000 11111111 * DefaultAnonMsgMask = 00000 00000000 00000000 11111111
* DefaultAnonMsgID = 00000 00000000 00000000 00000000, by default the config is added to accept all anonymous * DefaultAnonMsgID = 00000 00000000 00000000 00000000, by default the config is added to accept all anonymous
* frames. In case there are no anonymous massages, invoke configureFilters(NoAnonMsg). * frames. In case there are no anonymous messages, invoke configureFilters(NoAnonMsg).
*/ */
static const unsigned DefaultFilterMsgMask = 0xFFFF80; static const unsigned DefaultFilterMsgMask = 0xFFFF80;
static const unsigned DefaultFilterServiceMask = 0x7F80; static const unsigned DefaultFilterServiceMask = 0x7F80;
@@ -68,7 +73,7 @@ class CanAcceptanceFilterConfigurator
/** /**
* Fills the multiset_configs_ to proceed it with computeConfiguration() * Fills the multiset_configs_ to proceed it with computeConfiguration()
*/ */
int16_t loadInputConfiguration(AnonMassagePresence load_mode); int16_t loadInputConfiguration(AnonMessagePresence load_mode);
/** /**
* This method merges several listeners's filter configurations by predetermined algorithm * This method merges several listeners's filter configurations by predetermined algorithm
@@ -93,10 +98,10 @@ public:
/** /**
* This method invokes loadInputConfiguration(), computeConfiguration() and applyConfiguration() consequently, so * This method invokes loadInputConfiguration(), computeConfiguration() and applyConfiguration() consequently, so
* that optimal acceptance filter configuration will be computed and loaded through CanDriver::configureFilters() * that optimal acceptance filter configuration will be computed and loaded through CanDriver::configureFilters()
* @return 0 = success, negative for error. Input argument defines the presence of anonymous massages * @return 0 = success, negative for error. Input argument defines the presence of anonymous messages
* WithAnonMsg(default)/NoAnonMsg. * WithAnonMsg(default)/NoAnonMsg.
*/ */
int configureFilters(AnonMassagePresence mode = WithAnonMsg); int configureFilters(AnonMessagePresence mode = WithAnonMsg);
/** /**
* Returns the configuration computed with computeConfiguration(). * Returns the configuration computed with computeConfiguration().
@@ -14,7 +14,7 @@ const unsigned CanAcceptanceFilterConfigurator::DefaultFilterServiceMask;
const unsigned CanAcceptanceFilterConfigurator::DefaultAnonMsgMask; const unsigned CanAcceptanceFilterConfigurator::DefaultAnonMsgMask;
const unsigned CanAcceptanceFilterConfigurator::DefaultAnonMsgID; const unsigned CanAcceptanceFilterConfigurator::DefaultAnonMsgID;
int16_t CanAcceptanceFilterConfigurator::loadInputConfiguration(AnonMassagePresence load_mode) int16_t CanAcceptanceFilterConfigurator::loadInputConfiguration(AnonMessagePresence load_mode)
{ {
multiset_configs_.clear(); multiset_configs_.clear();
@@ -149,7 +149,7 @@ int16_t CanAcceptanceFilterConfigurator::applyConfiguration(void)
return 0; return 0;
} }
int CanAcceptanceFilterConfigurator::configureFilters(AnonMassagePresence mode) int CanAcceptanceFilterConfigurator::configureFilters(AnonMessagePresence mode)
{ {
if (getNumFilters() == 0) if (getNumFilters() == 0)
{ {
@@ -156,10 +156,11 @@ TEST(CanAcceptanceFilter, Basic_test)
uavcan::CanAcceptanceFilterConfigurator no_anon_test_confiruration(node); uavcan::CanAcceptanceFilterConfigurator no_anon_test_confiruration(node);
configure_filters_assert = no_anon_test_confiruration.configureFilters(uavcan::NoAnonMsg); configure_filters_assert = no_anon_test_confiruration.configureFilters
(uavcan::CanAcceptanceFilterConfigurator::NoAnonMsg);
if (configure_filters_assert == 0) if (configure_filters_assert == 0)
{ {
std::cout << "Filters are configured without anonymous configuration..."<< std::endl; std::cout << "Filters are configured without anonymous configuration..." << std::endl;
} }
const auto& configure_array_2 = no_anon_test_confiruration.getConfiguration(); const auto& configure_array_2 = no_anon_test_confiruration.getConfiguration();
configure_array_size = configure_array_2.getSize(); configure_array_size = configure_array_2.getSize();