39 std::atomic<const ProcessImage*>
image{
nullptr};
116 return image.load(std::memory_order_acquire) !=
nullptr &&
117 lastWkc.load(std::memory_order_relaxed) >=
expectedWkc.load(std::memory_order_relaxed);
127 std::optional<std::vector<uint8_t>>
readPdo(uint16_t slavePosition, uint16_t index,
A lock-free circular recorder of the raw process image, one record per RT cycle.
Definition process_data_ring.h:42
uint8_t subindex
Definition esi_entry.cc:283
Definition bus_health_source.h:7
Fixed-capacity byte buffer for one direction of the process image.
Definition process_image.h:25
Control plane: unpublishes the image and waits out the RT cycle already in flight.
Definition process_data.h:93
const ProcessImage * previous
The image that was published, or nullptr if none was.
Definition process_data.h:95
bool drained
Definition process_data.h:99
The live process-data runtime: the published image, the cross-thread exchange buffers,...
Definition process_data.h:36
ProcessBuffer inScratch
Definition process_data.h:50
std::atomic< int > lastWkc
Definition process_data.h:63
std::atomic< const ProcessImage * > image
Definition process_data.h:39
void resumeCycle(const ProcessImage *previous)
Control plane: republishes previous, letting RT work resume.
Definition device_manager.cc:561
PauseResult pauseCycle()
Definition device_manager.cc:529
bool isOutputMapped(uint16_t slavePosition, uint16_t index, uint8_t subindex) const
Whether an object is output-mapped in the published image, and so driven cyclically.
Definition device_manager.cc:1302
std::atomic< uint64_t > shortWkcCycles
Definition process_data.h:77
bool healthy() const
True when an image is published and the last working counter meets the expectation.
Definition process_data.h:115
std::atomic< int > expectedWkc
Definition process_data.h:64
std::vector< std::shared_ptr< const ProcessImage > > generations
Definition process_data.h:42
ProcessBuffer outScratch
Definition process_data.h:49
std::atomic< uint64_t > lastShortWkcNs
Definition process_data.h:79
std::atomic< uint64_t > firstShortWkcNs
Definition process_data.h:78
std::atomic< int > inCycle
Definition process_data.h:60
ProcessDataRing ring
Definition process_data.h:47
std::optional< std::vector< uint8_t > > readPdo(uint16_t slavePosition, uint16_t index, uint8_t subindex) const
Reads a PDO-mapped object's current bytes from the live image. Lock-free.
Definition device_manager.cc:1261
The whole bus's process-data layout, resolved to absolute positions.
Definition process_image.h:69