11 #if FW_ENABLE_TEXT_LOGGING
35 class ComponentIpcSerializableBuffer :
50 return sizeof(m_buff);
57 const U8* getBuffAddr()
const {
63 U8 m_buff[SERIALIZATION_SIZE];
87 this->m_cmdIn_InputPort[port].
init();
92 this->m_cmdIn_InputPort[port].
setPortNum(port);
94 #if FW_OBJECT_NAMES == 1
109 this->m_cmdIn_InputPort[port].setObjName(portName);
119 this->m_comIn_InputPort[port].
init();
124 this->m_comIn_InputPort[port].
setPortNum(port);
126 #if FW_OBJECT_NAMES == 1
141 this->m_comIn_InputPort[port].setObjName(portName);
151 this->m_pingIn_InputPort[port].
init();
156 this->m_pingIn_InputPort[port].
setPortNum(port);
158 #if FW_OBJECT_NAMES == 1
173 this->m_pingIn_InputPort[port].setObjName(portName);
177 #if FW_ENABLE_TEXT_LOGGING == 1
181 port < static_cast<PlatformIntType>(this->getNum_LogText_OutputPorts());
184 this->m_LogText_OutputPort[port].
init();
186 #if FW_OBJECT_NAMES == 1
201 this->m_LogText_OutputPort[port].setObjName(portName);
212 this->m_cmdRegOut_OutputPort[port].
init();
214 #if FW_OBJECT_NAMES == 1
229 this->m_cmdRegOut_OutputPort[port].setObjName(portName);
239 this->m_cmdResponseOut_OutputPort[port].
init();
241 #if FW_OBJECT_NAMES == 1
256 this->m_cmdResponseOut_OutputPort[port].setObjName(portName);
266 this->m_logOut_OutputPort[port].
init();
268 #if FW_OBJECT_NAMES == 1
283 this->m_logOut_OutputPort[port].setObjName(portName);
293 this->m_timeCaller_OutputPort[port].
init();
295 #if FW_OBJECT_NAMES == 1
310 this->m_timeCaller_OutputPort[port].setObjName(portName);
320 this->m_pingOut_OutputPort[port].
init();
322 #if FW_OBJECT_NAMES == 1
337 this->m_pingOut_OutputPort[port].setObjName(portName);
343 ComponentIpcSerializableBuffer::SERIALIZATION_SIZE
363 return &this->m_cmdIn_InputPort[portNum];
378 return &this->m_comIn_InputPort[portNum];
389 return &this->m_pingIn_InputPort[portNum];
396 #if FW_ENABLE_TEXT_LOGGING == 1
398 void ComLoggerComponentBase ::
399 set_LogText_OutputPort(
405 portNum < this->getNum_LogText_OutputPorts(),
409 this->m_LogText_OutputPort[portNum].addCallPort(port);
425 this->m_cmdRegOut_OutputPort[portNum].
addCallPort(port);
439 this->m_cmdResponseOut_OutputPort[portNum].
addCallPort(port);
453 this->m_logOut_OutputPort[portNum].
addCallPort(port);
467 this->m_timeCaller_OutputPort[portNum].
addCallPort(port);
485 this->m_pingOut_OutputPort[portNum].
addCallPort(port);
488 #if FW_PORT_SERIALIZATION
494 #if FW_ENABLE_TEXT_LOGGING == 1
496 void ComLoggerComponentBase ::
497 set_LogText_OutputPort(
499 Fw::InputSerializePort* port
503 portNum < this->getNum_LogText_OutputPorts(),
507 this->m_LogText_OutputPort[portNum].registerSerialPort(port);
515 Fw::InputSerializePort* port
523 this->m_cmdRegOut_OutputPort[portNum].registerSerialPort(port);
529 Fw::InputSerializePort* port
537 this->m_cmdResponseOut_OutputPort[portNum].registerSerialPort(port);
543 Fw::InputSerializePort* port
551 this->m_logOut_OutputPort[portNum].registerSerialPort(port);
557 Fw::InputSerializePort* port
565 this->m_timeCaller_OutputPort[portNum].registerSerialPort(port);
570 #if FW_PORT_SERIALIZATION
579 Fw::InputSerializePort* port
587 this->m_pingOut_OutputPort[portNum].registerSerialPort(port);
599 FW_ASSERT(this->m_cmdRegOut_OutputPort[0].isConnected());
601 this->m_cmdRegOut_OutputPort[0].
invoke(
612 Fw::ActiveComponentBase(compName)
614 this->m_FileNotInitializedThrottle = 0;
653 #if FW_ENABLE_TEXT_LOGGING == 1
656 getNum_LogText_OutputPorts()
const
701 #if FW_ENABLE_TEXT_LOGGING == 1
703 bool ComLoggerComponentBase ::
707 portNum < this->getNum_LogText_OutputPorts(),
711 return this->m_LogText_OutputPort[portNum].isConnected();
724 return this->m_cmdRegOut_OutputPort[portNum].
isConnected();
735 return this->m_cmdResponseOut_OutputPort[portNum].
isConnected();
746 return this->m_logOut_OutputPort[portNum].
isConnected();
757 return this->m_timeCaller_OutputPort[portNum].
isConnected();
772 return this->m_pingOut_OutputPort[portNum].
isConnected();
800 ComponentIpcSerializableBuffer msg;
804 _status = msg.serialize(
813 _status = msg.serialize(portNum);
820 _status = msg.serialize(data);
827 _status = msg.serialize(context);
860 ComponentIpcSerializableBuffer msg;
864 _status = msg.serialize(
873 _status = msg.serialize(portNum);
880 _status = msg.serialize(key);
937 this->m_pingOut_OutputPort[portNum].
invoke(
953 FW_ASSERT(this->m_cmdResponseOut_OutputPort[0].isConnected());
954 this->m_cmdResponseOut_OutputPort[0].
invoke(opCode, cmdSeq, response);
975 ComponentIpcSerializableBuffer msg;
988 _status = msg.serialize(port);
994 _status = msg.serialize(opCode);
1000 _status = msg.serialize(cmdSeq);
1006 _status = msg.serialize(args);
1053 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1054 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
1062 if (this->m_logOut_OutputPort[0].isConnected()) {
1066 #if FW_AMPCS_COMPATIBLE
1075 #if FW_AMPCS_COMPATIBLE
1078 static_cast<U8>(
sizeof(U32))
1091 _status = file.
serialize(_logBuff, 240);
1097 this->m_logOut_OutputPort[0].
invoke(
1106 #if FW_ENABLE_TEXT_LOGGING
1107 if (this->m_LogText_OutputPort[0].isConnected()) {
1108 #if FW_OBJECT_NAMES == 1
1109 const char* _formatString =
1110 "(%s) %s: Error %" PRIu32
" opening file %s";
1112 const char* _formatString =
1113 "%s: Error %" PRIu32
" opening file %s";
1133 this->m_LogText_OutputPort[0].invoke(
1153 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1154 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
1162 if (this->m_logOut_OutputPort[0].isConnected()) {
1166 #if FW_AMPCS_COMPATIBLE
1175 #if FW_AMPCS_COMPATIBLE
1178 static_cast<U8>(
sizeof(U32))
1191 #if FW_AMPCS_COMPATIBLE
1194 static_cast<U8>(
sizeof(U32))
1201 _status = _logBuff.
serialize(bytesWritten);
1207 #if FW_AMPCS_COMPATIBLE
1210 static_cast<U8>(
sizeof(U32))
1217 _status = _logBuff.
serialize(bytesToWrite);
1223 _status = file.
serialize(_logBuff, 240);
1229 this->m_logOut_OutputPort[0].
invoke(
1238 #if FW_ENABLE_TEXT_LOGGING
1239 if (this->m_LogText_OutputPort[0].isConnected()) {
1240 #if FW_OBJECT_NAMES == 1
1241 const char* _formatString =
1242 "(%s) %s: Error %" PRIu32
" while writing %" PRIu32
" of %" PRIu32
" bytes to %s";
1244 const char* _formatString =
1245 "%s: Error %" PRIu32
" while writing %" PRIu32
" of %" PRIu32
" bytes to %s";
1267 this->m_LogText_OutputPort[0].invoke(
1286 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1287 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
1295 if (this->m_logOut_OutputPort[0].isConnected()) {
1299 #if FW_AMPCS_COMPATIBLE
1308 _status = validationFile.
serialize(_logBuff, 240);
1314 _status = file.
serialize(_logBuff, 240);
1320 #if FW_AMPCS_COMPATIBLE
1323 static_cast<U8>(
sizeof(U32))
1336 this->m_logOut_OutputPort[0].
invoke(
1345 #if FW_ENABLE_TEXT_LOGGING
1346 if (this->m_LogText_OutputPort[0].isConnected()) {
1347 #if FW_OBJECT_NAMES == 1
1348 const char* _formatString =
1349 "(%s) %s: The ComLogger failed to create a validation file %s for %s with error %" PRIu32
".";
1351 const char* _formatString =
1352 "%s: The ComLogger failed to create a validation file %s for %s with error %" PRIu32
".";
1364 "FileValidationError ",
1373 this->m_LogText_OutputPort[0].invoke(
1388 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1389 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
1397 if (this->m_logOut_OutputPort[0].isConnected()) {
1401 #if FW_AMPCS_COMPATIBLE
1410 _status = file.
serialize(_logBuff, 240);
1416 this->m_logOut_OutputPort[0].
invoke(
1425 #if FW_ENABLE_TEXT_LOGGING
1426 if (this->m_LogText_OutputPort[0].isConnected()) {
1427 #if FW_OBJECT_NAMES == 1
1428 const char* _formatString =
1429 "(%s) %s: File %s closed successfully.";
1431 const char* _formatString =
1432 "%s: File %s closed successfully.";
1451 this->m_LogText_OutputPort[0].invoke(
1469 this->m_FileNotInitializedThrottle++;
1474 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1475 this->m_timeCaller_OutputPort[0].
invoke(_logTime);
1483 if (this->m_logOut_OutputPort[0].isConnected()) {
1486 #if FW_AMPCS_COMPATIBLE
1496 this->m_logOut_OutputPort[0].
invoke(
1505 #if FW_ENABLE_TEXT_LOGGING
1506 if (this->m_LogText_OutputPort[0].isConnected()) {
1507 #if FW_OBJECT_NAMES == 1
1508 const char* _formatString =
1509 "(%s) %s: Could not open ComLogger file. File not initialized";
1511 const char* _formatString =
1512 "%s: Could not open ComLogger file. File not initialized";
1524 "FileNotInitialized "
1530 this->m_LogText_OutputPort[0].invoke(
1548 this->m_FileNotInitializedThrottle = 0;
1558 if (this->m_timeCaller_OutputPort[0].isConnected()) {
1560 this->m_timeCaller_OutputPort[0].
invoke(_time);
1575 ComponentIpcSerializableBuffer msg;
1598 MsgTypeEnum msgType =
static_cast<MsgTypeEnum
>(desMsg);
1600 if (msgType == COMLOGGER_COMPONENT_EXIT) {
1605 deserStatus = msg.deserialize(portNum);
1624 deserStatus = msg.deserialize(context);
1643 deserStatus = msg.deserialize(key);
1658 case CMD_CLOSEFILE: {
1661 deserStatus = msg.deserialize(opCode);
1669 deserStatus = msg.deserialize(cmdSeq);
1688 #if FW_CMD_CHECK_RESIDUAL
1690 if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
1715 void ComLoggerComponentBase ::
1727 const U32 idBase = callComp->
getIdBase();
1728 FW_ASSERT(opCode >= idBase, opCode, idBase);
1731 switch (opCode - idBase) {
1733 compPtr->CloseFile_cmdHandlerBase(
1747 void ComLoggerComponentBase ::
1757 compPtr->comIn_handlerBase(
1764 void ComLoggerComponentBase ::
1773 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
Enum representing a command response.
@ FORMAT_ERROR
Command failed to deserialize.
@ WARNING_HI
A serious but recoverable event.
@ WARNING_LO
A less serious but recoverable event.
@ DIAGNOSTIC
Software diagnostic events.
const char * toChar() const override
SerializeStatus serialize(SerializeBufferBase &buffer) const override
serialization function
void init()
Object initializer.
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.
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.
NATIVE_INT_TYPE getNum_pingIn_InputPorts() const
void log_WARNING_HI_FileOpenError(U32 errornum, const Fw::LogStringArg &file)
virtual ~ComLoggerComponentBase()
Destroy ComLoggerComponentBase object.
NATIVE_INT_TYPE getNum_pingOut_OutputPorts() const
bool isConnected_cmdRegOut_OutputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_cmdRegOut_OutputPorts() const
void log_DIAGNOSTIC_FileClosed(const Fw::LogStringArg &file)
bool isConnected_cmdResponseOut_OutputPort(NATIVE_INT_TYPE portNum)
Fw::InputCmdPort * get_cmdIn_InputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_comIn_InputPorts() const
ComLoggerComponentBase(const char *compName="")
Construct ComLoggerComponentBase object.
@ EVENTID_FILENOTINITIALIZED_THROTTLE
Throttle reset count for FileNotInitialized.
virtual void comIn_handler(NATIVE_INT_TYPE portNum, Fw::ComBuffer &data, U32 context)=0
Handler for input port comIn.
Fw::InputComPort * get_comIn_InputPort(NATIVE_INT_TYPE portNum)
virtual void pingIn_handler(NATIVE_INT_TYPE portNum, U32 key)=0
Handler for input port pingIn.
void log_WARNING_LO_FileValidationError(const Fw::LogStringArg &validationFile, const Fw::LogStringArg &file, U32 status)
virtual void comIn_preMsgHook(NATIVE_INT_TYPE portNum, Fw::ComBuffer &data, U32 context)
Pre-message hook for async input port comIn.
virtual void pingIn_preMsgHook(NATIVE_INT_TYPE portNum, U32 key)
Pre-message hook for async input port pingIn.
void comIn_handlerBase(NATIVE_INT_TYPE portNum, Fw::ComBuffer &data, U32 context)
Handler base-class function for input port comIn.
bool isConnected_pingOut_OutputPort(NATIVE_INT_TYPE portNum)
virtual void CloseFile_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
void log_WARNING_LO_FileNotInitialized()
Log event FileNotInitialized.
NATIVE_INT_TYPE getNum_timeCaller_OutputPorts() const
void CloseFile_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void set_timeCaller_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputTimePort *port)
Connect port to timeCaller[portNum].
void regCommands()
Register commands with the Command Dispatcher.
void cmdResponse_out(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdResponse response)
Emit command response.
virtual void CloseFile_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CloseFile.
bool isConnected_timeCaller_OutputPort(NATIVE_INT_TYPE portNum)
Svc::InputPingPort * get_pingIn_InputPort(NATIVE_INT_TYPE portNum)
void set_cmdRegOut_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputCmdRegPort *port)
Connect port to cmdRegOut[portNum].
NATIVE_INT_TYPE getNum_logOut_OutputPorts() const
void pingIn_handlerBase(NATIVE_INT_TYPE portNum, U32 key)
Handler base-class function for input port pingIn.
void set_logOut_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputLogPort *port)
Connect port to logOut[portNum].
@ EVENTID_FILECLOSED
The ComLogger successfully closed a file on command.
@ EVENTID_FILENOTINITIALIZED
@ EVENTID_FILEWRITEERROR
The ComLogger encountered an error writing to a file.
@ EVENTID_FILEVALIDATIONERROR
The ComLogger encountered an error writing the validation file.
@ EVENTID_FILEOPENERROR
The ComLogger encountered an error opening a file.
NATIVE_INT_TYPE getNum_cmdResponseOut_OutputPorts() const
void set_pingOut_OutputPort(NATIVE_INT_TYPE portNum, Svc::InputPingPort *port)
Connect port to pingOut[portNum].
NATIVE_INT_TYPE getNum_cmdIn_InputPorts() const
@ OPCODE_CLOSEFILE
Forces a close of the currently opened file.
void pingOut_out(NATIVE_INT_TYPE portNum, U32 key)
Invoke output port pingOut.
bool isConnected_logOut_OutputPort(NATIVE_INT_TYPE portNum)
void log_WARNING_HI_FileWriteError(U32 errornum, U32 bytesWritten, U32 bytesToWrite, const Fw::LogStringArg &file)
void set_cmdResponseOut_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputCmdResponsePort *port)
Connect port to cmdResponseOut[portNum].
void log_WARNING_LO_FileNotInitialized_ThrottleClear()
Reset throttle value for FileNotInitialized.
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.