11 #if FW_ENABLE_TEXT_LOGGING
23 INT_IF_INTERRUPTREPORT,
40 class ComponentIpcSerializableBuffer :
55 return sizeof(m_buff);
62 const U8* getBuffAddr()
const {
68 U8 m_buff[SERIALIZATION_SIZE];
92 this->m_BufferIn_InputPort[port].
init();
97 this->m_BufferIn_InputPort[port].
setPortNum(port);
99 #if FW_OBJECT_NAMES == 1
114 this->m_BufferIn_InputPort[port].setObjName(portName);
124 this->m_PingIn_InputPort[port].
init();
129 this->m_PingIn_InputPort[port].
setPortNum(port);
131 #if FW_OBJECT_NAMES == 1
146 this->m_PingIn_InputPort[port].setObjName(portName);
156 this->m_Sched_InputPort[port].
init();
161 this->m_Sched_InputPort[port].
setPortNum(port);
163 #if FW_OBJECT_NAMES == 1
178 this->m_Sched_InputPort[port].setObjName(portName);
188 this->m_Time_OutputPort[port].
init();
190 #if FW_OBJECT_NAMES == 1
205 this->m_Time_OutputPort[port].setObjName(portName);
215 this->m_Tlm_OutputPort[port].
init();
217 #if FW_OBJECT_NAMES == 1
232 this->m_Tlm_OutputPort[port].setObjName(portName);
242 this->m_BufferOut_OutputPort[port].
init();
244 #if FW_OBJECT_NAMES == 1
259 this->m_BufferOut_OutputPort[port].setObjName(portName);
269 this->m_CycleOut_OutputPort[port].
init();
271 #if FW_OBJECT_NAMES == 1
286 this->m_CycleOut_OutputPort[port].setObjName(portName);
296 this->m_PingOut_OutputPort[port].
init();
298 #if FW_OBJECT_NAMES == 1
313 this->m_PingOut_OutputPort[port].setObjName(portName);
319 ComponentIpcSerializableBuffer::SERIALIZATION_SIZE
339 return &this->m_BufferIn_InputPort[portNum];
350 return &this->m_PingIn_InputPort[portNum];
361 return &this->m_Sched_InputPort[portNum];
379 this->m_Time_OutputPort[portNum].
addCallPort(port);
411 this->m_BufferOut_OutputPort[portNum].
addCallPort(port);
425 this->m_CycleOut_OutputPort[portNum].
addCallPort(port);
439 this->m_PingOut_OutputPort[portNum].
addCallPort(port);
442 #if FW_PORT_SERIALIZATION
451 Fw::InputSerializePort* port
459 this->m_Time_OutputPort[portNum].registerSerialPort(port);
465 Fw::InputSerializePort* port
473 this->m_Tlm_OutputPort[portNum].registerSerialPort(port);
478 #if FW_PORT_SERIALIZATION
487 Fw::InputSerializePort* port
495 this->m_BufferOut_OutputPort[portNum].registerSerialPort(port);
501 Fw::InputSerializePort* port
509 this->m_CycleOut_OutputPort[portNum].registerSerialPort(port);
515 Fw::InputSerializePort* port
523 this->m_PingOut_OutputPort[portNum].registerSerialPort(port);
534 Fw::ActiveComponentBase(compName)
617 return this->m_Time_OutputPort[portNum].
isConnected();
628 return this->m_Tlm_OutputPort[portNum].
isConnected();
643 return this->m_BufferOut_OutputPort[portNum].
isConnected();
654 return this->m_CycleOut_OutputPort[portNum].
isConnected();
665 return this->m_PingOut_OutputPort[portNum].
isConnected();
691 ComponentIpcSerializableBuffer msg;
695 _status = msg.serialize(
704 _status = msg.serialize(portNum);
711 _status = msg.serialize(buff);
744 ComponentIpcSerializableBuffer msg;
748 _status = msg.serialize(
757 _status = msg.serialize(portNum);
764 _status = msg.serialize(key);
797 ComponentIpcSerializableBuffer msg;
801 _status = msg.serialize(
810 _status = msg.serialize(portNum);
817 _status = msg.serialize(context);
882 this->m_BufferOut_OutputPort[portNum].
invoke(
897 this->m_CycleOut_OutputPort[portNum].
invoke(
912 this->m_PingOut_OutputPort[portNum].
invoke(
924 ComponentIpcSerializableBuffer msg;
928 _status = msg.serialize(
static_cast<NATIVE_INT_TYPE>(INT_IF_INTERRUPTREPORT));
941 _status = msg.serialize(interrupt);
967 if (this->m_Tlm_OutputPort[0].isConnected()) {
969 this->m_Time_OutputPort[0].isConnected() &&
972 this->m_Time_OutputPort[0].
invoke(_tlmTime);
986 this->m_Tlm_OutputPort[0].
invoke(
1001 if (this->m_Time_OutputPort[0].isConnected()) {
1003 this->m_Time_OutputPort[0].
invoke(_time);
1018 ComponentIpcSerializableBuffer msg;
1041 MsgTypeEnum msgType =
static_cast<MsgTypeEnum
>(desMsg);
1043 if (msgType == BLOCKDRIVER_COMPONENT_EXIT) {
1048 deserStatus = msg.deserialize(portNum);
1056 case BUFFERIN_DATABUFFER: {
1077 deserStatus = msg.deserialize(key);
1095 deserStatus = msg.deserialize(context);
1110 case INT_IF_INTERRUPTREPORT: {
1112 deserStatus = msg.deserialize(interrupt);
1123 msg.getBuffLeft() == 0,
1146 void BlockDriverComponentBase ::
1155 compPtr->BufferIn_handlerBase(
1161 void BlockDriverComponentBase ::
1170 compPtr->PingIn_handlerBase(
1176 void BlockDriverComponentBase ::
1185 compPtr->Sched_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
BYTE PingInPortSize[Svc::InputPingPort::SERIALIZED_SIZE]
BYTE InterruptReportIntIfSize[sizeof(U32)]
BYTE BufferInPortSize[Drv::InputDataBufferPort::SERIALIZED_SIZE]
BYTE SchedPortSize[Svc::InputSchedPort::SERIALIZED_SIZE]
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_OBJ_NAME_MAX_SIZE
Size of object name (if object names enabled). AC Limits to 80, truncation occurs above 80.
void set_PingOut_OutputPort(NATIVE_INT_TYPE portNum, Svc::InputPingPort *port)
Connect port to PingOut[portNum].
void CycleOut_out(NATIVE_INT_TYPE portNum, Svc::TimerVal &cycleStart)
Invoke output port CycleOut.
bool isConnected_CycleOut_OutputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_BufferOut_OutputPorts() const
void set_CycleOut_OutputPort(NATIVE_INT_TYPE portNum, Svc::InputCyclePort *port)
Connect port to CycleOut[portNum].
virtual void PingIn_preMsgHook(NATIVE_INT_TYPE portNum, U32 key)
Pre-message hook for async input port PingIn.
bool isConnected_Tlm_OutputPort(NATIVE_INT_TYPE portNum)
bool isConnected_Time_OutputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_Tlm_OutputPorts() const
void tlmWrite_BD_Cycles(U32 arg, Fw::Time _tlmTime=Fw::Time())
bool isConnected_BufferOut_OutputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_CycleOut_OutputPorts() const
void InterruptReport_internalInterfaceInvoke(U32 interrupt)
Internal interface base-class function for InterruptReport.
@ CHANNELID_BD_CYCLES
Channel ID for BD_Cycles.
virtual void PingIn_handler(NATIVE_INT_TYPE portNum, U32 key)=0
Handler for input port PingIn.
virtual void Sched_handler(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)=0
Handler for input port Sched.
void BufferOut_out(NATIVE_INT_TYPE portNum, Drv::DataBuffer &buff)
Invoke output port BufferOut.
BlockDriverComponentBase(const char *compName="")
Construct BlockDriverComponentBase object.
NATIVE_INT_TYPE getNum_PingIn_InputPorts() const
NATIVE_INT_TYPE getNum_PingOut_OutputPorts() const
void set_Tlm_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputTlmPort *port)
Connect port to Tlm[portNum].
NATIVE_INT_TYPE getNum_Time_OutputPorts() const
void set_BufferOut_OutputPort(NATIVE_INT_TYPE portNum, Drv::InputDataBufferPort *port)
Connect port to BufferOut[portNum].
NATIVE_INT_TYPE getNum_Sched_InputPorts() const
virtual void InterruptReport_internalInterfaceHandler(U32 interrupt)=0
Internal interface handler for InterruptReport.
void Sched_handlerBase(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)
Handler base-class function for input port Sched.
void BufferIn_handlerBase(NATIVE_INT_TYPE portNum, Drv::DataBuffer &buff)
Handler base-class function for input port BufferIn.
virtual void BufferIn_preMsgHook(NATIVE_INT_TYPE portNum, Drv::DataBuffer &buff)
Pre-message hook for async input port BufferIn.
NATIVE_INT_TYPE getNum_BufferIn_InputPorts() const
virtual ~BlockDriverComponentBase()
Destroy BlockDriverComponentBase object.
bool isConnected_PingOut_OutputPort(NATIVE_INT_TYPE portNum)
Svc::InputSchedPort * get_Sched_InputPort(NATIVE_INT_TYPE portNum)
Svc::InputPingPort * get_PingIn_InputPort(NATIVE_INT_TYPE portNum)
void PingOut_out(NATIVE_INT_TYPE portNum, U32 key)
Invoke output port PingOut.
void PingIn_handlerBase(NATIVE_INT_TYPE portNum, U32 key)
Handler base-class function for input port PingIn.
virtual void Sched_preMsgHook(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)
Pre-message hook for async input port Sched.
virtual void BufferIn_handler(NATIVE_INT_TYPE portNum, Drv::DataBuffer &buff)=0
Handler for input port BufferIn.
Drv::InputDataBufferPort * get_BufferIn_InputPort(NATIVE_INT_TYPE portNum)
void set_Time_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputTimePort *port)
Connect port to Time[portNum].
void addCallPort(InputDataBufferPort *callPort)
Register an input port.
void invoke(Drv::DataBuffer &buff)
Invoke a port interface.
void init()
Initialization function.
@ ACTIVE_COMPONENT_EXIT
message to exit active component task
void init()
Object initializer.
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.
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.
void init()
Initialization function.
void addCallPort(InputCyclePort *callPort)
Register an input port.
void invoke(Svc::TimerVal &cycleStart)
Invoke a port interface.
void invoke(U32 key)
Invoke a port interface.
void init()
Initialization function.
void addCallPort(InputPingPort *callPort)
Register an input port.
Serializable class for carrying timer values.
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.