PROFINET IO Controller Stack 1.0.0
Modern C++ implementation of a PROFINET IO Controller stack
Loading...
Searching...
No Matches
profinet::cyclic Namespace Reference

Namespaces

namespace  test
 

Classes

class  CyclicCallbackTests
 Fixture for input callbacks. More...
 
class  CyclicController
 RT_CLASS_1 cyclic data exchange controller. More...
 
class  CyclicControllerConformanceTest
 Test fixture for cyclic controller protocol conformance. More...
 
class  CyclicControllerTestAccess
 Narrow private-access adapter used only by cyclic controller tests. More...
 
class  CyclicDataTests
 Fixture for input data and status access. More...
 
class  CyclicFrameTests
 Fixture for input Ethernet parsing and cycle-counter tracking. More...
 
class  CyclicStateTests
 Fixture for state-transition and lifecycle behavior. More...
 
struct  CyclicStats
 Statistics for cyclic communication. More...
 
struct  CyclicStatsSnapshot
 Copyable snapshot of cyclic communication statistics. More...
 
class  CyclicStatsTests
 Fixture for statistics and snapshots. More...
 
class  CyclicTest
 
class  CyclicTxTests
 Fixture for TX behavior and generated frame validation. More...
 
class  CyclicWatchdogTests
 Fixture for watchdog and RX-loop behavior. More...
 
class  ICyclicController
 Abstract interface for controlling cyclic PROFINET communication. More...
 
class  MockCyclicController
 Google Mock implementation of ICyclicController. More...
 
class  ReceivedIopsTest
 Test fixture for received cyclic input IOPS behavior. More...
 

Enumerations

enum class  CyclicState {
  Idle , Starting , Running , Stopping ,
  Stopped , Fault
}
 Lifecycle state of a CyclicController. More...
 

Functions

std::string ToString (CyclicState state)
 Human-readable name for a CyclicState value.
 
 TEST_F (CyclicTest, CyclicStateToStringCoversAllStates)
 
 TEST_F (CyclicTest, CyclicStatsResetRestoresInitialValues)
 
 TEST_F (CyclicTest, CyclicControllerRejectsNegativeMaxConsecutiveTimeouts)
 
 TEST_F (CyclicTest, CyclicControllerRejectsSub1msCycleTime)
 
 TEST_F (CyclicTest, CyclicControllerConstructsWithSafeCycleTime)
 
 TEST_F (CyclicControllerConformanceTest, UntaggedInputFrameIsAccepted)
 
 TEST_F (CyclicControllerConformanceTest, VlanTaggedInputFrameIsAccepted)
 
 TEST_F (CyclicControllerConformanceTest, NonZeroTransferStatusIsRejected)
 
 TEST_F (CyclicControllerConformanceTest, TxContinuesWhileControllerIsInFault)
 
 TEST_F (CyclicStateTests, StopDoesNotDestroyRxSocketBeforeRxThreadExits)
 
 TEST_F (CyclicStateTests, StopIsIdempotent)
 
 TEST_F (CyclicStateTests, CanStartAgainAfterStop)
 
 TEST_F (CyclicStateTests, ToStringReturnsUnknownForInvalidValue)
 
 TEST_F (CyclicStateTests, TransitionCallsCallbackForStateChange)
 
 TEST_F (CyclicStateTests, TransitionSkipsCallbackForSameState)
 
 TEST_F (CyclicStateTests, TransitionSwallowsCallbackException)
 
 TEST_F (CyclicStateTests, StartRejectsInvalidStartingStates)
 
 TEST_F (CyclicStateTests, StartAcceptsFaultState)
 
 TEST_F (CyclicStateTests, StartAcceptsStoppedState)
 
 TEST_F (CyclicStateTests, StopDoesNothingWhenNotRunning)
 
 TEST_F (CyclicStateTests, StartAndStopCompleteNormalLifecycle)
 
 TEST_F (CyclicStateTests, FailedStartLeavesStoppedState)
 
 TEST_F (CyclicStateTests, FailedStartCanBeRetried)
 
 TEST_F (CyclicStatsTests, AverageCycleTimeReturnsIntegerAverage)
 
 TEST_F (CyclicStatsTests, AverageCycleTimeReturnsZeroWhenNoCycles)
 
 TEST_F (CyclicStatsTests, SnapshotAverageCycleTimeReturnsZeroWhenNoCycles)
 
 TEST_F (CyclicStatsTests, StatsSnapshotCopiesAllFields)
 
 TEST_F (CyclicStatsTests, ResetRestoresInitialValues)
 
 TEST_F (CyclicDataTests, GetInputDataReturnsNulloptForUnknownObject)
 
 TEST_F (CyclicDataTests, GetInputDataReturnsGoodInput)
 
 TEST_F (CyclicDataTests, GetInputDataRejectsBadInputByDefault)
 
 TEST_F (CyclicDataTests, GetInputStatusReturnsNulloptForUnknownObject)
 
 TEST_F (CyclicDataTests, GetInputStatusReturnsReceivedIops)
 
 TEST_F (CyclicDataTests, IsInputGoodReturnsFalseForUnknownObject)
 
 TEST_F (CyclicDataTests, IsInputGoodReturnsTrueForGoodInput)
 
 TEST_F (CyclicDataTests, IsInputGoodReturnsFalseForBadInput)
 
 TEST_F (CyclicDataTests, SetOutputDataAcceptsIdleState)
 
 TEST_F (CyclicDataTests, SetOutputDataRejectsStoppedState)
 
 TEST_F (CyclicDataTests, SetOutputDataRejectsFaultState)
 
 TEST_F (CyclicCallbackTests, InputStatusCallbackRunsOnGoodTransition)
 
 TEST_F (CyclicCallbackTests, InputStatusCallbackSkipsUnchangedStatus)
 
 TEST_F (CyclicCallbackTests, InputStatusCallbackRunsOnBadTransition)
 
 TEST_F (CyclicCallbackTests, InputStatusCallbackSwallowsException)
 
 TEST_F (CyclicCallbackTests, InputDataCallbackRunsForGoodInput)
 
 TEST_F (CyclicCallbackTests, InputDataCallbackSkipsBadInput)
 
 TEST_F (CyclicCallbackTests, InputDataCallbackSkipsEmptyData)
 
 TEST_F (CyclicCallbackTests, InputDataCallbackSwallowsException)
 
 TEST_F (CyclicCallbackTests, TimeoutAndErrorCallbacksCanBeRegistered)
 
 TEST_F (CyclicFrameTests, RejectsTooShortEthernetFrame)
 
 TEST_F (CyclicFrameTests, RejectsUnexpectedEtherType)
 
 TEST_F (CyclicFrameTests, RejectsUnexpectedSourceMac)
 
 TEST_F (CyclicFrameTests, RejectsMalformedRtFrame)
 
 TEST_F (CyclicFrameTests, RejectsUnexpectedFrameId)
 
 TEST_F (CyclicFrameTests, AcceptsVlanTaggedInputFrame)
 
 TEST_F (CyclicFrameTests, RejectsInvalidDataStatus)
 
 TEST_F (CyclicFrameTests, RejectsNonZeroTransferStatus)
 
 TEST_F (CyclicFrameTests, DISABLED_ValidInputRestoresIocsGoodState)
 
 TEST_F (CyclicFrameTests, SkipsObjectWithInvalidIopsOffset)
 
 TEST_F (CyclicFrameTests, SkipsObjectWithInvalidDataRange)
 
 TEST_F (CyclicFrameTests, TrackCycleCounterInitializesOnFirstFrame)
 
 TEST_F (CyclicFrameTests, TrackCycleCounterCountsDuplicate)
 
 TEST_F (CyclicFrameTests, TrackCycleCounterAcceptsExpectedStep)
 
 TEST_F (CyclicFrameTests, TrackCycleCounterCountsForwardGap)
 
 TEST_F (CyclicFrameTests, TrackCycleCounterCountsOutOfOrder)
 
 TEST_F (CyclicFrameTests, TrackCycleCounterHandlesZeroStep)
 
 TEST_F (CyclicWatchdogTests, WatchdogTimeoutUpdatesStatistics)
 
 TEST_F (CyclicWatchdogTests, MonitoringOnlyWatchdogKeepsIocsGood)
 
 TEST_F (CyclicWatchdogTests, WatchdogFaultsAtConfiguredThreshold)
 
 TEST_F (CyclicWatchdogTests, WatchdogDoesNotTransitionWhenAlreadyFaulted)
 
 TEST_F (CyclicWatchdogTests, TimeoutCallbackSwallowsException)
 
 TEST_F (CyclicWatchdogTests, WatchdogDoesNotRepeatBadTransition)
 
 TEST_F (CyclicWatchdogTests, RxLoopProcessesValidFrame)
 
 TEST_F (CyclicWatchdogTests, RxLoopStopsWithoutSocket)
 
 TEST_F (CyclicWatchdogTests, RxLoopReportsSocketException)
 
 TEST_F (CyclicWatchdogTests, RxLoopHandlesWatchdogTimeout)
 
 TEST_F (CyclicTxTests, TxLoopRecordsCycleTiming)
 
 TEST_F (CyclicTxTests, TxCycleSendsFrameAndUpdatesStatistics)
 
 TEST_F (CyclicTxTests, TxCycleSendsInFault)
 
 TEST_F (CyclicTxTests, SendOutputFrameWithoutSocketDoesNotThrow)
 
 TEST_F (CyclicTxTests, SendOutputFrameReportsSocketError)
 
 TEST_F (CyclicTxTests, SendOutputFrameUsesDataStatusOverride)
 
 TEST_F (CyclicTxTests, SendStopFramesGeneratesStopFrameCount)
 
 TEST_F (CyclicTxTests, SendStopFramesWithoutSocketDoesNothing)
 
 TEST_F (CyclicTxTests, SendStopFramesStopsAfterSendErrorCallbackThrows)
 
 TEST_F (CyclicTxTests, SetOutputDataIsReflectedInTransmittedFrame)
 
 TEST_F (CyclicStateTests, CallbackCanBeReplacedWhileRunning)
 
 TEST_F (CyclicStateTests, ClearedCallbackIsNotInvoked)
 
 TEST_F (CyclicStateTests, CallbackMayRequestStopWithoutDeadlock)
 
 TEST_F (ReceivedIopsTest, GoodIopsDeliversInputData)
 
 TEST_F (ReceivedIopsTest, DISABLED_BadIopsWithholdsStaleInputData)
 
 TEST_F (ReceivedIopsTest, StatusCallbackFiresOnlyOnTransitions)
 
 TEST_F (ReceivedIopsTest, InputCallbackSkipsBadData)
 
 TEST_F (ReceivedIopsTest, DISABLED_LowerIopsBitsDoNotAffectGoodState)
 

Variables

constexpr int MIN_CYCLE_MS = 8
 Minimum cycle time (ms) considered reliable.
 
constexpr int RECOMMENDED_CYCLE_MS = 32
 Recommended cycle time (ms).
 
constexpr int DEFAULT_MAX_CONSECUTIVE_TIMEOUTS = 3
 Default number of consecutive watchdog timeouts before transitioning to Fault.
 
constexpr int STOP_FRAME_COUNT = 3
 Number of STOP frames sent during a graceful Stop().
 

Enumeration Type Documentation

◆ CyclicState

enum class profinet::cyclic::CyclicState
strong

Lifecycle state of a CyclicController.

Enumerator
Idle 

Initial state, not yet started.

Starting 

Sockets created, threads launching.

Running 

Active cyclic data exchange.

Stopping 

Graceful shutdown in progress (sending STOP frames).

Stopped 

Fully stopped, threads joined.

Fault 

Communication failure (e.g. consecutive watchdog timeouts).

Definition at line 40 of file cyclic.h.

Function Documentation

◆ TEST_F() [1/93]

profinet::cyclic::TEST_F ( CyclicCallbackTests  ,
InputDataCallbackRunsForGoodInput   
)
Test:
OnInput runs for a GOOD input object and receives the payload.

Definition at line 909 of file test_cyclicMore.cpp.

References controller, and profinet::rt::IOXS_GOOD.

◆ TEST_F() [2/93]

profinet::cyclic::TEST_F ( CyclicCallbackTests  ,
InputDataCallbackSkipsBadInput   
)
Test:
OnInput does not run for a BAD input object.

Definition at line 926 of file test_cyclicMore.cpp.

References controller, and profinet::rt::IOXS_BAD.

◆ TEST_F() [3/93]

profinet::cyclic::TEST_F ( CyclicCallbackTests  ,
InputDataCallbackSkipsEmptyData   
)
Test:
OnInput skips callback delivery when the configured object has zero data bytes.

Definition at line 940 of file test_cyclicMore.cpp.

References controller, profinet::rt::IODataObject::dataLength, profinet::cyclic::CyclicControllerTestAccess::InputObject(), and profinet::rt::IOXS_GOOD.

+ Here is the call graph for this function:

◆ TEST_F() [4/93]

profinet::cyclic::TEST_F ( CyclicCallbackTests  ,
InputDataCallbackSwallowsException   
)
Test:
OnInput swallows application callback exceptions.

Definition at line 955 of file test_cyclicMore.cpp.

References controller, and profinet::rt::IOXS_GOOD.

◆ TEST_F() [5/93]

profinet::cyclic::TEST_F ( CyclicCallbackTests  ,
InputStatusCallbackRunsOnBadTransition   
)
Test:
OnInputStatus runs when the device changes the IOPS value to BAD.

Definition at line 878 of file test_cyclicMore.cpp.

References controller, profinet::rt::IOXS_BAD, and profinet::rt::IOXS_GOOD.

◆ TEST_F() [6/93]

profinet::cyclic::TEST_F ( CyclicCallbackTests  ,
InputStatusCallbackRunsOnGoodTransition   
)
Test:
OnInputStatus runs when the status changes from unknown to GOOD.

Definition at line 846 of file test_cyclicMore.cpp.

References controller, and profinet::rt::IOXS_GOOD.

◆ TEST_F() [7/93]

profinet::cyclic::TEST_F ( CyclicCallbackTests  ,
InputStatusCallbackSkipsUnchangedStatus   
)
Test:
OnInputStatus does not run while the IOPS value remains unchanged.

Definition at line 863 of file test_cyclicMore.cpp.

References controller, and profinet::rt::IOXS_GOOD.

◆ TEST_F() [8/93]

profinet::cyclic::TEST_F ( CyclicCallbackTests  ,
InputStatusCallbackSwallowsException   
)
Test:
OnInputStatus swallows application callback exceptions.

Definition at line 897 of file test_cyclicMore.cpp.

References controller, and profinet::rt::IOXS_GOOD.

◆ TEST_F() [9/93]

profinet::cyclic::TEST_F ( CyclicCallbackTests  ,
TimeoutAndErrorCallbacksCanBeRegistered   
)
Test:
OnTimeout and OnError registrations are accepted without invoking them.

Definition at line 967 of file test_cyclicMore.cpp.

References controller, ioContext, profinet::kInputFrameId, and profinet::kOutputFrameId.

◆ TEST_F() [10/93]

profinet::cyclic::TEST_F ( CyclicControllerConformanceTest  ,
NonZeroTransferStatusIsRejected   
)
Test:
Verify that a non-zero TransferStatus frame is rejected.

TransferStatus must be validated independently of DataStatus. A cyclic frame with a non-zero TransferStatus must not be delivered as valid input.

Definition at line 223 of file test_cyclicControllerConformance.cpp.

References controller, and Running.

◆ TEST_F() [11/93]

profinet::cyclic::TEST_F ( CyclicControllerConformanceTest  ,
TxContinuesWhileControllerIsInFault   
)
Test:
Verify that cyclic output transmission continues while in FAULT.

The controller must continue transmitting cyclic output frames while in FAULT. Stopping transmission would allow the device Data Hold Timer to expire and may terminate the Application Relationship.

IOCS is already reported as BAD in FAULT, so continuing transmission does not imply that the output data is valid.

Definition at line 241 of file test_cyclicControllerConformance.cpp.

References controller, and Fault.

◆ TEST_F() [12/93]

profinet::cyclic::TEST_F ( CyclicControllerConformanceTest  ,
UntaggedInputFrameIsAccepted   
)
Test:
Verify that an untagged cyclic input frame is accepted.

Definition at line 189 of file test_cyclicControllerConformance.cpp.

References controller, and Running.

◆ TEST_F() [13/93]

profinet::cyclic::TEST_F ( CyclicControllerConformanceTest  ,
VlanTaggedInputFrameIsAccepted   
)
Test:
Verify that a priority VLAN-tagged cyclic input frame is accepted.

Definition at line 204 of file test_cyclicControllerConformance.cpp.

References controller, and Running.

◆ TEST_F() [14/93]

profinet::cyclic::TEST_F ( CyclicDataTests  ,
GetInputDataRejectsBadInputByDefault   
)
Test:
GetInputData rejects BAD input unless allowBad is set.

Definition at line 749 of file test_cyclicMore.cpp.

References controller, and profinet::rt::IOXS_BAD.

◆ TEST_F() [15/93]

profinet::cyclic::TEST_F ( CyclicDataTests  ,
GetInputDataReturnsGoodInput   
)
Test:
GetInputData returns received bytes when IOPS is GOOD.

Definition at line 739 of file test_cyclicMore.cpp.

References controller, and profinet::rt::IOXS_GOOD.

◆ TEST_F() [16/93]

profinet::cyclic::TEST_F ( CyclicDataTests  ,
GetInputDataReturnsNulloptForUnknownObject   
)
Test:
GetInputData returns no value for an unknown object.

Definition at line 733 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [17/93]

profinet::cyclic::TEST_F ( CyclicDataTests  ,
GetInputStatusReturnsNulloptForUnknownObject   
)
Test:
GetInputStatus returns no status for an unknown object.

Definition at line 758 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [18/93]

profinet::cyclic::TEST_F ( CyclicDataTests  ,
GetInputStatusReturnsReceivedIops   
)
Test:
GetInputStatus returns the IOPS value from the device frame.

Definition at line 764 of file test_cyclicMore.cpp.

References controller, and profinet::rt::IOXS_GOOD.

◆ TEST_F() [19/93]

profinet::cyclic::TEST_F ( CyclicDataTests  ,
IsInputGoodReturnsFalseForBadInput   
)
Test:
IsInputGood returns false for BAD IOPS input.

Definition at line 786 of file test_cyclicMore.cpp.

References controller, and profinet::rt::IOXS_BAD.

◆ TEST_F() [20/93]

profinet::cyclic::TEST_F ( CyclicDataTests  ,
IsInputGoodReturnsFalseForUnknownObject   
)
Test:
IsInputGood returns false for an unknown object.

Definition at line 773 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [21/93]

profinet::cyclic::TEST_F ( CyclicDataTests  ,
IsInputGoodReturnsTrueForGoodInput   
)
Test:
IsInputGood returns true for a GOOD IOPS input.

Definition at line 779 of file test_cyclicMore.cpp.

References controller, and profinet::rt::IOXS_GOOD.

◆ TEST_F() [22/93]

profinet::cyclic::TEST_F ( CyclicDataTests  ,
SetOutputDataAcceptsIdleState   
)
Test:
SetOutputData accepts changes in the idle state.

Definition at line 793 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [23/93]

profinet::cyclic::TEST_F ( CyclicDataTests  ,
SetOutputDataRejectsFaultState   
)
Test:
SetOutputData rejects changes in the fault state.

Definition at line 806 of file test_cyclicMore.cpp.

References controller, Fault, and profinet::cyclic::CyclicControllerTestAccess::SetState().

+ Here is the call graph for this function:

◆ TEST_F() [24/93]

profinet::cyclic::TEST_F ( CyclicDataTests  ,
SetOutputDataRejectsStoppedState   
)
Test:
SetOutputData rejects changes in the stopped state.

Definition at line 799 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::SetState(), and Stopped.

+ Here is the call graph for this function:

◆ TEST_F() [25/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
AcceptsVlanTaggedInputFrame   
)
Test:
ProcessInputFrame accepts a priority-tagged Ethernet frame.

Definition at line 1066 of file test_cyclicMore.cpp.

References controller, frame, and profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame().

+ Here is the call graph for this function:

◆ TEST_F() [26/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
DISABLED_ValidInputRestoresIocsGoodState   
)
Test:
ProcessInputFrame restores GOOD IOCS after a valid frame following a watchdog fault.

Definition at line 1108 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::FirstOutputIocs(), profinet::cyclic::CyclicControllerTestAccess::HandleWatchdogTimeout(), profinet::cyclic::CyclicControllerTestAccess::IocsGood(), profinet::rt::IOXS_BAD, profinet::rt::IOXS_GOOD, profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame(), and profinet::cyclic::CyclicControllerTestAccess::SwapOutputBuilder().

+ Here is the call graph for this function:

◆ TEST_F() [27/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
RejectsInvalidDataStatus   
)
Test:
ProcessInputFrame counts a frame with an invalid DataStatus as invalid.

Definition at line 1086 of file test_cyclicMore.cpp.

References controller, profinet::kInputFrameId, and profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame().

+ Here is the call graph for this function:

◆ TEST_F() [28/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
RejectsMalformedRtFrame   
)
Test:
ProcessInputFrame safely ignores malformed RT bytes that throw during parsing.

Definition at line 1044 of file test_cyclicMore.cpp.

References controller, frame, and profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame().

+ Here is the call graph for this function:

◆ TEST_F() [29/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
RejectsNonZeroTransferStatus   
)
Test:
ProcessInputFrame counts a non-zero TransferStatus as invalid.

Definition at line 1097 of file test_cyclicMore.cpp.

References controller, profinet::rt::RTFrame::DATA_RUN, profinet::rt::RTFrame::DATA_VALID, profinet::kInputFrameId, and profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame().

+ Here is the call graph for this function:

◆ TEST_F() [30/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
RejectsTooShortEthernetFrame   
)
Test:
ProcessInputFrame rejects Ethernet frames shorter than the minimum header.

Definition at line 1016 of file test_cyclicMore.cpp.

References controller, and profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame().

+ Here is the call graph for this function:

◆ TEST_F() [31/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
RejectsUnexpectedEtherType   
)
Test:
ProcessInputFrame rejects an unexpected EtherType.

Definition at line 1023 of file test_cyclicMore.cpp.

References controller, frame, and profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame().

+ Here is the call graph for this function:

◆ TEST_F() [32/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
RejectsUnexpectedFrameId   
)
Test:
ProcessInputFrame rejects a frame with the wrong FrameID.

Definition at line 1058 of file test_cyclicMore.cpp.

References controller, and profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame().

+ Here is the call graph for this function:

◆ TEST_F() [33/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
RejectsUnexpectedSourceMac   
)
Test:
ProcessInputFrame rejects an unexpected source MAC.

Definition at line 1034 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame(), and profinet::String2Mac().

+ Here is the call graph for this function:

◆ TEST_F() [34/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
SkipsObjectWithInvalidDataRange   
)
Test:
ProcessInputFrame skips an object whose data range exceeds the payload.

Definition at line 1139 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::InputObject(), and profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame().

+ Here is the call graph for this function:

◆ TEST_F() [35/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
SkipsObjectWithInvalidIopsOffset   
)
Test:
ProcessInputFrame skips an object whose IOPS offset exceeds the payload.

Definition at line 1128 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::InputObject(), profinet::rt::IODataObject::offsetIOPS, and profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame().

+ Here is the call graph for this function:

◆ TEST_F() [36/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
TrackCycleCounterAcceptsExpectedStep   
)
Test:
TrackCycleCounter accepts the expected next cycle without a miss.

Definition at line 1168 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [37/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
TrackCycleCounterCountsDuplicate   
)
Test:
TrackCycleCounter counts an exact duplicate frame.

Definition at line 1160 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [38/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
TrackCycleCounterCountsForwardGap   
)
Test:
TrackCycleCounter counts missing forward cycles.

Definition at line 1179 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [39/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
TrackCycleCounterCountsOutOfOrder   
)
Test:
TrackCycleCounter counts a sufficiently old frame as out of order.

Definition at line 1187 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [40/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
TrackCycleCounterHandlesZeroStep   
)
Test:
TrackCycleCounter handles a zero cycle step without dividing by zero.

Definition at line 1195 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::SetRxCounterStep(), and profinet::cyclic::CyclicControllerTestAccess::TrackCycleCounter().

+ Here is the call graph for this function:

◆ TEST_F() [41/93]

profinet::cyclic::TEST_F ( CyclicFrameTests  ,
TrackCycleCounterInitializesOnFirstFrame   
)
Test:
TrackCycleCounter initializes its previous counter on the first frame.

Definition at line 1153 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [42/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
CallbackCanBeReplacedWhileRunning   
)

Definition at line 1557 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [43/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
CallbackMayRequestStopWithoutDeadlock   
)

Definition at line 1578 of file test_cyclicMore.cpp.

References controller, and profinet::cyclic::CyclicControllerTestAccess::HandleWatchdogTimeout().

+ Here is the call graph for this function:

◆ TEST_F() [44/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
CanStartAgainAfterStop   
)

Definition at line 433 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [45/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
ClearedCallbackIsNotInvoked   
)

Definition at line 1568 of file test_cyclicMore.cpp.

References controller, and profinet::cyclic::CyclicControllerTestAccess::ProcessInputFrame().

+ Here is the call graph for this function:

◆ TEST_F() [46/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
FailedStartCanBeRetried   
)

Definition at line 570 of file test_cyclicMore.cpp.

References controller, Running, and rx.

◆ TEST_F() [47/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
FailedStartLeavesStoppedState   
)

Definition at line 558 of file test_cyclicMore.cpp.

References controller, Fault, and rx.

◆ TEST_F() [48/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
StartAcceptsFaultState   
)
Test:
Start can restart a controller explicitly placed in FAULT.

Definition at line 514 of file test_cyclicMore.cpp.

References controller, Fault, Running, profinet::cyclic::CyclicControllerTestAccess::SetRunning(), profinet::cyclic::CyclicControllerTestAccess::SetState(), and Stopped.

+ Here is the call graph for this function:

◆ TEST_F() [49/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
StartAcceptsStoppedState   
)
Test:
Start accepts the STOPPED state as a restart point.

Definition at line 528 of file test_cyclicMore.cpp.

References controller, Running, profinet::cyclic::CyclicControllerTestAccess::SetRunning(), profinet::cyclic::CyclicControllerTestAccess::SetState(), and Stopped.

+ Here is the call graph for this function:

◆ TEST_F() [50/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
StartAndStopCompleteNormalLifecycle   
)
Test:
Start and Stop complete the normal lifecycle using injected sockets.

Definition at line 547 of file test_cyclicMore.cpp.

References controller, Running, and Stopped.

◆ TEST_F() [51/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
StartRejectsInvalidStartingStates   
)
Test:
Start rejects states that are neither idle, stopped nor faulted.

Definition at line 500 of file test_cyclicMore.cpp.

References controller, Running, profinet::cyclic::CyclicControllerTestAccess::SetRunning(), profinet::cyclic::CyclicControllerTestAccess::SetState(), Starting, and Stopping.

+ Here is the call graph for this function:

◆ TEST_F() [52/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
StopDoesNotDestroyRxSocketBeforeRxThreadExits   
)
Test:
Verify Stop never destroys the RX socket while Recv is still executing.

rxSocketPtr->WaitUntilReceiveEntered();

Definition at line 350 of file test_cyclicMore.cpp.

References controller, DEFAULT_MAX_CONSECUTIVE_TIMEOUTS, ioContext, profinet::kInputFrameId, profinet::kOutputFrameId, rxSocket, and txSocket.

◆ TEST_F() [53/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
StopDoesNothingWhenNotRunning   
)
Test:
Stop returns without changing state when no worker is running.

Definition at line 540 of file test_cyclicMore.cpp.

References controller, and Idle.

◆ TEST_F() [54/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
StopIsIdempotent   
)

Definition at line 426 of file test_cyclicMore.cpp.

References controller.

◆ TEST_F() [55/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
ToStringReturnsUnknownForInvalidValue   
)
Test:
ToString returns unknown for an enum value outside the defined states.

Definition at line 445 of file test_cyclicMore.cpp.

References ToString().

+ Here is the call graph for this function:

◆ TEST_F() [56/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
TransitionCallsCallbackForStateChange   
)
Test:
Transition invokes the state callback for a real state change.

Definition at line 452 of file test_cyclicMore.cpp.

References controller, Idle, Starting, and profinet::cyclic::CyclicControllerTestAccess::Transition().

+ Here is the call graph for this function:

◆ TEST_F() [57/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
TransitionSkipsCallbackForSameState   
)
Test:
Transition skips callbacks when the state does not change.

Definition at line 473 of file test_cyclicMore.cpp.

References controller, Idle, and profinet::cyclic::CyclicControllerTestAccess::Transition().

+ Here is the call graph for this function:

◆ TEST_F() [58/93]

profinet::cyclic::TEST_F ( CyclicStateTests  ,
TransitionSwallowsCallbackException   
)
Test:
Transition swallows an exception from the application callback.

Definition at line 487 of file test_cyclicMore.cpp.

References controller, Running, and profinet::cyclic::CyclicControllerTestAccess::Transition().

+ Here is the call graph for this function:

◆ TEST_F() [59/93]

profinet::cyclic::TEST_F ( CyclicStatsTests  ,
AverageCycleTimeReturnsIntegerAverage   
)
Test:
AvgCycleTimeUs calculates the integer average.

Definition at line 604 of file test_cyclicMore.cpp.

References profinet::cyclic::CyclicStats::AvgCycleTimeUs(), profinet::cyclic::CyclicStats::cycleCount, and profinet::cyclic::CyclicStats::cycleTimeSumUs.

+ Here is the call graph for this function:

◆ TEST_F() [60/93]

profinet::cyclic::TEST_F ( CyclicStatsTests  ,
AverageCycleTimeReturnsZeroWhenNoCycles   
)
Test:
AvgCycleTimeUs returns zero when no cycles were recorded.

Definition at line 614 of file test_cyclicMore.cpp.

◆ TEST_F() [61/93]

◆ TEST_F() [62/93]

profinet::cyclic::TEST_F ( CyclicStatsTests  ,
SnapshotAverageCycleTimeReturnsZeroWhenNoCycles   
)
Test:
AvgCycleTimeUs on a snapshot returns zero when no cycles were recorded.

Definition at line 621 of file test_cyclicMore.cpp.

◆ TEST_F() [63/93]

◆ TEST_F() [64/93]

profinet::cyclic::TEST_F ( CyclicTest  ,
CyclicControllerConstructsWithSafeCycleTime   
)
Test:
CyclicController constructs successfully with a safe cycle time

Definition at line 199 of file test_cyclic.cpp.

References ioContext, profinet::cyclic::CyclicController::IsRunning(), profinet::cyclic::CyclicController::State(), profinet::String2Mac(), and ToString().

+ Here is the call graph for this function:

◆ TEST_F() [65/93]

profinet::cyclic::TEST_F ( CyclicTest  ,
CyclicControllerRejectsNegativeMaxConsecutiveTimeouts   
)
Test:
CyclicController rejects negative max_consecutive_timeouts

Definition at line 155 of file test_cyclic.cpp.

References ioContext, and profinet::String2Mac().

+ Here is the call graph for this function:

◆ TEST_F() [66/93]

profinet::cyclic::TEST_F ( CyclicTest  ,
CyclicControllerRejectsSub1msCycleTime   
)
Test:
CyclicController rejects sub-1ms cycle time

Definition at line 177 of file test_cyclic.cpp.

References ioContext, and profinet::String2Mac().

+ Here is the call graph for this function:

◆ TEST_F() [67/93]

profinet::cyclic::TEST_F ( CyclicTest  ,
CyclicStateToStringCoversAllStates   
)
Test:
CyclicState::ToString covers all states

Definition at line 127 of file test_cyclic.cpp.

References Fault, Idle, Running, Starting, Stopped, Stopping, and ToString().

+ Here is the call graph for this function:

◆ TEST_F() [68/93]

profinet::cyclic::TEST_F ( CyclicTest  ,
CyclicStatsResetRestoresInitialValues   
)
Test:
CyclicStats::reset restores initial values

Definition at line 138 of file test_cyclic.cpp.

References profinet::cyclic::CyclicStats::AvgCycleTimeUs(), profinet::cyclic::CyclicStats::cycleCount, profinet::cyclic::CyclicStats::cycleTimeSumUs, profinet::cyclic::CyclicStats::framesMissed, profinet::cyclic::CyclicStats::framesSent, and profinet::cyclic::CyclicStats::Reset().

+ Here is the call graph for this function:

◆ TEST_F() [69/93]

profinet::cyclic::TEST_F ( CyclicTxTests  ,
SendOutputFrameReportsSocketError   
)
Test:
SendOutputFrame routes socket failures to OnError.

Definition at line 1476 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::SendOutputFrame(), and tx.

+ Here is the call graph for this function:

◆ TEST_F() [70/93]

profinet::cyclic::TEST_F ( CyclicTxTests  ,
SendOutputFrameUsesDataStatusOverride   
)
Test:
SendOutputFrame honors a caller-provided DataStatus override.

Definition at line 1492 of file test_cyclicMore.cpp.

References controller, profinet::rt::RTFrame::FromBytes(), profinet::cyclic::CyclicControllerTestAccess::SendOutputFrame(), and tx.

+ Here is the call graph for this function:

◆ TEST_F() [71/93]

profinet::cyclic::TEST_F ( CyclicTxTests  ,
SendOutputFrameWithoutSocketDoesNotThrow   
)
Test:
SendOutputFrame does nothing when the TX socket is absent.

Definition at line 1469 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::ResetTxSocket(), and profinet::cyclic::CyclicControllerTestAccess::SendOutputFrame().

+ Here is the call graph for this function:

◆ TEST_F() [72/93]

profinet::cyclic::TEST_F ( CyclicTxTests  ,
SendStopFramesGeneratesStopFrameCount   
)
Test:
SendStopFrames emits exactly STOP_FRAME_COUNT frames.

Definition at line 1504 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::SendStopFrames(), STOP_FRAME_COUNT, and tx.

+ Here is the call graph for this function:

◆ TEST_F() [73/93]

profinet::cyclic::TEST_F ( CyclicTxTests  ,
SendStopFramesStopsAfterSendErrorCallbackThrows   
)
Test:
SendStopFrames stops after an exception escapes the send path.

Definition at line 1523 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::SendStopFrames(), and tx.

+ Here is the call graph for this function:

◆ TEST_F() [74/93]

profinet::cyclic::TEST_F ( CyclicTxTests  ,
SendStopFramesWithoutSocketDoesNothing   
)
Test:
SendStopFrames does nothing when no TX socket exists.

Definition at line 1513 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::ResetTxSocket(), profinet::cyclic::CyclicControllerTestAccess::SendStopFrames(), profinet::cyclic::CyclicControllerTestAccess::SetTxSock(), and txSocket.

+ Here is the call graph for this function:

◆ TEST_F() [75/93]

profinet::cyclic::TEST_F ( CyclicTxTests  ,
SetOutputDataIsReflectedInTransmittedFrame   
)
Test:
SetOutputData changes the payload emitted by the next cyclic frame.

Definition at line 1538 of file test_cyclicMore.cpp.

References controller, profinet::rt::RTFrame::FromBytes(), profinet::cyclic::CyclicControllerTestAccess::SendOutputFrame(), profinet::cyclic::CyclicControllerTestAccess::SwapOutputBuilder(), and tx.

+ Here is the call graph for this function:

◆ TEST_F() [76/93]

profinet::cyclic::TEST_F ( CyclicTxTests  ,
TxCycleSendsFrameAndUpdatesStatistics   
)
Test:
TxCycle transmits a frame and increments framesSent.

Definition at line 1452 of file test_cyclicMore.cpp.

References controller, tx, and profinet::cyclic::CyclicControllerTestAccess::TxCycle().

+ Here is the call graph for this function:

◆ TEST_F() [77/93]

profinet::cyclic::TEST_F ( CyclicTxTests  ,
TxCycleSendsInFault   
)
Test:
TxCycle continues to transmit while the controller is in FAULT.

Definition at line 1461 of file test_cyclicMore.cpp.

References controller, Fault, profinet::cyclic::CyclicControllerTestAccess::SetState(), tx, and profinet::cyclic::CyclicControllerTestAccess::TxCycle().

+ Here is the call graph for this function:

◆ TEST_F() [78/93]

profinet::cyclic::TEST_F ( CyclicTxTests  ,
TxLoopRecordsCycleTiming   
)
Test:
TxLoop records cycle timing statistics across two transmitted cycles.

Definition at line 1420 of file test_cyclicMore.cpp.

References controller, DEFAULT_MAX_CONSECUTIVE_TIMEOUTS, ioContext, profinet::kInputFrameId, profinet::kOutputFrameId, profinet::cyclic::CyclicControllerTestAccess::SetRunning(), profinet::cyclic::CyclicControllerTestAccess::SetTxSock(), tx, profinet::cyclic::CyclicControllerTestAccess::TxLoop(), and txSocket.

+ Here is the call graph for this function:

◆ TEST_F() [79/93]

profinet::cyclic::TEST_F ( CyclicWatchdogTests  ,
MonitoringOnlyWatchdogKeepsIocsGood   
)
Test:
Monitoring-only watchdog mode keeps IOCS GOOD and never faults.

Definition at line 1256 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::HandleWatchdogTimeout(), profinet::cyclic::CyclicControllerTestAccess::IocsGood(), Running, and profinet::cyclic::CyclicControllerTestAccess::SetMaxConsecutiveTimeouts().

+ Here is the call graph for this function:

◆ TEST_F() [80/93]

profinet::cyclic::TEST_F ( CyclicWatchdogTests  ,
RxLoopHandlesWatchdogTimeout   
)
Test:
RxLoop handles an elapsed watchdog timeout and invokes OnTimeout.

Definition at line 1371 of file test_cyclicMore.cpp.

References controller, rx, profinet::cyclic::CyclicControllerTestAccess::RxLoop(), and profinet::cyclic::CyclicControllerTestAccess::SetRunning().

+ Here is the call graph for this function:

◆ TEST_F() [81/93]

profinet::cyclic::TEST_F ( CyclicWatchdogTests  ,
RxLoopProcessesValidFrame   
)
Test:
RxLoop processes a valid received frame before the worker is stopped.

Definition at line 1323 of file test_cyclicMore.cpp.

References controller, rx, profinet::cyclic::CyclicControllerTestAccess::RxLoop(), and profinet::cyclic::CyclicControllerTestAccess::SetRunning().

+ Here is the call graph for this function:

◆ TEST_F() [82/93]

profinet::cyclic::TEST_F ( CyclicWatchdogTests  ,
RxLoopReportsSocketException   
)
Test:
RxLoop reports receive exceptions through OnError.

Definition at line 1352 of file test_cyclicMore.cpp.

References controller, rx, profinet::cyclic::CyclicControllerTestAccess::RxLoop(), and profinet::cyclic::CyclicControllerTestAccess::SetRunning().

+ Here is the call graph for this function:

◆ TEST_F() [83/93]

profinet::cyclic::TEST_F ( CyclicWatchdogTests  ,
RxLoopStopsWithoutSocket   
)
Test:
RxLoop exits cleanly when the receive socket is absent.

Definition at line 1343 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::ResetRxSocket(), profinet::cyclic::CyclicControllerTestAccess::RxLoop(), and profinet::cyclic::CyclicControllerTestAccess::SetRunning().

+ Here is the call graph for this function:

◆ TEST_F() [84/93]

profinet::cyclic::TEST_F ( CyclicWatchdogTests  ,
TimeoutCallbackSwallowsException   
)
Test:
A timeout callback exception is swallowed by watchdog handling.

Definition at line 1298 of file test_cyclicMore.cpp.

References controller, and profinet::cyclic::CyclicControllerTestAccess::HandleWatchdogTimeout().

+ Here is the call graph for this function:

◆ TEST_F() [85/93]

profinet::cyclic::TEST_F ( CyclicWatchdogTests  ,
WatchdogDoesNotRepeatBadTransition   
)
Test:
IOCS is marked BAD only on the first watchdog faulting transition.

Definition at line 1311 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::FirstOutputByte(), profinet::cyclic::CyclicControllerTestAccess::HandleWatchdogTimeout(), and profinet::cyclic::CyclicControllerTestAccess::IocsGood().

+ Here is the call graph for this function:

◆ TEST_F() [86/93]

profinet::cyclic::TEST_F ( CyclicWatchdogTests  ,
WatchdogDoesNotTransitionWhenAlreadyFaulted   
)
Test:
Watchdog handling does not re-enter FAULT when already faulted.

Definition at line 1288 of file test_cyclicMore.cpp.

References profinet::cyclic::CyclicStats::consecutiveTimeouts, controller, Fault, profinet::cyclic::CyclicControllerTestAccess::HandleWatchdogTimeout(), profinet::cyclic::CyclicControllerTestAccess::SetState(), and profinet::cyclic::CyclicControllerTestAccess::Stats().

+ Here is the call graph for this function:

◆ TEST_F() [87/93]

profinet::cyclic::TEST_F ( CyclicWatchdogTests  ,
WatchdogFaultsAtConfiguredThreshold   
)
Test:
Watchdog handling enters FAULT when the configured threshold is reached.

Definition at line 1269 of file test_cyclicMore.cpp.

References controller, Fault, and profinet::cyclic::CyclicControllerTestAccess::HandleWatchdogTimeout().

+ Here is the call graph for this function:

◆ TEST_F() [88/93]

profinet::cyclic::TEST_F ( CyclicWatchdogTests  ,
WatchdogTimeoutUpdatesStatistics   
)
Test:
Watchdog timeout increments missed and consecutive-timeout statistics.

Definition at line 1238 of file test_cyclicMore.cpp.

References controller, profinet::cyclic::CyclicControllerTestAccess::HandleWatchdogTimeout(), and profinet::cyclic::CyclicControllerTestAccess::IocsGood().

+ Here is the call graph for this function:

◆ TEST_F() [89/93]

profinet::cyclic::TEST_F ( ReceivedIopsTest  ,
DISABLED_BadIopsWithholdsStaleInputData   
)
Test:
Verify that BAD IOPS withholds stale input data.

The device may keep transmitting old payload bytes after an input submodule becomes invalid. Those bytes remain available for diagnostics but must not be returned as valid application input.

Definition at line 179 of file test_receivedIops.cpp.

References controller.

◆ TEST_F() [90/93]

profinet::cyclic::TEST_F ( ReceivedIopsTest  ,
DISABLED_LowerIopsBitsDoNotAffectGoodState   
)
Test:
Verify that only the IOPS DataState bit determines GOOD/BAD.

The DataState is bit 7. The lower Instance and Extension bits must not change an otherwise GOOD provider status into BAD.

Definition at line 267 of file test_receivedIops.cpp.

References controller.

◆ TEST_F() [91/93]

profinet::cyclic::TEST_F ( ReceivedIopsTest  ,
GoodIopsDeliversInputData   
)
Test:
Verify that input data with GOOD IOPS is delivered.

Definition at line 152 of file test_receivedIops.cpp.

References controller.

◆ TEST_F() [92/93]

profinet::cyclic::TEST_F ( ReceivedIopsTest  ,
InputCallbackSkipsBadData   
)
Test:
Verify that the application input callback skips BAD IOPS data.

Definition at line 245 of file test_receivedIops.cpp.

References controller.

◆ TEST_F() [93/93]

profinet::cyclic::TEST_F ( ReceivedIopsTest  ,
StatusCallbackFiresOnlyOnTransitions   
)
Test:
Verify that the IOPS callback is generated only on status transitions.

Repeated GOOD or BAD frames must not generate duplicate callbacks. A callback is generated when the raw provider status transitions.

Definition at line 203 of file test_receivedIops.cpp.

References controller, and profinet::operator==().

+ Here is the call graph for this function:

◆ ToString()

std::string profinet::cyclic::ToString ( CyclicState  state)

Human-readable name for a CyclicState value.

Parameters
stateState to name.
Returns
Lowercase state name, e.g. "running".

Definition at line 24 of file cyclic.cpp.

References Fault, Idle, Running, Starting, Stopped, and Stopping.

Referenced by profinet::cyclic::CyclicController::SetOutputData(), profinet::cyclic::CyclicController::Start(), profinet::sim::VirtualPhoenixPlc::StatusReport(), TEST_F(), TEST_F(), and TEST_F().

+ Here is the caller graph for this function:

Variable Documentation

◆ DEFAULT_MAX_CONSECUTIVE_TIMEOUTS

constexpr int profinet::cyclic::DEFAULT_MAX_CONSECUTIVE_TIMEOUTS = 3
inlineconstexpr

◆ MIN_CYCLE_MS

constexpr int profinet::cyclic::MIN_CYCLE_MS = 8
inlineconstexpr

Minimum cycle time (ms) considered reliable.

Definition at line 153 of file cyclic.h.

Referenced by profinet::rpc::IOCRSetup::Validate().

◆ RECOMMENDED_CYCLE_MS

constexpr int profinet::cyclic::RECOMMENDED_CYCLE_MS = 32
inlineconstexpr

Recommended cycle time (ms).

Definition at line 155 of file cyclic.h.

◆ STOP_FRAME_COUNT

constexpr int profinet::cyclic::STOP_FRAME_COUNT = 3
inlineconstexpr

Number of STOP frames sent during a graceful Stop().

Definition at line 159 of file cyclic.h.

Referenced by profinet::cyclic::CyclicController::SendStopFrames(), and TEST_F().