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

View File

@ -16,10 +16,8 @@
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
@ -38,6 +36,13 @@ enum AnonMassagePresence {WithAnonMsg,NoAnonMsg};
*/
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
* TypeID, TransferID (RequestNotResponse - for service types, ServiceNotMessage - for all types of messages).
@ -51,7 +56,7 @@ class CanAcceptanceFilterConfigurator
* HW filters.
* DefaultAnonMsgMask = 00000 00000000 00000000 11111111
* 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 DefaultFilterServiceMask = 0x7F80;
@ -68,7 +73,7 @@ class CanAcceptanceFilterConfigurator
/**
* 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
@ -93,10 +98,10 @@ public:
/**
* This method invokes loadInputConfiguration(), computeConfiguration() and applyConfiguration() consequently, so
* 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.
*/
int configureFilters(AnonMassagePresence mode = WithAnonMsg);
int configureFilters(AnonMessagePresence mode = WithAnonMsg);
/**
* Returns the configuration computed with computeConfiguration().

View File

@ -14,7 +14,7 @@ const unsigned CanAcceptanceFilterConfigurator::DefaultFilterServiceMask;
const unsigned CanAcceptanceFilterConfigurator::DefaultAnonMsgMask;
const unsigned CanAcceptanceFilterConfigurator::DefaultAnonMsgID;
int16_t CanAcceptanceFilterConfigurator::loadInputConfiguration(AnonMassagePresence load_mode)
int16_t CanAcceptanceFilterConfigurator::loadInputConfiguration(AnonMessagePresence load_mode)
{
multiset_configs_.clear();
@ -149,7 +149,7 @@ int16_t CanAcceptanceFilterConfigurator::applyConfiguration(void)
return 0;
}
int CanAcceptanceFilterConfigurator::configureFilters(AnonMassagePresence mode)
int CanAcceptanceFilterConfigurator::configureFilters(AnonMessagePresence mode)
{
if (getNumFilters() == 0)
{

View File

@ -156,10 +156,11 @@ TEST(CanAcceptanceFilter, Basic_test)
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)
{
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();
configure_array_size = configure_array_2.getSize();