Simulate domain state

This commit is contained in:
Bjarne von Horn 2024-07-05 11:06:05 +02:00
parent 4795be145a
commit 013aafc329
2 changed files with 11 additions and 1 deletions

View File

@ -26,9 +26,9 @@
#include <sstream>
#include <string>
#include <utility>
#include <unordered_set>
#include <iterator>
static std::vector<size_t> getPermutationVector(size_t count);
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)
{
std::unordered_set<uint32_t> slaves;
connected.resize(mapped_pdos.size());
size_t idx = 0;
for (const auto &pdo : mapped_pdos)
{
slaves.insert(pdo.slave_address.getCombined());
void *rt_pdo = nullptr;
char buf[512];
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;
}
activated_ = true;
numSlaves = slaves.size();
return 0;
}
@ -153,6 +157,9 @@ int ecrt_domain_state(
information. */
)
{
state->working_counter = domain->getNumSlaves();
state->redundancy_active = 0;
state->wc_state = EC_WC_COMPLETE;
return 0;
}

View File

@ -165,6 +165,7 @@ private:
rtipc_group *rt_group;
const char *prefix;
bool activated_ = false;
size_t numSlaves = 0;
public:
explicit ec_domain(struct rtipc *rtipc, const char *prefix);
@ -180,6 +181,8 @@ public:
int process();
int queue();
size_t getNumSlaves() const { return numSlaves; }
ssize_t map(ec_slave_config const &config, unsigned int syncManager,
uint16_t pdo_index);
};