24 ActiveRateGroupComponentBase(compName),
27 m_cycleStarted(false),
35 FW_ASSERT(numContexts == this->getNum_RateGroupMemberOut_OutputPorts(),numContexts,this->getNum_RateGroupMemberOut_OutputPorts());
38 this->getNum_RateGroupMemberOut_OutputPorts());
40 this->m_numContexts = numContexts;
43 this->m_contexts[entry] = contexts[entry];
48 ActiveRateGroupComponentBase::init(queueDepth,instance);
55 void ActiveRateGroup::preamble() {
56 this->log_DIAGNOSTIC_RateGroupStarted();
66 this->m_cycleStarted =
false;
70 if (this->isConnected_RateGroupMemberOut_OutputPort(port)) {
71 this->RateGroupMemberOut_out(port,this->m_contexts[port]);
79 U32 cycle_time = end.diffUSec(cycleStart);
82 if (cycle_time > this->m_maxTime) {
83 this->m_maxTime = cycle_time;
87 this->tlmWrite_RgMaxTime(this->m_maxTime);
91 if (this->m_cycleStarted) {
94 this->log_WARNING_HI_RateGroupCycleSlip(this->m_cycles);
95 this->m_overrunThrottle++;
98 this->tlmWrite_RgCycleSlips(this->m_cycleSlips);
100 if (this->m_overrunThrottle > 0) {
101 this->m_overrunThrottle--;
112 this->m_cycleStarted =
true;
115 void ActiveRateGroup::PingIn_handler(
NATIVE_INT_TYPE portNum, U32 key) {
117 this->PingOut_out(0,key);
PlatformIntType NATIVE_INT_TYPE
#define FW_NUM_ARRAY_ELEMENTS(a)
number of elements in an array
C++-compatible configuration header for fprime configuration.
void init(NATIVE_INT_TYPE queueDepth, NATIVE_INT_TYPE instance)
ActiveRateGroup initialization function.
void configure(NATIVE_INT_TYPE contexts[], NATIVE_INT_TYPE numContexts)
ActiveRateGroup configuration function.
~ActiveRateGroup()
ActiveRateGroup destructor.
ActiveRateGroup(const char *compName)
ActiveRateGroup constructor.
Serializable class for carrying timer values.
@ ACTIVE_RATE_GROUP_OVERRUN_THROTTLE
Number of overruns allowed before overrun event is throttled.