F´ Flight Software - C/C++ Documentation  NASA-v1.5.0
A framework for building embedded system applications to NASA flight quality standards.
ActiveLoggerImpl.cpp
Go to the documentation of this file.
1 /*
2  * TestCommand1Impl.cpp
3  *
4  * Created on: Mar 28, 2014
5  * Author: tcanham
6  */
7 
9 #include <Fw/Types/Assert.hpp>
10 #include <Os/File.hpp>
11 
12 namespace Svc {
13 
16  m_fatalHead(0),
17  m_warningHiHead(0),
18  m_warningLoHead(0),
19  m_commandHead(0),
20  m_activityHiHead(0),
21  m_activityLoHead(0),
22  m_diagnosticHead(0)
23  {
24  // set input filter defaults
25  this->m_inFilterState[INPUT_WARNING_HI].enabled =
37  // set send filter defaults
50 
51  memset(m_filteredIDs,0,sizeof(m_filteredIDs));
52 
53  }
54 
56  }
57 
59  NATIVE_INT_TYPE queueDepth,
60  NATIVE_INT_TYPE instance
61  ) {
62  ActiveLoggerComponentBase::init(queueDepth,instance);
63  }
64 
65  void ActiveLoggerImpl::LogRecv_handler(NATIVE_INT_TYPE portNum, FwEventIdType id, Fw::Time &timeTag, Fw::LogSeverity severity, Fw::LogBuffer &args) {
66 
67  // make sure ID is not zero. Zero is reserved for ID filter.
68  FW_ASSERT(id != 0);
69 
70  switch (severity) {
71  case Fw::LOG_FATAL: // always pass FATAL
72  break;
73  case Fw::LOG_WARNING_HI:
74  if (this->m_inFilterState[INPUT_WARNING_HI].enabled == INPUT_DISABLED) {
75  return;
76  }
77  break;
78  case Fw::LOG_WARNING_LO:
79  if (this->m_inFilterState[INPUT_WARNING_LO].enabled == INPUT_DISABLED) {
80  return;
81  }
82  break;
83  case Fw::LOG_COMMAND:
84  if (this->m_inFilterState[INPUT_COMMAND].enabled == INPUT_DISABLED) {
85  return;
86  }
87  break;
89  if (this->m_inFilterState[INPUT_ACTIVITY_HI].enabled == INPUT_DISABLED) {
90  return;
91  }
92  break;
94  if (this->m_inFilterState[INPUT_ACTIVITY_LO].enabled == INPUT_DISABLED) {
95  return;
96  }
97  break;
98  case Fw::LOG_DIAGNOSTIC:
99  if (this->m_inFilterState[INPUT_DIAGNOSTIC].enabled == INPUT_DISABLED) {
100  return;
101  }
102  break;
103  default:
104  FW_ASSERT(0,static_cast<NATIVE_INT_TYPE>(severity));
105  return;
106  }
107 
108  // check ID filters
109  for (NATIVE_INT_TYPE entry = 0; entry < TELEM_ID_FILTER_SIZE; entry++) {
110  if (
111  (m_filteredIDs[entry] == id) &&
113  ) {
114  return;
115  }
116  }
117 
118  // send event to the logger thread
119  this->loqQueue_internalInterfaceInvoke(id,timeTag,static_cast<QueueLogSeverity>(severity),args);
120 
121  // if connected, announce the FATAL
122  if (Fw::LOG_FATAL == severity) {
124  this->FatalAnnounce_out(0,id);
125  }
126  }
127  }
128 
129  void ActiveLoggerImpl::loqQueue_internalInterfaceHandler(FwEventIdType id, Fw::Time &timeTag, QueueLogSeverity severity, Fw::LogBuffer &args) {
130 
131  // Serialize event
132  this->m_logPacket.setId(id);
133  this->m_logPacket.setTimeTag(timeTag);
134  this->m_logPacket.setLogBuffer(args);
135  this->m_comBuffer.resetSer();
137  FW_ASSERT(Fw::FW_SERIALIZE_OK == stat,static_cast<NATIVE_INT_TYPE>(stat));
138 
139  switch (severity) {
140  case QUEUE_LOG_FATAL: // always pass FATAL
141  this->m_fatalCb[this->m_fatalHead] = this->m_comBuffer;
142  this->m_fatalHead = (this->m_fatalHead + 1)%FW_NUM_ARRAY_ELEMENTS(this->m_fatalCb);
143  break;
145  this->m_warningHiCb[this->m_warningHiHead] = this->m_comBuffer;
147  if (this->m_sendFilterState[SEND_WARNING_HI].enabled == SEND_DISABLED) {
148  return;
149  }
150  break;
152  this->m_warningLoCb[this->m_warningLoHead] = this->m_comBuffer;
154  if (this->m_sendFilterState[SEND_WARNING_LO].enabled == SEND_DISABLED) {
155  return;
156  }
157  break;
158  case QUEUE_LOG_COMMAND:
159  this->m_commandCb[this->m_commandHead] = this->m_comBuffer;
161  if (this->m_sendFilterState[SEND_COMMAND].enabled == SEND_DISABLED) {
162  return;
163  }
164  break;
166  this->m_activityHiCb[this->m_activityHiHead] = this->m_comBuffer;
168  if (this->m_sendFilterState[SEND_ACTIVITY_HI].enabled == SEND_DISABLED) {
169  return;
170  }
171  break;
173  this->m_activityLoCb[this->m_activityLoHead] = this->m_comBuffer;
175  if (this->m_sendFilterState[SEND_ACTIVITY_LO].enabled == SEND_DISABLED) {
176  return;
177  }
178  break;
180  this->m_diagnosticCb[this->m_diagnosticHead] = this->m_comBuffer;
182  if (this->m_sendFilterState[SEND_DIAGNOSTIC].enabled == SEND_DISABLED) {
183  return;
184  }
185  break;
186  default:
187  FW_ASSERT(0,static_cast<NATIVE_INT_TYPE>(severity));
188  return;
189  }
190 
191  if (this->isConnected_PktSend_OutputPort(0)) {
192  this->PktSend_out(0, this->m_comBuffer,0);
193  }
194  }
195 
196  void ActiveLoggerImpl::ALOG_SET_EVENT_REPORT_FILTER_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, InputFilterLevel FilterLevel, InputFilterEnabled FilterEnable) {
197  if ( (FilterLevel > INPUT_DIAGNOSTIC) or
198  (FilterLevel < INPUT_WARNING_HI) or
201  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_VALIDATION_ERROR);
202  return;
203  }
205  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_OK);
206  }
207 
209  if ( (FilterLevel > SEND_DIAGNOSTIC) or
213  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_VALIDATION_ERROR);
214  return;
215  }
217  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_OK);
218  }
219 
221  // Walk through each event type and write it to the file
222 
223  static const BYTE delimiter = 0xA5;
224  // open the file
225  Os::File file;
226  Os::File::Status stat = file.open(filename.toChar(),Os::File::OPEN_WRITE);
227  if (stat != Os::File::OP_OK) {
228  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_OPEN,(I32)stat);
229  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
230  return;
231  }
232 
233  NATIVE_UINT_TYPE numRecords = 0;
234 
235  NATIVE_INT_TYPE fileWriteSize;
236  // write FATAL
237  for (NATIVE_UINT_TYPE entry = 0; entry < FW_NUM_ARRAY_ELEMENTS(this->m_fatalCb); entry++) {
238 
239  // if there is data, write it
240  if (this->m_fatalCb[entry].getBuffLength() != 0) {
241  // write delimiter
242  fileWriteSize = sizeof(delimiter);
243  stat = file.write(&delimiter,fileWriteSize);
244  if (stat != Os::File::OP_OK) {
245  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_FATAL_DELIMETER,stat);
246  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
247  file.close();
248  return;
249  }
250 
251  // write event record
252  fileWriteSize = this->m_fatalCb[entry].getBuffLength();
253  stat = file.write(this->m_fatalCb[entry].getBuffAddr(),fileWriteSize);
254  if (stat != Os::File::OP_OK) {
255  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_FATAL_RECORD,stat);
256  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
257  file.close();
258  return;
259  }
260  numRecords++;
261  } else {
262  // if the entry is empty, that means it is only a partially filled list, so quit writing
263  break;
264  }
265  }
266 
267  // write WARNING HI
268  for (NATIVE_UINT_TYPE entry = 0; entry < FW_NUM_ARRAY_ELEMENTS(this->m_warningHiCb); entry++) {
269  // if there is data, write it
270  if (this->m_warningHiCb[entry].getBuffLength() != 0) {
271  // write delimiter
272  fileWriteSize = sizeof(delimiter);
273  stat = file.write(&delimiter,fileWriteSize);
274  if (stat != Os::File::OP_OK) {
275  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_WARNING_HI_DELIMETER,stat);
276  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
277  file.close();
278  return;
279  }
280 
281  // write event record
282  fileWriteSize = this->m_warningHiCb[entry].getBuffLength();
283  stat = file.write(this->m_warningHiCb[entry].getBuffAddr(),fileWriteSize);
284  if (stat != Os::File::OP_OK) {
285  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_WARNING_HI_RECORD,stat);
286  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
287  file.close();
288  return;
289  }
290  numRecords++;
291  } else {
292  // if the entry is empty, that means it is only a partially filled list, so quit writing
293  break;
294  }
295  }
296 
297  // write WARNING LO
298  for (NATIVE_UINT_TYPE entry = 0; entry < FW_NUM_ARRAY_ELEMENTS(this->m_warningLoCb); entry++) {
299  // if there is data, write it
300  if (this->m_warningLoCb[entry].getBuffLength() != 0) {
301  // write delimiter
302  fileWriteSize = sizeof(delimiter);
303  stat = file.write(&delimiter,fileWriteSize);
304  if (stat != Os::File::OP_OK) {
305  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_WARNING_LO_DELIMETER,stat);
306  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
307  file.close();
308  return;
309  }
310 
311  // write event record
312  fileWriteSize = this->m_warningLoCb[entry].getBuffLength();
313  stat = file.write(this->m_warningLoCb[entry].getBuffAddr(),fileWriteSize);
314  if (stat != Os::File::OP_OK) {
315  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_WARNING_LO_RECORD,stat);
316  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
317  file.close();
318  return;
319  }
320  numRecords++;
321  } else {
322  // if the entry is empty, that means it is only a partially filled list, so quit writing
323  break;
324  }
325  }
326 
327  // write COMMAND
328  for (NATIVE_UINT_TYPE entry = 0; entry < FW_NUM_ARRAY_ELEMENTS(this->m_commandCb); entry++) {
329  // if there is data, write it
330  if (this->m_commandCb[entry].getBuffLength() != 0) {
331  // write delimiter
332  fileWriteSize = sizeof(delimiter);
333  stat = file.write(&delimiter,fileWriteSize);
334  if (stat != Os::File::OP_OK) {
335  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_COMMAND_DELIMETER,stat);
336  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
337  file.close();
338  return;
339  }
340 
341  // write event record
342  fileWriteSize = this->m_commandCb[entry].getBuffLength();
343  stat = file.write(this->m_commandCb[entry].getBuffAddr(),fileWriteSize);
344  if (stat != Os::File::OP_OK) {
345  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_COMMAND_RECORD,stat);
346  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
347  file.close();
348  return;
349  }
350  numRecords++;
351  } else {
352  // if the entry is empty, that means it is only a partially filled list, so quit writing
353  break;
354  }
355  }
356 
357  // write ACTIVITY HI
358  for (NATIVE_UINT_TYPE entry = 0; entry < FW_NUM_ARRAY_ELEMENTS(this->m_activityHiCb); entry++) {
359  // if there is data, write it
360  if (this->m_activityHiCb[entry].getBuffLength() != 0) {
361  // write delimiter
362  fileWriteSize = sizeof(delimiter);
363  stat = file.write(&delimiter,fileWriteSize);
364  if (stat != Os::File::OP_OK) {
365  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_ACTIVITY_HI_DELIMETER,stat);
366  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
367  file.close();
368  return;
369  }
370 
371  // write event record
372  fileWriteSize = this->m_activityHiCb[entry].getBuffLength();
373  stat = file.write(this->m_activityHiCb[entry].getBuffAddr(),fileWriteSize);
374  if (stat != Os::File::OP_OK) {
375  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_ACTIVITY_HI_RECORD,stat);
376  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
377  file.close();
378  return;
379  }
380  numRecords++;
381  } else {
382  // if the entry is empty, that means it is only a partially filled list, so quit writing
383  break;
384  }
385  }
386 
387  // write ACTIVITY LO
388  for (NATIVE_UINT_TYPE entry = 0; entry < FW_NUM_ARRAY_ELEMENTS(this->m_activityLoCb); entry++) {
389  // if there is data, write it
390  if (this->m_activityLoCb[entry].getBuffLength() != 0) {
391  // write delimiter
392  fileWriteSize = sizeof(delimiter);
393  stat = file.write(&delimiter,fileWriteSize);
394  if (stat != Os::File::OP_OK) {
395  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_ACTIVITY_LO_DELIMETER,stat);
396  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
397  file.close();
398  return;
399  }
400 
401  // write event record
402  fileWriteSize = this->m_activityLoCb[entry].getBuffLength();
403  stat = file.write(this->m_activityLoCb[entry].getBuffAddr(),fileWriteSize);
404  if (stat != Os::File::OP_OK) {
405  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_ACTIVITY_LO_RECORD,stat);
406  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
407  file.close();
408  return;
409  }
410  numRecords++;
411  } else {
412  // if the entry is empty, that means it is only a partially filled list, so quit writing
413  break;
414  }
415  }
416 
417  // write DIAGNOSTIC
418  for (NATIVE_UINT_TYPE entry = 0; entry < FW_NUM_ARRAY_ELEMENTS(this->m_diagnosticCb); entry++) {
419  // if there is data, write it
420  if (this->m_diagnosticCb[entry].getBuffLength() != 0) {
421  // write delimiter
422  fileWriteSize = sizeof(delimiter);
423  stat = file.write(&delimiter,fileWriteSize);
424  if (stat != Os::File::OP_OK) {
425  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_DIAGNOSTIC_DELIMETER,stat);
426  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
427  file.close();
428  return;
429  }
430 
431  // write event record
432  fileWriteSize = this->m_diagnosticCb[entry].getBuffLength();
433  stat = file.write(this->m_diagnosticCb[entry].getBuffAddr(),fileWriteSize);
434  if (stat != Os::File::OP_OK) {
435  this->log_WARNING_HI_ALOG_FILE_WRITE_ERR(LOG_WRITE_DIAGNOSTIC_RECORD,stat);
436  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
437  file.close();
438  return;
439  }
440  numRecords++;
441  } else {
442  // if the entry is empty, that means it is only a partially filled list, so quit writing
443  break;
444  }
445  }
446 
447  file.close();
448 
450 
451  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_OK);
452  }
453 
455  FwOpcodeType opCode,
456  U32 cmdSeq,
457  U32 ID,
458  IdFilterEnabled IdFilterEnable
459  ) {
460 
461  // check parameter
462  switch (IdFilterEnable) {
463  case ID_ENABLED:
464  case ID_DISABLED:
465  break;
466  default:
467  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_VALIDATION_ERROR);
468  return;
469  }
470 
471  if (ID_ENABLED == IdFilterEnable) { // add ID
472  // search list for existing entry
473  for (NATIVE_INT_TYPE entry = 0; entry < TELEM_ID_FILTER_SIZE; entry++) {
474  if (this->m_filteredIDs[entry] == ID) {
475  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_OK);
477  return;
478  }
479  }
480  // if not already a match, search for an open slot
481  for (NATIVE_INT_TYPE entry = 0; entry < TELEM_ID_FILTER_SIZE; entry++) {
482  if (this->m_filteredIDs[entry] == 0) {
483  this->m_filteredIDs[entry] = ID;
484  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_OK);
486  return;
487  }
488  }
489  // if an empty slot was not found, send an error event
491  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
492  } else { // remove ID
493  // search list for existing entry
494  for (NATIVE_INT_TYPE entry = 0; entry < TELEM_ID_FILTER_SIZE; entry++) {
495  if (this->m_filteredIDs[entry] == ID) {
496  this->m_filteredIDs[entry] = 0; // zero entry
497  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_OK);
499  return;
500  }
501  }
502  // if it gets here, wasn't found
504  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_EXECUTION_ERROR);
505  }
506 
507  }
508 
510  FwOpcodeType opCode,
511  U32 cmdSeq
512  ) {
513 
514  // first, iterate through severity filters
515  for (NATIVE_INT_TYPE filter = 0; filter < InputFilterLevel_MAX; filter++) {
517  static_cast<EventFilterState>(filter),
518  INPUT_ENABLED == this->m_inFilterState[filter].enabled,
519  SEND_ENABLED == this->m_sendFilterState[filter].enabled
520  );
521  }
522 
523  // iterate through ID filter
524  for (NATIVE_INT_TYPE entry = 0; entry < TELEM_ID_FILTER_SIZE; entry++) {
525  if (this->m_filteredIDs[entry] != 0) {
527  }
528  }
529 
530  this->cmdResponse_out(opCode,cmdSeq,Fw::COMMAND_OK);
531  }
532 
534  const NATIVE_INT_TYPE portNum,
535  U32 key
536  )
537  {
538  // return key
539  this->pingOut_out(0,key);
540  }
541 
542 } // namespace Svc
Svc::ActiveLoggerComponentBase::LOG_WRITE_FATAL_DELIMETER
PROTECTED LOG_WRITE_FATAL_DELIMETER
Definition: ActiveLoggerComponentAc.hpp:751
Svc::ActiveLoggerComponentBase::pingOut_out
void pingOut_out(NATIVE_INT_TYPE portNum, U32 key)
Definition: ActiveLoggerComponentAc.cpp:649
Svc::ActiveLoggerComponentBase::IdFilterEnabled
IdFilterEnabled
Definition: ActiveLoggerComponentAc.hpp:567
Svc::ActiveLoggerImpl::timeTag
PROTECTED FwEventIdType Fw::Time & timeTag
Definition: ActiveLoggerImpl.hpp:27
Svc::ActiveLoggerComponentBase::FilterLevel
PROTECTED U32 InputFilterLevel FilterLevel
Definition: ActiveLoggerComponentAc.hpp:598
Fw::Time
Definition: Time.hpp:10
Fw::LogPacket::serialize
SerializeStatus serialize(SerializeBufferBase &buffer) const
serialize contents
Definition: LogPacket.cpp:20
Svc::ActiveLoggerComponentBase::log_WARNING_LO_ALOG_ID_FILTER_LIST_FULL
void log_WARNING_LO_ALOG_ID_FILTER_LIST_FULL(U32 ID)
Definition: ActiveLoggerComponentAc.cpp:1731
Svc::ActiveLoggerComponentBase::log_WARNING_LO_ALOG_ID_FILTER_NOT_FOUND
void log_WARNING_LO_ALOG_ID_FILTER_NOT_FOUND(U32 ID)
Definition: ActiveLoggerComponentAc.cpp:1927
Fw::SerializeStatus
SerializeStatus
forward declaration for string
Definition: Serializable.hpp:14
Svc::ActiveLoggerComponentBase::SEND_WARNING_HI
@ SEND_WARNING_HI
Definition: ActiveLoggerComponentAc.hpp:552
Svc::ActiveLoggerComponentBase::INPUT_DIAGNOSTIC
PROTECTED INPUT_DIAGNOSTIC
Definition: ActiveLoggerComponentAc.hpp:541
Svc::ActiveLoggerComponentBase::SEND_ACTIVITY_HI
@ SEND_ACTIVITY_HI
Definition: ActiveLoggerComponentAc.hpp:555
Fw::CmdStringArg::toChar
const char * toChar(void) const
Definition: CmdString.cpp:34
Fw::LOG_WARNING_HI
@ LOG_WARNING_HI
Definition: LogPortAc.hpp:28
Os::File::close
void close(void)
close file
Definition: File.cpp:37
Svc::ActiveLoggerImpl::ALOG_DUMP_FILTER_STATE_cmdHandler
void ALOG_DUMP_FILTER_STATE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)
Handler for command ALOG_DUMP_FILTER_STATE.
Definition: ActiveLoggerImpl.cpp:509
Svc::ActiveLoggerImpl::m_warningHiCb
Fw::ComBuffer m_warningHiCb[WARNING_HI_EVENT_CB_DEPTH]
Definition: ActiveLoggerImpl.hpp:85
Fw::LOG_WARNING_LO
@ LOG_WARNING_LO
Definition: LogPortAc.hpp:29
FW_NUM_ARRAY_ELEMENTS
#define FW_NUM_ARRAY_ELEMENTS(a)
number of elements in an array
Definition: BasicTypes.hpp:103
Fw::LOG_FATAL
@ LOG_FATAL
Definition: LogPortAc.hpp:27
Svc::ActiveLoggerComponentBase::LOG_WRITE_DIAGNOSTIC_DELIMETER
PROTECTED LOG_WRITE_DIAGNOSTIC_DELIMETER
Definition: ActiveLoggerComponentAc.hpp:763
Fw::LOG_COMMAND
@ LOG_COMMAND
Definition: LogPortAc.hpp:30
Svc::ActiveLoggerComponentBase::FatalAnnounce_out
void FatalAnnounce_out(NATIVE_INT_TYPE portNum, FwEventIdType Id)
Definition: ActiveLoggerComponentAc.cpp:639
Svc::ActiveLoggerComponentBase::FilterEnable
PROTECTED U32 InputFilterLevel InputFilterEnabled FilterEnable
Definition: ActiveLoggerComponentAc.hpp:600
Svc::ActiveLoggerImpl::m_diagnosticCb
Fw::ComBuffer m_diagnosticCb[DIAGNOSTIC_EVENT_CB_DEPTH]
Definition: ActiveLoggerImpl.hpp:100
SEND_COMMAND_DEFAULT
@ SEND_COMMAND_DEFAULT
COMMAND events are filtered at output.
Definition: ActiveLoggerImplCfg.hpp:25
SEND_WARNING_LO_DEFAULT
@ SEND_WARNING_LO_DEFAULT
WARNING LO events are filtered at output.
Definition: ActiveLoggerImplCfg.hpp:24
Svc::ActiveLoggerComponentBase::LOG_WRITE_ACTIVITY_LO_DELIMETER
PROTECTED LOG_WRITE_ACTIVITY_LO_DELIMETER
Definition: ActiveLoggerComponentAc.hpp:761
Svc::ActiveLoggerComponentBase::INPUT_ENABLED
@ INPUT_ENABLED
Definition: ActiveLoggerComponentAc.hpp:546
Fw::LogBuffer
Definition: LogBuffer.hpp:22
Fw::LogSeverity
LogSeverity
Definition: LogPortAc.hpp:26
Svc::ActiveLoggerComponentBase::QUEUE_LOG_WARNING_LO
PROTECTED QUEUE_LOG_WARNING_LO
Definition: ActiveLoggerComponentAc.hpp:864
Svc::ActiveLoggerComponentBase::LOG_WRITE_WARNING_HI_RECORD
PROTECTED LOG_WRITE_WARNING_HI_RECORD
Definition: ActiveLoggerComponentAc.hpp:754
Svc::ActiveLoggerImpl::t_inputFilterState::enabled
InputFilterEnabled enabled
Definition: ActiveLoggerImpl.hpp:69
Svc::ActiveLoggerImpl::ActiveLoggerImpl
ActiveLoggerImpl(const char *compName)
constructor
Definition: ActiveLoggerImpl.cpp:14
SEND_ACTIVITY_HI_DEFAULT
@ SEND_ACTIVITY_HI_DEFAULT
ACTIVITY HO events are filtered at output.
Definition: ActiveLoggerImplCfg.hpp:26
Svc::ActiveLoggerImpl::m_fatalCb
Fw::ComBuffer m_fatalCb[FATAL_EVENT_CB_DEPTH]
Definition: ActiveLoggerImpl.hpp:82
Svc::ActiveLoggerComponentBase::QUEUE_LOG_WARNING_HI
PROTECTED QUEUE_LOG_WARNING_HI
Definition: ActiveLoggerComponentAc.hpp:863
Svc::ActiveLoggerComponentBase::INPUT_ACTIVITY_LO
PROTECTED INPUT_ACTIVITY_LO
Definition: ActiveLoggerComponentAc.hpp:540
Svc::ActiveLoggerComponentBase::LOG_WRITE_WARNING_LO_DELIMETER
PROTECTED LOG_WRITE_WARNING_LO_DELIMETER
Definition: ActiveLoggerComponentAc.hpp:755
Svc::ActiveLoggerComponentBase::SEND_ENABLED
@ SEND_ENABLED
Definition: ActiveLoggerComponentAc.hpp:562
Svc::ActiveLoggerComponentBase::LOG_WRITE_FATAL_RECORD
PROTECTED LOG_WRITE_FATAL_RECORD
Definition: ActiveLoggerComponentAc.hpp:752
TELEM_ID_FILTER_SIZE
@ TELEM_ID_FILTER_SIZE
Size of telemetry ID filter.
Definition: ActiveLoggerImplCfg.hpp:41
Svc::ActiveLoggerComponentBase::log_ACTIVITY_HI_ALOG_ID_FILTER_REMOVED
void log_ACTIVITY_HI_ALOG_ID_FILTER_REMOVED(U32 ID)
Definition: ActiveLoggerComponentAc.cpp:1829
Fw::SerializeBufferBase::resetSer
void resetSer(void)
reset to beginning of buffer to reuse for serialization
Definition: Serializable.cpp:570
Svc::ActiveLoggerComponentBase::isConnected_FatalAnnounce_OutputPort
bool isConnected_FatalAnnounce_OutputPort(NATIVE_INT_TYPE portNum)
Definition: ActiveLoggerComponentAc.cpp:767
Fw::CmdStringArg
Definition: CmdString.hpp:11
Svc::ActiveLoggerImpl::pingIn_handler
void pingIn_handler(const NATIVE_INT_TYPE portNum, U32 key)
Definition: ActiveLoggerImpl.cpp:533
Svc::ActiveLoggerComponentBase::LOG_WRITE_COMMAND_DELIMETER
PROTECTED LOG_WRITE_COMMAND_DELIMETER
Definition: ActiveLoggerComponentAc.hpp:757
Assert.hpp
INPUT_COMMAND_DEFAULT
@ INPUT_COMMAND_DEFAULT
COMMAND events are filtered at input.
Definition: ActiveLoggerImplCfg.hpp:18
Fw::FW_SERIALIZE_OK
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.
Definition: Serializable.hpp:15
Svc::ActiveLoggerImpl::ALOG_SET_EVENT_SEND_FILTER_cmdHandler
void ALOG_SET_EVENT_SEND_FILTER_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, SendFilterLevel FilterLevel, SendFilterEnabled FilterEnable)
Handler for command ALOG_SET_EVENT_SEND_FILTER.
Definition: ActiveLoggerImpl.cpp:208
Svc::ActiveLoggerComponentBase::INPUT_WARNING_LO
PROTECTED INPUT_WARNING_LO
Definition: ActiveLoggerComponentAc.hpp:537
SEND_DIAGNOSTIC_DEFAULT
@ SEND_DIAGNOSTIC_DEFAULT
DIAGNOSTIC events are filtered at output.
Definition: ActiveLoggerImplCfg.hpp:28
Svc::ActiveLoggerComponentBase::ID_DISABLED
@ ID_DISABLED
Definition: ActiveLoggerComponentAc.hpp:569
Os::File::write
Status write(const void *buffer, NATIVE_INT_TYPE &size, bool waitForDone=true)
write size; will return amount written or errno
Definition: File.cpp:33
Svc::ActiveLoggerImpl::m_filteredIDs
FwEventIdType m_filteredIDs[TELEM_ID_FILTER_SIZE]
Definition: ActiveLoggerImpl.hpp:105
Svc::ActiveLoggerImpl::loqQueue_internalInterfaceHandler
void loqQueue_internalInterfaceHandler(FwEventIdType id, Fw::Time &timeTag, QueueLogSeverity severity, Fw::LogBuffer &args)
Definition: ActiveLoggerImpl.cpp:129
Svc::ActiveLoggerImpl::ALOG_DUMP_EVENT_LOG_cmdHandler
void ALOG_DUMP_EVENT_LOG_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &filename)
Handler for command ALOG_DUMP_EVENT_LOG.
Definition: ActiveLoggerImpl.cpp:220
Svc::ActiveLoggerComponentBase::LOG_WRITE_COMMAND_RECORD
PROTECTED LOG_WRITE_COMMAND_RECORD
Definition: ActiveLoggerComponentAc.hpp:758
Fw::ObjBase::init
void init(void)
Object initializer.
Definition: ObjBase.cpp:26
Svc::ActiveLoggerComponentBase::LOG_WRITE_ACTIVITY_HI_RECORD
PROTECTED LOG_WRITE_ACTIVITY_HI_RECORD
Definition: ActiveLoggerComponentAc.hpp:760
BYTE
U8 BYTE
byte type
Definition: BasicTypes.hpp:77
SEND_ACTIVITY_LO_DEFAULT
@ SEND_ACTIVITY_LO_DEFAULT
ACTIVITY LO events are filtered at output.
Definition: ActiveLoggerImplCfg.hpp:27
Svc::ActiveLoggerImpl::m_activityHiCb
Fw::ComBuffer m_activityHiCb[ACTIVITY_HI_EVENT_CB_DEPTH]
Definition: ActiveLoggerImpl.hpp:94
Fw::LogPacket::setLogBuffer
void setLogBuffer(LogBuffer &buffer)
Definition: LogPacket.cpp:73
Svc::ActiveLoggerImpl::m_logPacket
Fw::LogPacket m_logPacket
packet buffer for assembling log packets
Definition: ActiveLoggerImpl.hpp:78
Fw::COMMAND_EXECUTION_ERROR
@ COMMAND_EXECUTION_ERROR
Definition: CmdResponsePortAc.hpp:29
INPUT_ACTIVITY_HI_DEFAULT
@ INPUT_ACTIVITY_HI_DEFAULT
ACTIVITY HI events are filtered at input.
Definition: ActiveLoggerImplCfg.hpp:19
Fw::LOG_DIAGNOSTIC
@ LOG_DIAGNOSTIC
Definition: LogPortAc.hpp:33
Svc::ActiveLoggerImpl::m_activityLoHead
NATIVE_UINT_TYPE m_activityLoHead
Definition: ActiveLoggerImpl.hpp:98
Svc::ActiveLoggerImpl::m_sendFilterState
struct Svc::ActiveLoggerImpl::t_sendFilterState m_sendFilterState[SendFilterLevel_MAX]
Svc::ActiveLoggerComponentBase::QUEUE_LOG_COMMAND
PROTECTED QUEUE_LOG_COMMAND
Definition: ActiveLoggerComponentAc.hpp:865
FwOpcodeType
#define FwOpcodeType
Type representation for a command opcode.
Definition: FpConfig.hpp:62
Os::File::OPEN_WRITE
@ OPEN_WRITE
Open file for writing.
Definition: File.hpp:17
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:30
Svc::ActiveLoggerComponentBase::SEND_DISABLED
@ SEND_DISABLED
Definition: ActiveLoggerComponentAc.hpp:563
Svc::ActiveLoggerImpl::args
PROTECTED FwEventIdType Fw::Time Fw::LogSeverity Fw::LogBuffer & args
Definition: ActiveLoggerImpl.hpp:27
Svc::ActiveLoggerComponentBase
Auto-generated base for ActiveLogger component.
Definition: ActiveLoggerComponentAc.hpp:48
Svc::ActiveLoggerComponentBase::log_ACTIVITY_HI_ALOG_FILE_WRITE_COMPLETE
void log_ACTIVITY_HI_ALOG_FILE_WRITE_COMPLETE(U32 records)
Definition: ActiveLoggerComponentAc.cpp:1401
INPUT_WARNING_LO_DEFAULT
@ INPUT_WARNING_LO_DEFAULT
WARNING LO events are filtered at input.
Definition: ActiveLoggerImplCfg.hpp:17
Svc::ActiveLoggerImpl::m_fatalHead
NATIVE_UINT_TYPE m_fatalHead
Definition: ActiveLoggerImpl.hpp:83
FW_ASSERT
#define FW_ASSERT(...)
Definition: Assert.hpp:9
Os::File::open
Status open(const char *fileName, Mode mode)
open file. Writing creates file if it doesn't exist
Definition: File.cpp:13
Svc::ActiveLoggerImpl::m_diagnosticHead
NATIVE_UINT_TYPE m_diagnosticHead
Definition: ActiveLoggerImpl.hpp:101
Fw::SerializeBufferBase::getBuffLength
NATIVE_UINT_TYPE getBuffLength() const
returns current buffer size
Definition: Serializable.cpp:592
Svc::ActiveLoggerComponentBase::ID_ENABLED
@ ID_ENABLED
Definition: ActiveLoggerComponentAc.hpp:568
Fw::LOG_ACTIVITY_HI
@ LOG_ACTIVITY_HI
Definition: LogPortAc.hpp:31
File.hpp
Svc::ActiveLoggerImpl::m_inFilterState
struct Svc::ActiveLoggerImpl::t_inputFilterState m_inFilterState[InputFilterLevel_MAX]
Svc::ActiveLoggerImpl::ALOG_SET_EVENT_REPORT_FILTER_cmdHandler
void ALOG_SET_EVENT_REPORT_FILTER_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, InputFilterLevel FilterLevel, InputFilterEnabled FilterEnable)
Definition: ActiveLoggerImpl.cpp:196
Svc::ActiveLoggerComponentBase::LOG_WRITE_WARNING_LO_RECORD
PROTECTED LOG_WRITE_WARNING_LO_RECORD
Definition: ActiveLoggerComponentAc.hpp:756
Svc::ActiveLoggerImpl::m_warningLoCb
Fw::ComBuffer m_warningLoCb[WARNING_LO_EVENT_CB_DEPTH]
Definition: ActiveLoggerImpl.hpp:88
Svc::ActiveLoggerComponentBase::SEND_DIAGNOSTIC
@ SEND_DIAGNOSTIC
Definition: ActiveLoggerComponentAc.hpp:557
Svc::ActiveLoggerImpl::t_sendFilterState::enabled
SendFilterEnabled enabled
filter is enabled
Definition: ActiveLoggerImpl.hpp:74
Svc::ActiveLoggerComponentBase::QUEUE_LOG_DIAGNOSTIC
PROTECTED QUEUE_LOG_DIAGNOSTIC
Definition: ActiveLoggerComponentAc.hpp:868
Svc::ActiveLoggerComponentBase::QUEUE_LOG_ACTIVITY_HI
PROTECTED QUEUE_LOG_ACTIVITY_HI
Definition: ActiveLoggerComponentAc.hpp:866
Svc::ActiveLoggerComponentBase::LOG_WRITE_WARNING_HI_DELIMETER
PROTECTED LOG_WRITE_WARNING_HI_DELIMETER
Definition: ActiveLoggerComponentAc.hpp:753
Svc::ActiveLoggerComponentBase::INPUT_ACTIVITY_HI
PROTECTED INPUT_ACTIVITY_HI
Definition: ActiveLoggerComponentAc.hpp:539
Svc::ActiveLoggerImpl::ALOG_SET_ID_FILTER_cmdHandler
void ALOG_SET_ID_FILTER_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U32 ID, IdFilterEnabled IdFilterEnable)
Handler for command ALOG_SET_ID_FILTER.
Definition: ActiveLoggerImpl.cpp:454
Svc
Definition: ActiveLoggerComponentAc.cpp:22
Svc::ActiveLoggerComponentBase::LOG_WRITE_ACTIVITY_HI_DELIMETER
PROTECTED LOG_WRITE_ACTIVITY_HI_DELIMETER
Definition: ActiveLoggerComponentAc.hpp:759
Svc::ActiveLoggerComponentBase::SEND_COMMAND
@ SEND_COMMAND
Definition: ActiveLoggerComponentAc.hpp:554
SEND_WARNING_HI_DEFAULT
@ SEND_WARNING_HI_DEFAULT
WARNING HI events are filtered at output.
Definition: ActiveLoggerImplCfg.hpp:23
Svc::ActiveLoggerComponentBase::LOG_WRITE_ACTIVITY_LO_RECORD
PROTECTED LOG_WRITE_ACTIVITY_LO_RECORD
Definition: ActiveLoggerComponentAc.hpp:762
Svc::ActiveLoggerComponentBase::SendFilterLevel
SendFilterLevel
Definition: ActiveLoggerComponentAc.hpp:551
Svc::ActiveLoggerImpl::m_activityLoCb
Fw::ComBuffer m_activityLoCb[ACTIVITY_LO_EVENT_CB_DEPTH]
Definition: ActiveLoggerImpl.hpp:97
Os::File::Status
Status
Definition: File.hpp:24
Svc::ActiveLoggerComponentBase::log_ACTIVITY_HI_ALOG_ID_FILTER_ENABLED
void log_ACTIVITY_HI_ALOG_ID_FILTER_ENABLED(U32 ID)
Definition: ActiveLoggerComponentAc.cpp:1633
Svc::ActiveLoggerImpl::severity
PROTECTED FwEventIdType Fw::Time Fw::LogSeverity severity
Definition: ActiveLoggerImpl.hpp:27
Fw::LogPacket::setId
void setId(FwEventIdType id)
Definition: LogPacket.cpp:69
Svc::ActiveLoggerComponentBase::InputFilterEnabled
InputFilterEnabled
Definition: ActiveLoggerComponentAc.hpp:545
Fw::COMMAND_OK
@ COMMAND_OK
Definition: CmdResponsePortAc.hpp:25
Svc::ActiveLoggerImpl::m_warningHiHead
NATIVE_UINT_TYPE m_warningHiHead
Definition: ActiveLoggerImpl.hpp:86
Os::File::OP_OK
@ OP_OK
Operation was successful.
Definition: File.hpp:25
Svc::ActiveLoggerComponentBase::SEND_WARNING_LO
@ SEND_WARNING_LO
Definition: ActiveLoggerComponentAc.hpp:553
Svc::ActiveLoggerComponentBase::log_ACTIVITY_LO_ALOG_SEVERITY_FILTER_STATE
void log_ACTIVITY_LO_ALOG_SEVERITY_FILTER_STATE(EventFilterState severity, bool recvEnabled, bool sendEnabled)
Definition: ActiveLoggerComponentAc.cpp:1499
FwEventIdType
#define FwEventIdType
Type representation for a event id.
Definition: FpConfig.hpp:70
Fw::LOG_ACTIVITY_LO
@ LOG_ACTIVITY_LO
Definition: LogPortAc.hpp:32
Svc::ActiveLoggerComponentBase::INPUT_DISABLED
@ INPUT_DISABLED
Definition: ActiveLoggerComponentAc.hpp:547
Svc::ActiveLoggerImpl::m_commandHead
NATIVE_UINT_TYPE m_commandHead
Definition: ActiveLoggerImpl.hpp:92
Svc::ActiveLoggerComponentBase::cmdSeq
PROTECTED U32 cmdSeq
Definition: ActiveLoggerComponentAc.hpp:597
Fw::COMMAND_VALIDATION_ERROR
@ COMMAND_VALIDATION_ERROR
Definition: CmdResponsePortAc.hpp:27
NATIVE_INT_TYPE
int NATIVE_INT_TYPE
native integer type declaration
Definition: BasicTypes.hpp:29
Svc::ActiveLoggerComponentBase::SendFilterEnabled
SendFilterEnabled
Definition: ActiveLoggerComponentAc.hpp:561
Svc::ActiveLoggerComponentBase::INPUT_COMMAND
PROTECTED INPUT_COMMAND
Definition: ActiveLoggerComponentAc.hpp:538
ActiveLoggerImpl.hpp
Svc::ActiveLoggerComponentBase::EventFilterState
EventFilterState
Definition: ActiveLoggerComponentAc.hpp:768
Svc::ActiveLoggerImpl::~ActiveLoggerImpl
virtual ~ActiveLoggerImpl()
destructor
Definition: ActiveLoggerImpl.cpp:55
INPUT_DIAGNOSTIC_DEFAULT
@ INPUT_DIAGNOSTIC_DEFAULT
DIAGNOSTIC events are filtered at input.
Definition: ActiveLoggerImplCfg.hpp:21
Svc::ActiveLoggerImpl::m_commandCb
Fw::ComBuffer m_commandCb[COMMAND_EVENT_CB_DEPTH]
Definition: ActiveLoggerImpl.hpp:91
INPUT_ACTIVITY_LO_DEFAULT
@ INPUT_ACTIVITY_LO_DEFAULT
ACTIVITY LO events are filtered at input.
Definition: ActiveLoggerImplCfg.hpp:20
Svc::ActiveLoggerComponentBase::SEND_ACTIVITY_LO
@ SEND_ACTIVITY_LO
Definition: ActiveLoggerComponentAc.hpp:556
Os::File
Definition: File.hpp:11
Svc::ActiveLoggerImpl::m_comBuffer
Fw::ComBuffer m_comBuffer
com buffer for sending event buffers
Definition: ActiveLoggerImpl.hpp:79
Svc::ActiveLoggerImpl::m_warningLoHead
NATIVE_UINT_TYPE m_warningLoHead
Definition: ActiveLoggerImpl.hpp:89
Svc::ActiveLoggerComponentBase::LOG_WRITE_DIAGNOSTIC_RECORD
PROTECTED LOG_WRITE_DIAGNOSTIC_RECORD
Definition: ActiveLoggerComponentAc.hpp:764
Svc::ActiveLoggerImpl::m_activityHiHead
NATIVE_UINT_TYPE m_activityHiHead
Definition: ActiveLoggerImpl.hpp:95
Fw::LogPacket::setTimeTag
void setTimeTag(Fw::Time &timeTag)
Definition: LogPacket.cpp:77
INPUT_WARNING_HI_DEFAULT
@ INPUT_WARNING_HI_DEFAULT
WARNING HI events are filtered at input.
Definition: ActiveLoggerImplCfg.hpp:16
Svc::ActiveLoggerComponentBase::QUEUE_LOG_ACTIVITY_LO
PROTECTED QUEUE_LOG_ACTIVITY_LO
Definition: ActiveLoggerComponentAc.hpp:867
Svc::ActiveLoggerComponentBase::QueueLogSeverity
PROTECTED QueueLogSeverity_MAX QueueLogSeverity
Definition: ActiveLoggerComponentAc.hpp:870