Simulate domain state
This commit is contained in:
parent
4795be145a
commit
013aafc329
|
|
@ -26,9 +26,9 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
#include <unordered_set>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
|
|
||||||
static std::vector<size_t> getPermutationVector(size_t count);
|
static std::vector<size_t> getPermutationVector(size_t count);
|
||||||
|
|
||||||
size_t pdo::sizeInBytes() const
|
size_t pdo::sizeInBytes() const
|
||||||
|
|
@ -61,10 +61,13 @@ ec_domain::ec_domain(rtipc *rtipc, const char *prefix) : rt_group(rtipc_create_g
|
||||||
|
|
||||||
int ec_domain::activate(int domain_id)
|
int ec_domain::activate(int domain_id)
|
||||||
{
|
{
|
||||||
|
std::unordered_set<uint32_t> slaves;
|
||||||
|
|
||||||
connected.resize(mapped_pdos.size());
|
connected.resize(mapped_pdos.size());
|
||||||
size_t idx = 0;
|
size_t idx = 0;
|
||||||
for (const auto &pdo : mapped_pdos)
|
for (const auto &pdo : mapped_pdos)
|
||||||
{
|
{
|
||||||
|
slaves.insert(pdo.slave_address.getCombined());
|
||||||
void *rt_pdo = nullptr;
|
void *rt_pdo = nullptr;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
const auto fmt = snprintf(buf, sizeof(buf), "%s/%d/%08X/%04X", prefix, domain_id, pdo.slave_address.getCombined(), pdo.pdo_index);
|
const auto fmt = snprintf(buf, sizeof(buf), "%s/%d/%08X/%04X", prefix, domain_id, pdo.slave_address.getCombined(), pdo.pdo_index);
|
||||||
|
|
@ -95,6 +98,7 @@ int ec_domain::activate(int domain_id)
|
||||||
++idx;
|
++idx;
|
||||||
}
|
}
|
||||||
activated_ = true;
|
activated_ = true;
|
||||||
|
numSlaves = slaves.size();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -153,6 +157,9 @@ int ecrt_domain_state(
|
||||||
information. */
|
information. */
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
state->working_counter = domain->getNumSlaves();
|
||||||
|
state->redundancy_active = 0;
|
||||||
|
state->wc_state = EC_WC_COMPLETE;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -165,6 +165,7 @@ private:
|
||||||
rtipc_group *rt_group;
|
rtipc_group *rt_group;
|
||||||
const char *prefix;
|
const char *prefix;
|
||||||
bool activated_ = false;
|
bool activated_ = false;
|
||||||
|
size_t numSlaves = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ec_domain(struct rtipc *rtipc, const char *prefix);
|
explicit ec_domain(struct rtipc *rtipc, const char *prefix);
|
||||||
|
|
@ -180,6 +181,8 @@ public:
|
||||||
int process();
|
int process();
|
||||||
int queue();
|
int queue();
|
||||||
|
|
||||||
|
size_t getNumSlaves() const { return numSlaves; }
|
||||||
|
|
||||||
ssize_t map(ec_slave_config const &config, unsigned int syncManager,
|
ssize_t map(ec_slave_config const &config, unsigned int syncManager,
|
||||||
uint16_t pdo_index);
|
uint16_t pdo_index);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue