11 #if FW_ENABLE_TEXT_LOGGING
20 BUFFQUEUEIN_BUFFERSEND,
22 COMSTATUSIN_SUCCESSCONDITION,
37 class ComponentIpcSerializableBuffer :
52 return sizeof(m_buff);
59 const U8* getBuffAddr()
const {
65 U8 m_buff[SERIALIZATION_SIZE];
89 this->m_buffQueueIn_InputPort[port].
init();
94 this->m_buffQueueIn_InputPort[port].
setPortNum(port);
96 #if FW_OBJECT_NAMES == 1
111 this->m_buffQueueIn_InputPort[port].setObjName(portName);
121 this->m_comQueueIn_InputPort[port].
init();
126 this->m_comQueueIn_InputPort[port].
setPortNum(port);
128 #if FW_OBJECT_NAMES == 1
143 this->m_comQueueIn_InputPort[port].setObjName(portName);
153 this->m_comStatusIn_InputPort[port].
init();
158 this->m_comStatusIn_InputPort[port].
setPortNum(port);
160 #if FW_OBJECT_NAMES == 1
175 this->m_comStatusIn_InputPort[port].setObjName(portName);
185 this->m_run_InputPort[port].
init();
192 #if FW_OBJECT_NAMES == 1
207 this->m_run_InputPort[port].setObjName(portName);
217 this->m_Log_OutputPort[port].
init();
219 #if FW_OBJECT_NAMES == 1
234 this->m_Log_OutputPort[port].setObjName(portName);
238 #if FW_ENABLE_TEXT_LOGGING == 1
242 port < static_cast<PlatformIntType>(this->getNum_LogText_OutputPorts());
245 this->m_LogText_OutputPort[port].
init();
247 #if FW_OBJECT_NAMES == 1
262 this->m_LogText_OutputPort[port].setObjName(portName);
273 this->m_Time_OutputPort[port].
init();
275 #if FW_OBJECT_NAMES == 1
290 this->m_Time_OutputPort[port].setObjName(portName);
300 this->m_Tlm_OutputPort[port].
init();
302 #if FW_OBJECT_NAMES == 1
317 this->m_Tlm_OutputPort[port].setObjName(portName);
327 this->m_buffQueueSend_OutputPort[port].
init();
329 #if FW_OBJECT_NAMES == 1
344 this->m_buffQueueSend_OutputPort[port].setObjName(portName);
354 this->m_comQueueSend_OutputPort[port].
init();
356 #if FW_OBJECT_NAMES == 1
371 this->m_comQueueSend_OutputPort[port].setObjName(portName);
377 ComponentIpcSerializableBuffer::SERIALIZATION_SIZE
397 return &this->m_buffQueueIn_InputPort[portNum];
408 return &this->m_comQueueIn_InputPort[portNum];
419 return &this->m_comStatusIn_InputPort[portNum];
430 return &this->m_run_InputPort[portNum];
451 #if FW_ENABLE_TEXT_LOGGING == 1
453 void ComQueueComponentBase ::
454 set_LogText_OutputPort(
460 portNum < this->getNum_LogText_OutputPorts(),
464 this->m_LogText_OutputPort[portNum].addCallPort(port);
480 this->m_Time_OutputPort[portNum].
addCallPort(port);
512 this->m_buffQueueSend_OutputPort[portNum].
addCallPort(port);
526 this->m_comQueueSend_OutputPort[portNum].
addCallPort(port);
529 #if FW_PORT_SERIALIZATION
538 Fw::InputSerializePort* port
546 this->m_Log_OutputPort[portNum].registerSerialPort(port);
549 #if FW_ENABLE_TEXT_LOGGING == 1
551 void ComQueueComponentBase ::
552 set_LogText_OutputPort(
554 Fw::InputSerializePort* port
558 portNum < this->getNum_LogText_OutputPorts(),
562 this->m_LogText_OutputPort[portNum].registerSerialPort(port);
570 Fw::InputSerializePort* port
578 this->m_Time_OutputPort[portNum].registerSerialPort(port);
584 Fw::InputSerializePort* port
592 this->m_Tlm_OutputPort[portNum].registerSerialPort(port);
597 #if FW_PORT_SERIALIZATION
606 Fw::InputSerializePort* port
614 this->m_buffQueueSend_OutputPort[portNum].registerSerialPort(port);
620 Fw::InputSerializePort* port
628 this->m_comQueueSend_OutputPort[portNum].registerSerialPort(port);
639 Fw::ActiveComponentBase(compName)
688 #if FW_ENABLE_TEXT_LOGGING == 1
691 getNum_LogText_OutputPorts()
const
738 return this->m_Log_OutputPort[portNum].
isConnected();
741 #if FW_ENABLE_TEXT_LOGGING == 1
743 bool ComQueueComponentBase ::
747 portNum < this->getNum_LogText_OutputPorts(),
751 return this->m_LogText_OutputPort[portNum].isConnected();
764 return this->m_Time_OutputPort[portNum].
isConnected();
775 return this->m_Tlm_OutputPort[portNum].
isConnected();
790 return this->m_buffQueueSend_OutputPort[portNum].
isConnected();
801 return this->m_comQueueSend_OutputPort[portNum].
isConnected();
827 ComponentIpcSerializableBuffer msg;
831 _status = msg.serialize(
840 _status = msg.serialize(portNum);
847 _status = msg.serialize(fwBuffer);
887 ComponentIpcSerializableBuffer msg;
891 _status = msg.serialize(
900 _status = msg.serialize(portNum);
907 _status = msg.serialize(data);
914 _status = msg.serialize(context);
952 ComponentIpcSerializableBuffer msg;
956 _status = msg.serialize(
965 _status = msg.serialize(portNum);
972 _status = msg.serialize(condition);
1005 ComponentIpcSerializableBuffer msg;
1009 _status = msg.serialize(
1018 _status = msg.serialize(portNum);
1025 _status = msg.serialize(context);
1105 this->m_buffQueueSend_OutputPort[portNum].
invoke(
1121 this->m_comQueueSend_OutputPort[portNum].
invoke(
1139 if (this->m_Time_OutputPort[0].isConnected()) {
1140 this->m_Time_OutputPort[0].
invoke(_logTime);
1148 if (this->m_Log_OutputPort[0].isConnected()) {
1152 #if FW_AMPCS_COMPATIBLE
1161 #if FW_AMPCS_COMPATIBLE
1171 _status = _logBuff.
serialize(queueType);
1177 #if FW_AMPCS_COMPATIBLE
1180 static_cast<U8>(
sizeof(U32))
1193 this->m_Log_OutputPort[0].
invoke(
1202 #if FW_ENABLE_TEXT_LOGGING
1203 if (this->m_LogText_OutputPort[0].isConnected()) {
1204 #if FW_OBJECT_NAMES == 1
1205 const char* _formatString =
1206 "(%s) %s: The %s queue at index %" PRIu32
" overflowed";
1208 const char* _formatString =
1209 "%s: The %s queue at index %" PRIu32
" overflowed";
1215 queueType.toString(queueTypeStr);
1232 this->m_LogText_OutputPort[0].invoke(
1252 if (this->m_Tlm_OutputPort[0].isConnected()) {
1254 this->m_Time_OutputPort[0].isConnected() &&
1257 this->m_Time_OutputPort[0].
invoke(_tlmTime);
1271 this->m_Tlm_OutputPort[0].
invoke(
1285 if (this->m_Tlm_OutputPort[0].isConnected()) {
1287 this->m_Time_OutputPort[0].isConnected() &&
1290 this->m_Time_OutputPort[0].
invoke(_tlmTime);
1304 this->m_Tlm_OutputPort[0].
invoke(
1319 if (this->m_Time_OutputPort[0].isConnected()) {
1321 this->m_Time_OutputPort[0].
invoke(_time);
1336 ComponentIpcSerializableBuffer msg;
1359 MsgTypeEnum msgType =
static_cast<MsgTypeEnum
>(desMsg);
1361 if (msgType == COMQUEUE_COMPONENT_EXIT) {
1366 deserStatus = msg.deserialize(portNum);
1374 case BUFFQUEUEIN_BUFFERSEND: {
1392 case COMQUEUEIN_COM: {
1403 deserStatus = msg.deserialize(context);
1419 case COMSTATUSIN_SUCCESSCONDITION: {
1440 deserStatus = msg.deserialize(context);
1465 void ComQueueComponentBase ::
1474 compPtr->buffQueueIn_handlerBase(
1480 void ComQueueComponentBase ::
1490 compPtr->comQueueIn_handlerBase(
1497 void ComQueueComponentBase ::
1506 compPtr->comStatusIn_handlerBase(
1512 void ComQueueComponentBase ::
1521 compPtr->run_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)
@ WARNING_HI
A 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(InputComPort *callPort)
Register an input port.
void init()
Initialization function.
void invoke(Fw::ComBuffer &data, U32 context)
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
void incNumMsgDropped()
increment the number of messages dropped
@ 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.
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int
const char * toChar() const
gets char buffer
Fw::SerializeStatus deserialize(Fw::SerializeBufferBase &buffer)
Deserialize raw enum value from SerialType.
@ QUEUE_OK
message sent/received okay
@ QUEUE_FULL
queue was full when attempting to send a message
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.
Array of queue depths for Fw::Buffer types.
bool isConnected_Tlm_OutputPort(NATIVE_INT_TYPE portNum)
void buffQueueSend_out(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)
Invoke output port buffQueueSend.
Fw::InputComPort * get_comQueueIn_InputPort(NATIVE_INT_TYPE portNum)
void comQueueSend_out(NATIVE_INT_TYPE portNum, Fw::ComBuffer &data, U32 context)
Invoke output port comQueueSend.
NATIVE_INT_TYPE getNum_Time_OutputPorts() const
void comQueueIn_handlerBase(NATIVE_INT_TYPE portNum, Fw::ComBuffer &data, U32 context)
Handler base-class function for input port comQueueIn.
void tlmWrite_comQueueDepth(const Svc::ComQueueDepth &arg, Fw::Time _tlmTime=Fw::Time())
NATIVE_INT_TYPE getNum_comQueueSend_OutputPorts() const
bool isConnected_comQueueSend_OutputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_buffQueueSend_OutputPorts() const
NATIVE_INT_TYPE getNum_Log_OutputPorts() const
void set_Log_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputLogPort *port)
Connect port to Log[portNum].
void tlmWrite_buffQueueDepth(const Svc::BuffQueueDepth &arg, Fw::Time _tlmTime=Fw::Time())
void buffQueueIn_handlerBase(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)
Handler base-class function for input port buffQueueIn.
void set_comQueueSend_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputComPort *port)
Connect port to comQueueSend[portNum].
virtual void comStatusIn_handler(NATIVE_INT_TYPE portNum, Fw::Success &condition)=0
Handler for input port comStatusIn.
ComQueueComponentBase(const char *compName="")
Construct ComQueueComponentBase object.
NATIVE_INT_TYPE getNum_comStatusIn_InputPorts() const
Svc::InputSchedPort * get_run_InputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_buffQueueIn_InputPorts() const
@ EVENTID_QUEUEOVERFLOW
Queue overflow event.
virtual void buffQueueIn_preMsgHook(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)
Pre-message hook for async input port buffQueueIn.
virtual void comQueueIn_handler(NATIVE_INT_TYPE portNum, Fw::ComBuffer &data, U32 context)=0
Handler for input port comQueueIn.
bool isConnected_Time_OutputPort(NATIVE_INT_TYPE portNum)
virtual void buffQueueIn_handler(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)=0
Handler for input port buffQueueIn.
virtual void comQueueIn_preMsgHook(NATIVE_INT_TYPE portNum, Fw::ComBuffer &data, U32 context)
Pre-message hook for async input port comQueueIn.
virtual ~ComQueueComponentBase()
Destroy ComQueueComponentBase object.
void set_buffQueueSend_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputBufferSendPort *port)
Connect port to buffQueueSend[portNum].
NATIVE_INT_TYPE getNum_Tlm_OutputPorts() const
virtual void run_preMsgHook(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)
Pre-message hook for async input port run.
void set_Time_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputTimePort *port)
Connect port to Time[portNum].
virtual void run_handler(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)=0
Handler for input port run.
bool isConnected_buffQueueSend_OutputPort(NATIVE_INT_TYPE portNum)
void set_Tlm_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputTlmPort *port)
Connect port to Tlm[portNum].
void run_handlerBase(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)
Handler base-class function for input port run.
Fw::InputSuccessConditionPort * get_comStatusIn_InputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_comQueueIn_InputPorts() const
void log_WARNING_HI_QueueOverflow(Svc::QueueType queueType, U32 index)
NATIVE_INT_TYPE getNum_run_InputPorts() const
bool isConnected_Log_OutputPort(NATIVE_INT_TYPE portNum)
@ CHANNELID_BUFFQUEUEDEPTH
Channel ID for buffQueueDepth.
@ CHANNELID_COMQUEUEDEPTH
Channel ID for comQueueDepth.
virtual void comStatusIn_preMsgHook(NATIVE_INT_TYPE portNum, Fw::Success &condition)
Pre-message hook for async input port comStatusIn.
Fw::InputBufferSendPort * get_buffQueueIn_InputPort(NATIVE_INT_TYPE portNum)
void comStatusIn_handlerBase(NATIVE_INT_TYPE portNum, Fw::Success &condition)
Handler base-class function for input port comStatusIn.
Array of queue depths for Fw::Com types.
An enumeration of queue data types.
@ SERIALIZED_SIZE
The size of the serial representation.
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.