4#include <condition_variable>
52 void acquire(uint16_t devicePosition, uint16_t index, uint8_t subindex,
53 std::chrono::milliseconds period);
57 void release(uint16_t devicePosition, uint16_t index, uint8_t subindex);
77 uint16_t devicePosition = 0;
81 std::chrono::milliseconds period{};
82 std::chrono::steady_clock::time_point nextDue{};
83 std::chrono::milliseconds backoff{};
87 static uint64_t makeKey(uint16_t devicePosition, uint16_t index, uint8_t subindex);
93 DeviceManager& deviceManager_;
94 mutable std::mutex mutex_;
95 std::condition_variable cv_;
96 std::map<uint64_t, Entry> entries_;
97 bool running_ =
false;
Owns the fieldbus driver and node collection, and drives PDO exchange.
Definition device_manager.h:183
Keeps a reference-counted set of SDO parameters fresh by polling them off-thread.
Definition parameter_refresher.h:31
ParameterRefresher & operator=(const ParameterRefresher &)=delete
ParameterRefresher(const ParameterRefresher &)=delete
void stop()
Stops and joins the background polling thread. Idempotent.
Definition parameter_refresher.cc:90
void pollDue()
Polls every tracked object whose schedule is due as of now, advancing each one's next-due time (and a...
Definition parameter_refresher.cc:109
std::size_t trackedCount() const
Number of distinct objects currently tracked (reference count > 0). For tests/UI.
Definition parameter_refresher.cc:104
void start()
Starts the background polling thread. Idempotent.
Definition parameter_refresher.cc:80
void release(uint16_t devicePosition, uint16_t index, uint8_t subindex)
Drops a reference previously taken with acquire. The object stops being polled when its last referenc...
Definition parameter_refresher.cc:66
void acquire(uint16_t devicePosition, uint16_t index, uint8_t subindex, std::chrono::milliseconds period)
Adds a reference to keeping (devicePosition, index, subindex) fresh.
Definition parameter_refresher.cc:41
~ParameterRefresher()
Stops the thread (if running) and joins it.
Definition parameter_refresher.cc:34
Definition http_server.h:16