11 #if FW_ENABLE_TEXT_LOGGING
20 BUFFERSENDINFILL_BUFFERSEND,
21 BUFFERSENDINRETURN_BUFFERSEND,
38 class ComponentIpcSerializableBuffer :
53 return sizeof(m_buff);
60 const U8* getBuffAddr()
const {
66 U8 m_buff[SERIALIZATION_SIZE];
90 this->m_cmdIn_InputPort[port].
init();
95 this->m_cmdIn_InputPort[port].
setPortNum(port);
97 #if FW_OBJECT_NAMES == 1
112 this->m_cmdIn_InputPort[port].setObjName(portName);
122 this->m_bufferSendInFill_InputPort[port].
init();
123 this->m_bufferSendInFill_InputPort[port].
addCallComp(
125 m_p_bufferSendInFill_in
127 this->m_bufferSendInFill_InputPort[port].
setPortNum(port);
129 #if FW_OBJECT_NAMES == 1
144 this->m_bufferSendInFill_InputPort[port].setObjName(portName);
154 this->m_bufferSendInReturn_InputPort[port].
init();
155 this->m_bufferSendInReturn_InputPort[port].
addCallComp(
157 m_p_bufferSendInReturn_in
159 this->m_bufferSendInReturn_InputPort[port].
setPortNum(port);
161 #if FW_OBJECT_NAMES == 1
176 this->m_bufferSendInReturn_InputPort[port].setObjName(portName);
186 this->m_pingIn_InputPort[port].
init();
191 this->m_pingIn_InputPort[port].
setPortNum(port);
193 #if FW_OBJECT_NAMES == 1
208 this->m_pingIn_InputPort[port].setObjName(portName);
218 this->m_cmdRegOut_OutputPort[port].
init();
220 #if FW_OBJECT_NAMES == 1
235 this->m_cmdRegOut_OutputPort[port].setObjName(portName);
245 this->m_cmdResponseOut_OutputPort[port].
init();
247 #if FW_OBJECT_NAMES == 1
262 this->m_cmdResponseOut_OutputPort[port].setObjName(portName);
272 this->m_eventOut_OutputPort[port].
init();
274 #if FW_OBJECT_NAMES == 1
289 this->m_eventOut_OutputPort[port].setObjName(portName);
293 #if FW_ENABLE_TEXT_LOGGING == 1
297 port < static_cast<PlatformIntType>(this->getNum_eventOutText_OutputPorts());
300 this->m_eventOutText_OutputPort[port].
init();
302 #if FW_OBJECT_NAMES == 1
317 this->m_eventOutText_OutputPort[port].setObjName(portName);
328 this->m_timeCaller_OutputPort[port].
init();
330 #if FW_OBJECT_NAMES == 1
345 this->m_timeCaller_OutputPort[port].setObjName(portName);
355 this->m_tlmOut_OutputPort[port].
init();
357 #if FW_OBJECT_NAMES == 1
372 this->m_tlmOut_OutputPort[port].setObjName(portName);
382 this->m_bufferSendOutDrain_OutputPort[port].
init();
384 #if FW_OBJECT_NAMES == 1
399 this->m_bufferSendOutDrain_OutputPort[port].setObjName(portName);
409 this->m_bufferSendOutReturn_OutputPort[port].
init();
411 #if FW_OBJECT_NAMES == 1
426 this->m_bufferSendOutReturn_OutputPort[port].setObjName(portName);
436 this->m_pingOut_OutputPort[port].
init();
438 #if FW_OBJECT_NAMES == 1
453 this->m_pingOut_OutputPort[port].setObjName(portName);
459 ComponentIpcSerializableBuffer::SERIALIZATION_SIZE
479 return &this->m_cmdIn_InputPort[portNum];
494 return &this->m_bufferSendInFill_InputPort[portNum];
505 return &this->m_bufferSendInReturn_InputPort[portNum];
516 return &this->m_pingIn_InputPort[portNum];
534 this->m_cmdRegOut_OutputPort[portNum].
addCallPort(port);
548 this->m_cmdResponseOut_OutputPort[portNum].
addCallPort(port);
562 this->m_eventOut_OutputPort[portNum].
addCallPort(port);
565 #if FW_ENABLE_TEXT_LOGGING == 1
567 void BufferAccumulatorComponentBase ::
568 set_eventOutText_OutputPort(
574 portNum < this->getNum_eventOutText_OutputPorts(),
578 this->m_eventOutText_OutputPort[portNum].addCallPort(port);
594 this->m_timeCaller_OutputPort[portNum].
addCallPort(port);
608 this->m_tlmOut_OutputPort[portNum].
addCallPort(port);
626 this->m_bufferSendOutDrain_OutputPort[portNum].
addCallPort(port);
640 this->m_bufferSendOutReturn_OutputPort[portNum].
addCallPort(port);
654 this->m_pingOut_OutputPort[portNum].
addCallPort(port);
657 #if FW_PORT_SERIALIZATION
666 Fw::InputSerializePort* port
674 this->m_cmdRegOut_OutputPort[portNum].registerSerialPort(port);
680 Fw::InputSerializePort* port
688 this->m_cmdResponseOut_OutputPort[portNum].registerSerialPort(port);
694 Fw::InputSerializePort* port
702 this->m_eventOut_OutputPort[portNum].registerSerialPort(port);
705 #if FW_ENABLE_TEXT_LOGGING == 1
707 void BufferAccumulatorComponentBase ::
708 set_eventOutText_OutputPort(
710 Fw::InputSerializePort* port
714 portNum < this->getNum_eventOutText_OutputPorts(),
718 this->m_eventOutText_OutputPort[portNum].registerSerialPort(port);
726 Fw::InputSerializePort* port
734 this->m_timeCaller_OutputPort[portNum].registerSerialPort(port);
740 Fw::InputSerializePort* port
748 this->m_tlmOut_OutputPort[portNum].registerSerialPort(port);
753 #if FW_PORT_SERIALIZATION
762 Fw::InputSerializePort* port
770 this->m_bufferSendOutDrain_OutputPort[portNum].registerSerialPort(port);
776 Fw::InputSerializePort* port
784 this->m_bufferSendOutReturn_OutputPort[portNum].registerSerialPort(port);
790 Fw::InputSerializePort* port
798 this->m_pingOut_OutputPort[portNum].registerSerialPort(port);
810 FW_ASSERT(this->m_cmdRegOut_OutputPort[0].isConnected());
812 this->m_cmdRegOut_OutputPort[0].
invoke(
816 this->m_cmdRegOut_OutputPort[0].
invoke(
827 Fw::ActiveComponentBase(compName)
892 #if FW_ENABLE_TEXT_LOGGING == 1
895 getNum_eventOutText_OutputPorts()
const
948 return this->m_cmdRegOut_OutputPort[portNum].
isConnected();
959 return this->m_cmdResponseOut_OutputPort[portNum].
isConnected();
970 return this->m_eventOut_OutputPort[portNum].
isConnected();
973 #if FW_ENABLE_TEXT_LOGGING == 1
975 bool BufferAccumulatorComponentBase ::
979 portNum < this->getNum_eventOutText_OutputPorts(),
983 return this->m_eventOutText_OutputPort[portNum].isConnected();
996 return this->m_timeCaller_OutputPort[portNum].
isConnected();
1007 return this->m_tlmOut_OutputPort[portNum].
isConnected();
1022 return this->m_bufferSendOutDrain_OutputPort[portNum].
isConnected();
1033 return this->m_bufferSendOutReturn_OutputPort[portNum].
isConnected();
1044 return this->m_pingOut_OutputPort[portNum].
isConnected();
1070 ComponentIpcSerializableBuffer msg;
1074 _status = msg.serialize(
1083 _status = msg.serialize(portNum);
1090 _status = msg.serialize(fwBuffer);
1123 ComponentIpcSerializableBuffer msg;
1127 _status = msg.serialize(
1136 _status = msg.serialize(portNum);
1143 _status = msg.serialize(fwBuffer);
1176 ComponentIpcSerializableBuffer msg;
1180 _status = msg.serialize(
1189 _status = msg.serialize(portNum);
1196 _status = msg.serialize(key);
1261 this->m_bufferSendOutDrain_OutputPort[portNum].
invoke(
1276 this->m_bufferSendOutReturn_OutputPort[portNum].
invoke(
1291 this->m_pingOut_OutputPort[portNum].
invoke(
1307 FW_ASSERT(this->m_cmdResponseOut_OutputPort[0].isConnected());
1308 this->m_cmdResponseOut_OutputPort[0].
invoke(opCode, cmdSeq, response);
1329 ComponentIpcSerializableBuffer msg;
1333 _status = msg.serialize(
static_cast<NATIVE_INT_TYPE>(CMD_BA_SETMODE));
1342 _status = msg.serialize(port);
1348 _status = msg.serialize(opCode);
1354 _status = msg.serialize(cmdSeq);
1360 _status = msg.serialize(args);
1388 ComponentIpcSerializableBuffer msg;
1392 _status = msg.serialize(
static_cast<NATIVE_INT_TYPE>(CMD_BA_DRAINBUFFERS));
1401 _status = msg.serialize(port);
1407 _status = msg.serialize(opCode);
1413 _status = msg.serialize(cmdSeq);
1419 _status = msg.serialize(args);
1474 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1475 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
1483 if (this->m_eventOut_OutputPort[0].isConnected()) {
1486 #if FW_AMPCS_COMPATIBLE
1496 this->m_eventOut_OutputPort[0].
invoke(
1505 #if FW_ENABLE_TEXT_LOGGING
1506 if (this->m_eventOutText_OutputPort[0].isConnected()) {
1507 #if FW_OBJECT_NAMES == 1
1508 const char* _formatString =
1509 "(%s) %s: Buffer accepted";
1511 const char* _formatString =
1512 "%s: Buffer accepted";
1524 "BA_BufferAccepted "
1530 this->m_eventOutText_OutputPort[0].invoke(
1545 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1546 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
1554 if (this->m_eventOut_OutputPort[0].isConnected()) {
1557 #if FW_AMPCS_COMPATIBLE
1567 this->m_eventOut_OutputPort[0].
invoke(
1576 #if FW_ENABLE_TEXT_LOGGING
1577 if (this->m_eventOutText_OutputPort[0].isConnected()) {
1578 #if FW_OBJECT_NAMES == 1
1579 const char* _formatString =
1580 "(%s) %s: Queue full";
1582 const char* _formatString =
1601 this->m_eventOutText_OutputPort[0].invoke(
1619 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1620 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
1628 if (this->m_eventOut_OutputPort[0].isConnected()) {
1632 #if FW_AMPCS_COMPATIBLE
1641 #if FW_AMPCS_COMPATIBLE
1644 static_cast<U8>(
sizeof(U32))
1651 _status = _logBuff.
serialize(numDrained);
1657 #if FW_AMPCS_COMPATIBLE
1660 static_cast<U8>(
sizeof(U32))
1667 _status = _logBuff.
serialize(numToDrain);
1673 this->m_eventOut_OutputPort[0].
invoke(
1682 #if FW_ENABLE_TEXT_LOGGING
1683 if (this->m_eventOutText_OutputPort[0].isConnected()) {
1684 #if FW_OBJECT_NAMES == 1
1685 const char* _formatString =
1686 "(%s) %s: Still draining %" PRIu32
" of %" PRIu32
"";
1688 const char* _formatString =
1689 "%s: Still draining %" PRIu32
" of %" PRIu32
"";
1701 "BA_StillDraining ",
1709 this->m_eventOutText_OutputPort[0].invoke(
1724 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1725 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
1733 if (this->m_eventOut_OutputPort[0].isConnected()) {
1736 #if FW_AMPCS_COMPATIBLE
1746 this->m_eventOut_OutputPort[0].
invoke(
1755 #if FW_ENABLE_TEXT_LOGGING
1756 if (this->m_eventOutText_OutputPort[0].isConnected()) {
1757 #if FW_OBJECT_NAMES == 1
1758 const char* _formatString =
1759 "(%s) %s: Already in DRAIN mode";
1761 const char* _formatString =
1762 "%s: Already in DRAIN mode";
1774 "BA_AlreadyDraining "
1780 this->m_eventOutText_OutputPort[0].invoke(
1798 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1799 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
1807 if (this->m_eventOut_OutputPort[0].isConnected()) {
1811 #if FW_AMPCS_COMPATIBLE
1820 #if FW_AMPCS_COMPATIBLE
1823 static_cast<U8>(
sizeof(U32))
1830 _status = _logBuff.
serialize(numDrained);
1836 #if FW_AMPCS_COMPATIBLE
1839 static_cast<U8>(
sizeof(U32))
1846 _status = _logBuff.
serialize(numToDrain);
1852 this->m_eventOut_OutputPort[0].
invoke(
1861 #if FW_ENABLE_TEXT_LOGGING
1862 if (this->m_eventOutText_OutputPort[0].isConnected()) {
1863 #if FW_OBJECT_NAMES == 1
1864 const char* _formatString =
1865 "(%s) %s: Drain stalling - only drained %" PRIu32
" of %" PRIu32
"";
1867 const char* _formatString =
1868 "%s: Drain stalling - only drained %" PRIu32
" of %" PRIu32
"";
1888 this->m_eventOutText_OutputPort[0].invoke(
1903 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1904 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
1912 if (this->m_eventOut_OutputPort[0].isConnected()) {
1916 #if FW_AMPCS_COMPATIBLE
1925 #if FW_AMPCS_COMPATIBLE
1928 static_cast<U8>(
sizeof(U32))
1935 _status = _logBuff.
serialize(numDrained);
1941 this->m_eventOut_OutputPort[0].
invoke(
1950 #if FW_ENABLE_TEXT_LOGGING
1951 if (this->m_eventOutText_OutputPort[0].isConnected()) {
1952 #if FW_OBJECT_NAMES == 1
1953 const char* _formatString =
1954 "(%s) %s: Partial drain of %" PRIu32
" finished";
1956 const char* _formatString =
1957 "%s: Partial drain of %" PRIu32
" finished";
1969 "BA_PartialDrainDone ",
1976 this->m_eventOutText_OutputPort[0].invoke(
1994 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1995 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
2003 if (this->m_eventOut_OutputPort[0].isConnected()) {
2007 #if FW_AMPCS_COMPATIBLE
2016 #if FW_AMPCS_COMPATIBLE
2019 static_cast<U8>(
sizeof(U32))
2026 _status = _logBuff.
serialize(numWillDrain);
2032 #if FW_AMPCS_COMPATIBLE
2035 static_cast<U8>(
sizeof(U32))
2042 _status = _logBuff.
serialize(numReqDrain);
2048 this->m_eventOut_OutputPort[0].
invoke(
2057 #if FW_ENABLE_TEXT_LOGGING
2058 if (this->m_eventOutText_OutputPort[0].isConnected()) {
2059 #if FW_OBJECT_NAMES == 1
2060 const char* _formatString =
2061 "(%s) %s: Only have %" PRIu32
"; requested drain of %" PRIu32
"";
2063 const char* _formatString =
2064 "%s: Only have %" PRIu32
"; requested drain of %" PRIu32
"";
2076 "BA_NonBlockDrain ",
2084 this->m_eventOutText_OutputPort[0].invoke(
2104 if (this->m_tlmOut_OutputPort[0].isConnected()) {
2106 this->m_timeCaller_OutputPort[0].isConnected() &&
2109 this->m_timeCaller_OutputPort[0].
invoke(_tlmTime);
2123 this->m_tlmOut_OutputPort[0].
invoke(
2138 if (this->m_timeCaller_OutputPort[0].isConnected()) {
2140 this->m_timeCaller_OutputPort[0].
invoke(_time);
2155 ComponentIpcSerializableBuffer msg;
2178 MsgTypeEnum msgType =
static_cast<MsgTypeEnum
>(desMsg);
2180 if (msgType == BUFFERACCUMULATOR_COMPONENT_EXIT) {
2185 deserStatus = msg.deserialize(portNum);
2193 case BUFFERSENDINFILL_BUFFERSEND: {
2211 case BUFFERSENDINRETURN_BUFFERSEND: {
2232 deserStatus = msg.deserialize(key);
2247 case CMD_BA_SETMODE: {
2250 deserStatus = msg.deserialize(opCode);
2258 deserStatus = msg.deserialize(cmdSeq);
2279 if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
2292 #if FW_CMD_CHECK_RESIDUAL
2294 if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
2312 case CMD_BA_DRAINBUFFERS: {
2315 deserStatus = msg.deserialize(opCode);
2323 deserStatus = msg.deserialize(cmdSeq);
2344 if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
2359 if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
2372 #if FW_CMD_CHECK_RESIDUAL
2374 if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
2403 void BufferAccumulatorComponentBase ::
2415 const U32 idBase = callComp->
getIdBase();
2416 FW_ASSERT(opCode >= idBase, opCode, idBase);
2419 switch (opCode - idBase) {
2421 compPtr->BA_SetMode_cmdHandlerBase(
2430 compPtr->BA_DrainBuffers_cmdHandlerBase(
2444 void BufferAccumulatorComponentBase ::
2445 m_p_bufferSendInFill_in(
2453 compPtr->bufferSendInFill_handlerBase(
2459 void BufferAccumulatorComponentBase ::
2460 m_p_bufferSendInReturn_in(
2468 compPtr->bufferSendInReturn_handlerBase(
2474 void BufferAccumulatorComponentBase ::
2483 compPtr->pingIn_handlerBase(
PlatformIntType NATIVE_INT_TYPE
uint8_t U8
8-bit unsigned integer
#define FW_NUM_ARRAY_ELEMENTS(a)
number of elements in an array
PlatformUIntType NATIVE_UINT_TYPE
int PlatformIntType
DefaultTypes.hpp provides fallback defaults for the platform types.
#define PRI_PlatformIntType
@ TB_NONE
No time base has been established.
PlatformAssertArgType FwAssertArgType
#define FW_LOG_TEXT_BUFFER_SIZE
Max size of string for text log message.
#define FW_OBJ_NAME_MAX_SIZE
Size of object name (if object names enabled). AC Limits to 80, truncation occurs above 80.
#define FW_OBJECT_NAMES
Indicates whether or not object names are stored (more memory, can be used for tracking objects)
@ ACTIVE_COMPONENT_EXIT
message to exit active component task
Fw::SerializeStatus deserialize(Fw::SerializeBufferBase &buffer)
Enum representing a command response.
@ FORMAT_ERROR
Command failed to deserialize.
@ WARNING_HI
A serious but recoverable event.
@ ACTIVITY_HI
Important informational events.
@ WARNING_LO
A less serious but recoverable event.
void init()
Object initializer.
void addCallPort(InputBufferSendPort *callPort)
Register an input port.
void invoke(Fw::Buffer &fwBuffer)
Invoke a port interface.
void init()
Initialization function.
void addCallPort(InputCmdRegPort *callPort)
Register an input port.
void invoke(FwOpcodeType opCode)
Invoke a port interface.
void init()
Initialization function.
void init()
Initialization function.
void addCallPort(InputCmdResponsePort *callPort)
Register an input port.
void invoke(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Invoke a port interface.
void init()
Initialization function.
void invoke(FwEventIdType id, Fw::Time &timeTag, const Fw::LogSeverity &severity, Fw::LogBuffer &args)
Invoke a port interface.
void addCallPort(InputLogPort *callPort)
Register an input port.
void addCallPort(InputTimePort *callPort)
Register an input port.
void invoke(Fw::Time &time)
Invoke a port interface.
void init()
Initialization function.
void addCallPort(InputTlmPort *callPort)
Register an input port.
void init()
Initialization function.
void invoke(FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val)
Invoke a port interface.
Os::Queue::QueueStatus createQueue(NATIVE_INT_TYPE depth, NATIVE_INT_TYPE msgSize)
Os::Queue m_queue
queue object for active component
@ MSG_DISPATCH_OK
Dispatch was normal.
@ MSG_DISPATCH_EXIT
A message was sent requesting an exit of the loop.
@ MSG_DISPATCH_ERROR
Errors dispatching messages.
NATIVE_UINT_TYPE getBuffLeft() const
returns how much deserialization buffer is left
void resetDeser()
reset deserialization to beginning
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int
@ QUEUE_OK
message sent/received okay
QueueStatus send(const Fw::SerializeBufferBase &buffer, NATIVE_INT_TYPE priority, QueueBlocking block)
send a message
QueueStatus receive(Fw::SerializeBufferBase &buffer, NATIVE_INT_TYPE &priority, QueueBlocking block)
receive a message
@ QUEUE_BLOCKING
Queue receive blocks until a message arrives.
@ QUEUE_NONBLOCKING
Queue receive always returns even if there is no message.
bool isConnected_timeCaller_OutputPort(NATIVE_INT_TYPE portNum)
bool isConnected_pingOut_OutputPort(NATIVE_INT_TYPE portNum)
void log_WARNING_HI_BA_StillDraining(U32 numDrained, U32 numToDrain)
NATIVE_INT_TYPE getNum_timeCaller_OutputPorts() const
Svc::InputPingPort * get_pingIn_InputPort(NATIVE_INT_TYPE portNum)
BufferAccumulatorComponentBase(const char *compName="")
Construct BufferAccumulatorComponentBase object.
bool isConnected_tlmOut_OutputPort(NATIVE_INT_TYPE portNum)
virtual void bufferSendInFill_preMsgHook(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)
Pre-message hook for async input port bufferSendInFill.
void pingIn_handlerBase(NATIVE_INT_TYPE portNum, U32 key)
Handler base-class function for input port pingIn.
void bufferSendOutReturn_out(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)
Invoke output port bufferSendOutReturn.
void set_tlmOut_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputTlmPort *port)
Connect port to tlmOut[portNum].
NATIVE_INT_TYPE getNum_tlmOut_OutputPorts() const
virtual void pingIn_handler(NATIVE_INT_TYPE portNum, U32 key)=0
Handler for input port pingIn.
void log_ACTIVITY_HI_BA_PartialDrainDone(U32 numDrained)
bool isConnected_cmdRegOut_OutputPort(NATIVE_INT_TYPE portNum)
Fw::InputCmdPort * get_cmdIn_InputPort(NATIVE_INT_TYPE portNum)
virtual void BA_DrainBuffers_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U32 numToDrain, Svc::BufferAccumulator_BlockMode blockMode)=0
Fw::InputBufferSendPort * get_bufferSendInFill_InputPort(NATIVE_INT_TYPE portNum)
void bufferSendOutDrain_out(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)
Invoke output port bufferSendOutDrain.
Fw::InputBufferSendPort * get_bufferSendInReturn_InputPort(NATIVE_INT_TYPE portNum)
bool isConnected_eventOut_OutputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_pingIn_InputPorts() const
virtual void BA_DrainBuffers_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command BA_DrainBuffers.
void set_pingOut_OutputPort(NATIVE_INT_TYPE portNum, Svc::InputPingPort *port)
Connect port to pingOut[portNum].
void log_ACTIVITY_HI_BA_BufferAccepted()
virtual void pingIn_preMsgHook(NATIVE_INT_TYPE portNum, U32 key)
Pre-message hook for async input port pingIn.
NATIVE_INT_TYPE getNum_cmdRegOut_OutputPorts() const
NATIVE_INT_TYPE getNum_pingOut_OutputPorts() const
NATIVE_INT_TYPE getNum_eventOut_OutputPorts() const
virtual void bufferSendInReturn_handler(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)=0
Handler for input port bufferSendInReturn.
void pingOut_out(NATIVE_INT_TYPE portNum, U32 key)
Invoke output port pingOut.
void set_cmdResponseOut_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputCmdResponsePort *port)
Connect port to cmdResponseOut[portNum].
virtual void BA_SetMode_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, Svc::BufferAccumulator_OpState mode)=0
void BA_DrainBuffers_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
NATIVE_INT_TYPE getNum_bufferSendInReturn_InputPorts() const
bool isConnected_cmdResponseOut_OutputPort(NATIVE_INT_TYPE portNum)
void log_WARNING_HI_BA_QueueFull()
@ EVENTID_BA_BUFFERACCEPTED
The Buffer Accumulator instance accepted and enqueued a buffer. To avoid uncontrolled sending of even...
@ EVENTID_BA_DRAINSTALLED
Ran out of buffers while executing DrainBuffers command.
@ EVENTID_BA_PARTIALDRAINDONE
Finished DrainBuffers command.
@ EVENTID_BA_QUEUEFULL
The Buffer Accumulator instance received a buffer when its queue was full. To avoid uncontrolled send...
@ EVENTID_BA_STILLDRAINING
Got DrainBuffers command while executing DrainBuffers command.
@ EVENTID_BA_NONBLOCKDRAIN
Not enough buffers to complete requested drain, and NOBLOCK was set; will only drain what we have.
@ EVENTID_BA_ALREADYDRAINING
Got DrainBuffers command while in DRAIN mode.
virtual ~BufferAccumulatorComponentBase()
Destroy BufferAccumulatorComponentBase object.
NATIVE_INT_TYPE getNum_bufferSendOutDrain_OutputPorts() const
void set_eventOut_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputLogPort *port)
Connect port to eventOut[portNum].
@ CHANNELID_BA_NUMQUEUEDBUFFERS
Channel ID for BA_NumQueuedBuffers.
NATIVE_INT_TYPE getNum_cmdResponseOut_OutputPorts() const
void bufferSendInFill_handlerBase(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)
Handler base-class function for input port bufferSendInFill.
void log_WARNING_HI_BA_AlreadyDraining()
@ OPCODE_BA_SETMODE
Set the mode.
@ OPCODE_BA_DRAINBUFFERS
Drain the commanded number of buffers.
void log_WARNING_LO_BA_NonBlockDrain(U32 numWillDrain, U32 numReqDrain)
NATIVE_INT_TYPE getNum_cmdIn_InputPorts() const
void set_bufferSendOutReturn_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputBufferSendPort *port)
Connect port to bufferSendOutReturn[portNum].
void log_WARNING_HI_BA_DrainStalled(U32 numDrained, U32 numToDrain)
NATIVE_INT_TYPE getNum_bufferSendInFill_InputPorts() const
void set_timeCaller_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputTimePort *port)
Connect port to timeCaller[portNum].
virtual void bufferSendInFill_handler(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)=0
Handler for input port bufferSendInFill.
void cmdResponse_out(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdResponse response)
Emit command response.
void tlmWrite_BA_NumQueuedBuffers(U32 arg, Fw::Time _tlmTime=Fw::Time())
void set_cmdRegOut_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputCmdRegPort *port)
Connect port to cmdRegOut[portNum].
void bufferSendInReturn_handlerBase(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)
Handler base-class function for input port bufferSendInReturn.
bool isConnected_bufferSendOutReturn_OutputPort(NATIVE_INT_TYPE portNum)
virtual void BA_SetMode_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command BA_SetMode.
void set_bufferSendOutDrain_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputBufferSendPort *port)
Connect port to bufferSendOutDrain[portNum].
NATIVE_INT_TYPE getNum_bufferSendOutReturn_OutputPorts() const
void BA_SetMode_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void regCommands()
Register commands with the Command Dispatcher.
virtual void bufferSendInReturn_preMsgHook(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)
Pre-message hook for async input port bufferSendInReturn.
bool isConnected_bufferSendOutDrain_OutputPort(NATIVE_INT_TYPE portNum)
void invoke(U32 key)
Invoke a port interface.
void init()
Initialization function.
void addCallPort(InputPingPort *callPort)
Register an input port.
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.