F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
CfdpManagerComponentAc.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title CfdpManagerComponentAc.cpp
3 // \author Generated by fpp-to-cpp
4 // \brief cpp file for CfdpManager component base class
5 // ======================================================================
6 
7 #include "Fw/Types/Assert.hpp"
9 #if FW_ENABLE_TEXT_LOGGING
10 #include "Fw/Types/String.hpp"
11 #endif
13 
14 namespace Svc {
15 
16  namespace Ccsds {
17 
18  namespace Cfdp {
19 
20  namespace {
21  enum MsgTypeEnum {
22  CFDPMANAGER_COMPONENT_EXIT = Fw::ActiveComponentBase::ACTIVE_COMPONENT_EXIT,
23  DATAIN_BUFFERSEND,
24  DATARETURNIN_BUFFERSEND,
25  PINGIN_PING,
26  RUN1HZ_SCHED,
27  CMD_SENDFILE,
28  CMD_PLAYBACKDIRECTORY,
29  CMD_POLLDIRECTORY,
30  CMD_STOPPOLLDIRECTORY,
31  CMD_SETCHANNELFLOW,
32  CMD_SUSPENDRESUMETRANSACTION,
33  CMD_CANCELTRANSACTION,
34  CMD_ABANDONTRANSACTION,
35  CMD_RESETCOUNTERS,
36  };
37 
38  // Get the max size by constructing a union of the async input, command, and
39  // internal port serialization sizes
40  union BuffUnion {
46  };
47 
48  // Define a message buffer class large enough to handle all the
49  // asynchronous inputs to the component
50  class ComponentIpcSerializableBuffer :
52  {
53 
54  public:
55 
56  enum {
57  // Offset into data in buffer: Size of message ID and port number
58  DATA_OFFSET = sizeof(FwEnumStoreType) + sizeof(FwIndexType),
59  // Max data size
60  MAX_DATA_SIZE = sizeof(BuffUnion),
61  // Max message size: Size of message id + size of port + max data size
62  SERIALIZATION_SIZE = DATA_OFFSET + MAX_DATA_SIZE
63  };
64 
65  Fw::Serializable::SizeType getCapacity() const {
66  return sizeof(m_buff);
67  }
68 
69  U8* getBuffAddr() {
70  return m_buff;
71  }
72 
73  const U8* getBuffAddr() const {
74  return m_buff;
75  }
76 
77  private:
78  // Should be the max of all the input ports serialized sizes...
79  U8 m_buff[SERIALIZATION_SIZE];
80 
81  };
82  }
83 
84  // ----------------------------------------------------------------------
85  // Component initialization
86  // ----------------------------------------------------------------------
87 
90  FwSizeType queueDepth,
91  FwEnumStoreType instance
92  )
93  {
94  // Initialize base class
96 
97 #if !FW_DIRECT_PORT_CALLS
98  // Connect input port cmdIn
99  for (
100  FwIndexType port = 0;
101  port < static_cast<FwIndexType>(this->getNum_cmdIn_InputPorts());
102  port++
103  ) {
104  this->m_cmdIn_InputPort[port].init();
105  this->m_cmdIn_InputPort[port].addCallComp(
106  this,
107  m_p_cmdIn_in
108  );
109  this->m_cmdIn_InputPort[port].setPortNum(port);
110 
111 #if FW_OBJECT_NAMES == 1
112  Fw::ObjectName portName;
113  portName.format(
114  "%s_cmdIn_InputPort[%" PRI_FwIndexType "]",
115  this->m_objName.toChar(),
116  port
117  );
118  this->m_cmdIn_InputPort[port].setObjName(portName.toChar());
119 #endif
120  }
121 #endif
122 
123 #if !FW_DIRECT_PORT_CALLS
124  // Connect input port dataIn
125  for (
126  FwIndexType port = 0;
127  port < static_cast<FwIndexType>(this->getNum_dataIn_InputPorts());
128  port++
129  ) {
130  this->m_dataIn_InputPort[port].init();
131  this->m_dataIn_InputPort[port].addCallComp(
132  this,
133  m_p_dataIn_in
134  );
135  this->m_dataIn_InputPort[port].setPortNum(port);
136 
137 #if FW_OBJECT_NAMES == 1
138  Fw::ObjectName portName;
139  portName.format(
140  "%s_dataIn_InputPort[%" PRI_FwIndexType "]",
141  this->m_objName.toChar(),
142  port
143  );
144  this->m_dataIn_InputPort[port].setObjName(portName.toChar());
145 #endif
146  }
147 #endif
148 
149 #if !FW_DIRECT_PORT_CALLS
150  // Connect input port dataReturnIn
151  for (
152  FwIndexType port = 0;
153  port < static_cast<FwIndexType>(this->getNum_dataReturnIn_InputPorts());
154  port++
155  ) {
156  this->m_dataReturnIn_InputPort[port].init();
157  this->m_dataReturnIn_InputPort[port].addCallComp(
158  this,
159  m_p_dataReturnIn_in
160  );
161  this->m_dataReturnIn_InputPort[port].setPortNum(port);
162 
163 #if FW_OBJECT_NAMES == 1
164  Fw::ObjectName portName;
165  portName.format(
166  "%s_dataReturnIn_InputPort[%" PRI_FwIndexType "]",
167  this->m_objName.toChar(),
168  port
169  );
170  this->m_dataReturnIn_InputPort[port].setObjName(portName.toChar());
171 #endif
172  }
173 #endif
174 
175 #if !FW_DIRECT_PORT_CALLS
176  // Connect input port fileIn
177  for (
178  FwIndexType port = 0;
179  port < static_cast<FwIndexType>(this->getNum_fileIn_InputPorts());
180  port++
181  ) {
182  this->m_fileIn_InputPort[port].init();
183  this->m_fileIn_InputPort[port].addCallComp(
184  this,
185  m_p_fileIn_in
186  );
187  this->m_fileIn_InputPort[port].setPortNum(port);
188 
189 #if FW_OBJECT_NAMES == 1
190  Fw::ObjectName portName;
191  portName.format(
192  "%s_fileIn_InputPort[%" PRI_FwIndexType "]",
193  this->m_objName.toChar(),
194  port
195  );
196  this->m_fileIn_InputPort[port].setObjName(portName.toChar());
197 #endif
198  }
199 #endif
200 
201 #if !FW_DIRECT_PORT_CALLS
202  // Connect input port pingIn
203  for (
204  FwIndexType port = 0;
205  port < static_cast<FwIndexType>(this->getNum_pingIn_InputPorts());
206  port++
207  ) {
208  this->m_pingIn_InputPort[port].init();
209  this->m_pingIn_InputPort[port].addCallComp(
210  this,
211  m_p_pingIn_in
212  );
213  this->m_pingIn_InputPort[port].setPortNum(port);
214 
215 #if FW_OBJECT_NAMES == 1
216  Fw::ObjectName portName;
217  portName.format(
218  "%s_pingIn_InputPort[%" PRI_FwIndexType "]",
219  this->m_objName.toChar(),
220  port
221  );
222  this->m_pingIn_InputPort[port].setObjName(portName.toChar());
223 #endif
224  }
225 #endif
226 
227 #if !FW_DIRECT_PORT_CALLS
228  // Connect input port run1Hz
229  for (
230  FwIndexType port = 0;
231  port < static_cast<FwIndexType>(this->getNum_run1Hz_InputPorts());
232  port++
233  ) {
234  this->m_run1Hz_InputPort[port].init();
235  this->m_run1Hz_InputPort[port].addCallComp(
236  this,
237  m_p_run1Hz_in
238  );
239  this->m_run1Hz_InputPort[port].setPortNum(port);
240 
241 #if FW_OBJECT_NAMES == 1
242  Fw::ObjectName portName;
243  portName.format(
244  "%s_run1Hz_InputPort[%" PRI_FwIndexType "]",
245  this->m_objName.toChar(),
246  port
247  );
248  this->m_run1Hz_InputPort[port].setObjName(portName.toChar());
249 #endif
250  }
251 #endif
252 
253 #if !FW_DIRECT_PORT_CALLS
254  // Connect output port cmdRegOut
255  for (
256  FwIndexType port = 0;
257  port < static_cast<FwIndexType>(this->getNum_cmdRegOut_OutputPorts());
258  port++
259  ) {
260  this->m_cmdRegOut_OutputPort[port].init();
261 
262 #if FW_OBJECT_NAMES == 1
263  Fw::ObjectName portName;
264  portName.format(
265  "%s_cmdRegOut_OutputPort[%" PRI_FwIndexType "]",
266  this->m_objName.toChar(),
267  port
268  );
269  this->m_cmdRegOut_OutputPort[port].setObjName(portName.toChar());
270 #endif
271  }
272 #endif
273 
274 #if !FW_DIRECT_PORT_CALLS
275  // Connect output port cmdResponseOut
276  for (
277  FwIndexType port = 0;
278  port < static_cast<FwIndexType>(this->getNum_cmdResponseOut_OutputPorts());
279  port++
280  ) {
281  this->m_cmdResponseOut_OutputPort[port].init();
282 
283 #if FW_OBJECT_NAMES == 1
284  Fw::ObjectName portName;
285  portName.format(
286  "%s_cmdResponseOut_OutputPort[%" PRI_FwIndexType "]",
287  this->m_objName.toChar(),
288  port
289  );
290  this->m_cmdResponseOut_OutputPort[port].setObjName(portName.toChar());
291 #endif
292  }
293 #endif
294 
295 #if !FW_DIRECT_PORT_CALLS
296  // Connect output port logOut
297  for (
298  FwIndexType port = 0;
299  port < static_cast<FwIndexType>(this->getNum_logOut_OutputPorts());
300  port++
301  ) {
302  this->m_logOut_OutputPort[port].init();
303 
304 #if FW_OBJECT_NAMES == 1
305  Fw::ObjectName portName;
306  portName.format(
307  "%s_logOut_OutputPort[%" PRI_FwIndexType "]",
308  this->m_objName.toChar(),
309  port
310  );
311  this->m_logOut_OutputPort[port].setObjName(portName.toChar());
312 #endif
313  }
314 #endif
315 
316 #if !FW_DIRECT_PORT_CALLS && FW_ENABLE_TEXT_LOGGING
317  // Connect output port logTextOut
318  for (
319  FwIndexType port = 0;
320  port < static_cast<FwIndexType>(this->getNum_logTextOut_OutputPorts());
321  port++
322  ) {
323  this->m_logTextOut_OutputPort[port].init();
324 
325 #if FW_OBJECT_NAMES == 1
326  Fw::ObjectName portName;
327  portName.format(
328  "%s_logTextOut_OutputPort[%" PRI_FwIndexType "]",
329  this->m_objName.toChar(),
330  port
331  );
332  this->m_logTextOut_OutputPort[port].setObjName(portName.toChar());
333 #endif
334  }
335 #endif
336 
337 #if !FW_DIRECT_PORT_CALLS
338  // Connect output port prmGetOut
339  for (
340  FwIndexType port = 0;
341  port < static_cast<FwIndexType>(this->getNum_prmGetOut_OutputPorts());
342  port++
343  ) {
344  this->m_prmGetOut_OutputPort[port].init();
345 
346 #if FW_OBJECT_NAMES == 1
347  Fw::ObjectName portName;
348  portName.format(
349  "%s_prmGetOut_OutputPort[%" PRI_FwIndexType "]",
350  this->m_objName.toChar(),
351  port
352  );
353  this->m_prmGetOut_OutputPort[port].setObjName(portName.toChar());
354 #endif
355  }
356 #endif
357 
358 #if !FW_DIRECT_PORT_CALLS
359  // Connect output port prmSetOut
360  for (
361  FwIndexType port = 0;
362  port < static_cast<FwIndexType>(this->getNum_prmSetOut_OutputPorts());
363  port++
364  ) {
365  this->m_prmSetOut_OutputPort[port].init();
366 
367 #if FW_OBJECT_NAMES == 1
368  Fw::ObjectName portName;
369  portName.format(
370  "%s_prmSetOut_OutputPort[%" PRI_FwIndexType "]",
371  this->m_objName.toChar(),
372  port
373  );
374  this->m_prmSetOut_OutputPort[port].setObjName(portName.toChar());
375 #endif
376  }
377 #endif
378 
379 #if !FW_DIRECT_PORT_CALLS
380  // Connect output port timeCaller
381  for (
382  FwIndexType port = 0;
383  port < static_cast<FwIndexType>(this->getNum_timeCaller_OutputPorts());
384  port++
385  ) {
386  this->m_timeCaller_OutputPort[port].init();
387 
388 #if FW_OBJECT_NAMES == 1
389  Fw::ObjectName portName;
390  portName.format(
391  "%s_timeCaller_OutputPort[%" PRI_FwIndexType "]",
392  this->m_objName.toChar(),
393  port
394  );
395  this->m_timeCaller_OutputPort[port].setObjName(portName.toChar());
396 #endif
397  }
398 #endif
399 
400 #if !FW_DIRECT_PORT_CALLS
401  // Connect output port tlmOut
402  for (
403  FwIndexType port = 0;
404  port < static_cast<FwIndexType>(this->getNum_tlmOut_OutputPorts());
405  port++
406  ) {
407  this->m_tlmOut_OutputPort[port].init();
408 
409 #if FW_OBJECT_NAMES == 1
410  Fw::ObjectName portName;
411  portName.format(
412  "%s_tlmOut_OutputPort[%" PRI_FwIndexType "]",
413  this->m_objName.toChar(),
414  port
415  );
416  this->m_tlmOut_OutputPort[port].setObjName(portName.toChar());
417 #endif
418  }
419 #endif
420 
421 #if !FW_DIRECT_PORT_CALLS
422  // Connect output port bufferAllocate
423  for (
424  FwIndexType port = 0;
425  port < static_cast<FwIndexType>(this->getNum_bufferAllocate_OutputPorts());
426  port++
427  ) {
428  this->m_bufferAllocate_OutputPort[port].init();
429 
430 #if FW_OBJECT_NAMES == 1
431  Fw::ObjectName portName;
432  portName.format(
433  "%s_bufferAllocate_OutputPort[%" PRI_FwIndexType "]",
434  this->m_objName.toChar(),
435  port
436  );
437  this->m_bufferAllocate_OutputPort[port].setObjName(portName.toChar());
438 #endif
439  }
440 #endif
441 
442 #if !FW_DIRECT_PORT_CALLS
443  // Connect output port bufferDeallocate
444  for (
445  FwIndexType port = 0;
446  port < static_cast<FwIndexType>(this->getNum_bufferDeallocate_OutputPorts());
447  port++
448  ) {
449  this->m_bufferDeallocate_OutputPort[port].init();
450 
451 #if FW_OBJECT_NAMES == 1
452  Fw::ObjectName portName;
453  portName.format(
454  "%s_bufferDeallocate_OutputPort[%" PRI_FwIndexType "]",
455  this->m_objName.toChar(),
456  port
457  );
458  this->m_bufferDeallocate_OutputPort[port].setObjName(portName.toChar());
459 #endif
460  }
461 #endif
462 
463 #if !FW_DIRECT_PORT_CALLS
464  // Connect output port dataInReturn
465  for (
466  FwIndexType port = 0;
467  port < static_cast<FwIndexType>(this->getNum_dataInReturn_OutputPorts());
468  port++
469  ) {
470  this->m_dataInReturn_OutputPort[port].init();
471 
472 #if FW_OBJECT_NAMES == 1
473  Fw::ObjectName portName;
474  portName.format(
475  "%s_dataInReturn_OutputPort[%" PRI_FwIndexType "]",
476  this->m_objName.toChar(),
477  port
478  );
479  this->m_dataInReturn_OutputPort[port].setObjName(portName.toChar());
480 #endif
481  }
482 #endif
483 
484 #if !FW_DIRECT_PORT_CALLS
485  // Connect output port dataOut
486  for (
487  FwIndexType port = 0;
488  port < static_cast<FwIndexType>(this->getNum_dataOut_OutputPorts());
489  port++
490  ) {
491  this->m_dataOut_OutputPort[port].init();
492 
493 #if FW_OBJECT_NAMES == 1
494  Fw::ObjectName portName;
495  portName.format(
496  "%s_dataOut_OutputPort[%" PRI_FwIndexType "]",
497  this->m_objName.toChar(),
498  port
499  );
500  this->m_dataOut_OutputPort[port].setObjName(portName.toChar());
501 #endif
502  }
503 #endif
504 
505 #if !FW_DIRECT_PORT_CALLS
506  // Connect output port fileDoneOut
507  for (
508  FwIndexType port = 0;
509  port < static_cast<FwIndexType>(this->getNum_fileDoneOut_OutputPorts());
510  port++
511  ) {
512  this->m_fileDoneOut_OutputPort[port].init();
513 
514 #if FW_OBJECT_NAMES == 1
515  Fw::ObjectName portName;
516  portName.format(
517  "%s_fileDoneOut_OutputPort[%" PRI_FwIndexType "]",
518  this->m_objName.toChar(),
519  port
520  );
521  this->m_fileDoneOut_OutputPort[port].setObjName(portName.toChar());
522 #endif
523  }
524 #endif
525 
526 #if !FW_DIRECT_PORT_CALLS
527  // Connect output port pingOut
528  for (
529  FwIndexType port = 0;
530  port < static_cast<FwIndexType>(this->getNum_pingOut_OutputPorts());
531  port++
532  ) {
533  this->m_pingOut_OutputPort[port].init();
534 
535 #if FW_OBJECT_NAMES == 1
536  Fw::ObjectName portName;
537  portName.format(
538  "%s_pingOut_OutputPort[%" PRI_FwIndexType "]",
539  this->m_objName.toChar(),
540  port
541  );
542  this->m_pingOut_OutputPort[port].setObjName(portName.toChar());
543 #endif
544  }
545 #endif
546 
547  // Create the queue
548  Os::Queue::Status qStat = this->createQueue(
549  queueDepth,
550  static_cast<FwSizeType>(ComponentIpcSerializableBuffer::SERIALIZATION_SIZE)
551  );
552  FW_ASSERT(
553  Os::Queue::Status::OP_OK == qStat,
554  static_cast<FwAssertArgType>(qStat)
555  );
556  }
557 
558 #if !FW_DIRECT_PORT_CALLS
559 
560  // ----------------------------------------------------------------------
561  // Getters for special input ports
562  // ----------------------------------------------------------------------
563 
566  {
567  FW_ASSERT(
568  (0 <= portNum) && (portNum < this->getNum_cmdIn_InputPorts()),
569  static_cast<FwAssertArgType>(portNum)
570  );
571 
572  return &this->m_cmdIn_InputPort[portNum];
573  }
574 
575 #endif
576 
577 #if !FW_DIRECT_PORT_CALLS
578 
579  // ----------------------------------------------------------------------
580  // Getters for typed input ports
581  // ----------------------------------------------------------------------
582 
585  {
586  FW_ASSERT(
587  (0 <= portNum) && (portNum < this->getNum_dataIn_InputPorts()),
588  static_cast<FwAssertArgType>(portNum)
589  );
590 
591  return &this->m_dataIn_InputPort[portNum];
592  }
593 
596  {
597  FW_ASSERT(
598  (0 <= portNum) && (portNum < this->getNum_dataReturnIn_InputPorts()),
599  static_cast<FwAssertArgType>(portNum)
600  );
601 
602  return &this->m_dataReturnIn_InputPort[portNum];
603  }
604 
607  {
608  FW_ASSERT(
609  (0 <= portNum) && (portNum < this->getNum_fileIn_InputPorts()),
610  static_cast<FwAssertArgType>(portNum)
611  );
612 
613  return &this->m_fileIn_InputPort[portNum];
614  }
615 
618  {
619  FW_ASSERT(
620  (0 <= portNum) && (portNum < this->getNum_pingIn_InputPorts()),
621  static_cast<FwAssertArgType>(portNum)
622  );
623 
624  return &this->m_pingIn_InputPort[portNum];
625  }
626 
629  {
630  FW_ASSERT(
631  (0 <= portNum) && (portNum < this->getNum_run1Hz_InputPorts()),
632  static_cast<FwAssertArgType>(portNum)
633  );
634 
635  return &this->m_run1Hz_InputPort[portNum];
636  }
637 
638 #endif
639 
640 #if !FW_DIRECT_PORT_CALLS
641 
642  // ----------------------------------------------------------------------
643  // Connect input ports to special output ports
644  // ----------------------------------------------------------------------
645 
648  FwIndexType portNum,
649  Fw::InputCmdRegPort* port
650  )
651  {
652  FW_ASSERT(
653  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
654  static_cast<FwAssertArgType>(portNum)
655  );
656 
657  this->m_cmdRegOut_OutputPort[portNum].addCallPort(port);
658  }
659 
662  FwIndexType portNum,
664  )
665  {
666  FW_ASSERT(
667  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
668  static_cast<FwAssertArgType>(portNum)
669  );
670 
671  this->m_cmdResponseOut_OutputPort[portNum].addCallPort(port);
672  }
673 
676  FwIndexType portNum,
677  Fw::InputLogPort* port
678  )
679  {
680  FW_ASSERT(
681  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
682  static_cast<FwAssertArgType>(portNum)
683  );
684 
685  this->m_logOut_OutputPort[portNum].addCallPort(port);
686  }
687 
688 #if FW_ENABLE_TEXT_LOGGING == 1
689 
690  void CfdpManagerComponentBase ::
691  set_logTextOut_OutputPort(
692  FwIndexType portNum,
694  )
695  {
696  FW_ASSERT(
697  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
698  static_cast<FwAssertArgType>(portNum)
699  );
700 
701  this->m_logTextOut_OutputPort[portNum].addCallPort(port);
702  }
703 
704 #endif
705 
708  FwIndexType portNum,
709  Fw::InputPrmGetPort* port
710  )
711  {
712  FW_ASSERT(
713  (0 <= portNum) && (portNum < this->getNum_prmGetOut_OutputPorts()),
714  static_cast<FwAssertArgType>(portNum)
715  );
716 
717  this->m_prmGetOut_OutputPort[portNum].addCallPort(port);
718  }
719 
722  FwIndexType portNum,
723  Fw::InputPrmSetPort* port
724  )
725  {
726  FW_ASSERT(
727  (0 <= portNum) && (portNum < this->getNum_prmSetOut_OutputPorts()),
728  static_cast<FwAssertArgType>(portNum)
729  );
730 
731  this->m_prmSetOut_OutputPort[portNum].addCallPort(port);
732  }
733 
736  FwIndexType portNum,
737  Fw::InputTimePort* port
738  )
739  {
740  FW_ASSERT(
741  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
742  static_cast<FwAssertArgType>(portNum)
743  );
744 
745  this->m_timeCaller_OutputPort[portNum].addCallPort(port);
746  }
747 
750  FwIndexType portNum,
751  Fw::InputTlmPort* port
752  )
753  {
754  FW_ASSERT(
755  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
756  static_cast<FwAssertArgType>(portNum)
757  );
758 
759  this->m_tlmOut_OutputPort[portNum].addCallPort(port);
760  }
761 
762 #endif
763 
764 #if !FW_DIRECT_PORT_CALLS
765 
766  // ----------------------------------------------------------------------
767  // Connect typed input ports to typed output ports
768  // ----------------------------------------------------------------------
769 
772  FwIndexType portNum,
774  )
775  {
776  FW_ASSERT(
777  (0 <= portNum) && (portNum < this->getNum_bufferAllocate_OutputPorts()),
778  static_cast<FwAssertArgType>(portNum)
779  );
780 
781  this->m_bufferAllocate_OutputPort[portNum].addCallPort(port);
782  }
783 
786  FwIndexType portNum,
788  )
789  {
790  FW_ASSERT(
791  (0 <= portNum) && (portNum < this->getNum_bufferDeallocate_OutputPorts()),
792  static_cast<FwAssertArgType>(portNum)
793  );
794 
795  this->m_bufferDeallocate_OutputPort[portNum].addCallPort(port);
796  }
797 
800  FwIndexType portNum,
802  )
803  {
804  FW_ASSERT(
805  (0 <= portNum) && (portNum < this->getNum_dataInReturn_OutputPorts()),
806  static_cast<FwAssertArgType>(portNum)
807  );
808 
809  this->m_dataInReturn_OutputPort[portNum].addCallPort(port);
810  }
811 
814  FwIndexType portNum,
816  )
817  {
818  FW_ASSERT(
819  (0 <= portNum) && (portNum < this->getNum_dataOut_OutputPorts()),
820  static_cast<FwAssertArgType>(portNum)
821  );
822 
823  this->m_dataOut_OutputPort[portNum].addCallPort(port);
824  }
825 
828  FwIndexType portNum,
830  )
831  {
832  FW_ASSERT(
833  (0 <= portNum) && (portNum < this->getNum_fileDoneOut_OutputPorts()),
834  static_cast<FwAssertArgType>(portNum)
835  );
836 
837  this->m_fileDoneOut_OutputPort[portNum].addCallPort(port);
838  }
839 
842  FwIndexType portNum,
843  Svc::InputPingPort* port
844  )
845  {
846  FW_ASSERT(
847  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
848  static_cast<FwAssertArgType>(portNum)
849  );
850 
851  this->m_pingOut_OutputPort[portNum].addCallPort(port);
852  }
853 
854 #endif
855 
856 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
857 
858  // ----------------------------------------------------------------------
859  // Connect serial input ports to special output ports
860  // ----------------------------------------------------------------------
861 
864  FwIndexType portNum,
865  Fw::InputSerializePort* port
866  )
867  {
868  FW_ASSERT(
869  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
870  static_cast<FwAssertArgType>(portNum)
871  );
872 
873  this->m_cmdRegOut_OutputPort[portNum].registerSerialPort(port);
874  }
875 
878  FwIndexType portNum,
879  Fw::InputSerializePort* port
880  )
881  {
882  FW_ASSERT(
883  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
884  static_cast<FwAssertArgType>(portNum)
885  );
886 
887  this->m_cmdResponseOut_OutputPort[portNum].registerSerialPort(port);
888  }
889 
892  FwIndexType portNum,
893  Fw::InputSerializePort* port
894  )
895  {
896  FW_ASSERT(
897  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
898  static_cast<FwAssertArgType>(portNum)
899  );
900 
901  this->m_logOut_OutputPort[portNum].registerSerialPort(port);
902  }
903 
904 #if FW_ENABLE_TEXT_LOGGING == 1
905 
906  void CfdpManagerComponentBase ::
907  set_logTextOut_OutputPort(
908  FwIndexType portNum,
909  Fw::InputSerializePort* port
910  )
911  {
912  FW_ASSERT(
913  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
914  static_cast<FwAssertArgType>(portNum)
915  );
916 
917  this->m_logTextOut_OutputPort[portNum].registerSerialPort(port);
918  }
919 
920 #endif
921 
924  FwIndexType portNum,
925  Fw::InputSerializePort* port
926  )
927  {
928  FW_ASSERT(
929  (0 <= portNum) && (portNum < this->getNum_prmSetOut_OutputPorts()),
930  static_cast<FwAssertArgType>(portNum)
931  );
932 
933  this->m_prmSetOut_OutputPort[portNum].registerSerialPort(port);
934  }
935 
938  FwIndexType portNum,
939  Fw::InputSerializePort* port
940  )
941  {
942  FW_ASSERT(
943  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
944  static_cast<FwAssertArgType>(portNum)
945  );
946 
947  this->m_timeCaller_OutputPort[portNum].registerSerialPort(port);
948  }
949 
952  FwIndexType portNum,
953  Fw::InputSerializePort* port
954  )
955  {
956  FW_ASSERT(
957  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
958  static_cast<FwAssertArgType>(portNum)
959  );
960 
961  this->m_tlmOut_OutputPort[portNum].registerSerialPort(port);
962  }
963 
964 #endif
965 
966 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
967 
968  // ----------------------------------------------------------------------
969  // Connect serial input ports to typed output ports
970  // ----------------------------------------------------------------------
971 
974  FwIndexType portNum,
975  Fw::InputSerializePort* port
976  )
977  {
978  FW_ASSERT(
979  (0 <= portNum) && (portNum < this->getNum_bufferDeallocate_OutputPorts()),
980  static_cast<FwAssertArgType>(portNum)
981  );
982 
983  this->m_bufferDeallocate_OutputPort[portNum].registerSerialPort(port);
984  }
985 
988  FwIndexType portNum,
989  Fw::InputSerializePort* port
990  )
991  {
992  FW_ASSERT(
993  (0 <= portNum) && (portNum < this->getNum_dataInReturn_OutputPorts()),
994  static_cast<FwAssertArgType>(portNum)
995  );
996 
997  this->m_dataInReturn_OutputPort[portNum].registerSerialPort(port);
998  }
999 
1002  FwIndexType portNum,
1003  Fw::InputSerializePort* port
1004  )
1005  {
1006  FW_ASSERT(
1007  (0 <= portNum) && (portNum < this->getNum_dataOut_OutputPorts()),
1008  static_cast<FwAssertArgType>(portNum)
1009  );
1010 
1011  this->m_dataOut_OutputPort[portNum].registerSerialPort(port);
1012  }
1013 
1016  FwIndexType portNum,
1017  Fw::InputSerializePort* port
1018  )
1019  {
1020  FW_ASSERT(
1021  (0 <= portNum) && (portNum < this->getNum_fileDoneOut_OutputPorts()),
1022  static_cast<FwAssertArgType>(portNum)
1023  );
1024 
1025  this->m_fileDoneOut_OutputPort[portNum].registerSerialPort(port);
1026  }
1027 
1030  FwIndexType portNum,
1031  Fw::InputSerializePort* port
1032  )
1033  {
1034  FW_ASSERT(
1035  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
1036  static_cast<FwAssertArgType>(portNum)
1037  );
1038 
1039  this->m_pingOut_OutputPort[portNum].registerSerialPort(port);
1040  }
1041 
1042 #endif
1043 
1044  // ----------------------------------------------------------------------
1045  // Command registration
1046  // ----------------------------------------------------------------------
1047 
1050  {
1052 
1053  this->cmdRegOut_out(
1054  0,
1055  this->getIdBase() + OPCODE_SENDFILE
1056  );
1057 
1058  this->cmdRegOut_out(
1059  0,
1061  );
1062 
1063  this->cmdRegOut_out(
1064  0,
1066  );
1067 
1068  this->cmdRegOut_out(
1069  0,
1071  );
1072 
1073  this->cmdRegOut_out(
1074  0,
1076  );
1077 
1078  this->cmdRegOut_out(
1079  0,
1081  );
1082 
1083  this->cmdRegOut_out(
1084  0,
1086  );
1087 
1088  this->cmdRegOut_out(
1089  0,
1091  );
1092 
1093  this->cmdRegOut_out(
1094  0,
1096  );
1097 
1098  this->cmdRegOut_out(
1099  0,
1100  this->getIdBase() + OPCODE_LOCALEID_SET
1101  );
1102 
1103  this->cmdRegOut_out(
1104  0,
1106  );
1107 
1108  this->cmdRegOut_out(
1109  0,
1111  );
1112 
1113  this->cmdRegOut_out(
1114  0,
1116  );
1117 
1118  this->cmdRegOut_out(
1119  0,
1121  );
1122 
1123  this->cmdRegOut_out(
1124  0,
1126  );
1127 
1128  this->cmdRegOut_out(
1129  0,
1131  );
1132 
1133  this->cmdRegOut_out(
1134  0,
1136  );
1137 
1138  this->cmdRegOut_out(
1139  0,
1141  );
1142 
1143  this->cmdRegOut_out(
1144  0,
1146  );
1147 
1148  this->cmdRegOut_out(
1149  0,
1151  );
1152 
1153  this->cmdRegOut_out(
1154  0,
1156  );
1157 
1158  this->cmdRegOut_out(
1159  0,
1161  );
1162 
1163  this->cmdRegOut_out(
1164  0,
1166  );
1167 
1168  this->cmdRegOut_out(
1169  0,
1171  );
1172 
1173  this->cmdRegOut_out(
1174  0,
1176  );
1177 
1178  this->cmdRegOut_out(
1179  0,
1181  );
1182 
1183  this->cmdRegOut_out(
1184  0,
1186  );
1187 
1188  this->cmdRegOut_out(
1189  0,
1191  );
1192 
1193  this->cmdRegOut_out(
1194  0,
1196  );
1197  }
1198 
1199  // ----------------------------------------------------------------------
1200  // Parameter loading
1201  // ----------------------------------------------------------------------
1202 
1205  {
1207  const FwPrmIdType _baseId = static_cast<FwPrmIdType>(this->getIdBase());
1209 
1210  FwPrmIdType _id{};
1211  Fw::ParamBuffer _paramBuffer;
1212 
1213  _id = _baseId + PARAMID_LOCALEID;
1214 
1215  // Get serialized parameter LocalEid
1216  this->m_param_LocalEid_valid = this->prmGetOut_out(
1217  0,
1218  _id,
1219  _paramBuffer
1220  );
1221 
1222  this->m_paramLock.lock();
1223 
1224  // Deserialize parameter or use default value
1225  if (this->m_param_LocalEid_valid == Fw::ParamValid::VALID) {
1226  _stat = _paramBuffer.deserializeTo(this->m_LocalEid);
1227  if (_stat != Fw::FW_SERIALIZE_OK) {
1228  this->m_param_LocalEid_valid = Fw::ParamValid::DEFAULT;
1229  }
1230  }
1231  else {
1232  this->m_param_LocalEid_valid = Fw::ParamValid::DEFAULT;
1233  }
1234  if (this->m_param_LocalEid_valid == Fw::ParamValid::DEFAULT) {
1235  this->m_LocalEid = 42;
1236  }
1237 
1238  this->m_paramLock.unlock();
1239 
1240  _id = _baseId + PARAMID_OUTGOINGFILECHUNKSIZE;
1241 
1242  // Get serialized parameter OutgoingFileChunkSize
1243  this->m_param_OutgoingFileChunkSize_valid = this->prmGetOut_out(
1244  0,
1245  _id,
1246  _paramBuffer
1247  );
1248 
1249  this->m_paramLock.lock();
1250 
1251  // Deserialize parameter or use default value
1252  if (this->m_param_OutgoingFileChunkSize_valid == Fw::ParamValid::VALID) {
1253  _stat = _paramBuffer.deserializeTo(this->m_OutgoingFileChunkSize);
1254  if (_stat != Fw::FW_SERIALIZE_OK) {
1255  this->m_param_OutgoingFileChunkSize_valid = Fw::ParamValid::DEFAULT;
1256  }
1257  }
1258  else {
1259  this->m_param_OutgoingFileChunkSize_valid = Fw::ParamValid::DEFAULT;
1260  }
1261  if (this->m_param_OutgoingFileChunkSize_valid == Fw::ParamValid::DEFAULT) {
1262  this->m_OutgoingFileChunkSize = 992;
1263  }
1264 
1265  this->m_paramLock.unlock();
1266 
1267  _id = _baseId + PARAMID_RXCRCCALCBYTESPERCYCLE;
1268 
1269  // Get serialized parameter RxCrcCalcBytesPerCycle
1270  this->m_param_RxCrcCalcBytesPerCycle_valid = this->prmGetOut_out(
1271  0,
1272  _id,
1273  _paramBuffer
1274  );
1275 
1276  this->m_paramLock.lock();
1277 
1278  // Deserialize parameter or use default value
1279  if (this->m_param_RxCrcCalcBytesPerCycle_valid == Fw::ParamValid::VALID) {
1280  _stat = _paramBuffer.deserializeTo(this->m_RxCrcCalcBytesPerCycle);
1281  if (_stat != Fw::FW_SERIALIZE_OK) {
1282  this->m_param_RxCrcCalcBytesPerCycle_valid = Fw::ParamValid::DEFAULT;
1283  }
1284  }
1285  else {
1286  this->m_param_RxCrcCalcBytesPerCycle_valid = Fw::ParamValid::DEFAULT;
1287  }
1288  if (this->m_param_RxCrcCalcBytesPerCycle_valid == Fw::ParamValid::DEFAULT) {
1289  this->m_RxCrcCalcBytesPerCycle = 65536;
1290  }
1291 
1292  this->m_paramLock.unlock();
1293 
1294  _id = _baseId + PARAMID_POSTINACTIVITYSENDRETRIES;
1295 
1296  // Get serialized parameter PostInactivitySendRetries
1297  this->m_param_PostInactivitySendRetries_valid = this->prmGetOut_out(
1298  0,
1299  _id,
1300  _paramBuffer
1301  );
1302 
1303  this->m_paramLock.lock();
1304 
1305  // Deserialize parameter or use default value
1306  if (this->m_param_PostInactivitySendRetries_valid == Fw::ParamValid::VALID) {
1307  _stat = _paramBuffer.deserializeTo(this->m_PostInactivitySendRetries);
1308  if (_stat != Fw::FW_SERIALIZE_OK) {
1309  this->m_param_PostInactivitySendRetries_valid = Fw::ParamValid::DEFAULT;
1310  }
1311  }
1312  else {
1313  this->m_param_PostInactivitySendRetries_valid = Fw::ParamValid::DEFAULT;
1314  }
1315  if (this->m_param_PostInactivitySendRetries_valid == Fw::ParamValid::DEFAULT) {
1316  this->m_PostInactivitySendRetries = 3;
1317  }
1318 
1319  this->m_paramLock.unlock();
1320 
1321  _id = _baseId + PARAMID_FILEINDEFAULTCHANNEL;
1322 
1323  // Get serialized parameter FileInDefaultChannel
1324  this->m_param_FileInDefaultChannel_valid = this->prmGetOut_out(
1325  0,
1326  _id,
1327  _paramBuffer
1328  );
1329 
1330  this->m_paramLock.lock();
1331 
1332  // Deserialize parameter or use default value
1333  if (this->m_param_FileInDefaultChannel_valid == Fw::ParamValid::VALID) {
1334  _stat = _paramBuffer.deserializeTo(this->m_FileInDefaultChannel);
1335  if (_stat != Fw::FW_SERIALIZE_OK) {
1336  this->m_param_FileInDefaultChannel_valid = Fw::ParamValid::DEFAULT;
1337  }
1338  }
1339  else {
1340  this->m_param_FileInDefaultChannel_valid = Fw::ParamValid::DEFAULT;
1341  }
1342  if (this->m_param_FileInDefaultChannel_valid == Fw::ParamValid::DEFAULT) {
1343  this->m_FileInDefaultChannel = 0;
1344  }
1345 
1346  this->m_paramLock.unlock();
1347 
1348  _id = _baseId + PARAMID_FILEINDEFAULTDESTENTITYID;
1349 
1350  // Get serialized parameter FileInDefaultDestEntityId
1351  this->m_param_FileInDefaultDestEntityId_valid = this->prmGetOut_out(
1352  0,
1353  _id,
1354  _paramBuffer
1355  );
1356 
1357  this->m_paramLock.lock();
1358 
1359  // Deserialize parameter or use default value
1360  if (this->m_param_FileInDefaultDestEntityId_valid == Fw::ParamValid::VALID) {
1361  _stat = _paramBuffer.deserializeTo(this->m_FileInDefaultDestEntityId);
1362  if (_stat != Fw::FW_SERIALIZE_OK) {
1363  this->m_param_FileInDefaultDestEntityId_valid = Fw::ParamValid::DEFAULT;
1364  }
1365  }
1366  else {
1367  this->m_param_FileInDefaultDestEntityId_valid = Fw::ParamValid::DEFAULT;
1368  }
1369  if (this->m_param_FileInDefaultDestEntityId_valid == Fw::ParamValid::DEFAULT) {
1370  this->m_FileInDefaultDestEntityId = 100;
1371  }
1372 
1373  this->m_paramLock.unlock();
1374 
1375  _id = _baseId + PARAMID_FILEINDEFAULTCLASS;
1376 
1377  // Get serialized parameter FileInDefaultClass
1378  this->m_param_FileInDefaultClass_valid = this->prmGetOut_out(
1379  0,
1380  _id,
1381  _paramBuffer
1382  );
1383 
1384  this->m_paramLock.lock();
1385 
1386  // Deserialize parameter or use default value
1387  if (this->m_param_FileInDefaultClass_valid == Fw::ParamValid::VALID) {
1388  _stat = _paramBuffer.deserializeTo(this->m_FileInDefaultClass);
1389  if (_stat != Fw::FW_SERIALIZE_OK) {
1390  this->m_param_FileInDefaultClass_valid = Fw::ParamValid::DEFAULT;
1391  }
1392  }
1393  else {
1394  this->m_param_FileInDefaultClass_valid = Fw::ParamValid::DEFAULT;
1395  }
1396  if (this->m_param_FileInDefaultClass_valid == Fw::ParamValid::DEFAULT) {
1397  this->m_FileInDefaultClass = Svc::Ccsds::Cfdp::Class::CLASS_2;
1398  }
1399 
1400  this->m_paramLock.unlock();
1401 
1402  _id = _baseId + PARAMID_FILEINDEFAULTKEEP;
1403 
1404  // Get serialized parameter FileInDefaultKeep
1405  this->m_param_FileInDefaultKeep_valid = this->prmGetOut_out(
1406  0,
1407  _id,
1408  _paramBuffer
1409  );
1410 
1411  this->m_paramLock.lock();
1412 
1413  // Deserialize parameter or use default value
1414  if (this->m_param_FileInDefaultKeep_valid == Fw::ParamValid::VALID) {
1415  _stat = _paramBuffer.deserializeTo(this->m_FileInDefaultKeep);
1416  if (_stat != Fw::FW_SERIALIZE_OK) {
1417  this->m_param_FileInDefaultKeep_valid = Fw::ParamValid::DEFAULT;
1418  }
1419  }
1420  else {
1421  this->m_param_FileInDefaultKeep_valid = Fw::ParamValid::DEFAULT;
1422  }
1423  if (this->m_param_FileInDefaultKeep_valid == Fw::ParamValid::DEFAULT) {
1424  this->m_FileInDefaultKeep = Svc::Ccsds::Cfdp::Keep::DELETE;
1425  }
1426 
1427  this->m_paramLock.unlock();
1428 
1429  _id = _baseId + PARAMID_FILEINDEFAULTPRIORITY;
1430 
1431  // Get serialized parameter FileInDefaultPriority
1432  this->m_param_FileInDefaultPriority_valid = this->prmGetOut_out(
1433  0,
1434  _id,
1435  _paramBuffer
1436  );
1437 
1438  this->m_paramLock.lock();
1439 
1440  // Deserialize parameter or use default value
1441  if (this->m_param_FileInDefaultPriority_valid == Fw::ParamValid::VALID) {
1442  _stat = _paramBuffer.deserializeTo(this->m_FileInDefaultPriority);
1443  if (_stat != Fw::FW_SERIALIZE_OK) {
1444  this->m_param_FileInDefaultPriority_valid = Fw::ParamValid::DEFAULT;
1445  }
1446  }
1447  else {
1448  this->m_param_FileInDefaultPriority_valid = Fw::ParamValid::DEFAULT;
1449  }
1450  if (this->m_param_FileInDefaultPriority_valid == Fw::ParamValid::DEFAULT) {
1451  this->m_FileInDefaultPriority = 0;
1452  }
1453 
1454  this->m_paramLock.unlock();
1455 
1456  _id = _baseId + PARAMID_CHANNELCONFIG;
1457 
1458  // Get serialized parameter ChannelConfig
1459  this->m_param_ChannelConfig_valid = this->prmGetOut_out(
1460  0,
1461  _id,
1462  _paramBuffer
1463  );
1464 
1465  this->m_paramLock.lock();
1466 
1467  // Deserialize parameter or use default value
1468  if (this->m_param_ChannelConfig_valid == Fw::ParamValid::VALID) {
1469  _stat = _paramBuffer.deserializeTo(this->m_ChannelConfig);
1470  if (_stat != Fw::FW_SERIALIZE_OK) {
1471  this->m_param_ChannelConfig_valid = Fw::ParamValid::DEFAULT;
1472  }
1473  }
1474  else {
1475  this->m_param_ChannelConfig_valid = Fw::ParamValid::DEFAULT;
1476  }
1477  if (this->m_param_ChannelConfig_valid == Fw::ParamValid::DEFAULT) {
1478  this->m_ChannelConfig = Svc::Ccsds::Cfdp::ChannelArrayParams(Svc::Ccsds::Cfdp::ChannelParams(10, 10, 2, 120, Fw::Enabled::ENABLED, Fw::String(""), 64, Fw::String("/tmp"), Fw::String("/fail")));
1479  }
1480 
1481  this->m_paramLock.unlock();
1482 
1483  // Call notifier
1484  this->parametersLoaded();
1485  }
1486 
1487  // ----------------------------------------------------------------------
1488  // Component construction and destruction
1489  // ----------------------------------------------------------------------
1490 
1492  CfdpManagerComponentBase(const char* compName) :
1493  Fw::ActiveComponentBase(compName)
1494  {
1495 
1496  }
1497 
1500  {
1501 
1502  }
1503 
1504 #if !FW_DIRECT_PORT_CALLS
1505 
1506  // ----------------------------------------------------------------------
1507  // Connection status queries for special output ports
1508  // ----------------------------------------------------------------------
1509 
1512  {
1513  FW_ASSERT(
1514  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
1515  static_cast<FwAssertArgType>(portNum)
1516  );
1517 
1518  return this->m_cmdRegOut_OutputPort[portNum].isConnected();
1519  }
1520 
1523  {
1524  FW_ASSERT(
1525  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
1526  static_cast<FwAssertArgType>(portNum)
1527  );
1528 
1529  return this->m_cmdResponseOut_OutputPort[portNum].isConnected();
1530  }
1531 
1534  {
1535  FW_ASSERT(
1536  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
1537  static_cast<FwAssertArgType>(portNum)
1538  );
1539 
1540  return this->m_logOut_OutputPort[portNum].isConnected();
1541  }
1542 
1543 #if FW_ENABLE_TEXT_LOGGING == 1
1544 
1545  bool CfdpManagerComponentBase ::
1546  isConnected_logTextOut_OutputPort(FwIndexType portNum) const
1547  {
1548  FW_ASSERT(
1549  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
1550  static_cast<FwAssertArgType>(portNum)
1551  );
1552 
1553  return this->m_logTextOut_OutputPort[portNum].isConnected();
1554  }
1555 
1556 #endif
1557 
1560  {
1561  FW_ASSERT(
1562  (0 <= portNum) && (portNum < this->getNum_prmGetOut_OutputPorts()),
1563  static_cast<FwAssertArgType>(portNum)
1564  );
1565 
1566  return this->m_prmGetOut_OutputPort[portNum].isConnected();
1567  }
1568 
1571  {
1572  FW_ASSERT(
1573  (0 <= portNum) && (portNum < this->getNum_prmSetOut_OutputPorts()),
1574  static_cast<FwAssertArgType>(portNum)
1575  );
1576 
1577  return this->m_prmSetOut_OutputPort[portNum].isConnected();
1578  }
1579 
1582  {
1583  FW_ASSERT(
1584  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
1585  static_cast<FwAssertArgType>(portNum)
1586  );
1587 
1588  return this->m_timeCaller_OutputPort[portNum].isConnected();
1589  }
1590 
1593  {
1594  FW_ASSERT(
1595  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
1596  static_cast<FwAssertArgType>(portNum)
1597  );
1598 
1599  return this->m_tlmOut_OutputPort[portNum].isConnected();
1600  }
1601 
1602 #endif
1603 
1604 #if !FW_DIRECT_PORT_CALLS
1605 
1606  // ----------------------------------------------------------------------
1607  // Connection status queries for typed output ports
1608  // ----------------------------------------------------------------------
1609 
1612  {
1613  FW_ASSERT(
1614  (0 <= portNum) && (portNum < this->getNum_bufferAllocate_OutputPorts()),
1615  static_cast<FwAssertArgType>(portNum)
1616  );
1617 
1618  return this->m_bufferAllocate_OutputPort[portNum].isConnected();
1619  }
1620 
1623  {
1624  FW_ASSERT(
1625  (0 <= portNum) && (portNum < this->getNum_bufferDeallocate_OutputPorts()),
1626  static_cast<FwAssertArgType>(portNum)
1627  );
1628 
1629  return this->m_bufferDeallocate_OutputPort[portNum].isConnected();
1630  }
1631 
1634  {
1635  FW_ASSERT(
1636  (0 <= portNum) && (portNum < this->getNum_dataInReturn_OutputPorts()),
1637  static_cast<FwAssertArgType>(portNum)
1638  );
1639 
1640  return this->m_dataInReturn_OutputPort[portNum].isConnected();
1641  }
1642 
1645  {
1646  FW_ASSERT(
1647  (0 <= portNum) && (portNum < this->getNum_dataOut_OutputPorts()),
1648  static_cast<FwAssertArgType>(portNum)
1649  );
1650 
1651  return this->m_dataOut_OutputPort[portNum].isConnected();
1652  }
1653 
1656  {
1657  FW_ASSERT(
1658  (0 <= portNum) && (portNum < this->getNum_fileDoneOut_OutputPorts()),
1659  static_cast<FwAssertArgType>(portNum)
1660  );
1661 
1662  return this->m_fileDoneOut_OutputPort[portNum].isConnected();
1663  }
1664 
1667  {
1668  FW_ASSERT(
1669  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
1670  static_cast<FwAssertArgType>(portNum)
1671  );
1672 
1673  return this->m_pingOut_OutputPort[portNum].isConnected();
1674  }
1675 
1676 #endif
1677 
1678  // ----------------------------------------------------------------------
1679  // Port handler base-class functions for special input ports
1680  //
1681  // Call these functions directly to bypass the corresponding ports
1682  // ----------------------------------------------------------------------
1683 
1686  FwIndexType portNum,
1687  FwOpcodeType opCode,
1688  U32 cmdSeq,
1689  Fw::CmdArgBuffer& args
1690  )
1691  {
1692 
1693  const U32 idBase = this->getIdBase();
1694  FW_ASSERT(opCode >= idBase, static_cast<FwAssertArgType>(opCode), static_cast<FwAssertArgType>(idBase));
1695 
1696  // Select base class function based on opcode
1697  switch (opCode - idBase) {
1698  case OPCODE_SENDFILE: {
1700  opCode,
1701  cmdSeq,
1702  args
1703  );
1704  break;
1705  }
1706 
1707  case OPCODE_PLAYBACKDIRECTORY: {
1709  opCode,
1710  cmdSeq,
1711  args
1712  );
1713  break;
1714  }
1715 
1716  case OPCODE_POLLDIRECTORY: {
1718  opCode,
1719  cmdSeq,
1720  args
1721  );
1722  break;
1723  }
1724 
1725  case OPCODE_STOPPOLLDIRECTORY: {
1727  opCode,
1728  cmdSeq,
1729  args
1730  );
1731  break;
1732  }
1733 
1734  case OPCODE_SETCHANNELFLOW: {
1736  opCode,
1737  cmdSeq,
1738  args
1739  );
1740  break;
1741  }
1742 
1745  opCode,
1746  cmdSeq,
1747  args
1748  );
1749  break;
1750  }
1751 
1752  case OPCODE_CANCELTRANSACTION: {
1754  opCode,
1755  cmdSeq,
1756  args
1757  );
1758  break;
1759  }
1760 
1763  opCode,
1764  cmdSeq,
1765  args
1766  );
1767  break;
1768  }
1769 
1770  case OPCODE_RESETCOUNTERS: {
1772  opCode,
1773  cmdSeq,
1774  args
1775  );
1776  break;
1777  }
1778 
1779  case OPCODE_LOCALEID_SET: {
1780  Fw::CmdResponse _cstat = this->paramSet_LocalEid(args);
1781  this->cmdResponse_out(
1782  opCode,
1783  cmdSeq,
1784  _cstat
1785  );
1786  break;
1787  }
1788 
1789  case OPCODE_LOCALEID_SAVE: {
1790  Fw::CmdResponse _cstat = this->paramSave_LocalEid();
1791  this->cmdResponse_out(
1792  opCode,
1793  cmdSeq,
1794  _cstat
1795  );
1796  break;
1797  }
1798 
1800  Fw::CmdResponse _cstat = this->paramSet_OutgoingFileChunkSize(args);
1801  this->cmdResponse_out(
1802  opCode,
1803  cmdSeq,
1804  _cstat
1805  );
1806  break;
1807  }
1808 
1810  Fw::CmdResponse _cstat = this->paramSave_OutgoingFileChunkSize();
1811  this->cmdResponse_out(
1812  opCode,
1813  cmdSeq,
1814  _cstat
1815  );
1816  break;
1817  }
1818 
1820  Fw::CmdResponse _cstat = this->paramSet_RxCrcCalcBytesPerCycle(args);
1821  this->cmdResponse_out(
1822  opCode,
1823  cmdSeq,
1824  _cstat
1825  );
1826  break;
1827  }
1828 
1830  Fw::CmdResponse _cstat = this->paramSave_RxCrcCalcBytesPerCycle();
1831  this->cmdResponse_out(
1832  opCode,
1833  cmdSeq,
1834  _cstat
1835  );
1836  break;
1837  }
1838 
1840  Fw::CmdResponse _cstat = this->paramSet_PostInactivitySendRetries(args);
1841  this->cmdResponse_out(
1842  opCode,
1843  cmdSeq,
1844  _cstat
1845  );
1846  break;
1847  }
1848 
1850  Fw::CmdResponse _cstat = this->paramSave_PostInactivitySendRetries();
1851  this->cmdResponse_out(
1852  opCode,
1853  cmdSeq,
1854  _cstat
1855  );
1856  break;
1857  }
1858 
1860  Fw::CmdResponse _cstat = this->paramSet_FileInDefaultChannel(args);
1861  this->cmdResponse_out(
1862  opCode,
1863  cmdSeq,
1864  _cstat
1865  );
1866  break;
1867  }
1868 
1870  Fw::CmdResponse _cstat = this->paramSave_FileInDefaultChannel();
1871  this->cmdResponse_out(
1872  opCode,
1873  cmdSeq,
1874  _cstat
1875  );
1876  break;
1877  }
1878 
1880  Fw::CmdResponse _cstat = this->paramSet_FileInDefaultDestEntityId(args);
1881  this->cmdResponse_out(
1882  opCode,
1883  cmdSeq,
1884  _cstat
1885  );
1886  break;
1887  }
1888 
1890  Fw::CmdResponse _cstat = this->paramSave_FileInDefaultDestEntityId();
1891  this->cmdResponse_out(
1892  opCode,
1893  cmdSeq,
1894  _cstat
1895  );
1896  break;
1897  }
1898 
1900  Fw::CmdResponse _cstat = this->paramSet_FileInDefaultClass(args);
1901  this->cmdResponse_out(
1902  opCode,
1903  cmdSeq,
1904  _cstat
1905  );
1906  break;
1907  }
1908 
1910  Fw::CmdResponse _cstat = this->paramSave_FileInDefaultClass();
1911  this->cmdResponse_out(
1912  opCode,
1913  cmdSeq,
1914  _cstat
1915  );
1916  break;
1917  }
1918 
1920  Fw::CmdResponse _cstat = this->paramSet_FileInDefaultKeep(args);
1921  this->cmdResponse_out(
1922  opCode,
1923  cmdSeq,
1924  _cstat
1925  );
1926  break;
1927  }
1928 
1930  Fw::CmdResponse _cstat = this->paramSave_FileInDefaultKeep();
1931  this->cmdResponse_out(
1932  opCode,
1933  cmdSeq,
1934  _cstat
1935  );
1936  break;
1937  }
1938 
1940  Fw::CmdResponse _cstat = this->paramSet_FileInDefaultPriority(args);
1941  this->cmdResponse_out(
1942  opCode,
1943  cmdSeq,
1944  _cstat
1945  );
1946  break;
1947  }
1948 
1950  Fw::CmdResponse _cstat = this->paramSave_FileInDefaultPriority();
1951  this->cmdResponse_out(
1952  opCode,
1953  cmdSeq,
1954  _cstat
1955  );
1956  break;
1957  }
1958 
1959  case OPCODE_CHANNELCONFIG_SET: {
1960  Fw::CmdResponse _cstat = this->paramSet_ChannelConfig(args);
1961  this->cmdResponse_out(
1962  opCode,
1963  cmdSeq,
1964  _cstat
1965  );
1966  break;
1967  }
1968 
1970  Fw::CmdResponse _cstat = this->paramSave_ChannelConfig();
1971  this->cmdResponse_out(
1972  opCode,
1973  cmdSeq,
1974  _cstat
1975  );
1976  break;
1977  }
1978  default:
1979  // Unknown opcode: ignore it
1980  break;
1981  }
1982  }
1983 
1984  // ----------------------------------------------------------------------
1985  // Port handler base-class functions for typed input ports
1986  //
1987  // Call these functions directly to bypass the corresponding ports
1988  // ----------------------------------------------------------------------
1989 
1992  FwIndexType portNum,
1993  Fw::Buffer& fwBuffer
1994  )
1995  {
1996  // Make sure port number is valid
1997  FW_ASSERT(
1998  (0 <= portNum) && (portNum < this->getNum_dataIn_InputPorts()),
1999  static_cast<FwAssertArgType>(portNum)
2000  );
2001 
2002  // Call pre-message hook
2004  portNum,
2005  fwBuffer
2006  );
2007  ComponentIpcSerializableBuffer msg;
2009 
2010  // Serialize message ID
2011  _status = msg.serializeFrom(
2012  static_cast<FwEnumStoreType>(DATAIN_BUFFERSEND)
2013  );
2014  FW_ASSERT(
2015  _status == Fw::FW_SERIALIZE_OK,
2016  static_cast<FwAssertArgType>(_status)
2017  );
2018 
2019  // Serialize port number
2020  _status = msg.serializeFrom(portNum);
2021  FW_ASSERT(
2022  _status == Fw::FW_SERIALIZE_OK,
2023  static_cast<FwAssertArgType>(_status)
2024  );
2025 
2026  // Serialize argument fwBuffer
2027  _status = msg.serializeFrom(fwBuffer);
2028  FW_ASSERT(
2029  _status == Fw::FW_SERIALIZE_OK,
2030  static_cast<FwAssertArgType>(_status)
2031  );
2032 
2033  // Send message
2035  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2036 
2037  FW_ASSERT(
2038  qStatus == Os::Queue::OP_OK,
2039  static_cast<FwAssertArgType>(qStatus)
2040  );
2041  }
2042 
2045  FwIndexType portNum,
2046  Fw::Buffer& fwBuffer
2047  )
2048  {
2049  // Make sure port number is valid
2050  FW_ASSERT(
2051  (0 <= portNum) && (portNum < this->getNum_dataReturnIn_InputPorts()),
2052  static_cast<FwAssertArgType>(portNum)
2053  );
2054 
2055  // Call pre-message hook
2057  portNum,
2058  fwBuffer
2059  );
2060  ComponentIpcSerializableBuffer msg;
2062 
2063  // Serialize message ID
2064  _status = msg.serializeFrom(
2065  static_cast<FwEnumStoreType>(DATARETURNIN_BUFFERSEND)
2066  );
2067  FW_ASSERT(
2068  _status == Fw::FW_SERIALIZE_OK,
2069  static_cast<FwAssertArgType>(_status)
2070  );
2071 
2072  // Serialize port number
2073  _status = msg.serializeFrom(portNum);
2074  FW_ASSERT(
2075  _status == Fw::FW_SERIALIZE_OK,
2076  static_cast<FwAssertArgType>(_status)
2077  );
2078 
2079  // Serialize argument fwBuffer
2080  _status = msg.serializeFrom(fwBuffer);
2081  FW_ASSERT(
2082  _status == Fw::FW_SERIALIZE_OK,
2083  static_cast<FwAssertArgType>(_status)
2084  );
2085 
2086  // Send message
2088  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2089 
2090  FW_ASSERT(
2091  qStatus == Os::Queue::OP_OK,
2092  static_cast<FwAssertArgType>(qStatus)
2093  );
2094  }
2095 
2098  FwIndexType portNum,
2099  const Fw::StringBase& sourceFileName,
2100  const Fw::StringBase& destFileName,
2101  U32 offset,
2102  U32 length
2103  )
2104  {
2105  // Make sure port number is valid
2106  FW_ASSERT(
2107  (0 <= portNum) && (portNum < this->getNum_fileIn_InputPorts()),
2108  static_cast<FwAssertArgType>(portNum)
2109  );
2110 
2111  Svc::SendFileResponse retVal;
2112 
2113  // Lock guard mutex before calling
2114  this->lock();
2115 
2116  // Call handler function
2117  retVal = this->fileIn_handler(
2118  portNum,
2119  sourceFileName,
2120  destFileName,
2121  offset,
2122  length
2123  );
2124 
2125  // Unlock guard mutex
2126  this->unLock();
2127 
2128  return retVal;
2129  }
2130 
2133  FwIndexType portNum,
2134  U32 key
2135  )
2136  {
2137  // Make sure port number is valid
2138  FW_ASSERT(
2139  (0 <= portNum) && (portNum < this->getNum_pingIn_InputPorts()),
2140  static_cast<FwAssertArgType>(portNum)
2141  );
2142 
2143  // Call pre-message hook
2145  portNum,
2146  key
2147  );
2148  ComponentIpcSerializableBuffer msg;
2150 
2151  // Serialize message ID
2152  _status = msg.serializeFrom(
2153  static_cast<FwEnumStoreType>(PINGIN_PING)
2154  );
2155  FW_ASSERT(
2156  _status == Fw::FW_SERIALIZE_OK,
2157  static_cast<FwAssertArgType>(_status)
2158  );
2159 
2160  // Serialize port number
2161  _status = msg.serializeFrom(portNum);
2162  FW_ASSERT(
2163  _status == Fw::FW_SERIALIZE_OK,
2164  static_cast<FwAssertArgType>(_status)
2165  );
2166 
2167  // Serialize argument key
2168  _status = msg.serializeFrom(key);
2169  FW_ASSERT(
2170  _status == Fw::FW_SERIALIZE_OK,
2171  static_cast<FwAssertArgType>(_status)
2172  );
2173 
2174  // Send message
2176  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2177 
2178  FW_ASSERT(
2179  qStatus == Os::Queue::OP_OK,
2180  static_cast<FwAssertArgType>(qStatus)
2181  );
2182  }
2183 
2186  FwIndexType portNum,
2187  U32 context
2188  )
2189  {
2190  // Make sure port number is valid
2191  FW_ASSERT(
2192  (0 <= portNum) && (portNum < this->getNum_run1Hz_InputPorts()),
2193  static_cast<FwAssertArgType>(portNum)
2194  );
2195 
2196  // Call pre-message hook
2198  portNum,
2199  context
2200  );
2201  ComponentIpcSerializableBuffer msg;
2203 
2204  // Serialize message ID
2205  _status = msg.serializeFrom(
2206  static_cast<FwEnumStoreType>(RUN1HZ_SCHED)
2207  );
2208  FW_ASSERT(
2209  _status == Fw::FW_SERIALIZE_OK,
2210  static_cast<FwAssertArgType>(_status)
2211  );
2212 
2213  // Serialize port number
2214  _status = msg.serializeFrom(portNum);
2215  FW_ASSERT(
2216  _status == Fw::FW_SERIALIZE_OK,
2217  static_cast<FwAssertArgType>(_status)
2218  );
2219 
2220  // Serialize argument context
2221  _status = msg.serializeFrom(context);
2222  FW_ASSERT(
2223  _status == Fw::FW_SERIALIZE_OK,
2224  static_cast<FwAssertArgType>(_status)
2225  );
2226 
2227  // Send message
2229  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2230 
2231  FW_ASSERT(
2232  qStatus == Os::Queue::OP_OK,
2233  static_cast<FwAssertArgType>(qStatus)
2234  );
2235  }
2236 
2237  // ----------------------------------------------------------------------
2238  // Pre-message hooks for typed async input ports
2239  //
2240  // Each of these functions is invoked just before processing a message
2241  // on the corresponding port. By default, they do nothing. You can
2242  // override them to provide specific pre-message behavior.
2243  // ----------------------------------------------------------------------
2244 
2247  FwIndexType portNum,
2248  Fw::Buffer& fwBuffer
2249  )
2250  {
2251  // Default: no-op
2252  }
2253 
2256  FwIndexType portNum,
2257  Fw::Buffer& fwBuffer
2258  )
2259  {
2260  // Default: no-op
2261  }
2262 
2265  FwIndexType portNum,
2266  U32 key
2267  )
2268  {
2269  // Default: no-op
2270  }
2271 
2274  FwIndexType portNum,
2275  U32 context
2276  )
2277  {
2278  // Default: no-op
2279  }
2280 
2281 #if !FW_DIRECT_PORT_CALLS
2282 
2283  // ----------------------------------------------------------------------
2284  // Invocation functions for typed output ports
2285  // ----------------------------------------------------------------------
2286 
2289  FwIndexType portNum,
2290  FwSizeType size
2291  ) const
2292  {
2293  FW_ASSERT(
2294  (0 <= portNum) && (portNum < this->getNum_bufferAllocate_OutputPorts()),
2295  static_cast<FwAssertArgType>(portNum)
2296  );
2297 
2298  FW_ASSERT(
2299  this->m_bufferAllocate_OutputPort[portNum].isConnected(),
2300  static_cast<FwAssertArgType>(portNum)
2301  );
2302  return this->m_bufferAllocate_OutputPort[portNum].invoke(
2303  size
2304  );
2305  }
2306 
2309  FwIndexType portNum,
2310  Fw::Buffer& fwBuffer
2311  ) const
2312  {
2313  FW_ASSERT(
2314  (0 <= portNum) && (portNum < this->getNum_bufferDeallocate_OutputPorts()),
2315  static_cast<FwAssertArgType>(portNum)
2316  );
2317 
2318  FW_ASSERT(
2319  this->m_bufferDeallocate_OutputPort[portNum].isConnected(),
2320  static_cast<FwAssertArgType>(portNum)
2321  );
2322  this->m_bufferDeallocate_OutputPort[portNum].invoke(
2323  fwBuffer
2324  );
2325  }
2326 
2329  FwIndexType portNum,
2330  Fw::Buffer& fwBuffer
2331  ) const
2332  {
2333  FW_ASSERT(
2334  (0 <= portNum) && (portNum < this->getNum_dataInReturn_OutputPorts()),
2335  static_cast<FwAssertArgType>(portNum)
2336  );
2337 
2338  FW_ASSERT(
2339  this->m_dataInReturn_OutputPort[portNum].isConnected(),
2340  static_cast<FwAssertArgType>(portNum)
2341  );
2342  this->m_dataInReturn_OutputPort[portNum].invoke(
2343  fwBuffer
2344  );
2345  }
2346 
2349  FwIndexType portNum,
2350  Fw::Buffer& fwBuffer
2351  ) const
2352  {
2353  FW_ASSERT(
2354  (0 <= portNum) && (portNum < this->getNum_dataOut_OutputPorts()),
2355  static_cast<FwAssertArgType>(portNum)
2356  );
2357 
2358  FW_ASSERT(
2359  this->m_dataOut_OutputPort[portNum].isConnected(),
2360  static_cast<FwAssertArgType>(portNum)
2361  );
2362  this->m_dataOut_OutputPort[portNum].invoke(
2363  fwBuffer
2364  );
2365  }
2366 
2369  FwIndexType portNum,
2370  const Svc::SendFileResponse& resp
2371  ) const
2372  {
2373  FW_ASSERT(
2374  (0 <= portNum) && (portNum < this->getNum_fileDoneOut_OutputPorts()),
2375  static_cast<FwAssertArgType>(portNum)
2376  );
2377 
2378  FW_ASSERT(
2379  this->m_fileDoneOut_OutputPort[portNum].isConnected(),
2380  static_cast<FwAssertArgType>(portNum)
2381  );
2382  this->m_fileDoneOut_OutputPort[portNum].invoke(
2383  resp
2384  );
2385  }
2386 
2389  FwIndexType portNum,
2390  U32 key
2391  ) const
2392  {
2393  FW_ASSERT(
2394  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
2395  static_cast<FwAssertArgType>(portNum)
2396  );
2397 
2398  FW_ASSERT(
2399  this->m_pingOut_OutputPort[portNum].isConnected(),
2400  static_cast<FwAssertArgType>(portNum)
2401  );
2402  this->m_pingOut_OutputPort[portNum].invoke(
2403  key
2404  );
2405  }
2406 
2407 #endif
2408 
2409  // ----------------------------------------------------------------------
2410  // Command response
2411  // ----------------------------------------------------------------------
2412 
2415  FwOpcodeType opCode,
2416  U32 cmdSeq,
2417  Fw::CmdResponse response
2418  )
2419  {
2421  this->cmdResponseOut_out(0, opCode, cmdSeq, response);
2422  }
2423 
2424  // ----------------------------------------------------------------------
2425  // Command handler base-class functions
2426  //
2427  // Call these functions directly to bypass the command input port
2428  // ----------------------------------------------------------------------
2429 
2432  FwOpcodeType opCode,
2433  U32 cmdSeq,
2434  Fw::CmdArgBuffer& args
2435  )
2436  {
2437  // Call pre-message hook
2438  this->SendFile_preMsgHook(opCode,cmdSeq);
2439 
2440  // Defer deserializing arguments to the message dispatcher
2441  // to avoid deserializing and reserializing just for IPC
2442  ComponentIpcSerializableBuffer msg;
2444 
2445  // Serialize for IPC
2446  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_SENDFILE));
2447  FW_ASSERT (
2448  _status == Fw::FW_SERIALIZE_OK,
2449  static_cast<FwAssertArgType>(_status)
2450  );
2451 
2452  // Fake port number to make message dequeue work
2453  FwIndexType port = 0;
2454 
2455  _status = msg.serializeFrom(port);
2456  FW_ASSERT (
2457  _status == Fw::FW_SERIALIZE_OK,
2458  static_cast<FwAssertArgType>(_status)
2459  );
2460 
2461  _status = msg.serializeFrom(opCode);
2462  FW_ASSERT (
2463  _status == Fw::FW_SERIALIZE_OK,
2464  static_cast<FwAssertArgType>(_status)
2465  );
2466 
2467  _status = msg.serializeFrom(cmdSeq);
2468  FW_ASSERT (
2469  _status == Fw::FW_SERIALIZE_OK,
2470  static_cast<FwAssertArgType>(_status)
2471  );
2472 
2473  _status = msg.serializeFrom(args);
2474  FW_ASSERT (
2475  _status == Fw::FW_SERIALIZE_OK,
2476  static_cast<FwAssertArgType>(_status)
2477  );
2478 
2479  // Send message
2481  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2482 
2483  FW_ASSERT(
2484  qStatus == Os::Queue::OP_OK,
2485  static_cast<FwAssertArgType>(qStatus)
2486  );
2487  }
2488 
2491  FwOpcodeType opCode,
2492  U32 cmdSeq,
2493  Fw::CmdArgBuffer& args
2494  )
2495  {
2496  // Call pre-message hook
2497  this->PlaybackDirectory_preMsgHook(opCode,cmdSeq);
2498 
2499  // Defer deserializing arguments to the message dispatcher
2500  // to avoid deserializing and reserializing just for IPC
2501  ComponentIpcSerializableBuffer msg;
2503 
2504  // Serialize for IPC
2505  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_PLAYBACKDIRECTORY));
2506  FW_ASSERT (
2507  _status == Fw::FW_SERIALIZE_OK,
2508  static_cast<FwAssertArgType>(_status)
2509  );
2510 
2511  // Fake port number to make message dequeue work
2512  FwIndexType port = 0;
2513 
2514  _status = msg.serializeFrom(port);
2515  FW_ASSERT (
2516  _status == Fw::FW_SERIALIZE_OK,
2517  static_cast<FwAssertArgType>(_status)
2518  );
2519 
2520  _status = msg.serializeFrom(opCode);
2521  FW_ASSERT (
2522  _status == Fw::FW_SERIALIZE_OK,
2523  static_cast<FwAssertArgType>(_status)
2524  );
2525 
2526  _status = msg.serializeFrom(cmdSeq);
2527  FW_ASSERT (
2528  _status == Fw::FW_SERIALIZE_OK,
2529  static_cast<FwAssertArgType>(_status)
2530  );
2531 
2532  _status = msg.serializeFrom(args);
2533  FW_ASSERT (
2534  _status == Fw::FW_SERIALIZE_OK,
2535  static_cast<FwAssertArgType>(_status)
2536  );
2537 
2538  // Send message
2540  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2541 
2542  FW_ASSERT(
2543  qStatus == Os::Queue::OP_OK,
2544  static_cast<FwAssertArgType>(qStatus)
2545  );
2546  }
2547 
2550  FwOpcodeType opCode,
2551  U32 cmdSeq,
2552  Fw::CmdArgBuffer& args
2553  )
2554  {
2555  // Call pre-message hook
2556  this->PollDirectory_preMsgHook(opCode,cmdSeq);
2557 
2558  // Defer deserializing arguments to the message dispatcher
2559  // to avoid deserializing and reserializing just for IPC
2560  ComponentIpcSerializableBuffer msg;
2562 
2563  // Serialize for IPC
2564  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_POLLDIRECTORY));
2565  FW_ASSERT (
2566  _status == Fw::FW_SERIALIZE_OK,
2567  static_cast<FwAssertArgType>(_status)
2568  );
2569 
2570  // Fake port number to make message dequeue work
2571  FwIndexType port = 0;
2572 
2573  _status = msg.serializeFrom(port);
2574  FW_ASSERT (
2575  _status == Fw::FW_SERIALIZE_OK,
2576  static_cast<FwAssertArgType>(_status)
2577  );
2578 
2579  _status = msg.serializeFrom(opCode);
2580  FW_ASSERT (
2581  _status == Fw::FW_SERIALIZE_OK,
2582  static_cast<FwAssertArgType>(_status)
2583  );
2584 
2585  _status = msg.serializeFrom(cmdSeq);
2586  FW_ASSERT (
2587  _status == Fw::FW_SERIALIZE_OK,
2588  static_cast<FwAssertArgType>(_status)
2589  );
2590 
2591  _status = msg.serializeFrom(args);
2592  FW_ASSERT (
2593  _status == Fw::FW_SERIALIZE_OK,
2594  static_cast<FwAssertArgType>(_status)
2595  );
2596 
2597  // Send message
2599  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2600 
2601  FW_ASSERT(
2602  qStatus == Os::Queue::OP_OK,
2603  static_cast<FwAssertArgType>(qStatus)
2604  );
2605  }
2606 
2609  FwOpcodeType opCode,
2610  U32 cmdSeq,
2611  Fw::CmdArgBuffer& args
2612  )
2613  {
2614  // Call pre-message hook
2615  this->StopPollDirectory_preMsgHook(opCode,cmdSeq);
2616 
2617  // Defer deserializing arguments to the message dispatcher
2618  // to avoid deserializing and reserializing just for IPC
2619  ComponentIpcSerializableBuffer msg;
2621 
2622  // Serialize for IPC
2623  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_STOPPOLLDIRECTORY));
2624  FW_ASSERT (
2625  _status == Fw::FW_SERIALIZE_OK,
2626  static_cast<FwAssertArgType>(_status)
2627  );
2628 
2629  // Fake port number to make message dequeue work
2630  FwIndexType port = 0;
2631 
2632  _status = msg.serializeFrom(port);
2633  FW_ASSERT (
2634  _status == Fw::FW_SERIALIZE_OK,
2635  static_cast<FwAssertArgType>(_status)
2636  );
2637 
2638  _status = msg.serializeFrom(opCode);
2639  FW_ASSERT (
2640  _status == Fw::FW_SERIALIZE_OK,
2641  static_cast<FwAssertArgType>(_status)
2642  );
2643 
2644  _status = msg.serializeFrom(cmdSeq);
2645  FW_ASSERT (
2646  _status == Fw::FW_SERIALIZE_OK,
2647  static_cast<FwAssertArgType>(_status)
2648  );
2649 
2650  _status = msg.serializeFrom(args);
2651  FW_ASSERT (
2652  _status == Fw::FW_SERIALIZE_OK,
2653  static_cast<FwAssertArgType>(_status)
2654  );
2655 
2656  // Send message
2658  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2659 
2660  FW_ASSERT(
2661  qStatus == Os::Queue::OP_OK,
2662  static_cast<FwAssertArgType>(qStatus)
2663  );
2664  }
2665 
2668  FwOpcodeType opCode,
2669  U32 cmdSeq,
2670  Fw::CmdArgBuffer& args
2671  )
2672  {
2673  // Call pre-message hook
2674  this->SetChannelFlow_preMsgHook(opCode,cmdSeq);
2675 
2676  // Defer deserializing arguments to the message dispatcher
2677  // to avoid deserializing and reserializing just for IPC
2678  ComponentIpcSerializableBuffer msg;
2680 
2681  // Serialize for IPC
2682  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_SETCHANNELFLOW));
2683  FW_ASSERT (
2684  _status == Fw::FW_SERIALIZE_OK,
2685  static_cast<FwAssertArgType>(_status)
2686  );
2687 
2688  // Fake port number to make message dequeue work
2689  FwIndexType port = 0;
2690 
2691  _status = msg.serializeFrom(port);
2692  FW_ASSERT (
2693  _status == Fw::FW_SERIALIZE_OK,
2694  static_cast<FwAssertArgType>(_status)
2695  );
2696 
2697  _status = msg.serializeFrom(opCode);
2698  FW_ASSERT (
2699  _status == Fw::FW_SERIALIZE_OK,
2700  static_cast<FwAssertArgType>(_status)
2701  );
2702 
2703  _status = msg.serializeFrom(cmdSeq);
2704  FW_ASSERT (
2705  _status == Fw::FW_SERIALIZE_OK,
2706  static_cast<FwAssertArgType>(_status)
2707  );
2708 
2709  _status = msg.serializeFrom(args);
2710  FW_ASSERT (
2711  _status == Fw::FW_SERIALIZE_OK,
2712  static_cast<FwAssertArgType>(_status)
2713  );
2714 
2715  // Send message
2717  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2718 
2719  FW_ASSERT(
2720  qStatus == Os::Queue::OP_OK,
2721  static_cast<FwAssertArgType>(qStatus)
2722  );
2723  }
2724 
2727  FwOpcodeType opCode,
2728  U32 cmdSeq,
2729  Fw::CmdArgBuffer& args
2730  )
2731  {
2732  // Call pre-message hook
2733  this->SuspendResumeTransaction_preMsgHook(opCode,cmdSeq);
2734 
2735  // Defer deserializing arguments to the message dispatcher
2736  // to avoid deserializing and reserializing just for IPC
2737  ComponentIpcSerializableBuffer msg;
2739 
2740  // Serialize for IPC
2741  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_SUSPENDRESUMETRANSACTION));
2742  FW_ASSERT (
2743  _status == Fw::FW_SERIALIZE_OK,
2744  static_cast<FwAssertArgType>(_status)
2745  );
2746 
2747  // Fake port number to make message dequeue work
2748  FwIndexType port = 0;
2749 
2750  _status = msg.serializeFrom(port);
2751  FW_ASSERT (
2752  _status == Fw::FW_SERIALIZE_OK,
2753  static_cast<FwAssertArgType>(_status)
2754  );
2755 
2756  _status = msg.serializeFrom(opCode);
2757  FW_ASSERT (
2758  _status == Fw::FW_SERIALIZE_OK,
2759  static_cast<FwAssertArgType>(_status)
2760  );
2761 
2762  _status = msg.serializeFrom(cmdSeq);
2763  FW_ASSERT (
2764  _status == Fw::FW_SERIALIZE_OK,
2765  static_cast<FwAssertArgType>(_status)
2766  );
2767 
2768  _status = msg.serializeFrom(args);
2769  FW_ASSERT (
2770  _status == Fw::FW_SERIALIZE_OK,
2771  static_cast<FwAssertArgType>(_status)
2772  );
2773 
2774  // Send message
2776  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2777 
2778  FW_ASSERT(
2779  qStatus == Os::Queue::OP_OK,
2780  static_cast<FwAssertArgType>(qStatus)
2781  );
2782  }
2783 
2786  FwOpcodeType opCode,
2787  U32 cmdSeq,
2788  Fw::CmdArgBuffer& args
2789  )
2790  {
2791  // Call pre-message hook
2792  this->CancelTransaction_preMsgHook(opCode,cmdSeq);
2793 
2794  // Defer deserializing arguments to the message dispatcher
2795  // to avoid deserializing and reserializing just for IPC
2796  ComponentIpcSerializableBuffer msg;
2798 
2799  // Serialize for IPC
2800  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_CANCELTRANSACTION));
2801  FW_ASSERT (
2802  _status == Fw::FW_SERIALIZE_OK,
2803  static_cast<FwAssertArgType>(_status)
2804  );
2805 
2806  // Fake port number to make message dequeue work
2807  FwIndexType port = 0;
2808 
2809  _status = msg.serializeFrom(port);
2810  FW_ASSERT (
2811  _status == Fw::FW_SERIALIZE_OK,
2812  static_cast<FwAssertArgType>(_status)
2813  );
2814 
2815  _status = msg.serializeFrom(opCode);
2816  FW_ASSERT (
2817  _status == Fw::FW_SERIALIZE_OK,
2818  static_cast<FwAssertArgType>(_status)
2819  );
2820 
2821  _status = msg.serializeFrom(cmdSeq);
2822  FW_ASSERT (
2823  _status == Fw::FW_SERIALIZE_OK,
2824  static_cast<FwAssertArgType>(_status)
2825  );
2826 
2827  _status = msg.serializeFrom(args);
2828  FW_ASSERT (
2829  _status == Fw::FW_SERIALIZE_OK,
2830  static_cast<FwAssertArgType>(_status)
2831  );
2832 
2833  // Send message
2835  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2836 
2837  FW_ASSERT(
2838  qStatus == Os::Queue::OP_OK,
2839  static_cast<FwAssertArgType>(qStatus)
2840  );
2841  }
2842 
2845  FwOpcodeType opCode,
2846  U32 cmdSeq,
2847  Fw::CmdArgBuffer& args
2848  )
2849  {
2850  // Call pre-message hook
2851  this->AbandonTransaction_preMsgHook(opCode,cmdSeq);
2852 
2853  // Defer deserializing arguments to the message dispatcher
2854  // to avoid deserializing and reserializing just for IPC
2855  ComponentIpcSerializableBuffer msg;
2857 
2858  // Serialize for IPC
2859  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_ABANDONTRANSACTION));
2860  FW_ASSERT (
2861  _status == Fw::FW_SERIALIZE_OK,
2862  static_cast<FwAssertArgType>(_status)
2863  );
2864 
2865  // Fake port number to make message dequeue work
2866  FwIndexType port = 0;
2867 
2868  _status = msg.serializeFrom(port);
2869  FW_ASSERT (
2870  _status == Fw::FW_SERIALIZE_OK,
2871  static_cast<FwAssertArgType>(_status)
2872  );
2873 
2874  _status = msg.serializeFrom(opCode);
2875  FW_ASSERT (
2876  _status == Fw::FW_SERIALIZE_OK,
2877  static_cast<FwAssertArgType>(_status)
2878  );
2879 
2880  _status = msg.serializeFrom(cmdSeq);
2881  FW_ASSERT (
2882  _status == Fw::FW_SERIALIZE_OK,
2883  static_cast<FwAssertArgType>(_status)
2884  );
2885 
2886  _status = msg.serializeFrom(args);
2887  FW_ASSERT (
2888  _status == Fw::FW_SERIALIZE_OK,
2889  static_cast<FwAssertArgType>(_status)
2890  );
2891 
2892  // Send message
2894  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2895 
2896  FW_ASSERT(
2897  qStatus == Os::Queue::OP_OK,
2898  static_cast<FwAssertArgType>(qStatus)
2899  );
2900  }
2901 
2904  FwOpcodeType opCode,
2905  U32 cmdSeq,
2906  Fw::CmdArgBuffer& args
2907  )
2908  {
2909  // Call pre-message hook
2910  this->ResetCounters_preMsgHook(opCode,cmdSeq);
2911 
2912  // Defer deserializing arguments to the message dispatcher
2913  // to avoid deserializing and reserializing just for IPC
2914  ComponentIpcSerializableBuffer msg;
2916 
2917  // Serialize for IPC
2918  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_RESETCOUNTERS));
2919  FW_ASSERT (
2920  _status == Fw::FW_SERIALIZE_OK,
2921  static_cast<FwAssertArgType>(_status)
2922  );
2923 
2924  // Fake port number to make message dequeue work
2925  FwIndexType port = 0;
2926 
2927  _status = msg.serializeFrom(port);
2928  FW_ASSERT (
2929  _status == Fw::FW_SERIALIZE_OK,
2930  static_cast<FwAssertArgType>(_status)
2931  );
2932 
2933  _status = msg.serializeFrom(opCode);
2934  FW_ASSERT (
2935  _status == Fw::FW_SERIALIZE_OK,
2936  static_cast<FwAssertArgType>(_status)
2937  );
2938 
2939  _status = msg.serializeFrom(cmdSeq);
2940  FW_ASSERT (
2941  _status == Fw::FW_SERIALIZE_OK,
2942  static_cast<FwAssertArgType>(_status)
2943  );
2944 
2945  _status = msg.serializeFrom(args);
2946  FW_ASSERT (
2947  _status == Fw::FW_SERIALIZE_OK,
2948  static_cast<FwAssertArgType>(_status)
2949  );
2950 
2951  // Send message
2953  Os::Queue::Status qStatus = this->m_queue.send(msg, 0, _block);
2954 
2955  FW_ASSERT(
2956  qStatus == Os::Queue::OP_OK,
2957  static_cast<FwAssertArgType>(qStatus)
2958  );
2959  }
2960 
2961  // ----------------------------------------------------------------------
2962  // Pre-message hooks for async commands
2963  //
2964  // Each of these functions is invoked just before processing the
2965  // corresponding command. By default they do nothing. You can
2966  // override them to provide specific pre-command behavior.
2967  // ----------------------------------------------------------------------
2968 
2971  FwOpcodeType opCode,
2972  U32 cmdSeq
2973  )
2974  {
2975  // Defaults to no-op; can be overridden
2976  (void) opCode;
2977  (void) cmdSeq;
2978  }
2979 
2982  FwOpcodeType opCode,
2983  U32 cmdSeq
2984  )
2985  {
2986  // Defaults to no-op; can be overridden
2987  (void) opCode;
2988  (void) cmdSeq;
2989  }
2990 
2993  FwOpcodeType opCode,
2994  U32 cmdSeq
2995  )
2996  {
2997  // Defaults to no-op; can be overridden
2998  (void) opCode;
2999  (void) cmdSeq;
3000  }
3001 
3004  FwOpcodeType opCode,
3005  U32 cmdSeq
3006  )
3007  {
3008  // Defaults to no-op; can be overridden
3009  (void) opCode;
3010  (void) cmdSeq;
3011  }
3012 
3015  FwOpcodeType opCode,
3016  U32 cmdSeq
3017  )
3018  {
3019  // Defaults to no-op; can be overridden
3020  (void) opCode;
3021  (void) cmdSeq;
3022  }
3023 
3026  FwOpcodeType opCode,
3027  U32 cmdSeq
3028  )
3029  {
3030  // Defaults to no-op; can be overridden
3031  (void) opCode;
3032  (void) cmdSeq;
3033  }
3034 
3037  FwOpcodeType opCode,
3038  U32 cmdSeq
3039  )
3040  {
3041  // Defaults to no-op; can be overridden
3042  (void) opCode;
3043  (void) cmdSeq;
3044  }
3045 
3048  FwOpcodeType opCode,
3049  U32 cmdSeq
3050  )
3051  {
3052  // Defaults to no-op; can be overridden
3053  (void) opCode;
3054  (void) cmdSeq;
3055  }
3056 
3059  FwOpcodeType opCode,
3060  U32 cmdSeq
3061  )
3062  {
3063  // Defaults to no-op; can be overridden
3064  (void) opCode;
3065  (void) cmdSeq;
3066  }
3067 
3068  // ----------------------------------------------------------------------
3069  // Event logging functions
3070  // ----------------------------------------------------------------------
3071 
3074  {
3075  // Get the time
3076  Fw::Time _logTime;
3077  if (this->isConnected_timeCaller_OutputPort(0)) {
3078  this->timeCaller_out(0, _logTime);
3079  }
3080 
3081  const FwEventIdType _id = this->getIdBase() + EVENTID_BUFFERSEXHAUSTED;
3082 
3083  // Emit the event on the log port
3084  if (this->isConnected_logOut_OutputPort(0)) {
3085  Fw::LogBuffer _logBuff;
3086 
3087 #if FW_AMPCS_COMPATIBLE
3089  // Serialize the number of arguments
3090  _status = _logBuff.serializeFrom(static_cast<U8>(0));
3091  FW_ASSERT(
3092  _status == Fw::FW_SERIALIZE_OK,
3093  static_cast<FwAssertArgType>(_status)
3094  );
3095 #endif
3096 
3097  this->logOut_out(
3098  0,
3099  _id,
3100  _logTime,
3102  _logBuff
3103  );
3104  }
3105 
3106  // Emit the event on the text log port
3107 #if FW_ENABLE_TEXT_LOGGING
3108  if (this->isConnected_logTextOut_OutputPort(0)) {
3109 #if FW_OBJECT_NAMES == 1
3110  const char* _formatString =
3111  "(%s) %s: Unable to allocate a PDU buffer";
3112 #else
3113  const char* _formatString =
3114  "%s: Unable to allocate a PDU buffer";
3115 #endif
3116 
3117  Fw::TextLogString _logString;
3118  (void) _logString.format(
3119  _formatString,
3120 #if FW_OBJECT_NAMES == 1
3121  this->m_objName.toChar(),
3122 #endif
3123  "BuffersExhausted "
3124  );
3125 
3126  this->logTextOut_out(
3127  0,
3128  _id,
3129  _logTime,
3131  _logString
3132  );
3133  }
3134 #endif
3135  }
3136 
3139  U8 channelId,
3140  U8 maxChannelId
3141  ) const
3142  {
3143  // Get the time
3144  Fw::Time _logTime;
3145  if (this->isConnected_timeCaller_OutputPort(0)) {
3146  this->timeCaller_out(0, _logTime);
3147  }
3148 
3149  const FwEventIdType _id = this->getIdBase() + EVENTID_INVALIDCHANNEL;
3150 
3151  // Emit the event on the log port
3152  if (this->isConnected_logOut_OutputPort(0)) {
3153  Fw::LogBuffer _logBuff;
3155 
3156 #if FW_AMPCS_COMPATIBLE
3157  // Serialize the number of arguments
3158  _status = _logBuff.serializeFrom(static_cast<U8>(2));
3159  FW_ASSERT(
3160  _status == Fw::FW_SERIALIZE_OK,
3161  static_cast<FwAssertArgType>(_status)
3162  );
3163 #endif
3164 
3165 #if FW_AMPCS_COMPATIBLE
3166  // Serialize the argument size
3167  _status = _logBuff.serializeFrom(
3168  static_cast<U8>(sizeof(U8))
3169  );
3170  FW_ASSERT(
3171  _status == Fw::FW_SERIALIZE_OK,
3172  static_cast<FwAssertArgType>(_status)
3173  );
3174 #endif
3175  _status = _logBuff.serializeFrom(channelId);
3176  FW_ASSERT(
3177  _status == Fw::FW_SERIALIZE_OK,
3178  static_cast<FwAssertArgType>(_status)
3179  );
3180 
3181 #if FW_AMPCS_COMPATIBLE
3182  // Serialize the argument size
3183  _status = _logBuff.serializeFrom(
3184  static_cast<U8>(sizeof(U8))
3185  );
3186  FW_ASSERT(
3187  _status == Fw::FW_SERIALIZE_OK,
3188  static_cast<FwAssertArgType>(_status)
3189  );
3190 #endif
3191  _status = _logBuff.serializeFrom(maxChannelId);
3192  FW_ASSERT(
3193  _status == Fw::FW_SERIALIZE_OK,
3194  static_cast<FwAssertArgType>(_status)
3195  );
3196 
3197  this->logOut_out(
3198  0,
3199  _id,
3200  _logTime,
3202  _logBuff
3203  );
3204  }
3205 
3206  // Emit the event on the text log port
3207 #if FW_ENABLE_TEXT_LOGGING
3208  if (this->isConnected_logTextOut_OutputPort(0)) {
3209 #if FW_OBJECT_NAMES == 1
3210  const char* _formatString =
3211  "(%s) %s: Invalid channel ID %" PRIu8 ", maximum channel ID is %" PRIu8 "";
3212 #else
3213  const char* _formatString =
3214  "%s: Invalid channel ID %" PRIu8 ", maximum channel ID is %" PRIu8 "";
3215 #endif
3216 
3217  Fw::TextLogString _logString;
3218  (void) _logString.format(
3219  _formatString,
3220 #if FW_OBJECT_NAMES == 1
3221  this->m_objName.toChar(),
3222 #endif
3223  "InvalidChannel ",
3224  channelId,
3225  maxChannelId
3226  );
3227 
3228  this->logTextOut_out(
3229  0,
3230  _id,
3231  _logTime,
3233  _logString
3234  );
3235  }
3236 #endif
3237  }
3238 
3241  const Fw::StringBase& sourceFileName,
3242  U32 transactionSeq
3243  ) const
3244  {
3245  // Get the time
3246  Fw::Time _logTime;
3247  if (this->isConnected_timeCaller_OutputPort(0)) {
3248  this->timeCaller_out(0, _logTime);
3249  }
3250 
3251  const FwEventIdType _id = this->getIdBase() + EVENTID_TXFILEQUEUED;
3252 
3253  // Emit the event on the log port
3254  if (this->isConnected_logOut_OutputPort(0)) {
3255  Fw::LogBuffer _logBuff;
3257 
3258 #if FW_AMPCS_COMPATIBLE
3259  // Serialize the number of arguments
3260  _status = _logBuff.serializeFrom(static_cast<U8>(2));
3261  FW_ASSERT(
3262  _status == Fw::FW_SERIALIZE_OK,
3263  static_cast<FwAssertArgType>(_status)
3264  );
3265 #endif
3266 
3267  _status = sourceFileName.serializeTo(
3268  _logBuff,
3269  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
3270  );
3271  FW_ASSERT(
3272  _status == Fw::FW_SERIALIZE_OK,
3273  static_cast<FwAssertArgType>(_status)
3274  );
3275 
3276 #if FW_AMPCS_COMPATIBLE
3277  // Serialize the argument size
3278  _status = _logBuff.serializeFrom(
3279  static_cast<U8>(sizeof(U32))
3280  );
3281  FW_ASSERT(
3282  _status == Fw::FW_SERIALIZE_OK,
3283  static_cast<FwAssertArgType>(_status)
3284  );
3285 #endif
3286  _status = _logBuff.serializeFrom(transactionSeq);
3287  FW_ASSERT(
3288  _status == Fw::FW_SERIALIZE_OK,
3289  static_cast<FwAssertArgType>(_status)
3290  );
3291 
3292  this->logOut_out(
3293  0,
3294  _id,
3295  _logTime,
3297  _logBuff
3298  );
3299  }
3300 
3301  // Emit the event on the text log port
3302 #if FW_ENABLE_TEXT_LOGGING
3303  if (this->isConnected_logTextOut_OutputPort(0)) {
3304 #if FW_OBJECT_NAMES == 1
3305  const char* _formatString =
3306  "(%s) %s: TX file queued for %s (transaction %" PRIu32 ")";
3307 #else
3308  const char* _formatString =
3309  "%s: TX file queued for %s (transaction %" PRIu32 ")";
3310 #endif
3311 
3312  Fw::TextLogString _logString;
3313  (void) _logString.format(
3314  _formatString,
3315 #if FW_OBJECT_NAMES == 1
3316  this->m_objName.toChar(),
3317 #endif
3318  "TxFileQueued ",
3319  sourceFileName.toChar(),
3320  transactionSeq
3321  );
3322 
3323  this->logTextOut_out(
3324  0,
3325  _id,
3326  _logTime,
3328  _logString
3329  );
3330  }
3331 #endif
3332  }
3333 
3336  U32 offset,
3337  U32 length
3338  ) const
3339  {
3340  // Get the time
3341  Fw::Time _logTime;
3342  if (this->isConnected_timeCaller_OutputPort(0)) {
3343  this->timeCaller_out(0, _logTime);
3344  }
3345 
3347 
3348  // Emit the event on the log port
3349  if (this->isConnected_logOut_OutputPort(0)) {
3350  Fw::LogBuffer _logBuff;
3352 
3353 #if FW_AMPCS_COMPATIBLE
3354  // Serialize the number of arguments
3355  _status = _logBuff.serializeFrom(static_cast<U8>(2));
3356  FW_ASSERT(
3357  _status == Fw::FW_SERIALIZE_OK,
3358  static_cast<FwAssertArgType>(_status)
3359  );
3360 #endif
3361 
3362 #if FW_AMPCS_COMPATIBLE
3363  // Serialize the argument size
3364  _status = _logBuff.serializeFrom(
3365  static_cast<U8>(sizeof(U32))
3366  );
3367  FW_ASSERT(
3368  _status == Fw::FW_SERIALIZE_OK,
3369  static_cast<FwAssertArgType>(_status)
3370  );
3371 #endif
3372  _status = _logBuff.serializeFrom(offset);
3373  FW_ASSERT(
3374  _status == Fw::FW_SERIALIZE_OK,
3375  static_cast<FwAssertArgType>(_status)
3376  );
3377 
3378 #if FW_AMPCS_COMPATIBLE
3379  // Serialize the argument size
3380  _status = _logBuff.serializeFrom(
3381  static_cast<U8>(sizeof(U32))
3382  );
3383  FW_ASSERT(
3384  _status == Fw::FW_SERIALIZE_OK,
3385  static_cast<FwAssertArgType>(_status)
3386  );
3387 #endif
3388  _status = _logBuff.serializeFrom(length);
3389  FW_ASSERT(
3390  _status == Fw::FW_SERIALIZE_OK,
3391  static_cast<FwAssertArgType>(_status)
3392  );
3393 
3394  this->logOut_out(
3395  0,
3396  _id,
3397  _logTime,
3399  _logBuff
3400  );
3401  }
3402 
3403  // Emit the event on the text log port
3404 #if FW_ENABLE_TEXT_LOGGING
3405  if (this->isConnected_logTextOut_OutputPort(0)) {
3406 #if FW_OBJECT_NAMES == 1
3407  const char* _formatString =
3408  "(%s) %s: Invalid send file port request with offset %" PRIu32 ", length %" PRIu32 "";
3409 #else
3410  const char* _formatString =
3411  "%s: Invalid send file port request with offset %" PRIu32 ", length %" PRIu32 "";
3412 #endif
3413 
3414  Fw::TextLogString _logString;
3415  (void) _logString.format(
3416  _formatString,
3417 #if FW_OBJECT_NAMES == 1
3418  this->m_objName.toChar(),
3419 #endif
3420  "UnsupportedSendFileArguments ",
3421  offset,
3422  length
3423  );
3424 
3425  this->logTextOut_out(
3426  0,
3427  _id,
3428  _logTime,
3430  _logString
3431  );
3432  }
3433 #endif
3434  }
3435 
3438  {
3439  // Get the time
3440  Fw::Time _logTime;
3441  if (this->isConnected_timeCaller_OutputPort(0)) {
3442  this->timeCaller_out(0, _logTime);
3443  }
3444 
3446 
3447  // Emit the event on the log port
3448  if (this->isConnected_logOut_OutputPort(0)) {
3449  Fw::LogBuffer _logBuff;
3451 
3452 #if FW_AMPCS_COMPATIBLE
3453  // Serialize the number of arguments
3454  _status = _logBuff.serializeFrom(static_cast<U8>(1));
3455  FW_ASSERT(
3456  _status == Fw::FW_SERIALIZE_OK,
3457  static_cast<FwAssertArgType>(_status)
3458  );
3459 #endif
3460 
3461  _status = sourceFileName.serializeTo(
3462  _logBuff,
3463  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
3464  );
3465  FW_ASSERT(
3466  _status == Fw::FW_SERIALIZE_OK,
3467  static_cast<FwAssertArgType>(_status)
3468  );
3469 
3470  this->logOut_out(
3471  0,
3472  _id,
3473  _logTime,
3475  _logBuff
3476  );
3477  }
3478 
3479  // Emit the event on the text log port
3480 #if FW_ENABLE_TEXT_LOGGING
3481  if (this->isConnected_logTextOut_OutputPort(0)) {
3482 #if FW_OBJECT_NAMES == 1
3483  const char* _formatString =
3484  "(%s) %s: Failed to initiate file send transfer for %s";
3485 #else
3486  const char* _formatString =
3487  "%s: Failed to initiate file send transfer for %s";
3488 #endif
3489 
3490  Fw::TextLogString _logString;
3491  (void) _logString.format(
3492  _formatString,
3493 #if FW_OBJECT_NAMES == 1
3494  this->m_objName.toChar(),
3495 #endif
3496  "SendFileInitiateFail ",
3497  sourceFileName.toChar()
3498  );
3499 
3500  this->logTextOut_out(
3501  0,
3502  _id,
3503  _logTime,
3505  _logString
3506  );
3507  }
3508 #endif
3509  }
3510 
3513  {
3514  // Get the time
3515  Fw::Time _logTime;
3516  if (this->isConnected_timeCaller_OutputPort(0)) {
3517  this->timeCaller_out(0, _logTime);
3518  }
3519 
3520  const FwEventIdType _id = this->getIdBase() + EVENTID_PLAYBACKINITIATED;
3521 
3522  // Emit the event on the log port
3523  if (this->isConnected_logOut_OutputPort(0)) {
3524  Fw::LogBuffer _logBuff;
3526 
3527 #if FW_AMPCS_COMPATIBLE
3528  // Serialize the number of arguments
3529  _status = _logBuff.serializeFrom(static_cast<U8>(1));
3530  FW_ASSERT(
3531  _status == Fw::FW_SERIALIZE_OK,
3532  static_cast<FwAssertArgType>(_status)
3533  );
3534 #endif
3535 
3536  _status = sourceDirectory.serializeTo(
3537  _logBuff,
3538  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
3539  );
3540  FW_ASSERT(
3541  _status == Fw::FW_SERIALIZE_OK,
3542  static_cast<FwAssertArgType>(_status)
3543  );
3544 
3545  this->logOut_out(
3546  0,
3547  _id,
3548  _logTime,
3550  _logBuff
3551  );
3552  }
3553 
3554  // Emit the event on the text log port
3555 #if FW_ENABLE_TEXT_LOGGING
3556  if (this->isConnected_logTextOut_OutputPort(0)) {
3557 #if FW_OBJECT_NAMES == 1
3558  const char* _formatString =
3559  "(%s) %s: Successfully initiated directory playback for %s";
3560 #else
3561  const char* _formatString =
3562  "%s: Successfully initiated directory playback for %s";
3563 #endif
3564 
3565  Fw::TextLogString _logString;
3566  (void) _logString.format(
3567  _formatString,
3568 #if FW_OBJECT_NAMES == 1
3569  this->m_objName.toChar(),
3570 #endif
3571  "PlaybackInitiated ",
3572  sourceDirectory.toChar()
3573  );
3574 
3575  this->logTextOut_out(
3576  0,
3577  _id,
3578  _logTime,
3580  _logString
3581  );
3582  }
3583 #endif
3584  }
3585 
3588  {
3589  // Get the time
3590  Fw::Time _logTime;
3591  if (this->isConnected_timeCaller_OutputPort(0)) {
3592  this->timeCaller_out(0, _logTime);
3593  }
3594 
3595  const FwEventIdType _id = this->getIdBase() + EVENTID_POLLDIRINITIATED;
3596 
3597  // Emit the event on the log port
3598  if (this->isConnected_logOut_OutputPort(0)) {
3599  Fw::LogBuffer _logBuff;
3601 
3602 #if FW_AMPCS_COMPATIBLE
3603  // Serialize the number of arguments
3604  _status = _logBuff.serializeFrom(static_cast<U8>(1));
3605  FW_ASSERT(
3606  _status == Fw::FW_SERIALIZE_OK,
3607  static_cast<FwAssertArgType>(_status)
3608  );
3609 #endif
3610 
3611  _status = sourceDirectory.serializeTo(
3612  _logBuff,
3613  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
3614  );
3615  FW_ASSERT(
3616  _status == Fw::FW_SERIALIZE_OK,
3617  static_cast<FwAssertArgType>(_status)
3618  );
3619 
3620  this->logOut_out(
3621  0,
3622  _id,
3623  _logTime,
3625  _logBuff
3626  );
3627  }
3628 
3629  // Emit the event on the text log port
3630 #if FW_ENABLE_TEXT_LOGGING
3631  if (this->isConnected_logTextOut_OutputPort(0)) {
3632 #if FW_OBJECT_NAMES == 1
3633  const char* _formatString =
3634  "(%s) %s: Successfully initiated directory poll for %s";
3635 #else
3636  const char* _formatString =
3637  "%s: Successfully initiated directory poll for %s";
3638 #endif
3639 
3640  Fw::TextLogString _logString;
3641  (void) _logString.format(
3642  _formatString,
3643 #if FW_OBJECT_NAMES == 1
3644  this->m_objName.toChar(),
3645 #endif
3646  "PollDirInitiated ",
3647  sourceDirectory.toChar()
3648  );
3649 
3650  this->logTextOut_out(
3651  0,
3652  _id,
3653  _logTime,
3655  _logString
3656  );
3657  }
3658 #endif
3659  }
3660 
3663  U8 channelId,
3664  U8 pollId
3665  ) const
3666  {
3667  // Get the time
3668  Fw::Time _logTime;
3669  if (this->isConnected_timeCaller_OutputPort(0)) {
3670  this->timeCaller_out(0, _logTime);
3671  }
3672 
3673  const FwEventIdType _id = this->getIdBase() + EVENTID_POLLDIRSTOPPED;
3674 
3675  // Emit the event on the log port
3676  if (this->isConnected_logOut_OutputPort(0)) {
3677  Fw::LogBuffer _logBuff;
3679 
3680 #if FW_AMPCS_COMPATIBLE
3681  // Serialize the number of arguments
3682  _status = _logBuff.serializeFrom(static_cast<U8>(2));
3683  FW_ASSERT(
3684  _status == Fw::FW_SERIALIZE_OK,
3685  static_cast<FwAssertArgType>(_status)
3686  );
3687 #endif
3688 
3689 #if FW_AMPCS_COMPATIBLE
3690  // Serialize the argument size
3691  _status = _logBuff.serializeFrom(
3692  static_cast<U8>(sizeof(U8))
3693  );
3694  FW_ASSERT(
3695  _status == Fw::FW_SERIALIZE_OK,
3696  static_cast<FwAssertArgType>(_status)
3697  );
3698 #endif
3699  _status = _logBuff.serializeFrom(channelId);
3700  FW_ASSERT(
3701  _status == Fw::FW_SERIALIZE_OK,
3702  static_cast<FwAssertArgType>(_status)
3703  );
3704 
3705 #if FW_AMPCS_COMPATIBLE
3706  // Serialize the argument size
3707  _status = _logBuff.serializeFrom(
3708  static_cast<U8>(sizeof(U8))
3709  );
3710  FW_ASSERT(
3711  _status == Fw::FW_SERIALIZE_OK,
3712  static_cast<FwAssertArgType>(_status)
3713  );
3714 #endif
3715  _status = _logBuff.serializeFrom(pollId);
3716  FW_ASSERT(
3717  _status == Fw::FW_SERIALIZE_OK,
3718  static_cast<FwAssertArgType>(_status)
3719  );
3720 
3721  this->logOut_out(
3722  0,
3723  _id,
3724  _logTime,
3726  _logBuff
3727  );
3728  }
3729 
3730  // Emit the event on the text log port
3731 #if FW_ENABLE_TEXT_LOGGING
3732  if (this->isConnected_logTextOut_OutputPort(0)) {
3733 #if FW_OBJECT_NAMES == 1
3734  const char* _formatString =
3735  "(%s) %s: Successfully stopped directory poll for channel %" PRIu8 ", index %" PRIu8 "";
3736 #else
3737  const char* _formatString =
3738  "%s: Successfully stopped directory poll for channel %" PRIu8 ", index %" PRIu8 "";
3739 #endif
3740 
3741  Fw::TextLogString _logString;
3742  (void) _logString.format(
3743  _formatString,
3744 #if FW_OBJECT_NAMES == 1
3745  this->m_objName.toChar(),
3746 #endif
3747  "PollDirStopped ",
3748  channelId,
3749  pollId
3750  );
3751 
3752  this->logTextOut_out(
3753  0,
3754  _id,
3755  _logTime,
3757  _logString
3758  );
3759  }
3760 #endif
3761  }
3762 
3765  U8 channelId,
3766  U8 pollId
3767  ) const
3768  {
3769  // Get the time
3770  Fw::Time _logTime;
3771  if (this->isConnected_timeCaller_OutputPort(0)) {
3772  this->timeCaller_out(0, _logTime);
3773  }
3774 
3775  const FwEventIdType _id = this->getIdBase() + EVENTID_POLLDIRBUSY;
3776 
3777  // Emit the event on the log port
3778  if (this->isConnected_logOut_OutputPort(0)) {
3779  Fw::LogBuffer _logBuff;
3781 
3782 #if FW_AMPCS_COMPATIBLE
3783  // Serialize the number of arguments
3784  _status = _logBuff.serializeFrom(static_cast<U8>(2));
3785  FW_ASSERT(
3786  _status == Fw::FW_SERIALIZE_OK,
3787  static_cast<FwAssertArgType>(_status)
3788  );
3789 #endif
3790 
3791 #if FW_AMPCS_COMPATIBLE
3792  // Serialize the argument size
3793  _status = _logBuff.serializeFrom(
3794  static_cast<U8>(sizeof(U8))
3795  );
3796  FW_ASSERT(
3797  _status == Fw::FW_SERIALIZE_OK,
3798  static_cast<FwAssertArgType>(_status)
3799  );
3800 #endif
3801  _status = _logBuff.serializeFrom(channelId);
3802  FW_ASSERT(
3803  _status == Fw::FW_SERIALIZE_OK,
3804  static_cast<FwAssertArgType>(_status)
3805  );
3806 
3807 #if FW_AMPCS_COMPATIBLE
3808  // Serialize the argument size
3809  _status = _logBuff.serializeFrom(
3810  static_cast<U8>(sizeof(U8))
3811  );
3812  FW_ASSERT(
3813  _status == Fw::FW_SERIALIZE_OK,
3814  static_cast<FwAssertArgType>(_status)
3815  );
3816 #endif
3817  _status = _logBuff.serializeFrom(pollId);
3818  FW_ASSERT(
3819  _status == Fw::FW_SERIALIZE_OK,
3820  static_cast<FwAssertArgType>(_status)
3821  );
3822 
3823  this->logOut_out(
3824  0,
3825  _id,
3826  _logTime,
3828  _logBuff
3829  );
3830  }
3831 
3832  // Emit the event on the text log port
3833 #if FW_ENABLE_TEXT_LOGGING
3834  if (this->isConnected_logTextOut_OutputPort(0)) {
3835 #if FW_OBJECT_NAMES == 1
3836  const char* _formatString =
3837  "(%s) %s: Cannot start directory poll - channel %" PRIu8 " poll %" PRIu8 " already in use";
3838 #else
3839  const char* _formatString =
3840  "%s: Cannot start directory poll - channel %" PRIu8 " poll %" PRIu8 " already in use";
3841 #endif
3842 
3843  Fw::TextLogString _logString;
3844  (void) _logString.format(
3845  _formatString,
3846 #if FW_OBJECT_NAMES == 1
3847  this->m_objName.toChar(),
3848 #endif
3849  "PollDirBusy ",
3850  channelId,
3851  pollId
3852  );
3853 
3854  this->logTextOut_out(
3855  0,
3856  _id,
3857  _logTime,
3859  _logString
3860  );
3861  }
3862 #endif
3863  }
3864 
3867  U8 channelId,
3868  U8 pollId
3869  ) const
3870  {
3871  // Get the time
3872  Fw::Time _logTime;
3873  if (this->isConnected_timeCaller_OutputPort(0)) {
3874  this->timeCaller_out(0, _logTime);
3875  }
3876 
3877  const FwEventIdType _id = this->getIdBase() + EVENTID_POLLDIRNOTACTIVE;
3878 
3879  // Emit the event on the log port
3880  if (this->isConnected_logOut_OutputPort(0)) {
3881  Fw::LogBuffer _logBuff;
3883 
3884 #if FW_AMPCS_COMPATIBLE
3885  // Serialize the number of arguments
3886  _status = _logBuff.serializeFrom(static_cast<U8>(2));
3887  FW_ASSERT(
3888  _status == Fw::FW_SERIALIZE_OK,
3889  static_cast<FwAssertArgType>(_status)
3890  );
3891 #endif
3892 
3893 #if FW_AMPCS_COMPATIBLE
3894  // Serialize the argument size
3895  _status = _logBuff.serializeFrom(
3896  static_cast<U8>(sizeof(U8))
3897  );
3898  FW_ASSERT(
3899  _status == Fw::FW_SERIALIZE_OK,
3900  static_cast<FwAssertArgType>(_status)
3901  );
3902 #endif
3903  _status = _logBuff.serializeFrom(channelId);
3904  FW_ASSERT(
3905  _status == Fw::FW_SERIALIZE_OK,
3906  static_cast<FwAssertArgType>(_status)
3907  );
3908 
3909 #if FW_AMPCS_COMPATIBLE
3910  // Serialize the argument size
3911  _status = _logBuff.serializeFrom(
3912  static_cast<U8>(sizeof(U8))
3913  );
3914  FW_ASSERT(
3915  _status == Fw::FW_SERIALIZE_OK,
3916  static_cast<FwAssertArgType>(_status)
3917  );
3918 #endif
3919  _status = _logBuff.serializeFrom(pollId);
3920  FW_ASSERT(
3921  _status == Fw::FW_SERIALIZE_OK,
3922  static_cast<FwAssertArgType>(_status)
3923  );
3924 
3925  this->logOut_out(
3926  0,
3927  _id,
3928  _logTime,
3930  _logBuff
3931  );
3932  }
3933 
3934  // Emit the event on the text log port
3935 #if FW_ENABLE_TEXT_LOGGING
3936  if (this->isConnected_logTextOut_OutputPort(0)) {
3937 #if FW_OBJECT_NAMES == 1
3938  const char* _formatString =
3939  "(%s) %s: Cannot stop directory poll - channel %" PRIu8 " poll %" PRIu8 " is not active";
3940 #else
3941  const char* _formatString =
3942  "%s: Cannot stop directory poll - channel %" PRIu8 " poll %" PRIu8 " is not active";
3943 #endif
3944 
3945  Fw::TextLogString _logString;
3946  (void) _logString.format(
3947  _formatString,
3948 #if FW_OBJECT_NAMES == 1
3949  this->m_objName.toChar(),
3950 #endif
3951  "PollDirNotActive ",
3952  channelId,
3953  pollId
3954  );
3955 
3956  this->logTextOut_out(
3957  0,
3958  _id,
3959  _logTime,
3961  _logString
3962  );
3963  }
3964 #endif
3965  }
3966 
3969  U8 channelId,
3970  const Svc::Ccsds::Cfdp::Flow& flowState
3971  ) const
3972  {
3973  // Get the time
3974  Fw::Time _logTime;
3975  if (this->isConnected_timeCaller_OutputPort(0)) {
3976  this->timeCaller_out(0, _logTime);
3977  }
3978 
3979  const FwEventIdType _id = this->getIdBase() + EVENTID_SETFLOWSTATE;
3980 
3981  // Emit the event on the log port
3982  if (this->isConnected_logOut_OutputPort(0)) {
3983  Fw::LogBuffer _logBuff;
3985 
3986 #if FW_AMPCS_COMPATIBLE
3987  // Serialize the number of arguments
3988  _status = _logBuff.serializeFrom(static_cast<U8>(2));
3989  FW_ASSERT(
3990  _status == Fw::FW_SERIALIZE_OK,
3991  static_cast<FwAssertArgType>(_status)
3992  );
3993 #endif
3994 
3995 #if FW_AMPCS_COMPATIBLE
3996  // Serialize the argument size
3997  _status = _logBuff.serializeFrom(
3998  static_cast<U8>(sizeof(U8))
3999  );
4000  FW_ASSERT(
4001  _status == Fw::FW_SERIALIZE_OK,
4002  static_cast<FwAssertArgType>(_status)
4003  );
4004 #endif
4005  _status = _logBuff.serializeFrom(channelId);
4006  FW_ASSERT(
4007  _status == Fw::FW_SERIALIZE_OK,
4008  static_cast<FwAssertArgType>(_status)
4009  );
4010 
4011 #if FW_AMPCS_COMPATIBLE
4012  // Serialize the argument size
4013  _status = _logBuff.serializeFrom(
4015  );
4016  FW_ASSERT(
4017  _status == Fw::FW_SERIALIZE_OK,
4018  static_cast<FwAssertArgType>(_status)
4019  );
4020 #endif
4021  _status = _logBuff.serializeFrom(flowState);
4022  FW_ASSERT(
4023  _status == Fw::FW_SERIALIZE_OK,
4024  static_cast<FwAssertArgType>(_status)
4025  );
4026 
4027  this->logOut_out(
4028  0,
4029  _id,
4030  _logTime,
4032  _logBuff
4033  );
4034  }
4035 
4036  // Emit the event on the text log port
4037 #if FW_ENABLE_TEXT_LOGGING
4038  if (this->isConnected_logTextOut_OutputPort(0)) {
4039 #if FW_OBJECT_NAMES == 1
4040  const char* _formatString =
4041  "(%s) %s: Set channel %" PRIu8 " to %s";
4042 #else
4043  const char* _formatString =
4044  "%s: Set channel %" PRIu8 " to %s";
4045 #endif
4046 
4047  Fw::String flowStateStr;
4048  flowState.toString(flowStateStr);
4049 
4050  Fw::TextLogString _logString;
4051  (void) _logString.format(
4052  _formatString,
4053 #if FW_OBJECT_NAMES == 1
4054  this->m_objName.toChar(),
4055 #endif
4056  "SetFlowState ",
4057  channelId,
4058  flowStateStr.toChar()
4059  );
4060 
4061  this->logTextOut_out(
4062  0,
4063  _id,
4064  _logTime,
4066  _logString
4067  );
4068  }
4069 #endif
4070  }
4071 
4074  U8 pollId,
4075  U8 maxPollId
4076  ) const
4077  {
4078  // Get the time
4079  Fw::Time _logTime;
4080  if (this->isConnected_timeCaller_OutputPort(0)) {
4081  this->timeCaller_out(0, _logTime);
4082  }
4083 
4084  const FwEventIdType _id = this->getIdBase() + EVENTID_INVALIDCHANNELPOLL;
4085 
4086  // Emit the event on the log port
4087  if (this->isConnected_logOut_OutputPort(0)) {
4088  Fw::LogBuffer _logBuff;
4090 
4091 #if FW_AMPCS_COMPATIBLE
4092  // Serialize the number of arguments
4093  _status = _logBuff.serializeFrom(static_cast<U8>(2));
4094  FW_ASSERT(
4095  _status == Fw::FW_SERIALIZE_OK,
4096  static_cast<FwAssertArgType>(_status)
4097  );
4098 #endif
4099 
4100 #if FW_AMPCS_COMPATIBLE
4101  // Serialize the argument size
4102  _status = _logBuff.serializeFrom(
4103  static_cast<U8>(sizeof(U8))
4104  );
4105  FW_ASSERT(
4106  _status == Fw::FW_SERIALIZE_OK,
4107  static_cast<FwAssertArgType>(_status)
4108  );
4109 #endif
4110  _status = _logBuff.serializeFrom(pollId);
4111  FW_ASSERT(
4112  _status == Fw::FW_SERIALIZE_OK,
4113  static_cast<FwAssertArgType>(_status)
4114  );
4115 
4116 #if FW_AMPCS_COMPATIBLE
4117  // Serialize the argument size
4118  _status = _logBuff.serializeFrom(
4119  static_cast<U8>(sizeof(U8))
4120  );
4121  FW_ASSERT(
4122  _status == Fw::FW_SERIALIZE_OK,
4123  static_cast<FwAssertArgType>(_status)
4124  );
4125 #endif
4126  _status = _logBuff.serializeFrom(maxPollId);
4127  FW_ASSERT(
4128  _status == Fw::FW_SERIALIZE_OK,
4129  static_cast<FwAssertArgType>(_status)
4130  );
4131 
4132  this->logOut_out(
4133  0,
4134  _id,
4135  _logTime,
4137  _logBuff
4138  );
4139  }
4140 
4141  // Emit the event on the text log port
4142 #if FW_ENABLE_TEXT_LOGGING
4143  if (this->isConnected_logTextOut_OutputPort(0)) {
4144 #if FW_OBJECT_NAMES == 1
4145  const char* _formatString =
4146  "(%s) %s: Invalid poll ID %" PRIu8 ", maximum poll ID is %" PRIu8 "";
4147 #else
4148  const char* _formatString =
4149  "%s: Invalid poll ID %" PRIu8 ", maximum poll ID is %" PRIu8 "";
4150 #endif
4151 
4152  Fw::TextLogString _logString;
4153  (void) _logString.format(
4154  _formatString,
4155 #if FW_OBJECT_NAMES == 1
4156  this->m_objName.toChar(),
4157 #endif
4158  "InvalidChannelPoll ",
4159  pollId,
4160  maxPollId
4161  );
4162 
4163  this->logTextOut_out(
4164  0,
4165  _id,
4166  _logTime,
4168  _logString
4169  );
4170  }
4171 #endif
4172  }
4173 
4176  const Fw::StringBase& srcFile,
4177  const Fw::StringBase& moveDir,
4178  I32 status
4179  ) const
4180  {
4181  // Get the time
4182  Fw::Time _logTime;
4183  if (this->isConnected_timeCaller_OutputPort(0)) {
4184  this->timeCaller_out(0, _logTime);
4185  }
4186 
4187  const FwEventIdType _id = this->getIdBase() + EVENTID_FAILKEEPFILEMOVE;
4188 
4189  // Emit the event on the log port
4190  if (this->isConnected_logOut_OutputPort(0)) {
4191  Fw::LogBuffer _logBuff;
4193 
4194 #if FW_AMPCS_COMPATIBLE
4195  // Serialize the number of arguments
4196  _status = _logBuff.serializeFrom(static_cast<U8>(3));
4197  FW_ASSERT(
4198  _status == Fw::FW_SERIALIZE_OK,
4199  static_cast<FwAssertArgType>(_status)
4200  );
4201 #endif
4202 
4203  _status = srcFile.serializeTo(
4204  _logBuff,
4205  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
4206  );
4207  FW_ASSERT(
4208  _status == Fw::FW_SERIALIZE_OK,
4209  static_cast<FwAssertArgType>(_status)
4210  );
4211 
4212  _status = moveDir.serializeTo(
4213  _logBuff,
4214  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
4215  );
4216  FW_ASSERT(
4217  _status == Fw::FW_SERIALIZE_OK,
4218  static_cast<FwAssertArgType>(_status)
4219  );
4220 
4221 #if FW_AMPCS_COMPATIBLE
4222  // Serialize the argument size
4223  _status = _logBuff.serializeFrom(
4224  static_cast<U8>(sizeof(I32))
4225  );
4226  FW_ASSERT(
4227  _status == Fw::FW_SERIALIZE_OK,
4228  static_cast<FwAssertArgType>(_status)
4229  );
4230 #endif
4231  _status = _logBuff.serializeFrom(status);
4232  FW_ASSERT(
4233  _status == Fw::FW_SERIALIZE_OK,
4234  static_cast<FwAssertArgType>(_status)
4235  );
4236 
4237  this->logOut_out(
4238  0,
4239  _id,
4240  _logTime,
4242  _logBuff
4243  );
4244  }
4245 
4246  // Emit the event on the text log port
4247 #if FW_ENABLE_TEXT_LOGGING
4248  if (this->isConnected_logTextOut_OutputPort(0)) {
4249 #if FW_OBJECT_NAMES == 1
4250  const char* _formatString =
4251  "(%s) %s: Failed to move %s to %s error %" PRIi32 "";
4252 #else
4253  const char* _formatString =
4254  "%s: Failed to move %s to %s error %" PRIi32 "";
4255 #endif
4256 
4257  Fw::TextLogString _logString;
4258  (void) _logString.format(
4259  _formatString,
4260 #if FW_OBJECT_NAMES == 1
4261  this->m_objName.toChar(),
4262 #endif
4263  "FailKeepFileMove ",
4264  srcFile.toChar(),
4265  moveDir.toChar(),
4266  status
4267  );
4268 
4269  this->logTextOut_out(
4270  0,
4271  _id,
4272  _logTime,
4274  _logString
4275  );
4276  }
4277 #endif
4278  }
4279 
4282  const Fw::StringBase& srcFile,
4283  const Fw::StringBase& failDir,
4284  I32 status
4285  ) const
4286  {
4287  // Get the time
4288  Fw::Time _logTime;
4289  if (this->isConnected_timeCaller_OutputPort(0)) {
4290  this->timeCaller_out(0, _logTime);
4291  }
4292 
4293  const FwEventIdType _id = this->getIdBase() + EVENTID_FAILPOLLFILEMOVE;
4294 
4295  // Emit the event on the log port
4296  if (this->isConnected_logOut_OutputPort(0)) {
4297  Fw::LogBuffer _logBuff;
4299 
4300 #if FW_AMPCS_COMPATIBLE
4301  // Serialize the number of arguments
4302  _status = _logBuff.serializeFrom(static_cast<U8>(3));
4303  FW_ASSERT(
4304  _status == Fw::FW_SERIALIZE_OK,
4305  static_cast<FwAssertArgType>(_status)
4306  );
4307 #endif
4308 
4309  _status = srcFile.serializeTo(
4310  _logBuff,
4311  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
4312  );
4313  FW_ASSERT(
4314  _status == Fw::FW_SERIALIZE_OK,
4315  static_cast<FwAssertArgType>(_status)
4316  );
4317 
4318  _status = failDir.serializeTo(
4319  _logBuff,
4320  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
4321  );
4322  FW_ASSERT(
4323  _status == Fw::FW_SERIALIZE_OK,
4324  static_cast<FwAssertArgType>(_status)
4325  );
4326 
4327 #if FW_AMPCS_COMPATIBLE
4328  // Serialize the argument size
4329  _status = _logBuff.serializeFrom(
4330  static_cast<U8>(sizeof(I32))
4331  );
4332  FW_ASSERT(
4333  _status == Fw::FW_SERIALIZE_OK,
4334  static_cast<FwAssertArgType>(_status)
4335  );
4336 #endif
4337  _status = _logBuff.serializeFrom(status);
4338  FW_ASSERT(
4339  _status == Fw::FW_SERIALIZE_OK,
4340  static_cast<FwAssertArgType>(_status)
4341  );
4342 
4343  this->logOut_out(
4344  0,
4345  _id,
4346  _logTime,
4348  _logBuff
4349  );
4350  }
4351 
4352  // Emit the event on the text log port
4353 #if FW_ENABLE_TEXT_LOGGING
4354  if (this->isConnected_logTextOut_OutputPort(0)) {
4355 #if FW_OBJECT_NAMES == 1
4356  const char* _formatString =
4357  "(%s) %s: Failed to move %s to %s error %" PRIi32 "";
4358 #else
4359  const char* _formatString =
4360  "%s: Failed to move %s to %s error %" PRIi32 "";
4361 #endif
4362 
4363  Fw::TextLogString _logString;
4364  (void) _logString.format(
4365  _formatString,
4366 #if FW_OBJECT_NAMES == 1
4367  this->m_objName.toChar(),
4368 #endif
4369  "FailPollFileMove ",
4370  srcFile.toChar(),
4371  failDir.toChar(),
4372  status
4373  );
4374 
4375  this->logTextOut_out(
4376  0,
4377  _id,
4378  _logTime,
4380  _logString
4381  );
4382  }
4383 #endif
4384  }
4385 
4388  U8 channelId,
4389  I32 status
4390  ) const
4391  {
4392  // Get the time
4393  Fw::Time _logTime;
4394  if (this->isConnected_timeCaller_OutputPort(0)) {
4395  this->timeCaller_out(0, _logTime);
4396  }
4397 
4399 
4400  // Emit the event on the log port
4401  if (this->isConnected_logOut_OutputPort(0)) {
4402  Fw::LogBuffer _logBuff;
4404 
4405 #if FW_AMPCS_COMPATIBLE
4406  // Serialize the number of arguments
4407  _status = _logBuff.serializeFrom(static_cast<U8>(2));
4408  FW_ASSERT(
4409  _status == Fw::FW_SERIALIZE_OK,
4410  static_cast<FwAssertArgType>(_status)
4411  );
4412 #endif
4413 
4414 #if FW_AMPCS_COMPATIBLE
4415  // Serialize the argument size
4416  _status = _logBuff.serializeFrom(
4417  static_cast<U8>(sizeof(U8))
4418  );
4419  FW_ASSERT(
4420  _status == Fw::FW_SERIALIZE_OK,
4421  static_cast<FwAssertArgType>(_status)
4422  );
4423 #endif
4424  _status = _logBuff.serializeFrom(channelId);
4425  FW_ASSERT(
4426  _status == Fw::FW_SERIALIZE_OK,
4427  static_cast<FwAssertArgType>(_status)
4428  );
4429 
4430 #if FW_AMPCS_COMPATIBLE
4431  // Serialize the argument size
4432  _status = _logBuff.serializeFrom(
4433  static_cast<U8>(sizeof(I32))
4434  );
4435  FW_ASSERT(
4436  _status == Fw::FW_SERIALIZE_OK,
4437  static_cast<FwAssertArgType>(_status)
4438  );
4439 #endif
4440  _status = _logBuff.serializeFrom(status);
4441  FW_ASSERT(
4442  _status == Fw::FW_SERIALIZE_OK,
4443  static_cast<FwAssertArgType>(_status)
4444  );
4445 
4446  this->logOut_out(
4447  0,
4448  _id,
4449  _logTime,
4451  _logBuff
4452  );
4453  }
4454 
4455  // Emit the event on the text log port
4456 #if FW_ENABLE_TEXT_LOGGING
4457  if (this->isConnected_logTextOut_OutputPort(0)) {
4458 #if FW_OBJECT_NAMES == 1
4459  const char* _formatString =
4460  "(%s) %s: Failed to deserialize PDU header on channel %" PRIu8 ", status %" PRIi32 "";
4461 #else
4462  const char* _formatString =
4463  "%s: Failed to deserialize PDU header on channel %" PRIu8 ", status %" PRIi32 "";
4464 #endif
4465 
4466  Fw::TextLogString _logString;
4467  (void) _logString.format(
4468  _formatString,
4469 #if FW_OBJECT_NAMES == 1
4470  this->m_objName.toChar(),
4471 #endif
4472  "FailPduHeaderDeserialization ",
4473  channelId,
4474  status
4475  );
4476 
4477  this->logTextOut_out(
4478  0,
4479  _id,
4480  _logTime,
4482  _logString
4483  );
4484  }
4485 #endif
4486  }
4487 
4490  U8 channelId,
4491  const Svc::Ccsds::Cfdp::PduTypeEnum& pduType,
4492  I32 status
4493  ) const
4494  {
4495  // Get the time
4496  Fw::Time _logTime;
4497  if (this->isConnected_timeCaller_OutputPort(0)) {
4498  this->timeCaller_out(0, _logTime);
4499  }
4500 
4502 
4503  // Emit the event on the log port
4504  if (this->isConnected_logOut_OutputPort(0)) {
4505  Fw::LogBuffer _logBuff;
4507 
4508 #if FW_AMPCS_COMPATIBLE
4509  // Serialize the number of arguments
4510  _status = _logBuff.serializeFrom(static_cast<U8>(3));
4511  FW_ASSERT(
4512  _status == Fw::FW_SERIALIZE_OK,
4513  static_cast<FwAssertArgType>(_status)
4514  );
4515 #endif
4516 
4517 #if FW_AMPCS_COMPATIBLE
4518  // Serialize the argument size
4519  _status = _logBuff.serializeFrom(
4520  static_cast<U8>(sizeof(U8))
4521  );
4522  FW_ASSERT(
4523  _status == Fw::FW_SERIALIZE_OK,
4524  static_cast<FwAssertArgType>(_status)
4525  );
4526 #endif
4527  _status = _logBuff.serializeFrom(channelId);
4528  FW_ASSERT(
4529  _status == Fw::FW_SERIALIZE_OK,
4530  static_cast<FwAssertArgType>(_status)
4531  );
4532 
4533 #if FW_AMPCS_COMPATIBLE
4534  // Serialize the argument size
4535  _status = _logBuff.serializeFrom(
4537  );
4538  FW_ASSERT(
4539  _status == Fw::FW_SERIALIZE_OK,
4540  static_cast<FwAssertArgType>(_status)
4541  );
4542 #endif
4543  _status = _logBuff.serializeFrom(pduType);
4544  FW_ASSERT(
4545  _status == Fw::FW_SERIALIZE_OK,
4546  static_cast<FwAssertArgType>(_status)
4547  );
4548 
4549 #if FW_AMPCS_COMPATIBLE
4550  // Serialize the argument size
4551  _status = _logBuff.serializeFrom(
4552  static_cast<U8>(sizeof(I32))
4553  );
4554  FW_ASSERT(
4555  _status == Fw::FW_SERIALIZE_OK,
4556  static_cast<FwAssertArgType>(_status)
4557  );
4558 #endif
4559  _status = _logBuff.serializeFrom(status);
4560  FW_ASSERT(
4561  _status == Fw::FW_SERIALIZE_OK,
4562  static_cast<FwAssertArgType>(_status)
4563  );
4564 
4565  this->logOut_out(
4566  0,
4567  _id,
4568  _logTime,
4570  _logBuff
4571  );
4572  }
4573 
4574  // Emit the event on the text log port
4575 #if FW_ENABLE_TEXT_LOGGING
4576  if (this->isConnected_logTextOut_OutputPort(0)) {
4577 #if FW_OBJECT_NAMES == 1
4578  const char* _formatString =
4579  "(%s) %s: Failed to serialize %" PRIu8 " PDU on channel %s, status %" PRIi32 "";
4580 #else
4581  const char* _formatString =
4582  "%s: Failed to serialize %" PRIu8 " PDU on channel %s, status %" PRIi32 "";
4583 #endif
4584 
4585  Fw::String pduTypeStr;
4586  pduType.toString(pduTypeStr);
4587 
4588  Fw::TextLogString _logString;
4589  (void) _logString.format(
4590  _formatString,
4591 #if FW_OBJECT_NAMES == 1
4592  this->m_objName.toChar(),
4593 #endif
4594  "FailPduSerialization ",
4595  channelId,
4596  pduTypeStr.toChar(),
4597  status
4598  );
4599 
4600  this->logTextOut_out(
4601  0,
4602  _id,
4603  _logTime,
4605  _logString
4606  );
4607  }
4608 #endif
4609  }
4610 
4613  U8 channelId,
4614  I32 status
4615  ) const
4616  {
4617  // Get the time
4618  Fw::Time _logTime;
4619  if (this->isConnected_timeCaller_OutputPort(0)) {
4620  this->timeCaller_out(0, _logTime);
4621  }
4622 
4624 
4625  // Emit the event on the log port
4626  if (this->isConnected_logOut_OutputPort(0)) {
4627  Fw::LogBuffer _logBuff;
4629 
4630 #if FW_AMPCS_COMPATIBLE
4631  // Serialize the number of arguments
4632  _status = _logBuff.serializeFrom(static_cast<U8>(2));
4633  FW_ASSERT(
4634  _status == Fw::FW_SERIALIZE_OK,
4635  static_cast<FwAssertArgType>(_status)
4636  );
4637 #endif
4638 
4639 #if FW_AMPCS_COMPATIBLE
4640  // Serialize the argument size
4641  _status = _logBuff.serializeFrom(
4642  static_cast<U8>(sizeof(U8))
4643  );
4644  FW_ASSERT(
4645  _status == Fw::FW_SERIALIZE_OK,
4646  static_cast<FwAssertArgType>(_status)
4647  );
4648 #endif
4649  _status = _logBuff.serializeFrom(channelId);
4650  FW_ASSERT(
4651  _status == Fw::FW_SERIALIZE_OK,
4652  static_cast<FwAssertArgType>(_status)
4653  );
4654 
4655 #if FW_AMPCS_COMPATIBLE
4656  // Serialize the argument size
4657  _status = _logBuff.serializeFrom(
4658  static_cast<U8>(sizeof(I32))
4659  );
4660  FW_ASSERT(
4661  _status == Fw::FW_SERIALIZE_OK,
4662  static_cast<FwAssertArgType>(_status)
4663  );
4664 #endif
4665  _status = _logBuff.serializeFrom(status);
4666  FW_ASSERT(
4667  _status == Fw::FW_SERIALIZE_OK,
4668  static_cast<FwAssertArgType>(_status)
4669  );
4670 
4671  this->logOut_out(
4672  0,
4673  _id,
4674  _logTime,
4676  _logBuff
4677  );
4678  }
4679 
4680  // Emit the event on the text log port
4681 #if FW_ENABLE_TEXT_LOGGING
4682  if (this->isConnected_logTextOut_OutputPort(0)) {
4683 #if FW_OBJECT_NAMES == 1
4684  const char* _formatString =
4685  "(%s) %s: Failed to deserialize Metadata PDU on channel %" PRIu8 ", status %" PRIi32 "";
4686 #else
4687  const char* _formatString =
4688  "%s: Failed to deserialize Metadata PDU on channel %" PRIu8 ", status %" PRIi32 "";
4689 #endif
4690 
4691  Fw::TextLogString _logString;
4692  (void) _logString.format(
4693  _formatString,
4694 #if FW_OBJECT_NAMES == 1
4695  this->m_objName.toChar(),
4696 #endif
4697  "FailMetadataPduDeserialization ",
4698  channelId,
4699  status
4700  );
4701 
4702  this->logTextOut_out(
4703  0,
4704  _id,
4705  _logTime,
4707  _logString
4708  );
4709  }
4710 #endif
4711  }
4712 
4715  U8 channelId,
4716  I32 status
4717  ) const
4718  {
4719  // Get the time
4720  Fw::Time _logTime;
4721  if (this->isConnected_timeCaller_OutputPort(0)) {
4722  this->timeCaller_out(0, _logTime);
4723  }
4724 
4726 
4727  // Emit the event on the log port
4728  if (this->isConnected_logOut_OutputPort(0)) {
4729  Fw::LogBuffer _logBuff;
4731 
4732 #if FW_AMPCS_COMPATIBLE
4733  // Serialize the number of arguments
4734  _status = _logBuff.serializeFrom(static_cast<U8>(2));
4735  FW_ASSERT(
4736  _status == Fw::FW_SERIALIZE_OK,
4737  static_cast<FwAssertArgType>(_status)
4738  );
4739 #endif
4740 
4741 #if FW_AMPCS_COMPATIBLE
4742  // Serialize the argument size
4743  _status = _logBuff.serializeFrom(
4744  static_cast<U8>(sizeof(U8))
4745  );
4746  FW_ASSERT(
4747  _status == Fw::FW_SERIALIZE_OK,
4748  static_cast<FwAssertArgType>(_status)
4749  );
4750 #endif
4751  _status = _logBuff.serializeFrom(channelId);
4752  FW_ASSERT(
4753  _status == Fw::FW_SERIALIZE_OK,
4754  static_cast<FwAssertArgType>(_status)
4755  );
4756 
4757 #if FW_AMPCS_COMPATIBLE
4758  // Serialize the argument size
4759  _status = _logBuff.serializeFrom(
4760  static_cast<U8>(sizeof(I32))
4761  );
4762  FW_ASSERT(
4763  _status == Fw::FW_SERIALIZE_OK,
4764  static_cast<FwAssertArgType>(_status)
4765  );
4766 #endif
4767  _status = _logBuff.serializeFrom(status);
4768  FW_ASSERT(
4769  _status == Fw::FW_SERIALIZE_OK,
4770  static_cast<FwAssertArgType>(_status)
4771  );
4772 
4773  this->logOut_out(
4774  0,
4775  _id,
4776  _logTime,
4778  _logBuff
4779  );
4780  }
4781 
4782  // Emit the event on the text log port
4783 #if FW_ENABLE_TEXT_LOGGING
4784  if (this->isConnected_logTextOut_OutputPort(0)) {
4785 #if FW_OBJECT_NAMES == 1
4786  const char* _formatString =
4787  "(%s) %s: Failed to deserialize File Data PDU on channel %" PRIu8 ", status %" PRIi32 "";
4788 #else
4789  const char* _formatString =
4790  "%s: Failed to deserialize File Data PDU on channel %" PRIu8 ", status %" PRIi32 "";
4791 #endif
4792 
4793  Fw::TextLogString _logString;
4794  (void) _logString.format(
4795  _formatString,
4796 #if FW_OBJECT_NAMES == 1
4797  this->m_objName.toChar(),
4798 #endif
4799  "FailFileDataPduDeserialization ",
4800  channelId,
4801  status
4802  );
4803 
4804  this->logTextOut_out(
4805  0,
4806  _id,
4807  _logTime,
4809  _logString
4810  );
4811  }
4812 #endif
4813  }
4814 
4817  U8 channelId,
4818  I32 status
4819  ) const
4820  {
4821  // Get the time
4822  Fw::Time _logTime;
4823  if (this->isConnected_timeCaller_OutputPort(0)) {
4824  this->timeCaller_out(0, _logTime);
4825  }
4826 
4828 
4829  // Emit the event on the log port
4830  if (this->isConnected_logOut_OutputPort(0)) {
4831  Fw::LogBuffer _logBuff;
4833 
4834 #if FW_AMPCS_COMPATIBLE
4835  // Serialize the number of arguments
4836  _status = _logBuff.serializeFrom(static_cast<U8>(2));
4837  FW_ASSERT(
4838  _status == Fw::FW_SERIALIZE_OK,
4839  static_cast<FwAssertArgType>(_status)
4840  );
4841 #endif
4842 
4843 #if FW_AMPCS_COMPATIBLE
4844  // Serialize the argument size
4845  _status = _logBuff.serializeFrom(
4846  static_cast<U8>(sizeof(U8))
4847  );
4848  FW_ASSERT(
4849  _status == Fw::FW_SERIALIZE_OK,
4850  static_cast<FwAssertArgType>(_status)
4851  );
4852 #endif
4853  _status = _logBuff.serializeFrom(channelId);
4854  FW_ASSERT(
4855  _status == Fw::FW_SERIALIZE_OK,
4856  static_cast<FwAssertArgType>(_status)
4857  );
4858 
4859 #if FW_AMPCS_COMPATIBLE
4860  // Serialize the argument size
4861  _status = _logBuff.serializeFrom(
4862  static_cast<U8>(sizeof(I32))
4863  );
4864  FW_ASSERT(
4865  _status == Fw::FW_SERIALIZE_OK,
4866  static_cast<FwAssertArgType>(_status)
4867  );
4868 #endif
4869  _status = _logBuff.serializeFrom(status);
4870  FW_ASSERT(
4871  _status == Fw::FW_SERIALIZE_OK,
4872  static_cast<FwAssertArgType>(_status)
4873  );
4874 
4875  this->logOut_out(
4876  0,
4877  _id,
4878  _logTime,
4880  _logBuff
4881  );
4882  }
4883 
4884  // Emit the event on the text log port
4885 #if FW_ENABLE_TEXT_LOGGING
4886  if (this->isConnected_logTextOut_OutputPort(0)) {
4887 #if FW_OBJECT_NAMES == 1
4888  const char* _formatString =
4889  "(%s) %s: Failed to deserialize EOF PDU on channel %" PRIu8 ", status %" PRIi32 "";
4890 #else
4891  const char* _formatString =
4892  "%s: Failed to deserialize EOF PDU on channel %" PRIu8 ", status %" PRIi32 "";
4893 #endif
4894 
4895  Fw::TextLogString _logString;
4896  (void) _logString.format(
4897  _formatString,
4898 #if FW_OBJECT_NAMES == 1
4899  this->m_objName.toChar(),
4900 #endif
4901  "FailEofPduDeserialization ",
4902  channelId,
4903  status
4904  );
4905 
4906  this->logTextOut_out(
4907  0,
4908  _id,
4909  _logTime,
4911  _logString
4912  );
4913  }
4914 #endif
4915  }
4916 
4919  U8 channelId,
4920  I32 status
4921  ) const
4922  {
4923  // Get the time
4924  Fw::Time _logTime;
4925  if (this->isConnected_timeCaller_OutputPort(0)) {
4926  this->timeCaller_out(0, _logTime);
4927  }
4928 
4930 
4931  // Emit the event on the log port
4932  if (this->isConnected_logOut_OutputPort(0)) {
4933  Fw::LogBuffer _logBuff;
4935 
4936 #if FW_AMPCS_COMPATIBLE
4937  // Serialize the number of arguments
4938  _status = _logBuff.serializeFrom(static_cast<U8>(2));
4939  FW_ASSERT(
4940  _status == Fw::FW_SERIALIZE_OK,
4941  static_cast<FwAssertArgType>(_status)
4942  );
4943 #endif
4944 
4945 #if FW_AMPCS_COMPATIBLE
4946  // Serialize the argument size
4947  _status = _logBuff.serializeFrom(
4948  static_cast<U8>(sizeof(U8))
4949  );
4950  FW_ASSERT(
4951  _status == Fw::FW_SERIALIZE_OK,
4952  static_cast<FwAssertArgType>(_status)
4953  );
4954 #endif
4955  _status = _logBuff.serializeFrom(channelId);
4956  FW_ASSERT(
4957  _status == Fw::FW_SERIALIZE_OK,
4958  static_cast<FwAssertArgType>(_status)
4959  );
4960 
4961 #if FW_AMPCS_COMPATIBLE
4962  // Serialize the argument size
4963  _status = _logBuff.serializeFrom(
4964  static_cast<U8>(sizeof(I32))
4965  );
4966  FW_ASSERT(
4967  _status == Fw::FW_SERIALIZE_OK,
4968  static_cast<FwAssertArgType>(_status)
4969  );
4970 #endif
4971  _status = _logBuff.serializeFrom(status);
4972  FW_ASSERT(
4973  _status == Fw::FW_SERIALIZE_OK,
4974  static_cast<FwAssertArgType>(_status)
4975  );
4976 
4977  this->logOut_out(
4978  0,
4979  _id,
4980  _logTime,
4982  _logBuff
4983  );
4984  }
4985 
4986  // Emit the event on the text log port
4987 #if FW_ENABLE_TEXT_LOGGING
4988  if (this->isConnected_logTextOut_OutputPort(0)) {
4989 #if FW_OBJECT_NAMES == 1
4990  const char* _formatString =
4991  "(%s) %s: Failed to deserialize ACK PDU on channel %" PRIu8 ", status %" PRIi32 "";
4992 #else
4993  const char* _formatString =
4994  "%s: Failed to deserialize ACK PDU on channel %" PRIu8 ", status %" PRIi32 "";
4995 #endif
4996 
4997  Fw::TextLogString _logString;
4998  (void) _logString.format(
4999  _formatString,
5000 #if FW_OBJECT_NAMES == 1
5001  this->m_objName.toChar(),
5002 #endif
5003  "FailAckPduDeserialization ",
5004  channelId,
5005  status
5006  );
5007 
5008  this->logTextOut_out(
5009  0,
5010  _id,
5011  _logTime,
5013  _logString
5014  );
5015  }
5016 #endif
5017  }
5018 
5021  U8 channelId,
5022  I32 status
5023  ) const
5024  {
5025  // Get the time
5026  Fw::Time _logTime;
5027  if (this->isConnected_timeCaller_OutputPort(0)) {
5028  this->timeCaller_out(0, _logTime);
5029  }
5030 
5032 
5033  // Emit the event on the log port
5034  if (this->isConnected_logOut_OutputPort(0)) {
5035  Fw::LogBuffer _logBuff;
5037 
5038 #if FW_AMPCS_COMPATIBLE
5039  // Serialize the number of arguments
5040  _status = _logBuff.serializeFrom(static_cast<U8>(2));
5041  FW_ASSERT(
5042  _status == Fw::FW_SERIALIZE_OK,
5043  static_cast<FwAssertArgType>(_status)
5044  );
5045 #endif
5046 
5047 #if FW_AMPCS_COMPATIBLE
5048  // Serialize the argument size
5049  _status = _logBuff.serializeFrom(
5050  static_cast<U8>(sizeof(U8))
5051  );
5052  FW_ASSERT(
5053  _status == Fw::FW_SERIALIZE_OK,
5054  static_cast<FwAssertArgType>(_status)
5055  );
5056 #endif
5057  _status = _logBuff.serializeFrom(channelId);
5058  FW_ASSERT(
5059  _status == Fw::FW_SERIALIZE_OK,
5060  static_cast<FwAssertArgType>(_status)
5061  );
5062 
5063 #if FW_AMPCS_COMPATIBLE
5064  // Serialize the argument size
5065  _status = _logBuff.serializeFrom(
5066  static_cast<U8>(sizeof(I32))
5067  );
5068  FW_ASSERT(
5069  _status == Fw::FW_SERIALIZE_OK,
5070  static_cast<FwAssertArgType>(_status)
5071  );
5072 #endif
5073  _status = _logBuff.serializeFrom(status);
5074  FW_ASSERT(
5075  _status == Fw::FW_SERIALIZE_OK,
5076  static_cast<FwAssertArgType>(_status)
5077  );
5078 
5079  this->logOut_out(
5080  0,
5081  _id,
5082  _logTime,
5084  _logBuff
5085  );
5086  }
5087 
5088  // Emit the event on the text log port
5089 #if FW_ENABLE_TEXT_LOGGING
5090  if (this->isConnected_logTextOut_OutputPort(0)) {
5091 #if FW_OBJECT_NAMES == 1
5092  const char* _formatString =
5093  "(%s) %s: Failed to deserialize FIN PDU on channel %" PRIu8 ", status %" PRIi32 "";
5094 #else
5095  const char* _formatString =
5096  "%s: Failed to deserialize FIN PDU on channel %" PRIu8 ", status %" PRIi32 "";
5097 #endif
5098 
5099  Fw::TextLogString _logString;
5100  (void) _logString.format(
5101  _formatString,
5102 #if FW_OBJECT_NAMES == 1
5103  this->m_objName.toChar(),
5104 #endif
5105  "FailFinPduDeserialization ",
5106  channelId,
5107  status
5108  );
5109 
5110  this->logTextOut_out(
5111  0,
5112  _id,
5113  _logTime,
5115  _logString
5116  );
5117  }
5118 #endif
5119  }
5120 
5123  U8 channelId,
5124  I32 status
5125  ) const
5126  {
5127  // Get the time
5128  Fw::Time _logTime;
5129  if (this->isConnected_timeCaller_OutputPort(0)) {
5130  this->timeCaller_out(0, _logTime);
5131  }
5132 
5134 
5135  // Emit the event on the log port
5136  if (this->isConnected_logOut_OutputPort(0)) {
5137  Fw::LogBuffer _logBuff;
5139 
5140 #if FW_AMPCS_COMPATIBLE
5141  // Serialize the number of arguments
5142  _status = _logBuff.serializeFrom(static_cast<U8>(2));
5143  FW_ASSERT(
5144  _status == Fw::FW_SERIALIZE_OK,
5145  static_cast<FwAssertArgType>(_status)
5146  );
5147 #endif
5148 
5149 #if FW_AMPCS_COMPATIBLE
5150  // Serialize the argument size
5151  _status = _logBuff.serializeFrom(
5152  static_cast<U8>(sizeof(U8))
5153  );
5154  FW_ASSERT(
5155  _status == Fw::FW_SERIALIZE_OK,
5156  static_cast<FwAssertArgType>(_status)
5157  );
5158 #endif
5159  _status = _logBuff.serializeFrom(channelId);
5160  FW_ASSERT(
5161  _status == Fw::FW_SERIALIZE_OK,
5162  static_cast<FwAssertArgType>(_status)
5163  );
5164 
5165 #if FW_AMPCS_COMPATIBLE
5166  // Serialize the argument size
5167  _status = _logBuff.serializeFrom(
5168  static_cast<U8>(sizeof(I32))
5169  );
5170  FW_ASSERT(
5171  _status == Fw::FW_SERIALIZE_OK,
5172  static_cast<FwAssertArgType>(_status)
5173  );
5174 #endif
5175  _status = _logBuff.serializeFrom(status);
5176  FW_ASSERT(
5177  _status == Fw::FW_SERIALIZE_OK,
5178  static_cast<FwAssertArgType>(_status)
5179  );
5180 
5181  this->logOut_out(
5182  0,
5183  _id,
5184  _logTime,
5186  _logBuff
5187  );
5188  }
5189 
5190  // Emit the event on the text log port
5191 #if FW_ENABLE_TEXT_LOGGING
5192  if (this->isConnected_logTextOut_OutputPort(0)) {
5193 #if FW_OBJECT_NAMES == 1
5194  const char* _formatString =
5195  "(%s) %s: Failed to deserialize NAK PDU on channel %" PRIu8 ", status %" PRIi32 "";
5196 #else
5197  const char* _formatString =
5198  "%s: Failed to deserialize NAK PDU on channel %" PRIu8 ", status %" PRIi32 "";
5199 #endif
5200 
5201  Fw::TextLogString _logString;
5202  (void) _logString.format(
5203  _formatString,
5204 #if FW_OBJECT_NAMES == 1
5205  this->m_objName.toChar(),
5206 #endif
5207  "FailNakPduDeserialization ",
5208  channelId,
5209  status
5210  );
5211 
5212  this->logTextOut_out(
5213  0,
5214  _id,
5215  _logTime,
5217  _logString
5218  );
5219  }
5220 #endif
5221  }
5222 
5225  const Svc::Ccsds::Cfdp::Class& cfdpClass,
5226  U32 srcEid,
5227  U32 seqNum
5228  ) const
5229  {
5230  // Get the time
5231  Fw::Time _logTime;
5232  if (this->isConnected_timeCaller_OutputPort(0)) {
5233  this->timeCaller_out(0, _logTime);
5234  }
5235 
5236  const FwEventIdType _id = this->getIdBase() + EVENTID_RXACKLIMITREACHED;
5237 
5238  // Emit the event on the log port
5239  if (this->isConnected_logOut_OutputPort(0)) {
5240  Fw::LogBuffer _logBuff;
5242 
5243 #if FW_AMPCS_COMPATIBLE
5244  // Serialize the number of arguments
5245  _status = _logBuff.serializeFrom(static_cast<U8>(3));
5246  FW_ASSERT(
5247  _status == Fw::FW_SERIALIZE_OK,
5248  static_cast<FwAssertArgType>(_status)
5249  );
5250 #endif
5251 
5252 #if FW_AMPCS_COMPATIBLE
5253  // Serialize the argument size
5254  _status = _logBuff.serializeFrom(
5256  );
5257  FW_ASSERT(
5258  _status == Fw::FW_SERIALIZE_OK,
5259  static_cast<FwAssertArgType>(_status)
5260  );
5261 #endif
5262  _status = _logBuff.serializeFrom(cfdpClass);
5263  FW_ASSERT(
5264  _status == Fw::FW_SERIALIZE_OK,
5265  static_cast<FwAssertArgType>(_status)
5266  );
5267 
5268 #if FW_AMPCS_COMPATIBLE
5269  // Serialize the argument size
5270  _status = _logBuff.serializeFrom(
5271  static_cast<U8>(sizeof(U32))
5272  );
5273  FW_ASSERT(
5274  _status == Fw::FW_SERIALIZE_OK,
5275  static_cast<FwAssertArgType>(_status)
5276  );
5277 #endif
5278  _status = _logBuff.serializeFrom(srcEid);
5279  FW_ASSERT(
5280  _status == Fw::FW_SERIALIZE_OK,
5281  static_cast<FwAssertArgType>(_status)
5282  );
5283 
5284 #if FW_AMPCS_COMPATIBLE
5285  // Serialize the argument size
5286  _status = _logBuff.serializeFrom(
5287  static_cast<U8>(sizeof(U32))
5288  );
5289  FW_ASSERT(
5290  _status == Fw::FW_SERIALIZE_OK,
5291  static_cast<FwAssertArgType>(_status)
5292  );
5293 #endif
5294  _status = _logBuff.serializeFrom(seqNum);
5295  FW_ASSERT(
5296  _status == Fw::FW_SERIALIZE_OK,
5297  static_cast<FwAssertArgType>(_status)
5298  );
5299 
5300  this->logOut_out(
5301  0,
5302  _id,
5303  _logTime,
5305  _logBuff
5306  );
5307  }
5308 
5309  // Emit the event on the text log port
5310 #if FW_ENABLE_TEXT_LOGGING
5311  if (this->isConnected_logTextOut_OutputPort(0)) {
5312 #if FW_OBJECT_NAMES == 1
5313  const char* _formatString =
5314  "(%s) %s: RX class %s ACK limit reached for transaction %" PRIu32 ":%" PRIu32 ", no fin-ack sent";
5315 #else
5316  const char* _formatString =
5317  "%s: RX class %s ACK limit reached for transaction %" PRIu32 ":%" PRIu32 ", no fin-ack sent";
5318 #endif
5319 
5320  Fw::String cfdpClassStr;
5321  cfdpClass.toString(cfdpClassStr);
5322 
5323  Fw::TextLogString _logString;
5324  (void) _logString.format(
5325  _formatString,
5326 #if FW_OBJECT_NAMES == 1
5327  this->m_objName.toChar(),
5328 #endif
5329  "RxAckLimitReached ",
5330  cfdpClassStr.toChar(),
5331  srcEid,
5332  seqNum
5333  );
5334 
5335  this->logTextOut_out(
5336  0,
5337  _id,
5338  _logTime,
5340  _logString
5341  );
5342  }
5343 #endif
5344  }
5345 
5348  const Svc::Ccsds::Cfdp::Class& cfdpClass,
5349  U32 srcEid,
5350  U32 seqNum,
5351  const Fw::StringBase& filename
5352  ) const
5353  {
5354  // Get the time
5355  Fw::Time _logTime;
5356  if (this->isConnected_timeCaller_OutputPort(0)) {
5357  this->timeCaller_out(0, _logTime);
5358  }
5359 
5360  const FwEventIdType _id = this->getIdBase() + EVENTID_RXTEMPFILECREATED;
5361 
5362  // Emit the event on the log port
5363  if (this->isConnected_logOut_OutputPort(0)) {
5364  Fw::LogBuffer _logBuff;
5366 
5367 #if FW_AMPCS_COMPATIBLE
5368  // Serialize the number of arguments
5369  _status = _logBuff.serializeFrom(static_cast<U8>(4));
5370  FW_ASSERT(
5371  _status == Fw::FW_SERIALIZE_OK,
5372  static_cast<FwAssertArgType>(_status)
5373  );
5374 #endif
5375 
5376 #if FW_AMPCS_COMPATIBLE
5377  // Serialize the argument size
5378  _status = _logBuff.serializeFrom(
5380  );
5381  FW_ASSERT(
5382  _status == Fw::FW_SERIALIZE_OK,
5383  static_cast<FwAssertArgType>(_status)
5384  );
5385 #endif
5386  _status = _logBuff.serializeFrom(cfdpClass);
5387  FW_ASSERT(
5388  _status == Fw::FW_SERIALIZE_OK,
5389  static_cast<FwAssertArgType>(_status)
5390  );
5391 
5392 #if FW_AMPCS_COMPATIBLE
5393  // Serialize the argument size
5394  _status = _logBuff.serializeFrom(
5395  static_cast<U8>(sizeof(U32))
5396  );
5397  FW_ASSERT(
5398  _status == Fw::FW_SERIALIZE_OK,
5399  static_cast<FwAssertArgType>(_status)
5400  );
5401 #endif
5402  _status = _logBuff.serializeFrom(srcEid);
5403  FW_ASSERT(
5404  _status == Fw::FW_SERIALIZE_OK,
5405  static_cast<FwAssertArgType>(_status)
5406  );
5407 
5408 #if FW_AMPCS_COMPATIBLE
5409  // Serialize the argument size
5410  _status = _logBuff.serializeFrom(
5411  static_cast<U8>(sizeof(U32))
5412  );
5413  FW_ASSERT(
5414  _status == Fw::FW_SERIALIZE_OK,
5415  static_cast<FwAssertArgType>(_status)
5416  );
5417 #endif
5418  _status = _logBuff.serializeFrom(seqNum);
5419  FW_ASSERT(
5420  _status == Fw::FW_SERIALIZE_OK,
5421  static_cast<FwAssertArgType>(_status)
5422  );
5423 
5424  _status = filename.serializeTo(
5425  _logBuff,
5426  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
5427  );
5428  FW_ASSERT(
5429  _status == Fw::FW_SERIALIZE_OK,
5430  static_cast<FwAssertArgType>(_status)
5431  );
5432 
5433  this->logOut_out(
5434  0,
5435  _id,
5436  _logTime,
5438  _logBuff
5439  );
5440  }
5441 
5442  // Emit the event on the text log port
5443 #if FW_ENABLE_TEXT_LOGGING
5444  if (this->isConnected_logTextOut_OutputPort(0)) {
5445 #if FW_OBJECT_NAMES == 1
5446  const char* _formatString =
5447  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " creating temp file %s without metadata";
5448 #else
5449  const char* _formatString =
5450  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " creating temp file %s without metadata";
5451 #endif
5452 
5453  Fw::String cfdpClassStr;
5454  cfdpClass.toString(cfdpClassStr);
5455 
5456  Fw::TextLogString _logString;
5457  (void) _logString.format(
5458  _formatString,
5459 #if FW_OBJECT_NAMES == 1
5460  this->m_objName.toChar(),
5461 #endif
5462  "RxTempFileCreated ",
5463  cfdpClassStr.toChar(),
5464  srcEid,
5465  seqNum,
5466  filename.toChar()
5467  );
5468 
5469  this->logTextOut_out(
5470  0,
5471  _id,
5472  _logTime,
5474  _logString
5475  );
5476  }
5477 #endif
5478  }
5479 
5482  const Svc::Ccsds::Cfdp::Class& cfdpClass,
5483  U32 srcEid,
5484  U32 seqNum,
5485  const Fw::StringBase& filename,
5486  I32 status
5487  ) const
5488  {
5489  // Get the time
5490  Fw::Time _logTime;
5491  if (this->isConnected_timeCaller_OutputPort(0)) {
5492  this->timeCaller_out(0, _logTime);
5493  }
5494 
5495  const FwEventIdType _id = this->getIdBase() + EVENTID_RXFILECREATEFAILED;
5496 
5497  // Emit the event on the log port
5498  if (this->isConnected_logOut_OutputPort(0)) {
5499  Fw::LogBuffer _logBuff;
5501 
5502 #if FW_AMPCS_COMPATIBLE
5503  // Serialize the number of arguments
5504  _status = _logBuff.serializeFrom(static_cast<U8>(5));
5505  FW_ASSERT(
5506  _status == Fw::FW_SERIALIZE_OK,
5507  static_cast<FwAssertArgType>(_status)
5508  );
5509 #endif
5510 
5511 #if FW_AMPCS_COMPATIBLE
5512  // Serialize the argument size
5513  _status = _logBuff.serializeFrom(
5515  );
5516  FW_ASSERT(
5517  _status == Fw::FW_SERIALIZE_OK,
5518  static_cast<FwAssertArgType>(_status)
5519  );
5520 #endif
5521  _status = _logBuff.serializeFrom(cfdpClass);
5522  FW_ASSERT(
5523  _status == Fw::FW_SERIALIZE_OK,
5524  static_cast<FwAssertArgType>(_status)
5525  );
5526 
5527 #if FW_AMPCS_COMPATIBLE
5528  // Serialize the argument size
5529  _status = _logBuff.serializeFrom(
5530  static_cast<U8>(sizeof(U32))
5531  );
5532  FW_ASSERT(
5533  _status == Fw::FW_SERIALIZE_OK,
5534  static_cast<FwAssertArgType>(_status)
5535  );
5536 #endif
5537  _status = _logBuff.serializeFrom(srcEid);
5538  FW_ASSERT(
5539  _status == Fw::FW_SERIALIZE_OK,
5540  static_cast<FwAssertArgType>(_status)
5541  );
5542 
5543 #if FW_AMPCS_COMPATIBLE
5544  // Serialize the argument size
5545  _status = _logBuff.serializeFrom(
5546  static_cast<U8>(sizeof(U32))
5547  );
5548  FW_ASSERT(
5549  _status == Fw::FW_SERIALIZE_OK,
5550  static_cast<FwAssertArgType>(_status)
5551  );
5552 #endif
5553  _status = _logBuff.serializeFrom(seqNum);
5554  FW_ASSERT(
5555  _status == Fw::FW_SERIALIZE_OK,
5556  static_cast<FwAssertArgType>(_status)
5557  );
5558 
5559  _status = filename.serializeTo(
5560  _logBuff,
5561  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
5562  );
5563  FW_ASSERT(
5564  _status == Fw::FW_SERIALIZE_OK,
5565  static_cast<FwAssertArgType>(_status)
5566  );
5567 
5568 #if FW_AMPCS_COMPATIBLE
5569  // Serialize the argument size
5570  _status = _logBuff.serializeFrom(
5571  static_cast<U8>(sizeof(I32))
5572  );
5573  FW_ASSERT(
5574  _status == Fw::FW_SERIALIZE_OK,
5575  static_cast<FwAssertArgType>(_status)
5576  );
5577 #endif
5578  _status = _logBuff.serializeFrom(status);
5579  FW_ASSERT(
5580  _status == Fw::FW_SERIALIZE_OK,
5581  static_cast<FwAssertArgType>(_status)
5582  );
5583 
5584  this->logOut_out(
5585  0,
5586  _id,
5587  _logTime,
5589  _logBuff
5590  );
5591  }
5592 
5593  // Emit the event on the text log port
5594 #if FW_ENABLE_TEXT_LOGGING
5595  if (this->isConnected_logTextOut_OutputPort(0)) {
5596 #if FW_OBJECT_NAMES == 1
5597  const char* _formatString =
5598  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to create file %s, error=%" PRIi32 "";
5599 #else
5600  const char* _formatString =
5601  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to create file %s, error=%" PRIi32 "";
5602 #endif
5603 
5604  Fw::String cfdpClassStr;
5605  cfdpClass.toString(cfdpClassStr);
5606 
5607  Fw::TextLogString _logString;
5608  (void) _logString.format(
5609  _formatString,
5610 #if FW_OBJECT_NAMES == 1
5611  this->m_objName.toChar(),
5612 #endif
5613  "RxFileCreateFailed ",
5614  cfdpClassStr.toChar(),
5615  srcEid,
5616  seqNum,
5617  filename.toChar(),
5618  status
5619  );
5620 
5621  this->logTextOut_out(
5622  0,
5623  _id,
5624  _logTime,
5626  _logString
5627  );
5628  }
5629 #endif
5630  }
5631 
5634  const Svc::Ccsds::Cfdp::Class& cfdpClass,
5635  U32 srcEid,
5636  U32 seqNum,
5637  U32 expected,
5638  U32 actual
5639  ) const
5640  {
5641  // Get the time
5642  Fw::Time _logTime;
5643  if (this->isConnected_timeCaller_OutputPort(0)) {
5644  this->timeCaller_out(0, _logTime);
5645  }
5646 
5647  const FwEventIdType _id = this->getIdBase() + EVENTID_RXCRCMISMATCH;
5648 
5649  // Emit the event on the log port
5650  if (this->isConnected_logOut_OutputPort(0)) {
5651  Fw::LogBuffer _logBuff;
5653 
5654 #if FW_AMPCS_COMPATIBLE
5655  // Serialize the number of arguments
5656  _status = _logBuff.serializeFrom(static_cast<U8>(5));
5657  FW_ASSERT(
5658  _status == Fw::FW_SERIALIZE_OK,
5659  static_cast<FwAssertArgType>(_status)
5660  );
5661 #endif
5662 
5663 #if FW_AMPCS_COMPATIBLE
5664  // Serialize the argument size
5665  _status = _logBuff.serializeFrom(
5667  );
5668  FW_ASSERT(
5669  _status == Fw::FW_SERIALIZE_OK,
5670  static_cast<FwAssertArgType>(_status)
5671  );
5672 #endif
5673  _status = _logBuff.serializeFrom(cfdpClass);
5674  FW_ASSERT(
5675  _status == Fw::FW_SERIALIZE_OK,
5676  static_cast<FwAssertArgType>(_status)
5677  );
5678 
5679 #if FW_AMPCS_COMPATIBLE
5680  // Serialize the argument size
5681  _status = _logBuff.serializeFrom(
5682  static_cast<U8>(sizeof(U32))
5683  );
5684  FW_ASSERT(
5685  _status == Fw::FW_SERIALIZE_OK,
5686  static_cast<FwAssertArgType>(_status)
5687  );
5688 #endif
5689  _status = _logBuff.serializeFrom(srcEid);
5690  FW_ASSERT(
5691  _status == Fw::FW_SERIALIZE_OK,
5692  static_cast<FwAssertArgType>(_status)
5693  );
5694 
5695 #if FW_AMPCS_COMPATIBLE
5696  // Serialize the argument size
5697  _status = _logBuff.serializeFrom(
5698  static_cast<U8>(sizeof(U32))
5699  );
5700  FW_ASSERT(
5701  _status == Fw::FW_SERIALIZE_OK,
5702  static_cast<FwAssertArgType>(_status)
5703  );
5704 #endif
5705  _status = _logBuff.serializeFrom(seqNum);
5706  FW_ASSERT(
5707  _status == Fw::FW_SERIALIZE_OK,
5708  static_cast<FwAssertArgType>(_status)
5709  );
5710 
5711 #if FW_AMPCS_COMPATIBLE
5712  // Serialize the argument size
5713  _status = _logBuff.serializeFrom(
5714  static_cast<U8>(sizeof(U32))
5715  );
5716  FW_ASSERT(
5717  _status == Fw::FW_SERIALIZE_OK,
5718  static_cast<FwAssertArgType>(_status)
5719  );
5720 #endif
5721  _status = _logBuff.serializeFrom(expected);
5722  FW_ASSERT(
5723  _status == Fw::FW_SERIALIZE_OK,
5724  static_cast<FwAssertArgType>(_status)
5725  );
5726 
5727 #if FW_AMPCS_COMPATIBLE
5728  // Serialize the argument size
5729  _status = _logBuff.serializeFrom(
5730  static_cast<U8>(sizeof(U32))
5731  );
5732  FW_ASSERT(
5733  _status == Fw::FW_SERIALIZE_OK,
5734  static_cast<FwAssertArgType>(_status)
5735  );
5736 #endif
5737  _status = _logBuff.serializeFrom(actual);
5738  FW_ASSERT(
5739  _status == Fw::FW_SERIALIZE_OK,
5740  static_cast<FwAssertArgType>(_status)
5741  );
5742 
5743  this->logOut_out(
5744  0,
5745  _id,
5746  _logTime,
5748  _logBuff
5749  );
5750  }
5751 
5752  // Emit the event on the text log port
5753 #if FW_ENABLE_TEXT_LOGGING
5754  if (this->isConnected_logTextOut_OutputPort(0)) {
5755 #if FW_OBJECT_NAMES == 1
5756  const char* _formatString =
5757  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " CRC mismatch: expected 0x%" PRIx32 " actual 0x%" PRIx32 "";
5758 #else
5759  const char* _formatString =
5760  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " CRC mismatch: expected 0x%" PRIx32 " actual 0x%" PRIx32 "";
5761 #endif
5762 
5763  Fw::String cfdpClassStr;
5764  cfdpClass.toString(cfdpClassStr);
5765 
5766  Fw::TextLogString _logString;
5767  (void) _logString.format(
5768  _formatString,
5769 #if FW_OBJECT_NAMES == 1
5770  this->m_objName.toChar(),
5771 #endif
5772  "RxCrcMismatch ",
5773  cfdpClassStr.toChar(),
5774  srcEid,
5775  seqNum,
5776  expected,
5777  actual
5778  );
5779 
5780  this->logTextOut_out(
5781  0,
5782  _id,
5783  _logTime,
5785  _logString
5786  );
5787  }
5788 #endif
5789  }
5790 
5793  const Svc::Ccsds::Cfdp::Class& cfdpClass,
5794  U32 srcEid,
5795  U32 seqNum
5796  ) const
5797  {
5798  // Get the time
5799  Fw::Time _logTime;
5800  if (this->isConnected_timeCaller_OutputPort(0)) {
5801  this->timeCaller_out(0, _logTime);
5802  }
5803 
5804  const FwEventIdType _id = this->getIdBase() + EVENTID_RXNAKLIMITREACHED;
5805 
5806  // Emit the event on the log port
5807  if (this->isConnected_logOut_OutputPort(0)) {
5808  Fw::LogBuffer _logBuff;
5810 
5811 #if FW_AMPCS_COMPATIBLE
5812  // Serialize the number of arguments
5813  _status = _logBuff.serializeFrom(static_cast<U8>(3));
5814  FW_ASSERT(
5815  _status == Fw::FW_SERIALIZE_OK,
5816  static_cast<FwAssertArgType>(_status)
5817  );
5818 #endif
5819 
5820 #if FW_AMPCS_COMPATIBLE
5821  // Serialize the argument size
5822  _status = _logBuff.serializeFrom(
5824  );
5825  FW_ASSERT(
5826  _status == Fw::FW_SERIALIZE_OK,
5827  static_cast<FwAssertArgType>(_status)
5828  );
5829 #endif
5830  _status = _logBuff.serializeFrom(cfdpClass);
5831  FW_ASSERT(
5832  _status == Fw::FW_SERIALIZE_OK,
5833  static_cast<FwAssertArgType>(_status)
5834  );
5835 
5836 #if FW_AMPCS_COMPATIBLE
5837  // Serialize the argument size
5838  _status = _logBuff.serializeFrom(
5839  static_cast<U8>(sizeof(U32))
5840  );
5841  FW_ASSERT(
5842  _status == Fw::FW_SERIALIZE_OK,
5843  static_cast<FwAssertArgType>(_status)
5844  );
5845 #endif
5846  _status = _logBuff.serializeFrom(srcEid);
5847  FW_ASSERT(
5848  _status == Fw::FW_SERIALIZE_OK,
5849  static_cast<FwAssertArgType>(_status)
5850  );
5851 
5852 #if FW_AMPCS_COMPATIBLE
5853  // Serialize the argument size
5854  _status = _logBuff.serializeFrom(
5855  static_cast<U8>(sizeof(U32))
5856  );
5857  FW_ASSERT(
5858  _status == Fw::FW_SERIALIZE_OK,
5859  static_cast<FwAssertArgType>(_status)
5860  );
5861 #endif
5862  _status = _logBuff.serializeFrom(seqNum);
5863  FW_ASSERT(
5864  _status == Fw::FW_SERIALIZE_OK,
5865  static_cast<FwAssertArgType>(_status)
5866  );
5867 
5868  this->logOut_out(
5869  0,
5870  _id,
5871  _logTime,
5873  _logBuff
5874  );
5875  }
5876 
5877  // Emit the event on the text log port
5878 #if FW_ENABLE_TEXT_LOGGING
5879  if (this->isConnected_logTextOut_OutputPort(0)) {
5880 #if FW_OBJECT_NAMES == 1
5881  const char* _formatString =
5882  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " NAK limit reached";
5883 #else
5884  const char* _formatString =
5885  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " NAK limit reached";
5886 #endif
5887 
5888  Fw::String cfdpClassStr;
5889  cfdpClass.toString(cfdpClassStr);
5890 
5891  Fw::TextLogString _logString;
5892  (void) _logString.format(
5893  _formatString,
5894 #if FW_OBJECT_NAMES == 1
5895  this->m_objName.toChar(),
5896 #endif
5897  "RxNakLimitReached ",
5898  cfdpClassStr.toChar(),
5899  srcEid,
5900  seqNum
5901  );
5902 
5903  this->logTextOut_out(
5904  0,
5905  _id,
5906  _logTime,
5908  _logString
5909  );
5910  }
5911 #endif
5912  }
5913 
5916  const Svc::Ccsds::Cfdp::Class& cfdpClass,
5917  U32 srcEid,
5918  U32 seqNum,
5919  U32 offset,
5920  I32 status
5921  ) const
5922  {
5923  // Get the time
5924  Fw::Time _logTime;
5925  if (this->isConnected_timeCaller_OutputPort(0)) {
5926  this->timeCaller_out(0, _logTime);
5927  }
5928 
5929  const FwEventIdType _id = this->getIdBase() + EVENTID_RXSEEKFAILED;
5930 
5931  // Emit the event on the log port
5932  if (this->isConnected_logOut_OutputPort(0)) {
5933  Fw::LogBuffer _logBuff;
5935 
5936 #if FW_AMPCS_COMPATIBLE
5937  // Serialize the number of arguments
5938  _status = _logBuff.serializeFrom(static_cast<U8>(5));
5939  FW_ASSERT(
5940  _status == Fw::FW_SERIALIZE_OK,
5941  static_cast<FwAssertArgType>(_status)
5942  );
5943 #endif
5944 
5945 #if FW_AMPCS_COMPATIBLE
5946  // Serialize the argument size
5947  _status = _logBuff.serializeFrom(
5949  );
5950  FW_ASSERT(
5951  _status == Fw::FW_SERIALIZE_OK,
5952  static_cast<FwAssertArgType>(_status)
5953  );
5954 #endif
5955  _status = _logBuff.serializeFrom(cfdpClass);
5956  FW_ASSERT(
5957  _status == Fw::FW_SERIALIZE_OK,
5958  static_cast<FwAssertArgType>(_status)
5959  );
5960 
5961 #if FW_AMPCS_COMPATIBLE
5962  // Serialize the argument size
5963  _status = _logBuff.serializeFrom(
5964  static_cast<U8>(sizeof(U32))
5965  );
5966  FW_ASSERT(
5967  _status == Fw::FW_SERIALIZE_OK,
5968  static_cast<FwAssertArgType>(_status)
5969  );
5970 #endif
5971  _status = _logBuff.serializeFrom(srcEid);
5972  FW_ASSERT(
5973  _status == Fw::FW_SERIALIZE_OK,
5974  static_cast<FwAssertArgType>(_status)
5975  );
5976 
5977 #if FW_AMPCS_COMPATIBLE
5978  // Serialize the argument size
5979  _status = _logBuff.serializeFrom(
5980  static_cast<U8>(sizeof(U32))
5981  );
5982  FW_ASSERT(
5983  _status == Fw::FW_SERIALIZE_OK,
5984  static_cast<FwAssertArgType>(_status)
5985  );
5986 #endif
5987  _status = _logBuff.serializeFrom(seqNum);
5988  FW_ASSERT(
5989  _status == Fw::FW_SERIALIZE_OK,
5990  static_cast<FwAssertArgType>(_status)
5991  );
5992 
5993 #if FW_AMPCS_COMPATIBLE
5994  // Serialize the argument size
5995  _status = _logBuff.serializeFrom(
5996  static_cast<U8>(sizeof(U32))
5997  );
5998  FW_ASSERT(
5999  _status == Fw::FW_SERIALIZE_OK,
6000  static_cast<FwAssertArgType>(_status)
6001  );
6002 #endif
6003  _status = _logBuff.serializeFrom(offset);
6004  FW_ASSERT(
6005  _status == Fw::FW_SERIALIZE_OK,
6006  static_cast<FwAssertArgType>(_status)
6007  );
6008 
6009 #if FW_AMPCS_COMPATIBLE
6010  // Serialize the argument size
6011  _status = _logBuff.serializeFrom(
6012  static_cast<U8>(sizeof(I32))
6013  );
6014  FW_ASSERT(
6015  _status == Fw::FW_SERIALIZE_OK,
6016  static_cast<FwAssertArgType>(_status)
6017  );
6018 #endif
6019  _status = _logBuff.serializeFrom(status);
6020  FW_ASSERT(
6021  _status == Fw::FW_SERIALIZE_OK,
6022  static_cast<FwAssertArgType>(_status)
6023  );
6024 
6025  this->logOut_out(
6026  0,
6027  _id,
6028  _logTime,
6030  _logBuff
6031  );
6032  }
6033 
6034  // Emit the event on the text log port
6035 #if FW_ENABLE_TEXT_LOGGING
6036  if (this->isConnected_logTextOut_OutputPort(0)) {
6037 #if FW_OBJECT_NAMES == 1
6038  const char* _formatString =
6039  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek to offset %" PRIu32 ", error=%" PRIi32 "";
6040 #else
6041  const char* _formatString =
6042  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek to offset %" PRIu32 ", error=%" PRIi32 "";
6043 #endif
6044 
6045  Fw::String cfdpClassStr;
6046  cfdpClass.toString(cfdpClassStr);
6047 
6048  Fw::TextLogString _logString;
6049  (void) _logString.format(
6050  _formatString,
6051 #if FW_OBJECT_NAMES == 1
6052  this->m_objName.toChar(),
6053 #endif
6054  "RxSeekFailed ",
6055  cfdpClassStr.toChar(),
6056  srcEid,
6057  seqNum,
6058  offset,
6059  status
6060  );
6061 
6062  this->logTextOut_out(
6063  0,
6064  _id,
6065  _logTime,
6067  _logString
6068  );
6069  }
6070 #endif
6071  }
6072 
6075  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6076  U32 srcEid,
6077  U32 seqNum,
6078  U32 expected,
6079  I32 actual
6080  ) const
6081  {
6082  // Get the time
6083  Fw::Time _logTime;
6084  if (this->isConnected_timeCaller_OutputPort(0)) {
6085  this->timeCaller_out(0, _logTime);
6086  }
6087 
6088  const FwEventIdType _id = this->getIdBase() + EVENTID_RXWRITEFAILED;
6089 
6090  // Emit the event on the log port
6091  if (this->isConnected_logOut_OutputPort(0)) {
6092  Fw::LogBuffer _logBuff;
6094 
6095 #if FW_AMPCS_COMPATIBLE
6096  // Serialize the number of arguments
6097  _status = _logBuff.serializeFrom(static_cast<U8>(5));
6098  FW_ASSERT(
6099  _status == Fw::FW_SERIALIZE_OK,
6100  static_cast<FwAssertArgType>(_status)
6101  );
6102 #endif
6103 
6104 #if FW_AMPCS_COMPATIBLE
6105  // Serialize the argument size
6106  _status = _logBuff.serializeFrom(
6108  );
6109  FW_ASSERT(
6110  _status == Fw::FW_SERIALIZE_OK,
6111  static_cast<FwAssertArgType>(_status)
6112  );
6113 #endif
6114  _status = _logBuff.serializeFrom(cfdpClass);
6115  FW_ASSERT(
6116  _status == Fw::FW_SERIALIZE_OK,
6117  static_cast<FwAssertArgType>(_status)
6118  );
6119 
6120 #if FW_AMPCS_COMPATIBLE
6121  // Serialize the argument size
6122  _status = _logBuff.serializeFrom(
6123  static_cast<U8>(sizeof(U32))
6124  );
6125  FW_ASSERT(
6126  _status == Fw::FW_SERIALIZE_OK,
6127  static_cast<FwAssertArgType>(_status)
6128  );
6129 #endif
6130  _status = _logBuff.serializeFrom(srcEid);
6131  FW_ASSERT(
6132  _status == Fw::FW_SERIALIZE_OK,
6133  static_cast<FwAssertArgType>(_status)
6134  );
6135 
6136 #if FW_AMPCS_COMPATIBLE
6137  // Serialize the argument size
6138  _status = _logBuff.serializeFrom(
6139  static_cast<U8>(sizeof(U32))
6140  );
6141  FW_ASSERT(
6142  _status == Fw::FW_SERIALIZE_OK,
6143  static_cast<FwAssertArgType>(_status)
6144  );
6145 #endif
6146  _status = _logBuff.serializeFrom(seqNum);
6147  FW_ASSERT(
6148  _status == Fw::FW_SERIALIZE_OK,
6149  static_cast<FwAssertArgType>(_status)
6150  );
6151 
6152 #if FW_AMPCS_COMPATIBLE
6153  // Serialize the argument size
6154  _status = _logBuff.serializeFrom(
6155  static_cast<U8>(sizeof(U32))
6156  );
6157  FW_ASSERT(
6158  _status == Fw::FW_SERIALIZE_OK,
6159  static_cast<FwAssertArgType>(_status)
6160  );
6161 #endif
6162  _status = _logBuff.serializeFrom(expected);
6163  FW_ASSERT(
6164  _status == Fw::FW_SERIALIZE_OK,
6165  static_cast<FwAssertArgType>(_status)
6166  );
6167 
6168 #if FW_AMPCS_COMPATIBLE
6169  // Serialize the argument size
6170  _status = _logBuff.serializeFrom(
6171  static_cast<U8>(sizeof(I32))
6172  );
6173  FW_ASSERT(
6174  _status == Fw::FW_SERIALIZE_OK,
6175  static_cast<FwAssertArgType>(_status)
6176  );
6177 #endif
6178  _status = _logBuff.serializeFrom(actual);
6179  FW_ASSERT(
6180  _status == Fw::FW_SERIALIZE_OK,
6181  static_cast<FwAssertArgType>(_status)
6182  );
6183 
6184  this->logOut_out(
6185  0,
6186  _id,
6187  _logTime,
6189  _logBuff
6190  );
6191  }
6192 
6193  // Emit the event on the text log port
6194 #if FW_ENABLE_TEXT_LOGGING
6195  if (this->isConnected_logTextOut_OutputPort(0)) {
6196 #if FW_OBJECT_NAMES == 1
6197  const char* _formatString =
6198  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " write failed: expected %" PRIu32 " bytes, got %" PRIi32 "";
6199 #else
6200  const char* _formatString =
6201  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " write failed: expected %" PRIu32 " bytes, got %" PRIi32 "";
6202 #endif
6203 
6204  Fw::String cfdpClassStr;
6205  cfdpClass.toString(cfdpClassStr);
6206 
6207  Fw::TextLogString _logString;
6208  (void) _logString.format(
6209  _formatString,
6210 #if FW_OBJECT_NAMES == 1
6211  this->m_objName.toChar(),
6212 #endif
6213  "RxWriteFailed ",
6214  cfdpClassStr.toChar(),
6215  srcEid,
6216  seqNum,
6217  expected,
6218  actual
6219  );
6220 
6221  this->logTextOut_out(
6222  0,
6223  _id,
6224  _logTime,
6226  _logString
6227  );
6228  }
6229 #endif
6230  }
6231 
6234  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6235  U32 srcEid,
6236  U32 seqNum,
6237  U32 offset,
6238  U32 dataSize,
6239  U32 fileSize
6240  ) const
6241  {
6242  // Get the time
6243  Fw::Time _logTime;
6244  if (this->isConnected_timeCaller_OutputPort(0)) {
6245  this->timeCaller_out(0, _logTime);
6246  }
6247 
6249 
6250  // Emit the event on the log port
6251  if (this->isConnected_logOut_OutputPort(0)) {
6252  Fw::LogBuffer _logBuff;
6254 
6255 #if FW_AMPCS_COMPATIBLE
6256  // Serialize the number of arguments
6257  _status = _logBuff.serializeFrom(static_cast<U8>(6));
6258  FW_ASSERT(
6259  _status == Fw::FW_SERIALIZE_OK,
6260  static_cast<FwAssertArgType>(_status)
6261  );
6262 #endif
6263 
6264 #if FW_AMPCS_COMPATIBLE
6265  // Serialize the argument size
6266  _status = _logBuff.serializeFrom(
6268  );
6269  FW_ASSERT(
6270  _status == Fw::FW_SERIALIZE_OK,
6271  static_cast<FwAssertArgType>(_status)
6272  );
6273 #endif
6274  _status = _logBuff.serializeFrom(cfdpClass);
6275  FW_ASSERT(
6276  _status == Fw::FW_SERIALIZE_OK,
6277  static_cast<FwAssertArgType>(_status)
6278  );
6279 
6280 #if FW_AMPCS_COMPATIBLE
6281  // Serialize the argument size
6282  _status = _logBuff.serializeFrom(
6283  static_cast<U8>(sizeof(U32))
6284  );
6285  FW_ASSERT(
6286  _status == Fw::FW_SERIALIZE_OK,
6287  static_cast<FwAssertArgType>(_status)
6288  );
6289 #endif
6290  _status = _logBuff.serializeFrom(srcEid);
6291  FW_ASSERT(
6292  _status == Fw::FW_SERIALIZE_OK,
6293  static_cast<FwAssertArgType>(_status)
6294  );
6295 
6296 #if FW_AMPCS_COMPATIBLE
6297  // Serialize the argument size
6298  _status = _logBuff.serializeFrom(
6299  static_cast<U8>(sizeof(U32))
6300  );
6301  FW_ASSERT(
6302  _status == Fw::FW_SERIALIZE_OK,
6303  static_cast<FwAssertArgType>(_status)
6304  );
6305 #endif
6306  _status = _logBuff.serializeFrom(seqNum);
6307  FW_ASSERT(
6308  _status == Fw::FW_SERIALIZE_OK,
6309  static_cast<FwAssertArgType>(_status)
6310  );
6311 
6312 #if FW_AMPCS_COMPATIBLE
6313  // Serialize the argument size
6314  _status = _logBuff.serializeFrom(
6315  static_cast<U8>(sizeof(U32))
6316  );
6317  FW_ASSERT(
6318  _status == Fw::FW_SERIALIZE_OK,
6319  static_cast<FwAssertArgType>(_status)
6320  );
6321 #endif
6322  _status = _logBuff.serializeFrom(offset);
6323  FW_ASSERT(
6324  _status == Fw::FW_SERIALIZE_OK,
6325  static_cast<FwAssertArgType>(_status)
6326  );
6327 
6328 #if FW_AMPCS_COMPATIBLE
6329  // Serialize the argument size
6330  _status = _logBuff.serializeFrom(
6331  static_cast<U8>(sizeof(U32))
6332  );
6333  FW_ASSERT(
6334  _status == Fw::FW_SERIALIZE_OK,
6335  static_cast<FwAssertArgType>(_status)
6336  );
6337 #endif
6338  _status = _logBuff.serializeFrom(dataSize);
6339  FW_ASSERT(
6340  _status == Fw::FW_SERIALIZE_OK,
6341  static_cast<FwAssertArgType>(_status)
6342  );
6343 
6344 #if FW_AMPCS_COMPATIBLE
6345  // Serialize the argument size
6346  _status = _logBuff.serializeFrom(
6347  static_cast<U8>(sizeof(U32))
6348  );
6349  FW_ASSERT(
6350  _status == Fw::FW_SERIALIZE_OK,
6351  static_cast<FwAssertArgType>(_status)
6352  );
6353 #endif
6354  _status = _logBuff.serializeFrom(fileSize);
6355  FW_ASSERT(
6356  _status == Fw::FW_SERIALIZE_OK,
6357  static_cast<FwAssertArgType>(_status)
6358  );
6359 
6360  this->logOut_out(
6361  0,
6362  _id,
6363  _logTime,
6365  _logBuff
6366  );
6367  }
6368 
6369  // Emit the event on the text log port
6370 #if FW_ENABLE_TEXT_LOGGING
6371  if (this->isConnected_logTextOut_OutputPort(0)) {
6372 #if FW_OBJECT_NAMES == 1
6373  const char* _formatString =
6374  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " file data [%" PRIu32 ", +%" PRIu32 "] exceeds declared file size %" PRIu32 ", PDU rejected";
6375 #else
6376  const char* _formatString =
6377  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " file data [%" PRIu32 ", +%" PRIu32 "] exceeds declared file size %" PRIu32 ", PDU rejected";
6378 #endif
6379 
6380  Fw::String cfdpClassStr;
6381  cfdpClass.toString(cfdpClassStr);
6382 
6383  Fw::TextLogString _logString;
6384  (void) _logString.format(
6385  _formatString,
6386 #if FW_OBJECT_NAMES == 1
6387  this->m_objName.toChar(),
6388 #endif
6389  "RxFileDataOutOfBounds ",
6390  cfdpClassStr.toChar(),
6391  srcEid,
6392  seqNum,
6393  offset,
6394  dataSize,
6395  fileSize
6396  );
6397 
6398  this->logTextOut_out(
6399  0,
6400  _id,
6401  _logTime,
6403  _logString
6404  );
6405  }
6406 #endif
6407  }
6408 
6411  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6412  U32 srcEid,
6413  U32 seqNum,
6414  U32 expected,
6415  U32 actual
6416  ) const
6417  {
6418  // Get the time
6419  Fw::Time _logTime;
6420  if (this->isConnected_timeCaller_OutputPort(0)) {
6421  this->timeCaller_out(0, _logTime);
6422  }
6423 
6424  const FwEventIdType _id = this->getIdBase() + EVENTID_RXFILESIZEMISMATCH;
6425 
6426  // Emit the event on the log port
6427  if (this->isConnected_logOut_OutputPort(0)) {
6428  Fw::LogBuffer _logBuff;
6430 
6431 #if FW_AMPCS_COMPATIBLE
6432  // Serialize the number of arguments
6433  _status = _logBuff.serializeFrom(static_cast<U8>(5));
6434  FW_ASSERT(
6435  _status == Fw::FW_SERIALIZE_OK,
6436  static_cast<FwAssertArgType>(_status)
6437  );
6438 #endif
6439 
6440 #if FW_AMPCS_COMPATIBLE
6441  // Serialize the argument size
6442  _status = _logBuff.serializeFrom(
6444  );
6445  FW_ASSERT(
6446  _status == Fw::FW_SERIALIZE_OK,
6447  static_cast<FwAssertArgType>(_status)
6448  );
6449 #endif
6450  _status = _logBuff.serializeFrom(cfdpClass);
6451  FW_ASSERT(
6452  _status == Fw::FW_SERIALIZE_OK,
6453  static_cast<FwAssertArgType>(_status)
6454  );
6455 
6456 #if FW_AMPCS_COMPATIBLE
6457  // Serialize the argument size
6458  _status = _logBuff.serializeFrom(
6459  static_cast<U8>(sizeof(U32))
6460  );
6461  FW_ASSERT(
6462  _status == Fw::FW_SERIALIZE_OK,
6463  static_cast<FwAssertArgType>(_status)
6464  );
6465 #endif
6466  _status = _logBuff.serializeFrom(srcEid);
6467  FW_ASSERT(
6468  _status == Fw::FW_SERIALIZE_OK,
6469  static_cast<FwAssertArgType>(_status)
6470  );
6471 
6472 #if FW_AMPCS_COMPATIBLE
6473  // Serialize the argument size
6474  _status = _logBuff.serializeFrom(
6475  static_cast<U8>(sizeof(U32))
6476  );
6477  FW_ASSERT(
6478  _status == Fw::FW_SERIALIZE_OK,
6479  static_cast<FwAssertArgType>(_status)
6480  );
6481 #endif
6482  _status = _logBuff.serializeFrom(seqNum);
6483  FW_ASSERT(
6484  _status == Fw::FW_SERIALIZE_OK,
6485  static_cast<FwAssertArgType>(_status)
6486  );
6487 
6488 #if FW_AMPCS_COMPATIBLE
6489  // Serialize the argument size
6490  _status = _logBuff.serializeFrom(
6491  static_cast<U8>(sizeof(U32))
6492  );
6493  FW_ASSERT(
6494  _status == Fw::FW_SERIALIZE_OK,
6495  static_cast<FwAssertArgType>(_status)
6496  );
6497 #endif
6498  _status = _logBuff.serializeFrom(expected);
6499  FW_ASSERT(
6500  _status == Fw::FW_SERIALIZE_OK,
6501  static_cast<FwAssertArgType>(_status)
6502  );
6503 
6504 #if FW_AMPCS_COMPATIBLE
6505  // Serialize the argument size
6506  _status = _logBuff.serializeFrom(
6507  static_cast<U8>(sizeof(U32))
6508  );
6509  FW_ASSERT(
6510  _status == Fw::FW_SERIALIZE_OK,
6511  static_cast<FwAssertArgType>(_status)
6512  );
6513 #endif
6514  _status = _logBuff.serializeFrom(actual);
6515  FW_ASSERT(
6516  _status == Fw::FW_SERIALIZE_OK,
6517  static_cast<FwAssertArgType>(_status)
6518  );
6519 
6520  this->logOut_out(
6521  0,
6522  _id,
6523  _logTime,
6525  _logBuff
6526  );
6527  }
6528 
6529  // Emit the event on the text log port
6530 #if FW_ENABLE_TEXT_LOGGING
6531  if (this->isConnected_logTextOut_OutputPort(0)) {
6532 #if FW_OBJECT_NAMES == 1
6533  const char* _formatString =
6534  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " EOF file size mismatch: expected %" PRIu32 " got %" PRIu32 "";
6535 #else
6536  const char* _formatString =
6537  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " EOF file size mismatch: expected %" PRIu32 " got %" PRIu32 "";
6538 #endif
6539 
6540  Fw::String cfdpClassStr;
6541  cfdpClass.toString(cfdpClassStr);
6542 
6543  Fw::TextLogString _logString;
6544  (void) _logString.format(
6545  _formatString,
6546 #if FW_OBJECT_NAMES == 1
6547  this->m_objName.toChar(),
6548 #endif
6549  "RxFileSizeMismatch ",
6550  cfdpClassStr.toChar(),
6551  srcEid,
6552  seqNum,
6553  expected,
6554  actual
6555  );
6556 
6557  this->logTextOut_out(
6558  0,
6559  _id,
6560  _logTime,
6562  _logString
6563  );
6564  }
6565 #endif
6566  }
6567 
6570  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6571  U32 srcEid,
6572  U32 seqNum
6573  ) const
6574  {
6575  // Get the time
6576  Fw::Time _logTime;
6577  if (this->isConnected_timeCaller_OutputPort(0)) {
6578  this->timeCaller_out(0, _logTime);
6579  }
6580 
6581  const FwEventIdType _id = this->getIdBase() + EVENTID_RXEOFCANCELRECEIVED;
6582 
6583  // Emit the event on the log port
6584  if (this->isConnected_logOut_OutputPort(0)) {
6585  Fw::LogBuffer _logBuff;
6587 
6588 #if FW_AMPCS_COMPATIBLE
6589  // Serialize the number of arguments
6590  _status = _logBuff.serializeFrom(static_cast<U8>(3));
6591  FW_ASSERT(
6592  _status == Fw::FW_SERIALIZE_OK,
6593  static_cast<FwAssertArgType>(_status)
6594  );
6595 #endif
6596 
6597 #if FW_AMPCS_COMPATIBLE
6598  // Serialize the argument size
6599  _status = _logBuff.serializeFrom(
6601  );
6602  FW_ASSERT(
6603  _status == Fw::FW_SERIALIZE_OK,
6604  static_cast<FwAssertArgType>(_status)
6605  );
6606 #endif
6607  _status = _logBuff.serializeFrom(cfdpClass);
6608  FW_ASSERT(
6609  _status == Fw::FW_SERIALIZE_OK,
6610  static_cast<FwAssertArgType>(_status)
6611  );
6612 
6613 #if FW_AMPCS_COMPATIBLE
6614  // Serialize the argument size
6615  _status = _logBuff.serializeFrom(
6616  static_cast<U8>(sizeof(U32))
6617  );
6618  FW_ASSERT(
6619  _status == Fw::FW_SERIALIZE_OK,
6620  static_cast<FwAssertArgType>(_status)
6621  );
6622 #endif
6623  _status = _logBuff.serializeFrom(srcEid);
6624  FW_ASSERT(
6625  _status == Fw::FW_SERIALIZE_OK,
6626  static_cast<FwAssertArgType>(_status)
6627  );
6628 
6629 #if FW_AMPCS_COMPATIBLE
6630  // Serialize the argument size
6631  _status = _logBuff.serializeFrom(
6632  static_cast<U8>(sizeof(U32))
6633  );
6634  FW_ASSERT(
6635  _status == Fw::FW_SERIALIZE_OK,
6636  static_cast<FwAssertArgType>(_status)
6637  );
6638 #endif
6639  _status = _logBuff.serializeFrom(seqNum);
6640  FW_ASSERT(
6641  _status == Fw::FW_SERIALIZE_OK,
6642  static_cast<FwAssertArgType>(_status)
6643  );
6644 
6645  this->logOut_out(
6646  0,
6647  _id,
6648  _logTime,
6650  _logBuff
6651  );
6652  }
6653 
6654  // Emit the event on the text log port
6655 #if FW_ENABLE_TEXT_LOGGING
6656  if (this->isConnected_logTextOut_OutputPort(0)) {
6657 #if FW_OBJECT_NAMES == 1
6658  const char* _formatString =
6659  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " cancelled by sender";
6660 #else
6661  const char* _formatString =
6662  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " cancelled by sender";
6663 #endif
6664 
6665  Fw::String cfdpClassStr;
6666  cfdpClass.toString(cfdpClassStr);
6667 
6668  Fw::TextLogString _logString;
6669  (void) _logString.format(
6670  _formatString,
6671 #if FW_OBJECT_NAMES == 1
6672  this->m_objName.toChar(),
6673 #endif
6674  "RxEofCancelReceived ",
6675  cfdpClassStr.toChar(),
6676  srcEid,
6677  seqNum
6678  );
6679 
6680  this->logTextOut_out(
6681  0,
6682  _id,
6683  _logTime,
6685  _logString
6686  );
6687  }
6688 #endif
6689  }
6690 
6693  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6694  U32 srcEid,
6695  U32 seqNum,
6696  U8 conditionCode
6697  ) const
6698  {
6699  // Get the time
6700  Fw::Time _logTime;
6701  if (this->isConnected_timeCaller_OutputPort(0)) {
6702  this->timeCaller_out(0, _logTime);
6703  }
6704 
6705  const FwEventIdType _id = this->getIdBase() + EVENTID_RXEOFWITHERROR;
6706 
6707  // Emit the event on the log port
6708  if (this->isConnected_logOut_OutputPort(0)) {
6709  Fw::LogBuffer _logBuff;
6711 
6712 #if FW_AMPCS_COMPATIBLE
6713  // Serialize the number of arguments
6714  _status = _logBuff.serializeFrom(static_cast<U8>(4));
6715  FW_ASSERT(
6716  _status == Fw::FW_SERIALIZE_OK,
6717  static_cast<FwAssertArgType>(_status)
6718  );
6719 #endif
6720 
6721 #if FW_AMPCS_COMPATIBLE
6722  // Serialize the argument size
6723  _status = _logBuff.serializeFrom(
6725  );
6726  FW_ASSERT(
6727  _status == Fw::FW_SERIALIZE_OK,
6728  static_cast<FwAssertArgType>(_status)
6729  );
6730 #endif
6731  _status = _logBuff.serializeFrom(cfdpClass);
6732  FW_ASSERT(
6733  _status == Fw::FW_SERIALIZE_OK,
6734  static_cast<FwAssertArgType>(_status)
6735  );
6736 
6737 #if FW_AMPCS_COMPATIBLE
6738  // Serialize the argument size
6739  _status = _logBuff.serializeFrom(
6740  static_cast<U8>(sizeof(U32))
6741  );
6742  FW_ASSERT(
6743  _status == Fw::FW_SERIALIZE_OK,
6744  static_cast<FwAssertArgType>(_status)
6745  );
6746 #endif
6747  _status = _logBuff.serializeFrom(srcEid);
6748  FW_ASSERT(
6749  _status == Fw::FW_SERIALIZE_OK,
6750  static_cast<FwAssertArgType>(_status)
6751  );
6752 
6753 #if FW_AMPCS_COMPATIBLE
6754  // Serialize the argument size
6755  _status = _logBuff.serializeFrom(
6756  static_cast<U8>(sizeof(U32))
6757  );
6758  FW_ASSERT(
6759  _status == Fw::FW_SERIALIZE_OK,
6760  static_cast<FwAssertArgType>(_status)
6761  );
6762 #endif
6763  _status = _logBuff.serializeFrom(seqNum);
6764  FW_ASSERT(
6765  _status == Fw::FW_SERIALIZE_OK,
6766  static_cast<FwAssertArgType>(_status)
6767  );
6768 
6769 #if FW_AMPCS_COMPATIBLE
6770  // Serialize the argument size
6771  _status = _logBuff.serializeFrom(
6772  static_cast<U8>(sizeof(U8))
6773  );
6774  FW_ASSERT(
6775  _status == Fw::FW_SERIALIZE_OK,
6776  static_cast<FwAssertArgType>(_status)
6777  );
6778 #endif
6779  _status = _logBuff.serializeFrom(conditionCode);
6780  FW_ASSERT(
6781  _status == Fw::FW_SERIALIZE_OK,
6782  static_cast<FwAssertArgType>(_status)
6783  );
6784 
6785  this->logOut_out(
6786  0,
6787  _id,
6788  _logTime,
6790  _logBuff
6791  );
6792  }
6793 
6794  // Emit the event on the text log port
6795 #if FW_ENABLE_TEXT_LOGGING
6796  if (this->isConnected_logTextOut_OutputPort(0)) {
6797 #if FW_OBJECT_NAMES == 1
6798  const char* _formatString =
6799  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " received EOF with error condition code %" PRIu8 "";
6800 #else
6801  const char* _formatString =
6802  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " received EOF with error condition code %" PRIu8 "";
6803 #endif
6804 
6805  Fw::String cfdpClassStr;
6806  cfdpClass.toString(cfdpClassStr);
6807 
6808  Fw::TextLogString _logString;
6809  (void) _logString.format(
6810  _formatString,
6811 #if FW_OBJECT_NAMES == 1
6812  this->m_objName.toChar(),
6813 #endif
6814  "RxEofWithError ",
6815  cfdpClassStr.toChar(),
6816  srcEid,
6817  seqNum,
6818  conditionCode
6819  );
6820 
6821  this->logTextOut_out(
6822  0,
6823  _id,
6824  _logTime,
6826  _logString
6827  );
6828  }
6829 #endif
6830  }
6831 
6834  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6835  U32 srcEid,
6836  U32 seqNum,
6837  U32 offset,
6838  I32 status
6839  ) const
6840  {
6841  // Get the time
6842  Fw::Time _logTime;
6843  if (this->isConnected_timeCaller_OutputPort(0)) {
6844  this->timeCaller_out(0, _logTime);
6845  }
6846 
6847  const FwEventIdType _id = this->getIdBase() + EVENTID_RXSEEKCRCFAILED;
6848 
6849  // Emit the event on the log port
6850  if (this->isConnected_logOut_OutputPort(0)) {
6851  Fw::LogBuffer _logBuff;
6853 
6854 #if FW_AMPCS_COMPATIBLE
6855  // Serialize the number of arguments
6856  _status = _logBuff.serializeFrom(static_cast<U8>(5));
6857  FW_ASSERT(
6858  _status == Fw::FW_SERIALIZE_OK,
6859  static_cast<FwAssertArgType>(_status)
6860  );
6861 #endif
6862 
6863 #if FW_AMPCS_COMPATIBLE
6864  // Serialize the argument size
6865  _status = _logBuff.serializeFrom(
6867  );
6868  FW_ASSERT(
6869  _status == Fw::FW_SERIALIZE_OK,
6870  static_cast<FwAssertArgType>(_status)
6871  );
6872 #endif
6873  _status = _logBuff.serializeFrom(cfdpClass);
6874  FW_ASSERT(
6875  _status == Fw::FW_SERIALIZE_OK,
6876  static_cast<FwAssertArgType>(_status)
6877  );
6878 
6879 #if FW_AMPCS_COMPATIBLE
6880  // Serialize the argument size
6881  _status = _logBuff.serializeFrom(
6882  static_cast<U8>(sizeof(U32))
6883  );
6884  FW_ASSERT(
6885  _status == Fw::FW_SERIALIZE_OK,
6886  static_cast<FwAssertArgType>(_status)
6887  );
6888 #endif
6889  _status = _logBuff.serializeFrom(srcEid);
6890  FW_ASSERT(
6891  _status == Fw::FW_SERIALIZE_OK,
6892  static_cast<FwAssertArgType>(_status)
6893  );
6894 
6895 #if FW_AMPCS_COMPATIBLE
6896  // Serialize the argument size
6897  _status = _logBuff.serializeFrom(
6898  static_cast<U8>(sizeof(U32))
6899  );
6900  FW_ASSERT(
6901  _status == Fw::FW_SERIALIZE_OK,
6902  static_cast<FwAssertArgType>(_status)
6903  );
6904 #endif
6905  _status = _logBuff.serializeFrom(seqNum);
6906  FW_ASSERT(
6907  _status == Fw::FW_SERIALIZE_OK,
6908  static_cast<FwAssertArgType>(_status)
6909  );
6910 
6911 #if FW_AMPCS_COMPATIBLE
6912  // Serialize the argument size
6913  _status = _logBuff.serializeFrom(
6914  static_cast<U8>(sizeof(U32))
6915  );
6916  FW_ASSERT(
6917  _status == Fw::FW_SERIALIZE_OK,
6918  static_cast<FwAssertArgType>(_status)
6919  );
6920 #endif
6921  _status = _logBuff.serializeFrom(offset);
6922  FW_ASSERT(
6923  _status == Fw::FW_SERIALIZE_OK,
6924  static_cast<FwAssertArgType>(_status)
6925  );
6926 
6927 #if FW_AMPCS_COMPATIBLE
6928  // Serialize the argument size
6929  _status = _logBuff.serializeFrom(
6930  static_cast<U8>(sizeof(I32))
6931  );
6932  FW_ASSERT(
6933  _status == Fw::FW_SERIALIZE_OK,
6934  static_cast<FwAssertArgType>(_status)
6935  );
6936 #endif
6937  _status = _logBuff.serializeFrom(status);
6938  FW_ASSERT(
6939  _status == Fw::FW_SERIALIZE_OK,
6940  static_cast<FwAssertArgType>(_status)
6941  );
6942 
6943  this->logOut_out(
6944  0,
6945  _id,
6946  _logTime,
6948  _logBuff
6949  );
6950  }
6951 
6952  // Emit the event on the text log port
6953 #if FW_ENABLE_TEXT_LOGGING
6954  if (this->isConnected_logTextOut_OutputPort(0)) {
6955 #if FW_OBJECT_NAMES == 1
6956  const char* _formatString =
6957  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek offset %" PRIu32 " during CRC calculation, error=%" PRIi32 "";
6958 #else
6959  const char* _formatString =
6960  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek offset %" PRIu32 " during CRC calculation, error=%" PRIi32 "";
6961 #endif
6962 
6963  Fw::String cfdpClassStr;
6964  cfdpClass.toString(cfdpClassStr);
6965 
6966  Fw::TextLogString _logString;
6967  (void) _logString.format(
6968  _formatString,
6969 #if FW_OBJECT_NAMES == 1
6970  this->m_objName.toChar(),
6971 #endif
6972  "RxSeekCrcFailed ",
6973  cfdpClassStr.toChar(),
6974  srcEid,
6975  seqNum,
6976  offset,
6977  status
6978  );
6979 
6980  this->logTextOut_out(
6981  0,
6982  _id,
6983  _logTime,
6985  _logString
6986  );
6987  }
6988 #endif
6989  }
6990 
6993  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6994  U32 srcEid,
6995  U32 seqNum,
6996  U32 expected,
6997  I32 actual
6998  ) const
6999  {
7000  // Get the time
7001  Fw::Time _logTime;
7002  if (this->isConnected_timeCaller_OutputPort(0)) {
7003  this->timeCaller_out(0, _logTime);
7004  }
7005 
7006  const FwEventIdType _id = this->getIdBase() + EVENTID_RXREADCRCFAILED;
7007 
7008  // Emit the event on the log port
7009  if (this->isConnected_logOut_OutputPort(0)) {
7010  Fw::LogBuffer _logBuff;
7012 
7013 #if FW_AMPCS_COMPATIBLE
7014  // Serialize the number of arguments
7015  _status = _logBuff.serializeFrom(static_cast<U8>(5));
7016  FW_ASSERT(
7017  _status == Fw::FW_SERIALIZE_OK,
7018  static_cast<FwAssertArgType>(_status)
7019  );
7020 #endif
7021 
7022 #if FW_AMPCS_COMPATIBLE
7023  // Serialize the argument size
7024  _status = _logBuff.serializeFrom(
7026  );
7027  FW_ASSERT(
7028  _status == Fw::FW_SERIALIZE_OK,
7029  static_cast<FwAssertArgType>(_status)
7030  );
7031 #endif
7032  _status = _logBuff.serializeFrom(cfdpClass);
7033  FW_ASSERT(
7034  _status == Fw::FW_SERIALIZE_OK,
7035  static_cast<FwAssertArgType>(_status)
7036  );
7037 
7038 #if FW_AMPCS_COMPATIBLE
7039  // Serialize the argument size
7040  _status = _logBuff.serializeFrom(
7041  static_cast<U8>(sizeof(U32))
7042  );
7043  FW_ASSERT(
7044  _status == Fw::FW_SERIALIZE_OK,
7045  static_cast<FwAssertArgType>(_status)
7046  );
7047 #endif
7048  _status = _logBuff.serializeFrom(srcEid);
7049  FW_ASSERT(
7050  _status == Fw::FW_SERIALIZE_OK,
7051  static_cast<FwAssertArgType>(_status)
7052  );
7053 
7054 #if FW_AMPCS_COMPATIBLE
7055  // Serialize the argument size
7056  _status = _logBuff.serializeFrom(
7057  static_cast<U8>(sizeof(U32))
7058  );
7059  FW_ASSERT(
7060  _status == Fw::FW_SERIALIZE_OK,
7061  static_cast<FwAssertArgType>(_status)
7062  );
7063 #endif
7064  _status = _logBuff.serializeFrom(seqNum);
7065  FW_ASSERT(
7066  _status == Fw::FW_SERIALIZE_OK,
7067  static_cast<FwAssertArgType>(_status)
7068  );
7069 
7070 #if FW_AMPCS_COMPATIBLE
7071  // Serialize the argument size
7072  _status = _logBuff.serializeFrom(
7073  static_cast<U8>(sizeof(U32))
7074  );
7075  FW_ASSERT(
7076  _status == Fw::FW_SERIALIZE_OK,
7077  static_cast<FwAssertArgType>(_status)
7078  );
7079 #endif
7080  _status = _logBuff.serializeFrom(expected);
7081  FW_ASSERT(
7082  _status == Fw::FW_SERIALIZE_OK,
7083  static_cast<FwAssertArgType>(_status)
7084  );
7085 
7086 #if FW_AMPCS_COMPATIBLE
7087  // Serialize the argument size
7088  _status = _logBuff.serializeFrom(
7089  static_cast<U8>(sizeof(I32))
7090  );
7091  FW_ASSERT(
7092  _status == Fw::FW_SERIALIZE_OK,
7093  static_cast<FwAssertArgType>(_status)
7094  );
7095 #endif
7096  _status = _logBuff.serializeFrom(actual);
7097  FW_ASSERT(
7098  _status == Fw::FW_SERIALIZE_OK,
7099  static_cast<FwAssertArgType>(_status)
7100  );
7101 
7102  this->logOut_out(
7103  0,
7104  _id,
7105  _logTime,
7107  _logBuff
7108  );
7109  }
7110 
7111  // Emit the event on the text log port
7112 #if FW_ENABLE_TEXT_LOGGING
7113  if (this->isConnected_logTextOut_OutputPort(0)) {
7114 #if FW_OBJECT_NAMES == 1
7115  const char* _formatString =
7116  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to read during CRC calculation: expected %" PRIu32 " bytes, got %" PRIi32 "";
7117 #else
7118  const char* _formatString =
7119  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to read during CRC calculation: expected %" PRIu32 " bytes, got %" PRIi32 "";
7120 #endif
7121 
7122  Fw::String cfdpClassStr;
7123  cfdpClass.toString(cfdpClassStr);
7124 
7125  Fw::TextLogString _logString;
7126  (void) _logString.format(
7127  _formatString,
7128 #if FW_OBJECT_NAMES == 1
7129  this->m_objName.toChar(),
7130 #endif
7131  "RxReadCrcFailed ",
7132  cfdpClassStr.toChar(),
7133  srcEid,
7134  seqNum,
7135  expected,
7136  actual
7137  );
7138 
7139  this->logTextOut_out(
7140  0,
7141  _id,
7142  _logTime,
7144  _logString
7145  );
7146  }
7147 #endif
7148  }
7149 
7152  const Svc::Ccsds::Cfdp::Class& cfdpClass,
7153  U32 srcEid,
7154  U32 seqNum,
7155  U32 mdSize,
7156  U32 eofSize
7157  ) const
7158  {
7159  // Get the time
7160  Fw::Time _logTime;
7161  if (this->isConnected_timeCaller_OutputPort(0)) {
7162  this->timeCaller_out(0, _logTime);
7163  }
7164 
7165  const FwEventIdType _id = this->getIdBase() + EVENTID_RXEOFMDSIZEMISMATCH;
7166 
7167  // Emit the event on the log port
7168  if (this->isConnected_logOut_OutputPort(0)) {
7169  Fw::LogBuffer _logBuff;
7171 
7172 #if FW_AMPCS_COMPATIBLE
7173  // Serialize the number of arguments
7174  _status = _logBuff.serializeFrom(static_cast<U8>(5));
7175  FW_ASSERT(
7176  _status == Fw::FW_SERIALIZE_OK,
7177  static_cast<FwAssertArgType>(_status)
7178  );
7179 #endif
7180 
7181 #if FW_AMPCS_COMPATIBLE
7182  // Serialize the argument size
7183  _status = _logBuff.serializeFrom(
7185  );
7186  FW_ASSERT(
7187  _status == Fw::FW_SERIALIZE_OK,
7188  static_cast<FwAssertArgType>(_status)
7189  );
7190 #endif
7191  _status = _logBuff.serializeFrom(cfdpClass);
7192  FW_ASSERT(
7193  _status == Fw::FW_SERIALIZE_OK,
7194  static_cast<FwAssertArgType>(_status)
7195  );
7196 
7197 #if FW_AMPCS_COMPATIBLE
7198  // Serialize the argument size
7199  _status = _logBuff.serializeFrom(
7200  static_cast<U8>(sizeof(U32))
7201  );
7202  FW_ASSERT(
7203  _status == Fw::FW_SERIALIZE_OK,
7204  static_cast<FwAssertArgType>(_status)
7205  );
7206 #endif
7207  _status = _logBuff.serializeFrom(srcEid);
7208  FW_ASSERT(
7209  _status == Fw::FW_SERIALIZE_OK,
7210  static_cast<FwAssertArgType>(_status)
7211  );
7212 
7213 #if FW_AMPCS_COMPATIBLE
7214  // Serialize the argument size
7215  _status = _logBuff.serializeFrom(
7216  static_cast<U8>(sizeof(U32))
7217  );
7218  FW_ASSERT(
7219  _status == Fw::FW_SERIALIZE_OK,
7220  static_cast<FwAssertArgType>(_status)
7221  );
7222 #endif
7223  _status = _logBuff.serializeFrom(seqNum);
7224  FW_ASSERT(
7225  _status == Fw::FW_SERIALIZE_OK,
7226  static_cast<FwAssertArgType>(_status)
7227  );
7228 
7229 #if FW_AMPCS_COMPATIBLE
7230  // Serialize the argument size
7231  _status = _logBuff.serializeFrom(
7232  static_cast<U8>(sizeof(U32))
7233  );
7234  FW_ASSERT(
7235  _status == Fw::FW_SERIALIZE_OK,
7236  static_cast<FwAssertArgType>(_status)
7237  );
7238 #endif
7239  _status = _logBuff.serializeFrom(mdSize);
7240  FW_ASSERT(
7241  _status == Fw::FW_SERIALIZE_OK,
7242  static_cast<FwAssertArgType>(_status)
7243  );
7244 
7245 #if FW_AMPCS_COMPATIBLE
7246  // Serialize the argument size
7247  _status = _logBuff.serializeFrom(
7248  static_cast<U8>(sizeof(U32))
7249  );
7250  FW_ASSERT(
7251  _status == Fw::FW_SERIALIZE_OK,
7252  static_cast<FwAssertArgType>(_status)
7253  );
7254 #endif
7255  _status = _logBuff.serializeFrom(eofSize);
7256  FW_ASSERT(
7257  _status == Fw::FW_SERIALIZE_OK,
7258  static_cast<FwAssertArgType>(_status)
7259  );
7260 
7261  this->logOut_out(
7262  0,
7263  _id,
7264  _logTime,
7266  _logBuff
7267  );
7268  }
7269 
7270  // Emit the event on the text log port
7271 #if FW_ENABLE_TEXT_LOGGING
7272  if (this->isConnected_logTextOut_OutputPort(0)) {
7273 #if FW_OBJECT_NAMES == 1
7274  const char* _formatString =
7275  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " EOF/metadata size mismatch: metadata=%" PRIu32 ", EOF=%" PRIu32 "";
7276 #else
7277  const char* _formatString =
7278  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " EOF/metadata size mismatch: metadata=%" PRIu32 ", EOF=%" PRIu32 "";
7279 #endif
7280 
7281  Fw::String cfdpClassStr;
7282  cfdpClass.toString(cfdpClassStr);
7283 
7284  Fw::TextLogString _logString;
7285  (void) _logString.format(
7286  _formatString,
7287 #if FW_OBJECT_NAMES == 1
7288  this->m_objName.toChar(),
7289 #endif
7290  "RxEofMdSizeMismatch ",
7291  cfdpClassStr.toChar(),
7292  srcEid,
7293  seqNum,
7294  mdSize,
7295  eofSize
7296  );
7297 
7298  this->logTextOut_out(
7299  0,
7300  _id,
7301  _logTime,
7303  _logString
7304  );
7305  }
7306 #endif
7307  }
7308 
7311  const Svc::Ccsds::Cfdp::Class& cfdpClass,
7312  U32 srcEid,
7313  U32 seqNum,
7314  const Fw::StringBase& tempFile,
7315  const Fw::StringBase& finalFile,
7316  I32 status
7317  ) const
7318  {
7319  // Get the time
7320  Fw::Time _logTime;
7321  if (this->isConnected_timeCaller_OutputPort(0)) {
7322  this->timeCaller_out(0, _logTime);
7323  }
7324 
7325  const FwEventIdType _id = this->getIdBase() + EVENTID_RXFILERENAMEFAILED;
7326 
7327  // Emit the event on the log port
7328  if (this->isConnected_logOut_OutputPort(0)) {
7329  Fw::LogBuffer _logBuff;
7331 
7332 #if FW_AMPCS_COMPATIBLE
7333  // Serialize the number of arguments
7334  _status = _logBuff.serializeFrom(static_cast<U8>(6));
7335  FW_ASSERT(
7336  _status == Fw::FW_SERIALIZE_OK,
7337  static_cast<FwAssertArgType>(_status)
7338  );
7339 #endif
7340 
7341 #if FW_AMPCS_COMPATIBLE
7342  // Serialize the argument size
7343  _status = _logBuff.serializeFrom(
7345  );
7346  FW_ASSERT(
7347  _status == Fw::FW_SERIALIZE_OK,
7348  static_cast<FwAssertArgType>(_status)
7349  );
7350 #endif
7351  _status = _logBuff.serializeFrom(cfdpClass);
7352  FW_ASSERT(
7353  _status == Fw::FW_SERIALIZE_OK,
7354  static_cast<FwAssertArgType>(_status)
7355  );
7356 
7357 #if FW_AMPCS_COMPATIBLE
7358  // Serialize the argument size
7359  _status = _logBuff.serializeFrom(
7360  static_cast<U8>(sizeof(U32))
7361  );
7362  FW_ASSERT(
7363  _status == Fw::FW_SERIALIZE_OK,
7364  static_cast<FwAssertArgType>(_status)
7365  );
7366 #endif
7367  _status = _logBuff.serializeFrom(srcEid);
7368  FW_ASSERT(
7369  _status == Fw::FW_SERIALIZE_OK,
7370  static_cast<FwAssertArgType>(_status)
7371  );
7372 
7373 #if FW_AMPCS_COMPATIBLE
7374  // Serialize the argument size
7375  _status = _logBuff.serializeFrom(
7376  static_cast<U8>(sizeof(U32))
7377  );
7378  FW_ASSERT(
7379  _status == Fw::FW_SERIALIZE_OK,
7380  static_cast<FwAssertArgType>(_status)
7381  );
7382 #endif
7383  _status = _logBuff.serializeFrom(seqNum);
7384  FW_ASSERT(
7385  _status == Fw::FW_SERIALIZE_OK,
7386  static_cast<FwAssertArgType>(_status)
7387  );
7388 
7389  _status = tempFile.serializeTo(
7390  _logBuff,
7391  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
7392  );
7393  FW_ASSERT(
7394  _status == Fw::FW_SERIALIZE_OK,
7395  static_cast<FwAssertArgType>(_status)
7396  );
7397 
7398  _status = finalFile.serializeTo(
7399  _logBuff,
7400  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
7401  );
7402  FW_ASSERT(
7403  _status == Fw::FW_SERIALIZE_OK,
7404  static_cast<FwAssertArgType>(_status)
7405  );
7406 
7407 #if FW_AMPCS_COMPATIBLE
7408  // Serialize the argument size
7409  _status = _logBuff.serializeFrom(
7410  static_cast<U8>(sizeof(I32))
7411  );
7412  FW_ASSERT(
7413  _status == Fw::FW_SERIALIZE_OK,
7414  static_cast<FwAssertArgType>(_status)
7415  );
7416 #endif
7417  _status = _logBuff.serializeFrom(status);
7418  FW_ASSERT(
7419  _status == Fw::FW_SERIALIZE_OK,
7420  static_cast<FwAssertArgType>(_status)
7421  );
7422 
7423  this->logOut_out(
7424  0,
7425  _id,
7426  _logTime,
7428  _logBuff
7429  );
7430  }
7431 
7432  // Emit the event on the text log port
7433 #if FW_ENABLE_TEXT_LOGGING
7434  if (this->isConnected_logTextOut_OutputPort(0)) {
7435 #if FW_OBJECT_NAMES == 1
7436  const char* _formatString =
7437  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to rename %s to %s, error=%" PRIi32 "";
7438 #else
7439  const char* _formatString =
7440  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to rename %s to %s, error=%" PRIi32 "";
7441 #endif
7442 
7443  Fw::String cfdpClassStr;
7444  cfdpClass.toString(cfdpClassStr);
7445 
7446  Fw::TextLogString _logString;
7447  (void) _logString.format(
7448  _formatString,
7449 #if FW_OBJECT_NAMES == 1
7450  this->m_objName.toChar(),
7451 #endif
7452  "RxFileRenameFailed ",
7453  cfdpClassStr.toChar(),
7454  srcEid,
7455  seqNum,
7456  tempFile.toChar(),
7457  finalFile.toChar(),
7458  status
7459  );
7460 
7461  this->logTextOut_out(
7462  0,
7463  _id,
7464  _logTime,
7466  _logString
7467  );
7468  }
7469 #endif
7470  }
7471 
7474  const Svc::Ccsds::Cfdp::Class& cfdpClass,
7475  U32 srcEid,
7476  U32 seqNum,
7477  const Fw::StringBase& filename,
7478  I32 status
7479  ) const
7480  {
7481  // Get the time
7482  Fw::Time _logTime;
7483  if (this->isConnected_timeCaller_OutputPort(0)) {
7484  this->timeCaller_out(0, _logTime);
7485  }
7486 
7487  const FwEventIdType _id = this->getIdBase() + EVENTID_RXFILEREOPENFAILED;
7488 
7489  // Emit the event on the log port
7490  if (this->isConnected_logOut_OutputPort(0)) {
7491  Fw::LogBuffer _logBuff;
7493 
7494 #if FW_AMPCS_COMPATIBLE
7495  // Serialize the number of arguments
7496  _status = _logBuff.serializeFrom(static_cast<U8>(5));
7497  FW_ASSERT(
7498  _status == Fw::FW_SERIALIZE_OK,
7499  static_cast<FwAssertArgType>(_status)
7500  );
7501 #endif
7502 
7503 #if FW_AMPCS_COMPATIBLE
7504  // Serialize the argument size
7505  _status = _logBuff.serializeFrom(
7507  );
7508  FW_ASSERT(
7509  _status == Fw::FW_SERIALIZE_OK,
7510  static_cast<FwAssertArgType>(_status)
7511  );
7512 #endif
7513  _status = _logBuff.serializeFrom(cfdpClass);
7514  FW_ASSERT(
7515  _status == Fw::FW_SERIALIZE_OK,
7516  static_cast<FwAssertArgType>(_status)
7517  );
7518 
7519 #if FW_AMPCS_COMPATIBLE
7520  // Serialize the argument size
7521  _status = _logBuff.serializeFrom(
7522  static_cast<U8>(sizeof(U32))
7523  );
7524  FW_ASSERT(
7525  _status == Fw::FW_SERIALIZE_OK,
7526  static_cast<FwAssertArgType>(_status)
7527  );
7528 #endif
7529  _status = _logBuff.serializeFrom(srcEid);
7530  FW_ASSERT(
7531  _status == Fw::FW_SERIALIZE_OK,
7532  static_cast<FwAssertArgType>(_status)
7533  );
7534 
7535 #if FW_AMPCS_COMPATIBLE
7536  // Serialize the argument size
7537  _status = _logBuff.serializeFrom(
7538  static_cast<U8>(sizeof(U32))
7539  );
7540  FW_ASSERT(
7541  _status == Fw::FW_SERIALIZE_OK,
7542  static_cast<FwAssertArgType>(_status)
7543  );
7544 #endif
7545  _status = _logBuff.serializeFrom(seqNum);
7546  FW_ASSERT(
7547  _status == Fw::FW_SERIALIZE_OK,
7548  static_cast<FwAssertArgType>(_status)
7549  );
7550 
7551  _status = filename.serializeTo(
7552  _logBuff,
7553  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
7554  );
7555  FW_ASSERT(
7556  _status == Fw::FW_SERIALIZE_OK,
7557  static_cast<FwAssertArgType>(_status)
7558  );
7559 
7560 #if FW_AMPCS_COMPATIBLE
7561  // Serialize the argument size
7562  _status = _logBuff.serializeFrom(
7563  static_cast<U8>(sizeof(I32))
7564  );
7565  FW_ASSERT(
7566  _status == Fw::FW_SERIALIZE_OK,
7567  static_cast<FwAssertArgType>(_status)
7568  );
7569 #endif
7570  _status = _logBuff.serializeFrom(status);
7571  FW_ASSERT(
7572  _status == Fw::FW_SERIALIZE_OK,
7573  static_cast<FwAssertArgType>(_status)
7574  );
7575 
7576  this->logOut_out(
7577  0,
7578  _id,
7579  _logTime,
7581  _logBuff
7582  );
7583  }
7584 
7585  // Emit the event on the text log port
7586 #if FW_ENABLE_TEXT_LOGGING
7587  if (this->isConnected_logTextOut_OutputPort(0)) {
7588 #if FW_OBJECT_NAMES == 1
7589  const char* _formatString =
7590  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to reopen file %s after rename, error=%" PRIi32 "";
7591 #else
7592  const char* _formatString =
7593  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to reopen file %s after rename, error=%" PRIi32 "";
7594 #endif
7595 
7596  Fw::String cfdpClassStr;
7597  cfdpClass.toString(cfdpClassStr);
7598 
7599  Fw::TextLogString _logString;
7600  (void) _logString.format(
7601  _formatString,
7602 #if FW_OBJECT_NAMES == 1
7603  this->m_objName.toChar(),
7604 #endif
7605  "RxFileReopenFailed ",
7606  cfdpClassStr.toChar(),
7607  srcEid,
7608  seqNum,
7609  filename.toChar(),
7610  status
7611  );
7612 
7613  this->logTextOut_out(
7614  0,
7615  _id,
7616  _logTime,
7618  _logString
7619  );
7620  }
7621 #endif
7622  }
7623 
7626  const Svc::Ccsds::Cfdp::Class& cfdpClass,
7627  U32 srcEid,
7628  U32 seqNum
7629  ) const
7630  {
7631  // Get the time
7632  Fw::Time _logTime;
7633  if (this->isConnected_timeCaller_OutputPort(0)) {
7634  this->timeCaller_out(0, _logTime);
7635  }
7636 
7637  const FwEventIdType _id = this->getIdBase() + EVENTID_RXINACTIVITYTIMEOUT;
7638 
7639  // Emit the event on the log port
7640  if (this->isConnected_logOut_OutputPort(0)) {
7641  Fw::LogBuffer _logBuff;
7643 
7644 #if FW_AMPCS_COMPATIBLE
7645  // Serialize the number of arguments
7646  _status = _logBuff.serializeFrom(static_cast<U8>(3));
7647  FW_ASSERT(
7648  _status == Fw::FW_SERIALIZE_OK,
7649  static_cast<FwAssertArgType>(_status)
7650  );
7651 #endif
7652 
7653 #if FW_AMPCS_COMPATIBLE
7654  // Serialize the argument size
7655  _status = _logBuff.serializeFrom(
7657  );
7658  FW_ASSERT(
7659  _status == Fw::FW_SERIALIZE_OK,
7660  static_cast<FwAssertArgType>(_status)
7661  );
7662 #endif
7663  _status = _logBuff.serializeFrom(cfdpClass);
7664  FW_ASSERT(
7665  _status == Fw::FW_SERIALIZE_OK,
7666  static_cast<FwAssertArgType>(_status)
7667  );
7668 
7669 #if FW_AMPCS_COMPATIBLE
7670  // Serialize the argument size
7671  _status = _logBuff.serializeFrom(
7672  static_cast<U8>(sizeof(U32))
7673  );
7674  FW_ASSERT(
7675  _status == Fw::FW_SERIALIZE_OK,
7676  static_cast<FwAssertArgType>(_status)
7677  );
7678 #endif
7679  _status = _logBuff.serializeFrom(srcEid);
7680  FW_ASSERT(
7681  _status == Fw::FW_SERIALIZE_OK,
7682  static_cast<FwAssertArgType>(_status)
7683  );
7684 
7685 #if FW_AMPCS_COMPATIBLE
7686  // Serialize the argument size
7687  _status = _logBuff.serializeFrom(
7688  static_cast<U8>(sizeof(U32))
7689  );
7690  FW_ASSERT(
7691  _status == Fw::FW_SERIALIZE_OK,
7692  static_cast<FwAssertArgType>(_status)
7693  );
7694 #endif
7695  _status = _logBuff.serializeFrom(seqNum);
7696  FW_ASSERT(
7697  _status == Fw::FW_SERIALIZE_OK,
7698  static_cast<FwAssertArgType>(_status)
7699  );
7700 
7701  this->logOut_out(
7702  0,
7703  _id,
7704  _logTime,
7706  _logBuff
7707  );
7708  }
7709 
7710  // Emit the event on the text log port
7711 #if FW_ENABLE_TEXT_LOGGING
7712  if (this->isConnected_logTextOut_OutputPort(0)) {
7713 #if FW_OBJECT_NAMES == 1
7714  const char* _formatString =
7715  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " inactivity timer expired";
7716 #else
7717  const char* _formatString =
7718  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " inactivity timer expired";
7719 #endif
7720 
7721  Fw::String cfdpClassStr;
7722  cfdpClass.toString(cfdpClassStr);
7723 
7724  Fw::TextLogString _logString;
7725  (void) _logString.format(
7726  _formatString,
7727 #if FW_OBJECT_NAMES == 1
7728  this->m_objName.toChar(),
7729 #endif
7730  "RxInactivityTimeout ",
7731  cfdpClassStr.toChar(),
7732  srcEid,
7733  seqNum
7734  );
7735 
7736  this->logTextOut_out(
7737  0,
7738  _id,
7739  _logTime,
7741  _logString
7742  );
7743  }
7744 #endif
7745  }
7746 
7749  const Svc::Ccsds::Cfdp::Class& cfdpClass,
7750  U32 srcEid,
7751  U32 seqNum,
7752  U8 directiveCode,
7753  U8 substate
7754  ) const
7755  {
7756  // Get the time
7757  Fw::Time _logTime;
7758  if (this->isConnected_timeCaller_OutputPort(0)) {
7759  this->timeCaller_out(0, _logTime);
7760  }
7761 
7763 
7764  // Emit the event on the log port
7765  if (this->isConnected_logOut_OutputPort(0)) {
7766  Fw::LogBuffer _logBuff;
7768 
7769 #if FW_AMPCS_COMPATIBLE
7770  // Serialize the number of arguments
7771  _status = _logBuff.serializeFrom(static_cast<U8>(5));
7772  FW_ASSERT(
7773  _status == Fw::FW_SERIALIZE_OK,
7774  static_cast<FwAssertArgType>(_status)
7775  );
7776 #endif
7777 
7778 #if FW_AMPCS_COMPATIBLE
7779  // Serialize the argument size
7780  _status = _logBuff.serializeFrom(
7782  );
7783  FW_ASSERT(
7784  _status == Fw::FW_SERIALIZE_OK,
7785  static_cast<FwAssertArgType>(_status)
7786  );
7787 #endif
7788  _status = _logBuff.serializeFrom(cfdpClass);
7789  FW_ASSERT(
7790  _status == Fw::FW_SERIALIZE_OK,
7791  static_cast<FwAssertArgType>(_status)
7792  );
7793 
7794 #if FW_AMPCS_COMPATIBLE
7795  // Serialize the argument size
7796  _status = _logBuff.serializeFrom(
7797  static_cast<U8>(sizeof(U32))
7798  );
7799  FW_ASSERT(
7800  _status == Fw::FW_SERIALIZE_OK,
7801  static_cast<FwAssertArgType>(_status)
7802  );
7803 #endif
7804  _status = _logBuff.serializeFrom(srcEid);
7805  FW_ASSERT(
7806  _status == Fw::FW_SERIALIZE_OK,
7807  static_cast<FwAssertArgType>(_status)
7808  );
7809 
7810 #if FW_AMPCS_COMPATIBLE
7811  // Serialize the argument size
7812  _status = _logBuff.serializeFrom(
7813  static_cast<U8>(sizeof(U32))
7814  );
7815  FW_ASSERT(
7816  _status == Fw::FW_SERIALIZE_OK,
7817  static_cast<FwAssertArgType>(_status)
7818  );
7819 #endif
7820  _status = _logBuff.serializeFrom(seqNum);
7821  FW_ASSERT(
7822  _status == Fw::FW_SERIALIZE_OK,
7823  static_cast<FwAssertArgType>(_status)
7824  );
7825 
7826 #if FW_AMPCS_COMPATIBLE
7827  // Serialize the argument size
7828  _status = _logBuff.serializeFrom(
7829  static_cast<U8>(sizeof(U8))
7830  );
7831  FW_ASSERT(
7832  _status == Fw::FW_SERIALIZE_OK,
7833  static_cast<FwAssertArgType>(_status)
7834  );
7835 #endif
7836  _status = _logBuff.serializeFrom(directiveCode);
7837  FW_ASSERT(
7838  _status == Fw::FW_SERIALIZE_OK,
7839  static_cast<FwAssertArgType>(_status)
7840  );
7841 
7842 #if FW_AMPCS_COMPATIBLE
7843  // Serialize the argument size
7844  _status = _logBuff.serializeFrom(
7845  static_cast<U8>(sizeof(U8))
7846  );
7847  FW_ASSERT(
7848  _status == Fw::FW_SERIALIZE_OK,
7849  static_cast<FwAssertArgType>(_status)
7850  );
7851 #endif
7852  _status = _logBuff.serializeFrom(substate);
7853  FW_ASSERT(
7854  _status == Fw::FW_SERIALIZE_OK,
7855  static_cast<FwAssertArgType>(_status)
7856  );
7857 
7858  this->logOut_out(
7859  0,
7860  _id,
7861  _logTime,
7863  _logBuff
7864  );
7865  }
7866 
7867  // Emit the event on the text log port
7868 #if FW_ENABLE_TEXT_LOGGING
7869  if (this->isConnected_logTextOut_OutputPort(0)) {
7870 #if FW_OBJECT_NAMES == 1
7871  const char* _formatString =
7872  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid directive code %" PRIu8 " for substate %" PRIu8 "";
7873 #else
7874  const char* _formatString =
7875  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid directive code %" PRIu8 " for substate %" PRIu8 "";
7876 #endif
7877 
7878  Fw::String cfdpClassStr;
7879  cfdpClass.toString(cfdpClassStr);
7880 
7881  Fw::TextLogString _logString;
7882  (void) _logString.format(
7883  _formatString,
7884 #if FW_OBJECT_NAMES == 1
7885  this->m_objName.toChar(),
7886 #endif
7887  "RxInvalidDirectiveCode ",
7888  cfdpClassStr.toChar(),
7889  srcEid,
7890  seqNum,
7891  directiveCode,
7892  substate
7893  );
7894 
7895  this->logTextOut_out(
7896  0,
7897  _id,
7898  _logTime,
7900  _logString
7901  );
7902  }
7903 #endif
7904  }
7905 
7908  const Svc::Ccsds::Cfdp::Class& cfdpClass,
7909  U32 srcEid,
7910  U32 seqNum
7911  ) const
7912  {
7913  // Get the time
7914  Fw::Time _logTime;
7915  if (this->isConnected_timeCaller_OutputPort(0)) {
7916  this->timeCaller_out(0, _logTime);
7917  }
7918 
7919  const FwEventIdType _id = this->getIdBase() + EVENTID_TXACKLIMITREACHED;
7920 
7921  // Emit the event on the log port
7922  if (this->isConnected_logOut_OutputPort(0)) {
7923  Fw::LogBuffer _logBuff;
7925 
7926 #if FW_AMPCS_COMPATIBLE
7927  // Serialize the number of arguments
7928  _status = _logBuff.serializeFrom(static_cast<U8>(3));
7929  FW_ASSERT(
7930  _status == Fw::FW_SERIALIZE_OK,
7931  static_cast<FwAssertArgType>(_status)
7932  );
7933 #endif
7934 
7935 #if FW_AMPCS_COMPATIBLE
7936  // Serialize the argument size
7937  _status = _logBuff.serializeFrom(
7939  );
7940  FW_ASSERT(
7941  _status == Fw::FW_SERIALIZE_OK,
7942  static_cast<FwAssertArgType>(_status)
7943  );
7944 #endif
7945  _status = _logBuff.serializeFrom(cfdpClass);
7946  FW_ASSERT(
7947  _status == Fw::FW_SERIALIZE_OK,
7948  static_cast<FwAssertArgType>(_status)
7949  );
7950 
7951 #if FW_AMPCS_COMPATIBLE
7952  // Serialize the argument size
7953  _status = _logBuff.serializeFrom(
7954  static_cast<U8>(sizeof(U32))
7955  );
7956  FW_ASSERT(
7957  _status == Fw::FW_SERIALIZE_OK,
7958  static_cast<FwAssertArgType>(_status)
7959  );
7960 #endif
7961  _status = _logBuff.serializeFrom(srcEid);
7962  FW_ASSERT(
7963  _status == Fw::FW_SERIALIZE_OK,
7964  static_cast<FwAssertArgType>(_status)
7965  );
7966 
7967 #if FW_AMPCS_COMPATIBLE
7968  // Serialize the argument size
7969  _status = _logBuff.serializeFrom(
7970  static_cast<U8>(sizeof(U32))
7971  );
7972  FW_ASSERT(
7973  _status == Fw::FW_SERIALIZE_OK,
7974  static_cast<FwAssertArgType>(_status)
7975  );
7976 #endif
7977  _status = _logBuff.serializeFrom(seqNum);
7978  FW_ASSERT(
7979  _status == Fw::FW_SERIALIZE_OK,
7980  static_cast<FwAssertArgType>(_status)
7981  );
7982 
7983  this->logOut_out(
7984  0,
7985  _id,
7986  _logTime,
7988  _logBuff
7989  );
7990  }
7991 
7992  // Emit the event on the text log port
7993 #if FW_ENABLE_TEXT_LOGGING
7994  if (this->isConnected_logTextOut_OutputPort(0)) {
7995 #if FW_OBJECT_NAMES == 1
7996  const char* _formatString =
7997  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " ACK limit reached, no eof-ack received";
7998 #else
7999  const char* _formatString =
8000  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " ACK limit reached, no eof-ack received";
8001 #endif
8002 
8003  Fw::String cfdpClassStr;
8004  cfdpClass.toString(cfdpClassStr);
8005 
8006  Fw::TextLogString _logString;
8007  (void) _logString.format(
8008  _formatString,
8009 #if FW_OBJECT_NAMES == 1
8010  this->m_objName.toChar(),
8011 #endif
8012  "TxAckLimitReached ",
8013  cfdpClassStr.toChar(),
8014  srcEid,
8015  seqNum
8016  );
8017 
8018  this->logTextOut_out(
8019  0,
8020  _id,
8021  _logTime,
8023  _logString
8024  );
8025  }
8026 #endif
8027  }
8028 
8031  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8032  U32 srcEid,
8033  U32 seqNum
8034  ) const
8035  {
8036  // Get the time
8037  Fw::Time _logTime;
8038  if (this->isConnected_timeCaller_OutputPort(0)) {
8039  this->timeCaller_out(0, _logTime);
8040  }
8041 
8042  const FwEventIdType _id = this->getIdBase() + EVENTID_TXINACTIVITYTIMEOUT;
8043 
8044  // Emit the event on the log port
8045  if (this->isConnected_logOut_OutputPort(0)) {
8046  Fw::LogBuffer _logBuff;
8048 
8049 #if FW_AMPCS_COMPATIBLE
8050  // Serialize the number of arguments
8051  _status = _logBuff.serializeFrom(static_cast<U8>(3));
8052  FW_ASSERT(
8053  _status == Fw::FW_SERIALIZE_OK,
8054  static_cast<FwAssertArgType>(_status)
8055  );
8056 #endif
8057 
8058 #if FW_AMPCS_COMPATIBLE
8059  // Serialize the argument size
8060  _status = _logBuff.serializeFrom(
8062  );
8063  FW_ASSERT(
8064  _status == Fw::FW_SERIALIZE_OK,
8065  static_cast<FwAssertArgType>(_status)
8066  );
8067 #endif
8068  _status = _logBuff.serializeFrom(cfdpClass);
8069  FW_ASSERT(
8070  _status == Fw::FW_SERIALIZE_OK,
8071  static_cast<FwAssertArgType>(_status)
8072  );
8073 
8074 #if FW_AMPCS_COMPATIBLE
8075  // Serialize the argument size
8076  _status = _logBuff.serializeFrom(
8077  static_cast<U8>(sizeof(U32))
8078  );
8079  FW_ASSERT(
8080  _status == Fw::FW_SERIALIZE_OK,
8081  static_cast<FwAssertArgType>(_status)
8082  );
8083 #endif
8084  _status = _logBuff.serializeFrom(srcEid);
8085  FW_ASSERT(
8086  _status == Fw::FW_SERIALIZE_OK,
8087  static_cast<FwAssertArgType>(_status)
8088  );
8089 
8090 #if FW_AMPCS_COMPATIBLE
8091  // Serialize the argument size
8092  _status = _logBuff.serializeFrom(
8093  static_cast<U8>(sizeof(U32))
8094  );
8095  FW_ASSERT(
8096  _status == Fw::FW_SERIALIZE_OK,
8097  static_cast<FwAssertArgType>(_status)
8098  );
8099 #endif
8100  _status = _logBuff.serializeFrom(seqNum);
8101  FW_ASSERT(
8102  _status == Fw::FW_SERIALIZE_OK,
8103  static_cast<FwAssertArgType>(_status)
8104  );
8105 
8106  this->logOut_out(
8107  0,
8108  _id,
8109  _logTime,
8111  _logBuff
8112  );
8113  }
8114 
8115  // Emit the event on the text log port
8116 #if FW_ENABLE_TEXT_LOGGING
8117  if (this->isConnected_logTextOut_OutputPort(0)) {
8118 #if FW_OBJECT_NAMES == 1
8119  const char* _formatString =
8120  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " inactivity timer expired";
8121 #else
8122  const char* _formatString =
8123  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " inactivity timer expired";
8124 #endif
8125 
8126  Fw::String cfdpClassStr;
8127  cfdpClass.toString(cfdpClassStr);
8128 
8129  Fw::TextLogString _logString;
8130  (void) _logString.format(
8131  _formatString,
8132 #if FW_OBJECT_NAMES == 1
8133  this->m_objName.toChar(),
8134 #endif
8135  "TxInactivityTimeout ",
8136  cfdpClassStr.toChar(),
8137  srcEid,
8138  seqNum
8139  );
8140 
8141  this->logTextOut_out(
8142  0,
8143  _id,
8144  _logTime,
8146  _logString
8147  );
8148  }
8149 #endif
8150  }
8151 
8154  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8155  U32 srcEid,
8156  U32 seqNum,
8157  const Fw::StringBase& filename
8158  ) const
8159  {
8160  // Get the time
8161  Fw::Time _logTime;
8162  if (this->isConnected_timeCaller_OutputPort(0)) {
8163  this->timeCaller_out(0, _logTime);
8164  }
8165 
8166  const FwEventIdType _id = this->getIdBase() + EVENTID_TXZEROLENGTHFILE;
8167 
8168  // Emit the event on the log port
8169  if (this->isConnected_logOut_OutputPort(0)) {
8170  Fw::LogBuffer _logBuff;
8172 
8173 #if FW_AMPCS_COMPATIBLE
8174  // Serialize the number of arguments
8175  _status = _logBuff.serializeFrom(static_cast<U8>(4));
8176  FW_ASSERT(
8177  _status == Fw::FW_SERIALIZE_OK,
8178  static_cast<FwAssertArgType>(_status)
8179  );
8180 #endif
8181 
8182 #if FW_AMPCS_COMPATIBLE
8183  // Serialize the argument size
8184  _status = _logBuff.serializeFrom(
8186  );
8187  FW_ASSERT(
8188  _status == Fw::FW_SERIALIZE_OK,
8189  static_cast<FwAssertArgType>(_status)
8190  );
8191 #endif
8192  _status = _logBuff.serializeFrom(cfdpClass);
8193  FW_ASSERT(
8194  _status == Fw::FW_SERIALIZE_OK,
8195  static_cast<FwAssertArgType>(_status)
8196  );
8197 
8198 #if FW_AMPCS_COMPATIBLE
8199  // Serialize the argument size
8200  _status = _logBuff.serializeFrom(
8201  static_cast<U8>(sizeof(U32))
8202  );
8203  FW_ASSERT(
8204  _status == Fw::FW_SERIALIZE_OK,
8205  static_cast<FwAssertArgType>(_status)
8206  );
8207 #endif
8208  _status = _logBuff.serializeFrom(srcEid);
8209  FW_ASSERT(
8210  _status == Fw::FW_SERIALIZE_OK,
8211  static_cast<FwAssertArgType>(_status)
8212  );
8213 
8214 #if FW_AMPCS_COMPATIBLE
8215  // Serialize the argument size
8216  _status = _logBuff.serializeFrom(
8217  static_cast<U8>(sizeof(U32))
8218  );
8219  FW_ASSERT(
8220  _status == Fw::FW_SERIALIZE_OK,
8221  static_cast<FwAssertArgType>(_status)
8222  );
8223 #endif
8224  _status = _logBuff.serializeFrom(seqNum);
8225  FW_ASSERT(
8226  _status == Fw::FW_SERIALIZE_OK,
8227  static_cast<FwAssertArgType>(_status)
8228  );
8229 
8230  _status = filename.serializeTo(
8231  _logBuff,
8232  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
8233  );
8234  FW_ASSERT(
8235  _status == Fw::FW_SERIALIZE_OK,
8236  static_cast<FwAssertArgType>(_status)
8237  );
8238 
8239  this->logOut_out(
8240  0,
8241  _id,
8242  _logTime,
8244  _logBuff
8245  );
8246  }
8247 
8248  // Emit the event on the text log port
8249 #if FW_ENABLE_TEXT_LOGGING
8250  if (this->isConnected_logTextOut_OutputPort(0)) {
8251 #if FW_OBJECT_NAMES == 1
8252  const char* _formatString =
8253  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " cannot transfer zero-length file %s";
8254 #else
8255  const char* _formatString =
8256  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " cannot transfer zero-length file %s";
8257 #endif
8258 
8259  Fw::String cfdpClassStr;
8260  cfdpClass.toString(cfdpClassStr);
8261 
8262  Fw::TextLogString _logString;
8263  (void) _logString.format(
8264  _formatString,
8265 #if FW_OBJECT_NAMES == 1
8266  this->m_objName.toChar(),
8267 #endif
8268  "TxZeroLengthFile ",
8269  cfdpClassStr.toChar(),
8270  srcEid,
8271  seqNum,
8272  filename.toChar()
8273  );
8274 
8275  this->logTextOut_out(
8276  0,
8277  _id,
8278  _logTime,
8280  _logString
8281  );
8282  }
8283 #endif
8284  }
8285 
8288  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8289  U32 srcEid,
8290  U32 seqNum,
8291  const Fw::StringBase& filename,
8292  I32 status
8293  ) const
8294  {
8295  // Get the time
8296  Fw::Time _logTime;
8297  if (this->isConnected_timeCaller_OutputPort(0)) {
8298  this->timeCaller_out(0, _logTime);
8299  }
8300 
8301  const FwEventIdType _id = this->getIdBase() + EVENTID_TXFILEOPENFAILED;
8302 
8303  // Emit the event on the log port
8304  if (this->isConnected_logOut_OutputPort(0)) {
8305  Fw::LogBuffer _logBuff;
8307 
8308 #if FW_AMPCS_COMPATIBLE
8309  // Serialize the number of arguments
8310  _status = _logBuff.serializeFrom(static_cast<U8>(5));
8311  FW_ASSERT(
8312  _status == Fw::FW_SERIALIZE_OK,
8313  static_cast<FwAssertArgType>(_status)
8314  );
8315 #endif
8316 
8317 #if FW_AMPCS_COMPATIBLE
8318  // Serialize the argument size
8319  _status = _logBuff.serializeFrom(
8321  );
8322  FW_ASSERT(
8323  _status == Fw::FW_SERIALIZE_OK,
8324  static_cast<FwAssertArgType>(_status)
8325  );
8326 #endif
8327  _status = _logBuff.serializeFrom(cfdpClass);
8328  FW_ASSERT(
8329  _status == Fw::FW_SERIALIZE_OK,
8330  static_cast<FwAssertArgType>(_status)
8331  );
8332 
8333 #if FW_AMPCS_COMPATIBLE
8334  // Serialize the argument size
8335  _status = _logBuff.serializeFrom(
8336  static_cast<U8>(sizeof(U32))
8337  );
8338  FW_ASSERT(
8339  _status == Fw::FW_SERIALIZE_OK,
8340  static_cast<FwAssertArgType>(_status)
8341  );
8342 #endif
8343  _status = _logBuff.serializeFrom(srcEid);
8344  FW_ASSERT(
8345  _status == Fw::FW_SERIALIZE_OK,
8346  static_cast<FwAssertArgType>(_status)
8347  );
8348 
8349 #if FW_AMPCS_COMPATIBLE
8350  // Serialize the argument size
8351  _status = _logBuff.serializeFrom(
8352  static_cast<U8>(sizeof(U32))
8353  );
8354  FW_ASSERT(
8355  _status == Fw::FW_SERIALIZE_OK,
8356  static_cast<FwAssertArgType>(_status)
8357  );
8358 #endif
8359  _status = _logBuff.serializeFrom(seqNum);
8360  FW_ASSERT(
8361  _status == Fw::FW_SERIALIZE_OK,
8362  static_cast<FwAssertArgType>(_status)
8363  );
8364 
8365  _status = filename.serializeTo(
8366  _logBuff,
8367  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
8368  );
8369  FW_ASSERT(
8370  _status == Fw::FW_SERIALIZE_OK,
8371  static_cast<FwAssertArgType>(_status)
8372  );
8373 
8374 #if FW_AMPCS_COMPATIBLE
8375  // Serialize the argument size
8376  _status = _logBuff.serializeFrom(
8377  static_cast<U8>(sizeof(I32))
8378  );
8379  FW_ASSERT(
8380  _status == Fw::FW_SERIALIZE_OK,
8381  static_cast<FwAssertArgType>(_status)
8382  );
8383 #endif
8384  _status = _logBuff.serializeFrom(status);
8385  FW_ASSERT(
8386  _status == Fw::FW_SERIALIZE_OK,
8387  static_cast<FwAssertArgType>(_status)
8388  );
8389 
8390  this->logOut_out(
8391  0,
8392  _id,
8393  _logTime,
8395  _logBuff
8396  );
8397  }
8398 
8399  // Emit the event on the text log port
8400 #if FW_ENABLE_TEXT_LOGGING
8401  if (this->isConnected_logTextOut_OutputPort(0)) {
8402 #if FW_OBJECT_NAMES == 1
8403  const char* _formatString =
8404  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to open file %s, error=%" PRIi32 "";
8405 #else
8406  const char* _formatString =
8407  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to open file %s, error=%" PRIi32 "";
8408 #endif
8409 
8410  Fw::String cfdpClassStr;
8411  cfdpClass.toString(cfdpClassStr);
8412 
8413  Fw::TextLogString _logString;
8414  (void) _logString.format(
8415  _formatString,
8416 #if FW_OBJECT_NAMES == 1
8417  this->m_objName.toChar(),
8418 #endif
8419  "TxFileOpenFailed ",
8420  cfdpClassStr.toChar(),
8421  srcEid,
8422  seqNum,
8423  filename.toChar(),
8424  status
8425  );
8426 
8427  this->logTextOut_out(
8428  0,
8429  _id,
8430  _logTime,
8432  _logString
8433  );
8434  }
8435 #endif
8436  }
8437 
8440  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8441  U32 srcEid,
8442  U32 seqNum,
8443  I32 status
8444  ) const
8445  {
8446  // Get the time
8447  Fw::Time _logTime;
8448  if (this->isConnected_timeCaller_OutputPort(0)) {
8449  this->timeCaller_out(0, _logTime);
8450  }
8451 
8452  const FwEventIdType _id = this->getIdBase() + EVENTID_TXFILESEEKFAILED;
8453 
8454  // Emit the event on the log port
8455  if (this->isConnected_logOut_OutputPort(0)) {
8456  Fw::LogBuffer _logBuff;
8458 
8459 #if FW_AMPCS_COMPATIBLE
8460  // Serialize the number of arguments
8461  _status = _logBuff.serializeFrom(static_cast<U8>(4));
8462  FW_ASSERT(
8463  _status == Fw::FW_SERIALIZE_OK,
8464  static_cast<FwAssertArgType>(_status)
8465  );
8466 #endif
8467 
8468 #if FW_AMPCS_COMPATIBLE
8469  // Serialize the argument size
8470  _status = _logBuff.serializeFrom(
8472  );
8473  FW_ASSERT(
8474  _status == Fw::FW_SERIALIZE_OK,
8475  static_cast<FwAssertArgType>(_status)
8476  );
8477 #endif
8478  _status = _logBuff.serializeFrom(cfdpClass);
8479  FW_ASSERT(
8480  _status == Fw::FW_SERIALIZE_OK,
8481  static_cast<FwAssertArgType>(_status)
8482  );
8483 
8484 #if FW_AMPCS_COMPATIBLE
8485  // Serialize the argument size
8486  _status = _logBuff.serializeFrom(
8487  static_cast<U8>(sizeof(U32))
8488  );
8489  FW_ASSERT(
8490  _status == Fw::FW_SERIALIZE_OK,
8491  static_cast<FwAssertArgType>(_status)
8492  );
8493 #endif
8494  _status = _logBuff.serializeFrom(srcEid);
8495  FW_ASSERT(
8496  _status == Fw::FW_SERIALIZE_OK,
8497  static_cast<FwAssertArgType>(_status)
8498  );
8499 
8500 #if FW_AMPCS_COMPATIBLE
8501  // Serialize the argument size
8502  _status = _logBuff.serializeFrom(
8503  static_cast<U8>(sizeof(U32))
8504  );
8505  FW_ASSERT(
8506  _status == Fw::FW_SERIALIZE_OK,
8507  static_cast<FwAssertArgType>(_status)
8508  );
8509 #endif
8510  _status = _logBuff.serializeFrom(seqNum);
8511  FW_ASSERT(
8512  _status == Fw::FW_SERIALIZE_OK,
8513  static_cast<FwAssertArgType>(_status)
8514  );
8515 
8516 #if FW_AMPCS_COMPATIBLE
8517  // Serialize the argument size
8518  _status = _logBuff.serializeFrom(
8519  static_cast<U8>(sizeof(I32))
8520  );
8521  FW_ASSERT(
8522  _status == Fw::FW_SERIALIZE_OK,
8523  static_cast<FwAssertArgType>(_status)
8524  );
8525 #endif
8526  _status = _logBuff.serializeFrom(status);
8527  FW_ASSERT(
8528  _status == Fw::FW_SERIALIZE_OK,
8529  static_cast<FwAssertArgType>(_status)
8530  );
8531 
8532  this->logOut_out(
8533  0,
8534  _id,
8535  _logTime,
8537  _logBuff
8538  );
8539  }
8540 
8541  // Emit the event on the text log port
8542 #if FW_ENABLE_TEXT_LOGGING
8543  if (this->isConnected_logTextOut_OutputPort(0)) {
8544 #if FW_OBJECT_NAMES == 1
8545  const char* _formatString =
8546  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek to beginning of file, error=%" PRIi32 "";
8547 #else
8548  const char* _formatString =
8549  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek to beginning of file, error=%" PRIi32 "";
8550 #endif
8551 
8552  Fw::String cfdpClassStr;
8553  cfdpClass.toString(cfdpClassStr);
8554 
8555  Fw::TextLogString _logString;
8556  (void) _logString.format(
8557  _formatString,
8558 #if FW_OBJECT_NAMES == 1
8559  this->m_objName.toChar(),
8560 #endif
8561  "TxFileSeekFailed ",
8562  cfdpClassStr.toChar(),
8563  srcEid,
8564  seqNum,
8565  status
8566  );
8567 
8568  this->logTextOut_out(
8569  0,
8570  _id,
8571  _logTime,
8573  _logString
8574  );
8575  }
8576 #endif
8577  }
8578 
8581  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8582  U32 srcEid,
8583  U32 seqNum
8584  ) const
8585  {
8586  // Get the time
8587  Fw::Time _logTime;
8588  if (this->isConnected_timeCaller_OutputPort(0)) {
8589  this->timeCaller_out(0, _logTime);
8590  }
8591 
8593 
8594  // Emit the event on the log port
8595  if (this->isConnected_logOut_OutputPort(0)) {
8596  Fw::LogBuffer _logBuff;
8598 
8599 #if FW_AMPCS_COMPATIBLE
8600  // Serialize the number of arguments
8601  _status = _logBuff.serializeFrom(static_cast<U8>(3));
8602  FW_ASSERT(
8603  _status == Fw::FW_SERIALIZE_OK,
8604  static_cast<FwAssertArgType>(_status)
8605  );
8606 #endif
8607 
8608 #if FW_AMPCS_COMPATIBLE
8609  // Serialize the argument size
8610  _status = _logBuff.serializeFrom(
8612  );
8613  FW_ASSERT(
8614  _status == Fw::FW_SERIALIZE_OK,
8615  static_cast<FwAssertArgType>(_status)
8616  );
8617 #endif
8618  _status = _logBuff.serializeFrom(cfdpClass);
8619  FW_ASSERT(
8620  _status == Fw::FW_SERIALIZE_OK,
8621  static_cast<FwAssertArgType>(_status)
8622  );
8623 
8624 #if FW_AMPCS_COMPATIBLE
8625  // Serialize the argument size
8626  _status = _logBuff.serializeFrom(
8627  static_cast<U8>(sizeof(U32))
8628  );
8629  FW_ASSERT(
8630  _status == Fw::FW_SERIALIZE_OK,
8631  static_cast<FwAssertArgType>(_status)
8632  );
8633 #endif
8634  _status = _logBuff.serializeFrom(srcEid);
8635  FW_ASSERT(
8636  _status == Fw::FW_SERIALIZE_OK,
8637  static_cast<FwAssertArgType>(_status)
8638  );
8639 
8640 #if FW_AMPCS_COMPATIBLE
8641  // Serialize the argument size
8642  _status = _logBuff.serializeFrom(
8643  static_cast<U8>(sizeof(U32))
8644  );
8645  FW_ASSERT(
8646  _status == Fw::FW_SERIALIZE_OK,
8647  static_cast<FwAssertArgType>(_status)
8648  );
8649 #endif
8650  _status = _logBuff.serializeFrom(seqNum);
8651  FW_ASSERT(
8652  _status == Fw::FW_SERIALIZE_OK,
8653  static_cast<FwAssertArgType>(_status)
8654  );
8655 
8656  this->logOut_out(
8657  0,
8658  _id,
8659  _logTime,
8661  _logBuff
8662  );
8663  }
8664 
8665  // Emit the event on the text log port
8666 #if FW_ENABLE_TEXT_LOGGING
8667  if (this->isConnected_logTextOut_OutputPort(0)) {
8668 #if FW_OBJECT_NAMES == 1
8669  const char* _formatString =
8670  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to send metadata PDU";
8671 #else
8672  const char* _formatString =
8673  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to send metadata PDU";
8674 #endif
8675 
8676  Fw::String cfdpClassStr;
8677  cfdpClass.toString(cfdpClassStr);
8678 
8679  Fw::TextLogString _logString;
8680  (void) _logString.format(
8681  _formatString,
8682 #if FW_OBJECT_NAMES == 1
8683  this->m_objName.toChar(),
8684 #endif
8685  "TxSendMetadataFailed ",
8686  cfdpClassStr.toChar(),
8687  srcEid,
8688  seqNum
8689  );
8690 
8691  this->logTextOut_out(
8692  0,
8693  _id,
8694  _logTime,
8696  _logString
8697  );
8698  }
8699 #endif
8700  }
8701 
8704  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8705  U32 srcEid,
8706  U32 seqNum
8707  ) const
8708  {
8709  // Get the time
8710  Fw::Time _logTime;
8711  if (this->isConnected_timeCaller_OutputPort(0)) {
8712  this->timeCaller_out(0, _logTime);
8713  }
8714 
8715  const FwEventIdType _id = this->getIdBase() + EVENTID_TXEARLYFINRECEIVED;
8716 
8717  // Emit the event on the log port
8718  if (this->isConnected_logOut_OutputPort(0)) {
8719  Fw::LogBuffer _logBuff;
8721 
8722 #if FW_AMPCS_COMPATIBLE
8723  // Serialize the number of arguments
8724  _status = _logBuff.serializeFrom(static_cast<U8>(3));
8725  FW_ASSERT(
8726  _status == Fw::FW_SERIALIZE_OK,
8727  static_cast<FwAssertArgType>(_status)
8728  );
8729 #endif
8730 
8731 #if FW_AMPCS_COMPATIBLE
8732  // Serialize the argument size
8733  _status = _logBuff.serializeFrom(
8735  );
8736  FW_ASSERT(
8737  _status == Fw::FW_SERIALIZE_OK,
8738  static_cast<FwAssertArgType>(_status)
8739  );
8740 #endif
8741  _status = _logBuff.serializeFrom(cfdpClass);
8742  FW_ASSERT(
8743  _status == Fw::FW_SERIALIZE_OK,
8744  static_cast<FwAssertArgType>(_status)
8745  );
8746 
8747 #if FW_AMPCS_COMPATIBLE
8748  // Serialize the argument size
8749  _status = _logBuff.serializeFrom(
8750  static_cast<U8>(sizeof(U32))
8751  );
8752  FW_ASSERT(
8753  _status == Fw::FW_SERIALIZE_OK,
8754  static_cast<FwAssertArgType>(_status)
8755  );
8756 #endif
8757  _status = _logBuff.serializeFrom(srcEid);
8758  FW_ASSERT(
8759  _status == Fw::FW_SERIALIZE_OK,
8760  static_cast<FwAssertArgType>(_status)
8761  );
8762 
8763 #if FW_AMPCS_COMPATIBLE
8764  // Serialize the argument size
8765  _status = _logBuff.serializeFrom(
8766  static_cast<U8>(sizeof(U32))
8767  );
8768  FW_ASSERT(
8769  _status == Fw::FW_SERIALIZE_OK,
8770  static_cast<FwAssertArgType>(_status)
8771  );
8772 #endif
8773  _status = _logBuff.serializeFrom(seqNum);
8774  FW_ASSERT(
8775  _status == Fw::FW_SERIALIZE_OK,
8776  static_cast<FwAssertArgType>(_status)
8777  );
8778 
8779  this->logOut_out(
8780  0,
8781  _id,
8782  _logTime,
8784  _logBuff
8785  );
8786  }
8787 
8788  // Emit the event on the text log port
8789 #if FW_ENABLE_TEXT_LOGGING
8790  if (this->isConnected_logTextOut_OutputPort(0)) {
8791 #if FW_OBJECT_NAMES == 1
8792  const char* _formatString =
8793  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received early FIN, cancelling transfer";
8794 #else
8795  const char* _formatString =
8796  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received early FIN, cancelling transfer";
8797 #endif
8798 
8799  Fw::String cfdpClassStr;
8800  cfdpClass.toString(cfdpClassStr);
8801 
8802  Fw::TextLogString _logString;
8803  (void) _logString.format(
8804  _formatString,
8805 #if FW_OBJECT_NAMES == 1
8806  this->m_objName.toChar(),
8807 #endif
8808  "TxEarlyFinReceived ",
8809  cfdpClassStr.toChar(),
8810  srcEid,
8811  seqNum
8812  );
8813 
8814  this->logTextOut_out(
8815  0,
8816  _id,
8817  _logTime,
8819  _logString
8820  );
8821  }
8822 #endif
8823  }
8824 
8827  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8828  U32 srcEid,
8829  U32 seqNum
8830  ) const
8831  {
8832  // Get the time
8833  Fw::Time _logTime;
8834  if (this->isConnected_timeCaller_OutputPort(0)) {
8835  this->timeCaller_out(0, _logTime);
8836  }
8837 
8838  const FwEventIdType _id = this->getIdBase() + EVENTID_TXINVALIDNAKPDU;
8839 
8840  // Emit the event on the log port
8841  if (this->isConnected_logOut_OutputPort(0)) {
8842  Fw::LogBuffer _logBuff;
8844 
8845 #if FW_AMPCS_COMPATIBLE
8846  // Serialize the number of arguments
8847  _status = _logBuff.serializeFrom(static_cast<U8>(3));
8848  FW_ASSERT(
8849  _status == Fw::FW_SERIALIZE_OK,
8850  static_cast<FwAssertArgType>(_status)
8851  );
8852 #endif
8853 
8854 #if FW_AMPCS_COMPATIBLE
8855  // Serialize the argument size
8856  _status = _logBuff.serializeFrom(
8858  );
8859  FW_ASSERT(
8860  _status == Fw::FW_SERIALIZE_OK,
8861  static_cast<FwAssertArgType>(_status)
8862  );
8863 #endif
8864  _status = _logBuff.serializeFrom(cfdpClass);
8865  FW_ASSERT(
8866  _status == Fw::FW_SERIALIZE_OK,
8867  static_cast<FwAssertArgType>(_status)
8868  );
8869 
8870 #if FW_AMPCS_COMPATIBLE
8871  // Serialize the argument size
8872  _status = _logBuff.serializeFrom(
8873  static_cast<U8>(sizeof(U32))
8874  );
8875  FW_ASSERT(
8876  _status == Fw::FW_SERIALIZE_OK,
8877  static_cast<FwAssertArgType>(_status)
8878  );
8879 #endif
8880  _status = _logBuff.serializeFrom(srcEid);
8881  FW_ASSERT(
8882  _status == Fw::FW_SERIALIZE_OK,
8883  static_cast<FwAssertArgType>(_status)
8884  );
8885 
8886 #if FW_AMPCS_COMPATIBLE
8887  // Serialize the argument size
8888  _status = _logBuff.serializeFrom(
8889  static_cast<U8>(sizeof(U32))
8890  );
8891  FW_ASSERT(
8892  _status == Fw::FW_SERIALIZE_OK,
8893  static_cast<FwAssertArgType>(_status)
8894  );
8895 #endif
8896  _status = _logBuff.serializeFrom(seqNum);
8897  FW_ASSERT(
8898  _status == Fw::FW_SERIALIZE_OK,
8899  static_cast<FwAssertArgType>(_status)
8900  );
8901 
8902  this->logOut_out(
8903  0,
8904  _id,
8905  _logTime,
8907  _logBuff
8908  );
8909  }
8910 
8911  // Emit the event on the text log port
8912 #if FW_ENABLE_TEXT_LOGGING
8913  if (this->isConnected_logTextOut_OutputPort(0)) {
8914 #if FW_OBJECT_NAMES == 1
8915  const char* _formatString =
8916  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid NAK PDU";
8917 #else
8918  const char* _formatString =
8919  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid NAK PDU";
8920 #endif
8921 
8922  Fw::String cfdpClassStr;
8923  cfdpClass.toString(cfdpClassStr);
8924 
8925  Fw::TextLogString _logString;
8926  (void) _logString.format(
8927  _formatString,
8928 #if FW_OBJECT_NAMES == 1
8929  this->m_objName.toChar(),
8930 #endif
8931  "TxInvalidNakPdu ",
8932  cfdpClassStr.toChar(),
8933  srcEid,
8934  seqNum
8935  );
8936 
8937  this->logTextOut_out(
8938  0,
8939  _id,
8940  _logTime,
8942  _logString
8943  );
8944  }
8945 #endif
8946  }
8947 
8950  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8951  U32 srcEid,
8952  U32 seqNum,
8953  U32 badCount
8954  ) const
8955  {
8956  // Get the time
8957  Fw::Time _logTime;
8958  if (this->isConnected_timeCaller_OutputPort(0)) {
8959  this->timeCaller_out(0, _logTime);
8960  }
8961 
8963 
8964  // Emit the event on the log port
8965  if (this->isConnected_logOut_OutputPort(0)) {
8966  Fw::LogBuffer _logBuff;
8968 
8969 #if FW_AMPCS_COMPATIBLE
8970  // Serialize the number of arguments
8971  _status = _logBuff.serializeFrom(static_cast<U8>(4));
8972  FW_ASSERT(
8973  _status == Fw::FW_SERIALIZE_OK,
8974  static_cast<FwAssertArgType>(_status)
8975  );
8976 #endif
8977 
8978 #if FW_AMPCS_COMPATIBLE
8979  // Serialize the argument size
8980  _status = _logBuff.serializeFrom(
8982  );
8983  FW_ASSERT(
8984  _status == Fw::FW_SERIALIZE_OK,
8985  static_cast<FwAssertArgType>(_status)
8986  );
8987 #endif
8988  _status = _logBuff.serializeFrom(cfdpClass);
8989  FW_ASSERT(
8990  _status == Fw::FW_SERIALIZE_OK,
8991  static_cast<FwAssertArgType>(_status)
8992  );
8993 
8994 #if FW_AMPCS_COMPATIBLE
8995  // Serialize the argument size
8996  _status = _logBuff.serializeFrom(
8997  static_cast<U8>(sizeof(U32))
8998  );
8999  FW_ASSERT(
9000  _status == Fw::FW_SERIALIZE_OK,
9001  static_cast<FwAssertArgType>(_status)
9002  );
9003 #endif
9004  _status = _logBuff.serializeFrom(srcEid);
9005  FW_ASSERT(
9006  _status == Fw::FW_SERIALIZE_OK,
9007  static_cast<FwAssertArgType>(_status)
9008  );
9009 
9010 #if FW_AMPCS_COMPATIBLE
9011  // Serialize the argument size
9012  _status = _logBuff.serializeFrom(
9013  static_cast<U8>(sizeof(U32))
9014  );
9015  FW_ASSERT(
9016  _status == Fw::FW_SERIALIZE_OK,
9017  static_cast<FwAssertArgType>(_status)
9018  );
9019 #endif
9020  _status = _logBuff.serializeFrom(seqNum);
9021  FW_ASSERT(
9022  _status == Fw::FW_SERIALIZE_OK,
9023  static_cast<FwAssertArgType>(_status)
9024  );
9025 
9026 #if FW_AMPCS_COMPATIBLE
9027  // Serialize the argument size
9028  _status = _logBuff.serializeFrom(
9029  static_cast<U8>(sizeof(U32))
9030  );
9031  FW_ASSERT(
9032  _status == Fw::FW_SERIALIZE_OK,
9033  static_cast<FwAssertArgType>(_status)
9034  );
9035 #endif
9036  _status = _logBuff.serializeFrom(badCount);
9037  FW_ASSERT(
9038  _status == Fw::FW_SERIALIZE_OK,
9039  static_cast<FwAssertArgType>(_status)
9040  );
9041 
9042  this->logOut_out(
9043  0,
9044  _id,
9045  _logTime,
9047  _logBuff
9048  );
9049  }
9050 
9051  // Emit the event on the text log port
9052 #if FW_ENABLE_TEXT_LOGGING
9053  if (this->isConnected_logTextOut_OutputPort(0)) {
9054 #if FW_OBJECT_NAMES == 1
9055  const char* _formatString =
9056  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received %" PRIu32 " invalid NAK segment requests";
9057 #else
9058  const char* _formatString =
9059  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received %" PRIu32 " invalid NAK segment requests";
9060 #endif
9061 
9062  Fw::String cfdpClassStr;
9063  cfdpClass.toString(cfdpClassStr);
9064 
9065  Fw::TextLogString _logString;
9066  (void) _logString.format(
9067  _formatString,
9068 #if FW_OBJECT_NAMES == 1
9069  this->m_objName.toChar(),
9070 #endif
9071  "TxInvalidSegmentRequests ",
9072  cfdpClassStr.toChar(),
9073  srcEid,
9074  seqNum,
9075  badCount
9076  );
9077 
9078  this->logTextOut_out(
9079  0,
9080  _id,
9081  _logTime,
9083  _logString
9084  );
9085  }
9086 #endif
9087  }
9088 
9091  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9092  U32 srcEid,
9093  U32 seqNum
9094  ) const
9095  {
9096  // Get the time
9097  Fw::Time _logTime;
9098  if (this->isConnected_timeCaller_OutputPort(0)) {
9099  this->timeCaller_out(0, _logTime);
9100  }
9101 
9103 
9104  // Emit the event on the log port
9105  if (this->isConnected_logOut_OutputPort(0)) {
9106  Fw::LogBuffer _logBuff;
9108 
9109 #if FW_AMPCS_COMPATIBLE
9110  // Serialize the number of arguments
9111  _status = _logBuff.serializeFrom(static_cast<U8>(3));
9112  FW_ASSERT(
9113  _status == Fw::FW_SERIALIZE_OK,
9114  static_cast<FwAssertArgType>(_status)
9115  );
9116 #endif
9117 
9118 #if FW_AMPCS_COMPATIBLE
9119  // Serialize the argument size
9120  _status = _logBuff.serializeFrom(
9122  );
9123  FW_ASSERT(
9124  _status == Fw::FW_SERIALIZE_OK,
9125  static_cast<FwAssertArgType>(_status)
9126  );
9127 #endif
9128  _status = _logBuff.serializeFrom(cfdpClass);
9129  FW_ASSERT(
9130  _status == Fw::FW_SERIALIZE_OK,
9131  static_cast<FwAssertArgType>(_status)
9132  );
9133 
9134 #if FW_AMPCS_COMPATIBLE
9135  // Serialize the argument size
9136  _status = _logBuff.serializeFrom(
9137  static_cast<U8>(sizeof(U32))
9138  );
9139  FW_ASSERT(
9140  _status == Fw::FW_SERIALIZE_OK,
9141  static_cast<FwAssertArgType>(_status)
9142  );
9143 #endif
9144  _status = _logBuff.serializeFrom(srcEid);
9145  FW_ASSERT(
9146  _status == Fw::FW_SERIALIZE_OK,
9147  static_cast<FwAssertArgType>(_status)
9148  );
9149 
9150 #if FW_AMPCS_COMPATIBLE
9151  // Serialize the argument size
9152  _status = _logBuff.serializeFrom(
9153  static_cast<U8>(sizeof(U32))
9154  );
9155  FW_ASSERT(
9156  _status == Fw::FW_SERIALIZE_OK,
9157  static_cast<FwAssertArgType>(_status)
9158  );
9159 #endif
9160  _status = _logBuff.serializeFrom(seqNum);
9161  FW_ASSERT(
9162  _status == Fw::FW_SERIALIZE_OK,
9163  static_cast<FwAssertArgType>(_status)
9164  );
9165 
9166  this->logOut_out(
9167  0,
9168  _id,
9169  _logTime,
9171  _logBuff
9172  );
9173  }
9174 
9175  // Emit the event on the text log port
9176 #if FW_ENABLE_TEXT_LOGGING
9177  if (this->isConnected_logTextOut_OutputPort(0)) {
9178 #if FW_OBJECT_NAMES == 1
9179  const char* _formatString =
9180  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received non-file-directive PDU";
9181 #else
9182  const char* _formatString =
9183  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received non-file-directive PDU";
9184 #endif
9185 
9186  Fw::String cfdpClassStr;
9187  cfdpClass.toString(cfdpClassStr);
9188 
9189  Fw::TextLogString _logString;
9190  (void) _logString.format(
9191  _formatString,
9192 #if FW_OBJECT_NAMES == 1
9193  this->m_objName.toChar(),
9194 #endif
9195  "TxNonFileDirectivePduReceived ",
9196  cfdpClassStr.toChar(),
9197  srcEid,
9198  seqNum
9199  );
9200 
9201  this->logTextOut_out(
9202  0,
9203  _id,
9204  _logTime,
9206  _logString
9207  );
9208  }
9209 #endif
9210  }
9211 
9214  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9215  U32 srcEid,
9216  U32 seqNum,
9217  U8 directiveCode,
9218  U8 substate
9219  ) const
9220  {
9221  // Get the time
9222  Fw::Time _logTime;
9223  if (this->isConnected_timeCaller_OutputPort(0)) {
9224  this->timeCaller_out(0, _logTime);
9225  }
9226 
9228 
9229  // Emit the event on the log port
9230  if (this->isConnected_logOut_OutputPort(0)) {
9231  Fw::LogBuffer _logBuff;
9233 
9234 #if FW_AMPCS_COMPATIBLE
9235  // Serialize the number of arguments
9236  _status = _logBuff.serializeFrom(static_cast<U8>(5));
9237  FW_ASSERT(
9238  _status == Fw::FW_SERIALIZE_OK,
9239  static_cast<FwAssertArgType>(_status)
9240  );
9241 #endif
9242 
9243 #if FW_AMPCS_COMPATIBLE
9244  // Serialize the argument size
9245  _status = _logBuff.serializeFrom(
9247  );
9248  FW_ASSERT(
9249  _status == Fw::FW_SERIALIZE_OK,
9250  static_cast<FwAssertArgType>(_status)
9251  );
9252 #endif
9253  _status = _logBuff.serializeFrom(cfdpClass);
9254  FW_ASSERT(
9255  _status == Fw::FW_SERIALIZE_OK,
9256  static_cast<FwAssertArgType>(_status)
9257  );
9258 
9259 #if FW_AMPCS_COMPATIBLE
9260  // Serialize the argument size
9261  _status = _logBuff.serializeFrom(
9262  static_cast<U8>(sizeof(U32))
9263  );
9264  FW_ASSERT(
9265  _status == Fw::FW_SERIALIZE_OK,
9266  static_cast<FwAssertArgType>(_status)
9267  );
9268 #endif
9269  _status = _logBuff.serializeFrom(srcEid);
9270  FW_ASSERT(
9271  _status == Fw::FW_SERIALIZE_OK,
9272  static_cast<FwAssertArgType>(_status)
9273  );
9274 
9275 #if FW_AMPCS_COMPATIBLE
9276  // Serialize the argument size
9277  _status = _logBuff.serializeFrom(
9278  static_cast<U8>(sizeof(U32))
9279  );
9280  FW_ASSERT(
9281  _status == Fw::FW_SERIALIZE_OK,
9282  static_cast<FwAssertArgType>(_status)
9283  );
9284 #endif
9285  _status = _logBuff.serializeFrom(seqNum);
9286  FW_ASSERT(
9287  _status == Fw::FW_SERIALIZE_OK,
9288  static_cast<FwAssertArgType>(_status)
9289  );
9290 
9291 #if FW_AMPCS_COMPATIBLE
9292  // Serialize the argument size
9293  _status = _logBuff.serializeFrom(
9294  static_cast<U8>(sizeof(U8))
9295  );
9296  FW_ASSERT(
9297  _status == Fw::FW_SERIALIZE_OK,
9298  static_cast<FwAssertArgType>(_status)
9299  );
9300 #endif
9301  _status = _logBuff.serializeFrom(directiveCode);
9302  FW_ASSERT(
9303  _status == Fw::FW_SERIALIZE_OK,
9304  static_cast<FwAssertArgType>(_status)
9305  );
9306 
9307 #if FW_AMPCS_COMPATIBLE
9308  // Serialize the argument size
9309  _status = _logBuff.serializeFrom(
9310  static_cast<U8>(sizeof(U8))
9311  );
9312  FW_ASSERT(
9313  _status == Fw::FW_SERIALIZE_OK,
9314  static_cast<FwAssertArgType>(_status)
9315  );
9316 #endif
9317  _status = _logBuff.serializeFrom(substate);
9318  FW_ASSERT(
9319  _status == Fw::FW_SERIALIZE_OK,
9320  static_cast<FwAssertArgType>(_status)
9321  );
9322 
9323  this->logOut_out(
9324  0,
9325  _id,
9326  _logTime,
9328  _logBuff
9329  );
9330  }
9331 
9332  // Emit the event on the text log port
9333 #if FW_ENABLE_TEXT_LOGGING
9334  if (this->isConnected_logTextOut_OutputPort(0)) {
9335 #if FW_OBJECT_NAMES == 1
9336  const char* _formatString =
9337  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid directive code %" PRIu8 " for substate %" PRIu8 "";
9338 #else
9339  const char* _formatString =
9340  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid directive code %" PRIu8 " for substate %" PRIu8 "";
9341 #endif
9342 
9343  Fw::String cfdpClassStr;
9344  cfdpClass.toString(cfdpClassStr);
9345 
9346  Fw::TextLogString _logString;
9347  (void) _logString.format(
9348  _formatString,
9349 #if FW_OBJECT_NAMES == 1
9350  this->m_objName.toChar(),
9351 #endif
9352  "TxInvalidDirectiveCode ",
9353  cfdpClassStr.toChar(),
9354  srcEid,
9355  seqNum,
9356  directiveCode,
9357  substate
9358  );
9359 
9360  this->logTextOut_out(
9361  0,
9362  _id,
9363  _logTime,
9365  _logString
9366  );
9367  }
9368 #endif
9369  }
9370 
9373  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9374  U32 seqNum,
9375  U32 srcEid,
9376  const Fw::StringBase& srcFile,
9377  U32 destEid,
9378  const Fw::StringBase& destFile,
9379  U32 fileSize
9380  ) const
9381  {
9382  // Get the time
9383  Fw::Time _logTime;
9384  if (this->isConnected_timeCaller_OutputPort(0)) {
9385  this->timeCaller_out(0, _logTime);
9386  }
9387 
9389 
9390  // Emit the event on the log port
9391  if (this->isConnected_logOut_OutputPort(0)) {
9392  Fw::LogBuffer _logBuff;
9394 
9395 #if FW_AMPCS_COMPATIBLE
9396  // Serialize the number of arguments
9397  _status = _logBuff.serializeFrom(static_cast<U8>(7));
9398  FW_ASSERT(
9399  _status == Fw::FW_SERIALIZE_OK,
9400  static_cast<FwAssertArgType>(_status)
9401  );
9402 #endif
9403 
9404 #if FW_AMPCS_COMPATIBLE
9405  // Serialize the argument size
9406  _status = _logBuff.serializeFrom(
9408  );
9409  FW_ASSERT(
9410  _status == Fw::FW_SERIALIZE_OK,
9411  static_cast<FwAssertArgType>(_status)
9412  );
9413 #endif
9414  _status = _logBuff.serializeFrom(cfdpClass);
9415  FW_ASSERT(
9416  _status == Fw::FW_SERIALIZE_OK,
9417  static_cast<FwAssertArgType>(_status)
9418  );
9419 
9420 #if FW_AMPCS_COMPATIBLE
9421  // Serialize the argument size
9422  _status = _logBuff.serializeFrom(
9423  static_cast<U8>(sizeof(U32))
9424  );
9425  FW_ASSERT(
9426  _status == Fw::FW_SERIALIZE_OK,
9427  static_cast<FwAssertArgType>(_status)
9428  );
9429 #endif
9430  _status = _logBuff.serializeFrom(seqNum);
9431  FW_ASSERT(
9432  _status == Fw::FW_SERIALIZE_OK,
9433  static_cast<FwAssertArgType>(_status)
9434  );
9435 
9436 #if FW_AMPCS_COMPATIBLE
9437  // Serialize the argument size
9438  _status = _logBuff.serializeFrom(
9439  static_cast<U8>(sizeof(U32))
9440  );
9441  FW_ASSERT(
9442  _status == Fw::FW_SERIALIZE_OK,
9443  static_cast<FwAssertArgType>(_status)
9444  );
9445 #endif
9446  _status = _logBuff.serializeFrom(srcEid);
9447  FW_ASSERT(
9448  _status == Fw::FW_SERIALIZE_OK,
9449  static_cast<FwAssertArgType>(_status)
9450  );
9451 
9452  _status = srcFile.serializeTo(
9453  _logBuff,
9454  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
9455  );
9456  FW_ASSERT(
9457  _status == Fw::FW_SERIALIZE_OK,
9458  static_cast<FwAssertArgType>(_status)
9459  );
9460 
9461 #if FW_AMPCS_COMPATIBLE
9462  // Serialize the argument size
9463  _status = _logBuff.serializeFrom(
9464  static_cast<U8>(sizeof(U32))
9465  );
9466  FW_ASSERT(
9467  _status == Fw::FW_SERIALIZE_OK,
9468  static_cast<FwAssertArgType>(_status)
9469  );
9470 #endif
9471  _status = _logBuff.serializeFrom(destEid);
9472  FW_ASSERT(
9473  _status == Fw::FW_SERIALIZE_OK,
9474  static_cast<FwAssertArgType>(_status)
9475  );
9476 
9477  _status = destFile.serializeTo(
9478  _logBuff,
9479  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
9480  );
9481  FW_ASSERT(
9482  _status == Fw::FW_SERIALIZE_OK,
9483  static_cast<FwAssertArgType>(_status)
9484  );
9485 
9486 #if FW_AMPCS_COMPATIBLE
9487  // Serialize the argument size
9488  _status = _logBuff.serializeFrom(
9489  static_cast<U8>(sizeof(U32))
9490  );
9491  FW_ASSERT(
9492  _status == Fw::FW_SERIALIZE_OK,
9493  static_cast<FwAssertArgType>(_status)
9494  );
9495 #endif
9496  _status = _logBuff.serializeFrom(fileSize);
9497  FW_ASSERT(
9498  _status == Fw::FW_SERIALIZE_OK,
9499  static_cast<FwAssertArgType>(_status)
9500  );
9501 
9502  this->logOut_out(
9503  0,
9504  _id,
9505  _logTime,
9507  _logBuff
9508  );
9509  }
9510 
9511  // Emit the event on the text log port
9512 #if FW_ENABLE_TEXT_LOGGING
9513  if (this->isConnected_logTextOut_OutputPort(0)) {
9514 #if FW_OBJECT_NAMES == 1
9515  const char* _formatString =
9516  "(%s) %s: TX %s transaction %" PRIu32 " transfer started, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
9517 #else
9518  const char* _formatString =
9519  "%s: TX %s transaction %" PRIu32 " transfer started, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
9520 #endif
9521 
9522  Fw::String cfdpClassStr;
9523  cfdpClass.toString(cfdpClassStr);
9524 
9525  Fw::TextLogString _logString;
9526  (void) _logString.format(
9527  _formatString,
9528 #if FW_OBJECT_NAMES == 1
9529  this->m_objName.toChar(),
9530 #endif
9531  "TxFileTransferStarted ",
9532  cfdpClassStr.toChar(),
9533  seqNum,
9534  srcEid,
9535  srcFile.toChar(),
9536  destEid,
9537  destFile.toChar(),
9538  fileSize
9539  );
9540 
9541  this->logTextOut_out(
9542  0,
9543  _id,
9544  _logTime,
9546  _logString
9547  );
9548  }
9549 #endif
9550  }
9551 
9554  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9555  U32 seqNum,
9556  U32 srcEid,
9557  const Fw::StringBase& srcFile,
9558  U32 destEid,
9559  const Fw::StringBase& destFile,
9560  U32 fileSize
9561  ) const
9562  {
9563  // Get the time
9564  Fw::Time _logTime;
9565  if (this->isConnected_timeCaller_OutputPort(0)) {
9566  this->timeCaller_out(0, _logTime);
9567  }
9568 
9570 
9571  // Emit the event on the log port
9572  if (this->isConnected_logOut_OutputPort(0)) {
9573  Fw::LogBuffer _logBuff;
9575 
9576 #if FW_AMPCS_COMPATIBLE
9577  // Serialize the number of arguments
9578  _status = _logBuff.serializeFrom(static_cast<U8>(7));
9579  FW_ASSERT(
9580  _status == Fw::FW_SERIALIZE_OK,
9581  static_cast<FwAssertArgType>(_status)
9582  );
9583 #endif
9584 
9585 #if FW_AMPCS_COMPATIBLE
9586  // Serialize the argument size
9587  _status = _logBuff.serializeFrom(
9589  );
9590  FW_ASSERT(
9591  _status == Fw::FW_SERIALIZE_OK,
9592  static_cast<FwAssertArgType>(_status)
9593  );
9594 #endif
9595  _status = _logBuff.serializeFrom(cfdpClass);
9596  FW_ASSERT(
9597  _status == Fw::FW_SERIALIZE_OK,
9598  static_cast<FwAssertArgType>(_status)
9599  );
9600 
9601 #if FW_AMPCS_COMPATIBLE
9602  // Serialize the argument size
9603  _status = _logBuff.serializeFrom(
9604  static_cast<U8>(sizeof(U32))
9605  );
9606  FW_ASSERT(
9607  _status == Fw::FW_SERIALIZE_OK,
9608  static_cast<FwAssertArgType>(_status)
9609  );
9610 #endif
9611  _status = _logBuff.serializeFrom(seqNum);
9612  FW_ASSERT(
9613  _status == Fw::FW_SERIALIZE_OK,
9614  static_cast<FwAssertArgType>(_status)
9615  );
9616 
9617 #if FW_AMPCS_COMPATIBLE
9618  // Serialize the argument size
9619  _status = _logBuff.serializeFrom(
9620  static_cast<U8>(sizeof(U32))
9621  );
9622  FW_ASSERT(
9623  _status == Fw::FW_SERIALIZE_OK,
9624  static_cast<FwAssertArgType>(_status)
9625  );
9626 #endif
9627  _status = _logBuff.serializeFrom(srcEid);
9628  FW_ASSERT(
9629  _status == Fw::FW_SERIALIZE_OK,
9630  static_cast<FwAssertArgType>(_status)
9631  );
9632 
9633  _status = srcFile.serializeTo(
9634  _logBuff,
9635  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
9636  );
9637  FW_ASSERT(
9638  _status == Fw::FW_SERIALIZE_OK,
9639  static_cast<FwAssertArgType>(_status)
9640  );
9641 
9642 #if FW_AMPCS_COMPATIBLE
9643  // Serialize the argument size
9644  _status = _logBuff.serializeFrom(
9645  static_cast<U8>(sizeof(U32))
9646  );
9647  FW_ASSERT(
9648  _status == Fw::FW_SERIALIZE_OK,
9649  static_cast<FwAssertArgType>(_status)
9650  );
9651 #endif
9652  _status = _logBuff.serializeFrom(destEid);
9653  FW_ASSERT(
9654  _status == Fw::FW_SERIALIZE_OK,
9655  static_cast<FwAssertArgType>(_status)
9656  );
9657 
9658  _status = destFile.serializeTo(
9659  _logBuff,
9660  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
9661  );
9662  FW_ASSERT(
9663  _status == Fw::FW_SERIALIZE_OK,
9664  static_cast<FwAssertArgType>(_status)
9665  );
9666 
9667 #if FW_AMPCS_COMPATIBLE
9668  // Serialize the argument size
9669  _status = _logBuff.serializeFrom(
9670  static_cast<U8>(sizeof(U32))
9671  );
9672  FW_ASSERT(
9673  _status == Fw::FW_SERIALIZE_OK,
9674  static_cast<FwAssertArgType>(_status)
9675  );
9676 #endif
9677  _status = _logBuff.serializeFrom(fileSize);
9678  FW_ASSERT(
9679  _status == Fw::FW_SERIALIZE_OK,
9680  static_cast<FwAssertArgType>(_status)
9681  );
9682 
9683  this->logOut_out(
9684  0,
9685  _id,
9686  _logTime,
9688  _logBuff
9689  );
9690  }
9691 
9692  // Emit the event on the text log port
9693 #if FW_ENABLE_TEXT_LOGGING
9694  if (this->isConnected_logTextOut_OutputPort(0)) {
9695 #if FW_OBJECT_NAMES == 1
9696  const char* _formatString =
9697  "(%s) %s: TX %s transaction %" PRIu32 " completed, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
9698 #else
9699  const char* _formatString =
9700  "%s: TX %s transaction %" PRIu32 " completed, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
9701 #endif
9702 
9703  Fw::String cfdpClassStr;
9704  cfdpClass.toString(cfdpClassStr);
9705 
9706  Fw::TextLogString _logString;
9707  (void) _logString.format(
9708  _formatString,
9709 #if FW_OBJECT_NAMES == 1
9710  this->m_objName.toChar(),
9711 #endif
9712  "TxFileTransferCompleted ",
9713  cfdpClassStr.toChar(),
9714  seqNum,
9715  srcEid,
9716  srcFile.toChar(),
9717  destEid,
9718  destFile.toChar(),
9719  fileSize
9720  );
9721 
9722  this->logTextOut_out(
9723  0,
9724  _id,
9725  _logTime,
9727  _logString
9728  );
9729  }
9730 #endif
9731  }
9732 
9735  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9736  U32 seqNum,
9737  U32 srcEid,
9738  const Fw::StringBase& srcFile,
9739  U32 destEid,
9740  const Fw::StringBase& destFile,
9741  U8 conditionCode
9742  ) const
9743  {
9744  // Get the time
9745  Fw::Time _logTime;
9746  if (this->isConnected_timeCaller_OutputPort(0)) {
9747  this->timeCaller_out(0, _logTime);
9748  }
9749 
9751 
9752  // Emit the event on the log port
9753  if (this->isConnected_logOut_OutputPort(0)) {
9754  Fw::LogBuffer _logBuff;
9756 
9757 #if FW_AMPCS_COMPATIBLE
9758  // Serialize the number of arguments
9759  _status = _logBuff.serializeFrom(static_cast<U8>(7));
9760  FW_ASSERT(
9761  _status == Fw::FW_SERIALIZE_OK,
9762  static_cast<FwAssertArgType>(_status)
9763  );
9764 #endif
9765 
9766 #if FW_AMPCS_COMPATIBLE
9767  // Serialize the argument size
9768  _status = _logBuff.serializeFrom(
9770  );
9771  FW_ASSERT(
9772  _status == Fw::FW_SERIALIZE_OK,
9773  static_cast<FwAssertArgType>(_status)
9774  );
9775 #endif
9776  _status = _logBuff.serializeFrom(cfdpClass);
9777  FW_ASSERT(
9778  _status == Fw::FW_SERIALIZE_OK,
9779  static_cast<FwAssertArgType>(_status)
9780  );
9781 
9782 #if FW_AMPCS_COMPATIBLE
9783  // Serialize the argument size
9784  _status = _logBuff.serializeFrom(
9785  static_cast<U8>(sizeof(U32))
9786  );
9787  FW_ASSERT(
9788  _status == Fw::FW_SERIALIZE_OK,
9789  static_cast<FwAssertArgType>(_status)
9790  );
9791 #endif
9792  _status = _logBuff.serializeFrom(seqNum);
9793  FW_ASSERT(
9794  _status == Fw::FW_SERIALIZE_OK,
9795  static_cast<FwAssertArgType>(_status)
9796  );
9797 
9798 #if FW_AMPCS_COMPATIBLE
9799  // Serialize the argument size
9800  _status = _logBuff.serializeFrom(
9801  static_cast<U8>(sizeof(U32))
9802  );
9803  FW_ASSERT(
9804  _status == Fw::FW_SERIALIZE_OK,
9805  static_cast<FwAssertArgType>(_status)
9806  );
9807 #endif
9808  _status = _logBuff.serializeFrom(srcEid);
9809  FW_ASSERT(
9810  _status == Fw::FW_SERIALIZE_OK,
9811  static_cast<FwAssertArgType>(_status)
9812  );
9813 
9814  _status = srcFile.serializeTo(
9815  _logBuff,
9816  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
9817  );
9818  FW_ASSERT(
9819  _status == Fw::FW_SERIALIZE_OK,
9820  static_cast<FwAssertArgType>(_status)
9821  );
9822 
9823 #if FW_AMPCS_COMPATIBLE
9824  // Serialize the argument size
9825  _status = _logBuff.serializeFrom(
9826  static_cast<U8>(sizeof(U32))
9827  );
9828  FW_ASSERT(
9829  _status == Fw::FW_SERIALIZE_OK,
9830  static_cast<FwAssertArgType>(_status)
9831  );
9832 #endif
9833  _status = _logBuff.serializeFrom(destEid);
9834  FW_ASSERT(
9835  _status == Fw::FW_SERIALIZE_OK,
9836  static_cast<FwAssertArgType>(_status)
9837  );
9838 
9839  _status = destFile.serializeTo(
9840  _logBuff,
9841  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
9842  );
9843  FW_ASSERT(
9844  _status == Fw::FW_SERIALIZE_OK,
9845  static_cast<FwAssertArgType>(_status)
9846  );
9847 
9848 #if FW_AMPCS_COMPATIBLE
9849  // Serialize the argument size
9850  _status = _logBuff.serializeFrom(
9851  static_cast<U8>(sizeof(U8))
9852  );
9853  FW_ASSERT(
9854  _status == Fw::FW_SERIALIZE_OK,
9855  static_cast<FwAssertArgType>(_status)
9856  );
9857 #endif
9858  _status = _logBuff.serializeFrom(conditionCode);
9859  FW_ASSERT(
9860  _status == Fw::FW_SERIALIZE_OK,
9861  static_cast<FwAssertArgType>(_status)
9862  );
9863 
9864  this->logOut_out(
9865  0,
9866  _id,
9867  _logTime,
9869  _logBuff
9870  );
9871  }
9872 
9873  // Emit the event on the text log port
9874 #if FW_ENABLE_TEXT_LOGGING
9875  if (this->isConnected_logTextOut_OutputPort(0)) {
9876 #if FW_OBJECT_NAMES == 1
9877  const char* _formatString =
9878  "(%s) %s: TX %s transaction %" PRIu32 " FAILED, %" PRIu32 ":%s -> %" PRIu32 ":%s, error code %" PRIu8 "";
9879 #else
9880  const char* _formatString =
9881  "%s: TX %s transaction %" PRIu32 " FAILED, %" PRIu32 ":%s -> %" PRIu32 ":%s, error code %" PRIu8 "";
9882 #endif
9883 
9884  Fw::String cfdpClassStr;
9885  cfdpClass.toString(cfdpClassStr);
9886 
9887  Fw::TextLogString _logString;
9888  (void) _logString.format(
9889  _formatString,
9890 #if FW_OBJECT_NAMES == 1
9891  this->m_objName.toChar(),
9892 #endif
9893  "TxFileTransferFailed ",
9894  cfdpClassStr.toChar(),
9895  seqNum,
9896  srcEid,
9897  srcFile.toChar(),
9898  destEid,
9899  destFile.toChar(),
9900  conditionCode
9901  );
9902 
9903  this->logTextOut_out(
9904  0,
9905  _id,
9906  _logTime,
9908  _logString
9909  );
9910  }
9911 #endif
9912  }
9913 
9916  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9917  U32 seqNum,
9918  U32 srcEid,
9919  const Fw::StringBase& srcFile,
9920  U32 destEid,
9921  const Fw::StringBase& destFile,
9922  U32 fileSize
9923  ) const
9924  {
9925  // Get the time
9926  Fw::Time _logTime;
9927  if (this->isConnected_timeCaller_OutputPort(0)) {
9928  this->timeCaller_out(0, _logTime);
9929  }
9930 
9932 
9933  // Emit the event on the log port
9934  if (this->isConnected_logOut_OutputPort(0)) {
9935  Fw::LogBuffer _logBuff;
9937 
9938 #if FW_AMPCS_COMPATIBLE
9939  // Serialize the number of arguments
9940  _status = _logBuff.serializeFrom(static_cast<U8>(7));
9941  FW_ASSERT(
9942  _status == Fw::FW_SERIALIZE_OK,
9943  static_cast<FwAssertArgType>(_status)
9944  );
9945 #endif
9946 
9947 #if FW_AMPCS_COMPATIBLE
9948  // Serialize the argument size
9949  _status = _logBuff.serializeFrom(
9951  );
9952  FW_ASSERT(
9953  _status == Fw::FW_SERIALIZE_OK,
9954  static_cast<FwAssertArgType>(_status)
9955  );
9956 #endif
9957  _status = _logBuff.serializeFrom(cfdpClass);
9958  FW_ASSERT(
9959  _status == Fw::FW_SERIALIZE_OK,
9960  static_cast<FwAssertArgType>(_status)
9961  );
9962 
9963 #if FW_AMPCS_COMPATIBLE
9964  // Serialize the argument size
9965  _status = _logBuff.serializeFrom(
9966  static_cast<U8>(sizeof(U32))
9967  );
9968  FW_ASSERT(
9969  _status == Fw::FW_SERIALIZE_OK,
9970  static_cast<FwAssertArgType>(_status)
9971  );
9972 #endif
9973  _status = _logBuff.serializeFrom(seqNum);
9974  FW_ASSERT(
9975  _status == Fw::FW_SERIALIZE_OK,
9976  static_cast<FwAssertArgType>(_status)
9977  );
9978 
9979 #if FW_AMPCS_COMPATIBLE
9980  // Serialize the argument size
9981  _status = _logBuff.serializeFrom(
9982  static_cast<U8>(sizeof(U32))
9983  );
9984  FW_ASSERT(
9985  _status == Fw::FW_SERIALIZE_OK,
9986  static_cast<FwAssertArgType>(_status)
9987  );
9988 #endif
9989  _status = _logBuff.serializeFrom(srcEid);
9990  FW_ASSERT(
9991  _status == Fw::FW_SERIALIZE_OK,
9992  static_cast<FwAssertArgType>(_status)
9993  );
9994 
9995  _status = srcFile.serializeTo(
9996  _logBuff,
9997  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
9998  );
9999  FW_ASSERT(
10000  _status == Fw::FW_SERIALIZE_OK,
10001  static_cast<FwAssertArgType>(_status)
10002  );
10003 
10004 #if FW_AMPCS_COMPATIBLE
10005  // Serialize the argument size
10006  _status = _logBuff.serializeFrom(
10007  static_cast<U8>(sizeof(U32))
10008  );
10009  FW_ASSERT(
10010  _status == Fw::FW_SERIALIZE_OK,
10011  static_cast<FwAssertArgType>(_status)
10012  );
10013 #endif
10014  _status = _logBuff.serializeFrom(destEid);
10015  FW_ASSERT(
10016  _status == Fw::FW_SERIALIZE_OK,
10017  static_cast<FwAssertArgType>(_status)
10018  );
10019 
10020  _status = destFile.serializeTo(
10021  _logBuff,
10022  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10023  );
10024  FW_ASSERT(
10025  _status == Fw::FW_SERIALIZE_OK,
10026  static_cast<FwAssertArgType>(_status)
10027  );
10028 
10029 #if FW_AMPCS_COMPATIBLE
10030  // Serialize the argument size
10031  _status = _logBuff.serializeFrom(
10032  static_cast<U8>(sizeof(U32))
10033  );
10034  FW_ASSERT(
10035  _status == Fw::FW_SERIALIZE_OK,
10036  static_cast<FwAssertArgType>(_status)
10037  );
10038 #endif
10039  _status = _logBuff.serializeFrom(fileSize);
10040  FW_ASSERT(
10041  _status == Fw::FW_SERIALIZE_OK,
10042  static_cast<FwAssertArgType>(_status)
10043  );
10044 
10045  this->logOut_out(
10046  0,
10047  _id,
10048  _logTime,
10050  _logBuff
10051  );
10052  }
10053 
10054  // Emit the event on the text log port
10055 #if FW_ENABLE_TEXT_LOGGING
10056  if (this->isConnected_logTextOut_OutputPort(0)) {
10057 #if FW_OBJECT_NAMES == 1
10058  const char* _formatString =
10059  "(%s) %s: RX %s transaction %" PRIu32 " completed, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
10060 #else
10061  const char* _formatString =
10062  "%s: RX %s transaction %" PRIu32 " completed, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
10063 #endif
10064 
10065  Fw::String cfdpClassStr;
10066  cfdpClass.toString(cfdpClassStr);
10067 
10068  Fw::TextLogString _logString;
10069  (void) _logString.format(
10070  _formatString,
10071 #if FW_OBJECT_NAMES == 1
10072  this->m_objName.toChar(),
10073 #endif
10074  "RxFileTransferCompleted ",
10075  cfdpClassStr.toChar(),
10076  seqNum,
10077  srcEid,
10078  srcFile.toChar(),
10079  destEid,
10080  destFile.toChar(),
10081  fileSize
10082  );
10083 
10084  this->logTextOut_out(
10085  0,
10086  _id,
10087  _logTime,
10089  _logString
10090  );
10091  }
10092 #endif
10093  }
10094 
10097  const Svc::Ccsds::Cfdp::Class& cfdpClass,
10098  U32 seqNum,
10099  U32 srcEid,
10100  const Fw::StringBase& srcFile,
10101  U32 destEid,
10102  const Fw::StringBase& destFile,
10103  U8 conditionCode
10104  ) const
10105  {
10106  // Get the time
10107  Fw::Time _logTime;
10108  if (this->isConnected_timeCaller_OutputPort(0)) {
10109  this->timeCaller_out(0, _logTime);
10110  }
10111 
10113 
10114  // Emit the event on the log port
10115  if (this->isConnected_logOut_OutputPort(0)) {
10116  Fw::LogBuffer _logBuff;
10118 
10119 #if FW_AMPCS_COMPATIBLE
10120  // Serialize the number of arguments
10121  _status = _logBuff.serializeFrom(static_cast<U8>(7));
10122  FW_ASSERT(
10123  _status == Fw::FW_SERIALIZE_OK,
10124  static_cast<FwAssertArgType>(_status)
10125  );
10126 #endif
10127 
10128 #if FW_AMPCS_COMPATIBLE
10129  // Serialize the argument size
10130  _status = _logBuff.serializeFrom(
10132  );
10133  FW_ASSERT(
10134  _status == Fw::FW_SERIALIZE_OK,
10135  static_cast<FwAssertArgType>(_status)
10136  );
10137 #endif
10138  _status = _logBuff.serializeFrom(cfdpClass);
10139  FW_ASSERT(
10140  _status == Fw::FW_SERIALIZE_OK,
10141  static_cast<FwAssertArgType>(_status)
10142  );
10143 
10144 #if FW_AMPCS_COMPATIBLE
10145  // Serialize the argument size
10146  _status = _logBuff.serializeFrom(
10147  static_cast<U8>(sizeof(U32))
10148  );
10149  FW_ASSERT(
10150  _status == Fw::FW_SERIALIZE_OK,
10151  static_cast<FwAssertArgType>(_status)
10152  );
10153 #endif
10154  _status = _logBuff.serializeFrom(seqNum);
10155  FW_ASSERT(
10156  _status == Fw::FW_SERIALIZE_OK,
10157  static_cast<FwAssertArgType>(_status)
10158  );
10159 
10160 #if FW_AMPCS_COMPATIBLE
10161  // Serialize the argument size
10162  _status = _logBuff.serializeFrom(
10163  static_cast<U8>(sizeof(U32))
10164  );
10165  FW_ASSERT(
10166  _status == Fw::FW_SERIALIZE_OK,
10167  static_cast<FwAssertArgType>(_status)
10168  );
10169 #endif
10170  _status = _logBuff.serializeFrom(srcEid);
10171  FW_ASSERT(
10172  _status == Fw::FW_SERIALIZE_OK,
10173  static_cast<FwAssertArgType>(_status)
10174  );
10175 
10176  _status = srcFile.serializeTo(
10177  _logBuff,
10178  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10179  );
10180  FW_ASSERT(
10181  _status == Fw::FW_SERIALIZE_OK,
10182  static_cast<FwAssertArgType>(_status)
10183  );
10184 
10185 #if FW_AMPCS_COMPATIBLE
10186  // Serialize the argument size
10187  _status = _logBuff.serializeFrom(
10188  static_cast<U8>(sizeof(U32))
10189  );
10190  FW_ASSERT(
10191  _status == Fw::FW_SERIALIZE_OK,
10192  static_cast<FwAssertArgType>(_status)
10193  );
10194 #endif
10195  _status = _logBuff.serializeFrom(destEid);
10196  FW_ASSERT(
10197  _status == Fw::FW_SERIALIZE_OK,
10198  static_cast<FwAssertArgType>(_status)
10199  );
10200 
10201  _status = destFile.serializeTo(
10202  _logBuff,
10203  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10204  );
10205  FW_ASSERT(
10206  _status == Fw::FW_SERIALIZE_OK,
10207  static_cast<FwAssertArgType>(_status)
10208  );
10209 
10210 #if FW_AMPCS_COMPATIBLE
10211  // Serialize the argument size
10212  _status = _logBuff.serializeFrom(
10213  static_cast<U8>(sizeof(U8))
10214  );
10215  FW_ASSERT(
10216  _status == Fw::FW_SERIALIZE_OK,
10217  static_cast<FwAssertArgType>(_status)
10218  );
10219 #endif
10220  _status = _logBuff.serializeFrom(conditionCode);
10221  FW_ASSERT(
10222  _status == Fw::FW_SERIALIZE_OK,
10223  static_cast<FwAssertArgType>(_status)
10224  );
10225 
10226  this->logOut_out(
10227  0,
10228  _id,
10229  _logTime,
10231  _logBuff
10232  );
10233  }
10234 
10235  // Emit the event on the text log port
10236 #if FW_ENABLE_TEXT_LOGGING
10237  if (this->isConnected_logTextOut_OutputPort(0)) {
10238 #if FW_OBJECT_NAMES == 1
10239  const char* _formatString =
10240  "(%s) %s: RX %s transaction %" PRIu32 " FAILED, %" PRIu32 ":%s -> %" PRIu32 ":%s, error code %" PRIu8 "";
10241 #else
10242  const char* _formatString =
10243  "%s: RX %s transaction %" PRIu32 " FAILED, %" PRIu32 ":%s -> %" PRIu32 ":%s, error code %" PRIu8 "";
10244 #endif
10245 
10246  Fw::String cfdpClassStr;
10247  cfdpClass.toString(cfdpClassStr);
10248 
10249  Fw::TextLogString _logString;
10250  (void) _logString.format(
10251  _formatString,
10252 #if FW_OBJECT_NAMES == 1
10253  this->m_objName.toChar(),
10254 #endif
10255  "RxFileTransferFailed ",
10256  cfdpClassStr.toChar(),
10257  seqNum,
10258  srcEid,
10259  srcFile.toChar(),
10260  destEid,
10261  destFile.toChar(),
10262  conditionCode
10263  );
10264 
10265  this->logTextOut_out(
10266  0,
10267  _id,
10268  _logTime,
10270  _logString
10271  );
10272  }
10273 #endif
10274  }
10275 
10278  const Fw::StringBase& srcFile,
10279  const Fw::StringBase& destFile,
10280  U32 transactionSeq
10281  ) const
10282  {
10283  // Get the time
10284  Fw::Time _logTime;
10285  if (this->isConnected_timeCaller_OutputPort(0)) {
10286  this->timeCaller_out(0, _logTime);
10287  }
10288 
10289  const FwEventIdType _id = this->getIdBase() + EVENTID_METADATARECEIVED;
10290 
10291  // Emit the event on the log port
10292  if (this->isConnected_logOut_OutputPort(0)) {
10293  Fw::LogBuffer _logBuff;
10295 
10296 #if FW_AMPCS_COMPATIBLE
10297  // Serialize the number of arguments
10298  _status = _logBuff.serializeFrom(static_cast<U8>(3));
10299  FW_ASSERT(
10300  _status == Fw::FW_SERIALIZE_OK,
10301  static_cast<FwAssertArgType>(_status)
10302  );
10303 #endif
10304 
10305  _status = srcFile.serializeTo(
10306  _logBuff,
10307  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10308  );
10309  FW_ASSERT(
10310  _status == Fw::FW_SERIALIZE_OK,
10311  static_cast<FwAssertArgType>(_status)
10312  );
10313 
10314  _status = destFile.serializeTo(
10315  _logBuff,
10316  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10317  );
10318  FW_ASSERT(
10319  _status == Fw::FW_SERIALIZE_OK,
10320  static_cast<FwAssertArgType>(_status)
10321  );
10322 
10323 #if FW_AMPCS_COMPATIBLE
10324  // Serialize the argument size
10325  _status = _logBuff.serializeFrom(
10326  static_cast<U8>(sizeof(U32))
10327  );
10328  FW_ASSERT(
10329  _status == Fw::FW_SERIALIZE_OK,
10330  static_cast<FwAssertArgType>(_status)
10331  );
10332 #endif
10333  _status = _logBuff.serializeFrom(transactionSeq);
10334  FW_ASSERT(
10335  _status == Fw::FW_SERIALIZE_OK,
10336  static_cast<FwAssertArgType>(_status)
10337  );
10338 
10339  this->logOut_out(
10340  0,
10341  _id,
10342  _logTime,
10344  _logBuff
10345  );
10346  }
10347 
10348  // Emit the event on the text log port
10349 #if FW_ENABLE_TEXT_LOGGING
10350  if (this->isConnected_logTextOut_OutputPort(0)) {
10351 #if FW_OBJECT_NAMES == 1
10352  const char* _formatString =
10353  "(%s) %s: Metadata received for source: %s, dest: %s (transaction %" PRIu32 ")";
10354 #else
10355  const char* _formatString =
10356  "%s: Metadata received for source: %s, dest: %s (transaction %" PRIu32 ")";
10357 #endif
10358 
10359  Fw::TextLogString _logString;
10360  (void) _logString.format(
10361  _formatString,
10362 #if FW_OBJECT_NAMES == 1
10363  this->m_objName.toChar(),
10364 #endif
10365  "MetadataReceived ",
10366  srcFile.toChar(),
10367  destFile.toChar(),
10368  transactionSeq
10369  );
10370 
10371  this->logTextOut_out(
10372  0,
10373  _id,
10374  _logTime,
10376  _logString
10377  );
10378  }
10379 #endif
10380  }
10381 
10384  {
10385  // Get the time
10386  Fw::Time _logTime;
10387  if (this->isConnected_timeCaller_OutputPort(0)) {
10388  this->timeCaller_out(0, _logTime);
10389  }
10390 
10392 
10393  // Emit the event on the log port
10394  if (this->isConnected_logOut_OutputPort(0)) {
10395  Fw::LogBuffer _logBuff;
10396 
10397 #if FW_AMPCS_COMPATIBLE
10399  // Serialize the number of arguments
10400  _status = _logBuff.serializeFrom(static_cast<U8>(0));
10401  FW_ASSERT(
10402  _status == Fw::FW_SERIALIZE_OK,
10403  static_cast<FwAssertArgType>(_status)
10404  );
10405 #endif
10406 
10407  this->logOut_out(
10408  0,
10409  _id,
10410  _logTime,
10412  _logBuff
10413  );
10414  }
10415 
10416  // Emit the event on the text log port
10417 #if FW_ENABLE_TEXT_LOGGING
10418  if (this->isConnected_logTextOut_OutputPort(0)) {
10419 #if FW_OBJECT_NAMES == 1
10420  const char* _formatString =
10421  "(%s) %s: File data PDU with unsupported segment metadata received";
10422 #else
10423  const char* _formatString =
10424  "%s: File data PDU with unsupported segment metadata received";
10425 #endif
10426 
10427  Fw::TextLogString _logString;
10428  (void) _logString.format(
10429  _formatString,
10430 #if FW_OBJECT_NAMES == 1
10431  this->m_objName.toChar(),
10432 #endif
10433  "FileDataSegmentMetadata "
10434  );
10435 
10436  this->logTextOut_out(
10437  0,
10438  _id,
10439  _logTime,
10441  _logString
10442  );
10443  }
10444 #endif
10445  }
10446 
10448  log_WARNING_LO_ChunklistUnavailable(U32 transactionSeq) const
10449  {
10450  // Get the time
10451  Fw::Time _logTime;
10452  if (this->isConnected_timeCaller_OutputPort(0)) {
10453  this->timeCaller_out(0, _logTime);
10454  }
10455 
10457 
10458  // Emit the event on the log port
10459  if (this->isConnected_logOut_OutputPort(0)) {
10460  Fw::LogBuffer _logBuff;
10462 
10463 #if FW_AMPCS_COMPATIBLE
10464  // Serialize the number of arguments
10465  _status = _logBuff.serializeFrom(static_cast<U8>(1));
10466  FW_ASSERT(
10467  _status == Fw::FW_SERIALIZE_OK,
10468  static_cast<FwAssertArgType>(_status)
10469  );
10470 #endif
10471 
10472 #if FW_AMPCS_COMPATIBLE
10473  // Serialize the argument size
10474  _status = _logBuff.serializeFrom(
10475  static_cast<U8>(sizeof(U32))
10476  );
10477  FW_ASSERT(
10478  _status == Fw::FW_SERIALIZE_OK,
10479  static_cast<FwAssertArgType>(_status)
10480  );
10481 #endif
10482  _status = _logBuff.serializeFrom(transactionSeq);
10483  FW_ASSERT(
10484  _status == Fw::FW_SERIALIZE_OK,
10485  static_cast<FwAssertArgType>(_status)
10486  );
10487 
10488  this->logOut_out(
10489  0,
10490  _id,
10491  _logTime,
10493  _logBuff
10494  );
10495  }
10496 
10497  // Emit the event on the text log port
10498 #if FW_ENABLE_TEXT_LOGGING
10499  if (this->isConnected_logTextOut_OutputPort(0)) {
10500 #if FW_OBJECT_NAMES == 1
10501  const char* _formatString =
10502  "(%s) %s: Cannot get chunklist, abandoning transaction %" PRIu32 "";
10503 #else
10504  const char* _formatString =
10505  "%s: Cannot get chunklist, abandoning transaction %" PRIu32 "";
10506 #endif
10507 
10508  Fw::TextLogString _logString;
10509  (void) _logString.format(
10510  _formatString,
10511 #if FW_OBJECT_NAMES == 1
10512  this->m_objName.toChar(),
10513 #endif
10514  "ChunklistUnavailable ",
10515  transactionSeq
10516  );
10517 
10518  this->logTextOut_out(
10519  0,
10520  _id,
10521  _logTime,
10523  _logString
10524  );
10525  }
10526 #endif
10527  }
10528 
10531  {
10532  // Get the time
10533  Fw::Time _logTime;
10534  if (this->isConnected_timeCaller_OutputPort(0)) {
10535  this->timeCaller_out(0, _logTime);
10536  }
10537 
10539 
10540  // Emit the event on the log port
10541  if (this->isConnected_logOut_OutputPort(0)) {
10542  Fw::LogBuffer _logBuff;
10543 
10544 #if FW_AMPCS_COMPATIBLE
10546  // Serialize the number of arguments
10547  _status = _logBuff.serializeFrom(static_cast<U8>(0));
10548  FW_ASSERT(
10549  _status == Fw::FW_SERIALIZE_OK,
10550  static_cast<FwAssertArgType>(_status)
10551  );
10552 #endif
10553 
10554  this->logOut_out(
10555  0,
10556  _id,
10557  _logTime,
10559  _logBuff
10560  );
10561  }
10562 
10563  // Emit the event on the text log port
10564 #if FW_ENABLE_TEXT_LOGGING
10565  if (this->isConnected_logTextOut_OutputPort(0)) {
10566 #if FW_OBJECT_NAMES == 1
10567  const char* _formatString =
10568  "(%s) %s: Unhandled PDU type received in idle state";
10569 #else
10570  const char* _formatString =
10571  "%s: Unhandled PDU type received in idle state";
10572 #endif
10573 
10574  Fw::TextLogString _logString;
10575  (void) _logString.format(
10576  _formatString,
10577 #if FW_OBJECT_NAMES == 1
10578  this->m_objName.toChar(),
10579 #endif
10580  "UnhandledPduInIdleState "
10581  );
10582 
10583  this->logTextOut_out(
10584  0,
10585  _id,
10586  _logTime,
10588  _logString
10589  );
10590  }
10591 #endif
10592  }
10593 
10596  U32 srcEid,
10597  U32 transactionSeq
10598  ) const
10599  {
10600  // Get the time
10601  Fw::Time _logTime;
10602  if (this->isConnected_timeCaller_OutputPort(0)) {
10603  this->timeCaller_out(0, _logTime);
10604  }
10605 
10607 
10608  // Emit the event on the log port
10609  if (this->isConnected_logOut_OutputPort(0)) {
10610  Fw::LogBuffer _logBuff;
10612 
10613 #if FW_AMPCS_COMPATIBLE
10614  // Serialize the number of arguments
10615  _status = _logBuff.serializeFrom(static_cast<U8>(2));
10616  FW_ASSERT(
10617  _status == Fw::FW_SERIALIZE_OK,
10618  static_cast<FwAssertArgType>(_status)
10619  );
10620 #endif
10621 
10622 #if FW_AMPCS_COMPATIBLE
10623  // Serialize the argument size
10624  _status = _logBuff.serializeFrom(
10625  static_cast<U8>(sizeof(U32))
10626  );
10627  FW_ASSERT(
10628  _status == Fw::FW_SERIALIZE_OK,
10629  static_cast<FwAssertArgType>(_status)
10630  );
10631 #endif
10632  _status = _logBuff.serializeFrom(srcEid);
10633  FW_ASSERT(
10634  _status == Fw::FW_SERIALIZE_OK,
10635  static_cast<FwAssertArgType>(_status)
10636  );
10637 
10638 #if FW_AMPCS_COMPATIBLE
10639  // Serialize the argument size
10640  _status = _logBuff.serializeFrom(
10641  static_cast<U8>(sizeof(U32))
10642  );
10643  FW_ASSERT(
10644  _status == Fw::FW_SERIALIZE_OK,
10645  static_cast<FwAssertArgType>(_status)
10646  );
10647 #endif
10648  _status = _logBuff.serializeFrom(transactionSeq);
10649  FW_ASSERT(
10650  _status == Fw::FW_SERIALIZE_OK,
10651  static_cast<FwAssertArgType>(_status)
10652  );
10653 
10654  this->logOut_out(
10655  0,
10656  _id,
10657  _logTime,
10659  _logBuff
10660  );
10661  }
10662 
10663  // Emit the event on the text log port
10664 #if FW_ENABLE_TEXT_LOGGING
10665  if (this->isConnected_logTextOut_OutputPort(0)) {
10666 #if FW_OBJECT_NAMES == 1
10667  const char* _formatString =
10668  "(%s) %s: Dropping packet from %" PRIu32 " transaction %" PRIu32 " due to max RX transactions reached";
10669 #else
10670  const char* _formatString =
10671  "%s: Dropping packet from %" PRIu32 " transaction %" PRIu32 " due to max RX transactions reached";
10672 #endif
10673 
10674  Fw::TextLogString _logString;
10675  (void) _logString.format(
10676  _formatString,
10677 #if FW_OBJECT_NAMES == 1
10678  this->m_objName.toChar(),
10679 #endif
10680  "RxTransactionLimitReached ",
10681  srcEid,
10682  transactionSeq
10683  );
10684 
10685  this->logTextOut_out(
10686  0,
10687  _id,
10688  _logTime,
10690  _logString
10691  );
10692  }
10693 #endif
10694  }
10695 
10698  {
10699  // Get the time
10700  Fw::Time _logTime;
10701  if (this->isConnected_timeCaller_OutputPort(0)) {
10702  this->timeCaller_out(0, _logTime);
10703  }
10704 
10706 
10707  // Emit the event on the log port
10708  if (this->isConnected_logOut_OutputPort(0)) {
10709  Fw::LogBuffer _logBuff;
10711 
10712 #if FW_AMPCS_COMPATIBLE
10713  // Serialize the number of arguments
10714  _status = _logBuff.serializeFrom(static_cast<U8>(1));
10715  FW_ASSERT(
10716  _status == Fw::FW_SERIALIZE_OK,
10717  static_cast<FwAssertArgType>(_status)
10718  );
10719 #endif
10720 
10721 #if FW_AMPCS_COMPATIBLE
10722  // Serialize the argument size
10723  _status = _logBuff.serializeFrom(
10724  static_cast<U8>(sizeof(U32))
10725  );
10726  FW_ASSERT(
10727  _status == Fw::FW_SERIALIZE_OK,
10728  static_cast<FwAssertArgType>(_status)
10729  );
10730 #endif
10731  _status = _logBuff.serializeFrom(destEid);
10732  FW_ASSERT(
10733  _status == Fw::FW_SERIALIZE_OK,
10734  static_cast<FwAssertArgType>(_status)
10735  );
10736 
10737  this->logOut_out(
10738  0,
10739  _id,
10740  _logTime,
10742  _logBuff
10743  );
10744  }
10745 
10746  // Emit the event on the text log port
10747 #if FW_ENABLE_TEXT_LOGGING
10748  if (this->isConnected_logTextOut_OutputPort(0)) {
10749 #if FW_OBJECT_NAMES == 1
10750  const char* _formatString =
10751  "(%s) %s: Dropping packet for invalid destination EID %" PRIu32 "";
10752 #else
10753  const char* _formatString =
10754  "%s: Dropping packet for invalid destination EID %" PRIu32 "";
10755 #endif
10756 
10757  Fw::TextLogString _logString;
10758  (void) _logString.format(
10759  _formatString,
10760 #if FW_OBJECT_NAMES == 1
10761  this->m_objName.toChar(),
10762 #endif
10763  "InvalidDestinationEid ",
10764  destEid
10765  );
10766 
10767  this->logTextOut_out(
10768  0,
10769  _id,
10770  _logTime,
10772  _logString
10773  );
10774  }
10775 #endif
10776  }
10777 
10780  {
10781  // Get the time
10782  Fw::Time _logTime;
10783  if (this->isConnected_timeCaller_OutputPort(0)) {
10784  this->timeCaller_out(0, _logTime);
10785  }
10786 
10788 
10789  // Emit the event on the log port
10790  if (this->isConnected_logOut_OutputPort(0)) {
10791  Fw::LogBuffer _logBuff;
10792 
10793 #if FW_AMPCS_COMPATIBLE
10795  // Serialize the number of arguments
10796  _status = _logBuff.serializeFrom(static_cast<U8>(0));
10797  FW_ASSERT(
10798  _status == Fw::FW_SERIALIZE_OK,
10799  static_cast<FwAssertArgType>(_status)
10800  );
10801 #endif
10802 
10803  this->logOut_out(
10804  0,
10805  _id,
10806  _logTime,
10808  _logBuff
10809  );
10810  }
10811 
10812  // Emit the event on the text log port
10813 #if FW_ENABLE_TEXT_LOGGING
10814  if (this->isConnected_logTextOut_OutputPort(0)) {
10815 #if FW_OBJECT_NAMES == 1
10816  const char* _formatString =
10817  "(%s) %s: Maximum number of commanded TX files reached";
10818 #else
10819  const char* _formatString =
10820  "%s: Maximum number of commanded TX files reached";
10821 #endif
10822 
10823  Fw::TextLogString _logString;
10824  (void) _logString.format(
10825  _formatString,
10826 #if FW_OBJECT_NAMES == 1
10827  this->m_objName.toChar(),
10828 #endif
10829  "MaxTxTransactionsReached "
10830  );
10831 
10832  this->logTextOut_out(
10833  0,
10834  _id,
10835  _logTime,
10837  _logString
10838  );
10839  }
10840 #endif
10841  }
10842 
10845  const Fw::StringBase& directory,
10846  I32 status
10847  ) const
10848  {
10849  // Get the time
10850  Fw::Time _logTime;
10851  if (this->isConnected_timeCaller_OutputPort(0)) {
10852  this->timeCaller_out(0, _logTime);
10853  }
10854 
10856 
10857  // Emit the event on the log port
10858  if (this->isConnected_logOut_OutputPort(0)) {
10859  Fw::LogBuffer _logBuff;
10861 
10862 #if FW_AMPCS_COMPATIBLE
10863  // Serialize the number of arguments
10864  _status = _logBuff.serializeFrom(static_cast<U8>(2));
10865  FW_ASSERT(
10866  _status == Fw::FW_SERIALIZE_OK,
10867  static_cast<FwAssertArgType>(_status)
10868  );
10869 #endif
10870 
10871  _status = directory.serializeTo(
10872  _logBuff,
10873  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10874  );
10875  FW_ASSERT(
10876  _status == Fw::FW_SERIALIZE_OK,
10877  static_cast<FwAssertArgType>(_status)
10878  );
10879 
10880 #if FW_AMPCS_COMPATIBLE
10881  // Serialize the argument size
10882  _status = _logBuff.serializeFrom(
10883  static_cast<U8>(sizeof(I32))
10884  );
10885  FW_ASSERT(
10886  _status == Fw::FW_SERIALIZE_OK,
10887  static_cast<FwAssertArgType>(_status)
10888  );
10889 #endif
10890  _status = _logBuff.serializeFrom(status);
10891  FW_ASSERT(
10892  _status == Fw::FW_SERIALIZE_OK,
10893  static_cast<FwAssertArgType>(_status)
10894  );
10895 
10896  this->logOut_out(
10897  0,
10898  _id,
10899  _logTime,
10901  _logBuff
10902  );
10903  }
10904 
10905  // Emit the event on the text log port
10906 #if FW_ENABLE_TEXT_LOGGING
10907  if (this->isConnected_logTextOut_OutputPort(0)) {
10908 #if FW_OBJECT_NAMES == 1
10909  const char* _formatString =
10910  "(%s) %s: Failed to open playback directory %s, error=%" PRIi32 "";
10911 #else
10912  const char* _formatString =
10913  "%s: Failed to open playback directory %s, error=%" PRIi32 "";
10914 #endif
10915 
10916  Fw::TextLogString _logString;
10917  (void) _logString.format(
10918  _formatString,
10919 #if FW_OBJECT_NAMES == 1
10920  this->m_objName.toChar(),
10921 #endif
10922  "PlaybackDirOpenFailed ",
10923  directory.toChar(),
10924  status
10925  );
10926 
10927  this->logTextOut_out(
10928  0,
10929  _id,
10930  _logTime,
10932  _logString
10933  );
10934  }
10935 #endif
10936  }
10937 
10940  {
10941  // Get the time
10942  Fw::Time _logTime;
10943  if (this->isConnected_timeCaller_OutputPort(0)) {
10944  this->timeCaller_out(0, _logTime);
10945  }
10946 
10948 
10949  // Emit the event on the log port
10950  if (this->isConnected_logOut_OutputPort(0)) {
10951  Fw::LogBuffer _logBuff;
10952 
10953 #if FW_AMPCS_COMPATIBLE
10955  // Serialize the number of arguments
10956  _status = _logBuff.serializeFrom(static_cast<U8>(0));
10957  FW_ASSERT(
10958  _status == Fw::FW_SERIALIZE_OK,
10959  static_cast<FwAssertArgType>(_status)
10960  );
10961 #endif
10962 
10963  this->logOut_out(
10964  0,
10965  _id,
10966  _logTime,
10968  _logBuff
10969  );
10970  }
10971 
10972  // Emit the event on the text log port
10973 #if FW_ENABLE_TEXT_LOGGING
10974  if (this->isConnected_logTextOut_OutputPort(0)) {
10975 #if FW_OBJECT_NAMES == 1
10976  const char* _formatString =
10977  "(%s) %s: No playback directory slot available";
10978 #else
10979  const char* _formatString =
10980  "%s: No playback directory slot available";
10981 #endif
10982 
10983  Fw::TextLogString _logString;
10984  (void) _logString.format(
10985  _formatString,
10986 #if FW_OBJECT_NAMES == 1
10987  this->m_objName.toChar(),
10988 #endif
10989  "PlaybackDirSlotUnavailable "
10990  );
10991 
10992  this->logTextOut_out(
10993  0,
10994  _id,
10995  _logTime,
10997  _logString
10998  );
10999  }
11000 #endif
11001  }
11002 
11005  U8 channelId,
11006  U32 transactionSeq
11007  ) const
11008  {
11009  // Get the time
11010  Fw::Time _logTime;
11011  if (this->isConnected_timeCaller_OutputPort(0)) {
11012  this->timeCaller_out(0, _logTime);
11013  }
11014 
11016 
11017  // Emit the event on the log port
11018  if (this->isConnected_logOut_OutputPort(0)) {
11019  Fw::LogBuffer _logBuff;
11021 
11022 #if FW_AMPCS_COMPATIBLE
11023  // Serialize the number of arguments
11024  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11025  FW_ASSERT(
11026  _status == Fw::FW_SERIALIZE_OK,
11027  static_cast<FwAssertArgType>(_status)
11028  );
11029 #endif
11030 
11031 #if FW_AMPCS_COMPATIBLE
11032  // Serialize the argument size
11033  _status = _logBuff.serializeFrom(
11034  static_cast<U8>(sizeof(U8))
11035  );
11036  FW_ASSERT(
11037  _status == Fw::FW_SERIALIZE_OK,
11038  static_cast<FwAssertArgType>(_status)
11039  );
11040 #endif
11041  _status = _logBuff.serializeFrom(channelId);
11042  FW_ASSERT(
11043  _status == Fw::FW_SERIALIZE_OK,
11044  static_cast<FwAssertArgType>(_status)
11045  );
11046 
11047 #if FW_AMPCS_COMPATIBLE
11048  // Serialize the argument size
11049  _status = _logBuff.serializeFrom(
11050  static_cast<U8>(sizeof(U32))
11051  );
11052  FW_ASSERT(
11053  _status == Fw::FW_SERIALIZE_OK,
11054  static_cast<FwAssertArgType>(_status)
11055  );
11056 #endif
11057  _status = _logBuff.serializeFrom(transactionSeq);
11058  FW_ASSERT(
11059  _status == Fw::FW_SERIALIZE_OK,
11060  static_cast<FwAssertArgType>(_status)
11061  );
11062 
11063  this->logOut_out(
11064  0,
11065  _id,
11066  _logTime,
11068  _logBuff
11069  );
11070  }
11071 
11072  // Emit the event on the text log port
11073 #if FW_ENABLE_TEXT_LOGGING
11074  if (this->isConnected_logTextOut_OutputPort(0)) {
11075 #if FW_OBJECT_NAMES == 1
11076  const char* _formatString =
11077  "(%s) %s: Closed dangling file handle for channel %" PRIu8 " transaction %" PRIu32 "";
11078 #else
11079  const char* _formatString =
11080  "%s: Closed dangling file handle for channel %" PRIu8 " transaction %" PRIu32 "";
11081 #endif
11082 
11083  Fw::TextLogString _logString;
11084  (void) _logString.format(
11085  _formatString,
11086 #if FW_OBJECT_NAMES == 1
11087  this->m_objName.toChar(),
11088 #endif
11089  "DanglingFileHandleClosed ",
11090  channelId,
11091  transactionSeq
11092  );
11093 
11094  this->logTextOut_out(
11095  0,
11096  _id,
11097  _logTime,
11099  _logString
11100  );
11101  }
11102 #endif
11103  }
11104 
11107  const Fw::StringBase& directory,
11108  I32 status
11109  ) const
11110  {
11111  // Get the time
11112  Fw::Time _logTime;
11113  if (this->isConnected_timeCaller_OutputPort(0)) {
11114  this->timeCaller_out(0, _logTime);
11115  }
11116 
11118 
11119  // Emit the event on the log port
11120  if (this->isConnected_logOut_OutputPort(0)) {
11121  Fw::LogBuffer _logBuff;
11123 
11124 #if FW_AMPCS_COMPATIBLE
11125  // Serialize the number of arguments
11126  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11127  FW_ASSERT(
11128  _status == Fw::FW_SERIALIZE_OK,
11129  static_cast<FwAssertArgType>(_status)
11130  );
11131 #endif
11132 
11133  _status = directory.serializeTo(
11134  _logBuff,
11135  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
11136  );
11137  FW_ASSERT(
11138  _status == Fw::FW_SERIALIZE_OK,
11139  static_cast<FwAssertArgType>(_status)
11140  );
11141 
11142 #if FW_AMPCS_COMPATIBLE
11143  // Serialize the argument size
11144  _status = _logBuff.serializeFrom(
11145  static_cast<U8>(sizeof(I32))
11146  );
11147  FW_ASSERT(
11148  _status == Fw::FW_SERIALIZE_OK,
11149  static_cast<FwAssertArgType>(_status)
11150  );
11151 #endif
11152  _status = _logBuff.serializeFrom(status);
11153  FW_ASSERT(
11154  _status == Fw::FW_SERIALIZE_OK,
11155  static_cast<FwAssertArgType>(_status)
11156  );
11157 
11158  this->logOut_out(
11159  0,
11160  _id,
11161  _logTime,
11163  _logBuff
11164  );
11165  }
11166 
11167  // Emit the event on the text log port
11168 #if FW_ENABLE_TEXT_LOGGING
11169  if (this->isConnected_logTextOut_OutputPort(0)) {
11170 #if FW_OBJECT_NAMES == 1
11171  const char* _formatString =
11172  "(%s) %s: Failed to read from playback directory %s, error=%" PRIi32 "";
11173 #else
11174  const char* _formatString =
11175  "%s: Failed to read from playback directory %s, error=%" PRIi32 "";
11176 #endif
11177 
11178  Fw::TextLogString _logString;
11179  (void) _logString.format(
11180  _formatString,
11181 #if FW_OBJECT_NAMES == 1
11182  this->m_objName.toChar(),
11183 #endif
11184  "PlaybackDirReadFailed ",
11185  directory.toChar(),
11186  status
11187  );
11188 
11189  this->logTextOut_out(
11190  0,
11191  _id,
11192  _logTime,
11194  _logString
11195  );
11196  }
11197 #endif
11198  }
11199 
11202  {
11203  // Get the time
11204  Fw::Time _logTime;
11205  if (this->isConnected_timeCaller_OutputPort(0)) {
11206  this->timeCaller_out(0, _logTime);
11207  }
11208 
11210 
11211  // Emit the event on the log port
11212  if (this->isConnected_logOut_OutputPort(0)) {
11213  Fw::LogBuffer _logBuff;
11214 
11215 #if FW_AMPCS_COMPATIBLE
11217  // Serialize the number of arguments
11218  _status = _logBuff.serializeFrom(static_cast<U8>(0));
11219  FW_ASSERT(
11220  _status == Fw::FW_SERIALIZE_OK,
11221  static_cast<FwAssertArgType>(_status)
11222  );
11223 #endif
11224 
11225  this->logOut_out(
11226  0,
11227  _id,
11228  _logTime,
11230  _logBuff
11231  );
11232  }
11233 
11234  // Emit the event on the text log port
11235 #if FW_ENABLE_TEXT_LOGGING
11236  if (this->isConnected_logTextOut_OutputPort(0)) {
11237 #if FW_OBJECT_NAMES == 1
11238  const char* _formatString =
11239  "(%s) %s: Attempt to reset a transaction that has already been freed";
11240 #else
11241  const char* _formatString =
11242  "%s: Attempt to reset a transaction that has already been freed";
11243 #endif
11244 
11245  Fw::TextLogString _logString;
11246  (void) _logString.format(
11247  _formatString,
11248 #if FW_OBJECT_NAMES == 1
11249  this->m_objName.toChar(),
11250 #endif
11251  "ResetFreedTransaction "
11252  );
11253 
11254  this->logTextOut_out(
11255  0,
11256  _id,
11257  _logTime,
11259  _logString
11260  );
11261  }
11262 #endif
11263  }
11264 
11267  const Fw::StringBase& filename,
11268  I32 status
11269  ) const
11270  {
11271  // Get the time
11272  Fw::Time _logTime;
11273  if (this->isConnected_timeCaller_OutputPort(0)) {
11274  this->timeCaller_out(0, _logTime);
11275  }
11276 
11277  const FwEventIdType _id = this->getIdBase() + EVENTID_FILEREMOVEFAILED;
11278 
11279  // Emit the event on the log port
11280  if (this->isConnected_logOut_OutputPort(0)) {
11281  Fw::LogBuffer _logBuff;
11283 
11284 #if FW_AMPCS_COMPATIBLE
11285  // Serialize the number of arguments
11286  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11287  FW_ASSERT(
11288  _status == Fw::FW_SERIALIZE_OK,
11289  static_cast<FwAssertArgType>(_status)
11290  );
11291 #endif
11292 
11293  _status = filename.serializeTo(
11294  _logBuff,
11295  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
11296  );
11297  FW_ASSERT(
11298  _status == Fw::FW_SERIALIZE_OK,
11299  static_cast<FwAssertArgType>(_status)
11300  );
11301 
11302 #if FW_AMPCS_COMPATIBLE
11303  // Serialize the argument size
11304  _status = _logBuff.serializeFrom(
11305  static_cast<U8>(sizeof(I32))
11306  );
11307  FW_ASSERT(
11308  _status == Fw::FW_SERIALIZE_OK,
11309  static_cast<FwAssertArgType>(_status)
11310  );
11311 #endif
11312  _status = _logBuff.serializeFrom(status);
11313  FW_ASSERT(
11314  _status == Fw::FW_SERIALIZE_OK,
11315  static_cast<FwAssertArgType>(_status)
11316  );
11317 
11318  this->logOut_out(
11319  0,
11320  _id,
11321  _logTime,
11323  _logBuff
11324  );
11325  }
11326 
11327  // Emit the event on the text log port
11328 #if FW_ENABLE_TEXT_LOGGING
11329  if (this->isConnected_logTextOut_OutputPort(0)) {
11330 #if FW_OBJECT_NAMES == 1
11331  const char* _formatString =
11332  "(%s) %s: Failed to remove file %s, error=%" PRIi32 "";
11333 #else
11334  const char* _formatString =
11335  "%s: Failed to remove file %s, error=%" PRIi32 "";
11336 #endif
11337 
11338  Fw::TextLogString _logString;
11339  (void) _logString.format(
11340  _formatString,
11341 #if FW_OBJECT_NAMES == 1
11342  this->m_objName.toChar(),
11343 #endif
11344  "FileRemoveFailed ",
11345  filename.toChar(),
11346  status
11347  );
11348 
11349  this->logTextOut_out(
11350  0,
11351  _id,
11352  _logTime,
11354  _logString
11355  );
11356  }
11357 #endif
11358  }
11359 
11362  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq,
11364  ) const
11365  {
11366  // Get the time
11367  Fw::Time _logTime;
11368  if (this->isConnected_timeCaller_OutputPort(0)) {
11369  this->timeCaller_out(0, _logTime);
11370  }
11371 
11373 
11374  // Emit the event on the log port
11375  if (this->isConnected_logOut_OutputPort(0)) {
11376  Fw::LogBuffer _logBuff;
11378 
11379 #if FW_AMPCS_COMPATIBLE
11380  // Serialize the number of arguments
11381  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11382  FW_ASSERT(
11383  _status == Fw::FW_SERIALIZE_OK,
11384  static_cast<FwAssertArgType>(_status)
11385  );
11386 #endif
11387 
11388 #if FW_AMPCS_COMPATIBLE
11389  // Serialize the argument size
11390  _status = _logBuff.serializeFrom(
11391  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
11392  );
11393  FW_ASSERT(
11394  _status == Fw::FW_SERIALIZE_OK,
11395  static_cast<FwAssertArgType>(_status)
11396  );
11397 #endif
11398  _status = _logBuff.serializeFrom(transactionSeq);
11399  FW_ASSERT(
11400  _status == Fw::FW_SERIALIZE_OK,
11401  static_cast<FwAssertArgType>(_status)
11402  );
11403 
11404 #if FW_AMPCS_COMPATIBLE
11405  // Serialize the argument size
11406  _status = _logBuff.serializeFrom(
11407  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
11408  );
11409  FW_ASSERT(
11410  _status == Fw::FW_SERIALIZE_OK,
11411  static_cast<FwAssertArgType>(_status)
11412  );
11413 #endif
11414  _status = _logBuff.serializeFrom(entityId);
11415  FW_ASSERT(
11416  _status == Fw::FW_SERIALIZE_OK,
11417  static_cast<FwAssertArgType>(_status)
11418  );
11419 
11420  this->logOut_out(
11421  0,
11422  _id,
11423  _logTime,
11425  _logBuff
11426  );
11427  }
11428 
11429  // Emit the event on the text log port
11430 #if FW_ENABLE_TEXT_LOGGING
11431  if (this->isConnected_logTextOut_OutputPort(0)) {
11432 #if FW_OBJECT_NAMES == 1
11433  const char* _formatString =
11434  "(%s) %s: Transaction (%" PRIu32 ", %" PRIu32 ") suspended";
11435 #else
11436  const char* _formatString =
11437  "%s: Transaction (%" PRIu32 ", %" PRIu32 ") suspended";
11438 #endif
11439 
11440  Fw::TextLogString _logString;
11441  (void) _logString.format(
11442  _formatString,
11443 #if FW_OBJECT_NAMES == 1
11444  this->m_objName.toChar(),
11445 #endif
11446  "TransactionSuspended ",
11447  transactionSeq,
11448  entityId
11449  );
11450 
11451  this->logTextOut_out(
11452  0,
11453  _id,
11454  _logTime,
11456  _logString
11457  );
11458  }
11459 #endif
11460  }
11461 
11464  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq,
11466  ) const
11467  {
11468  // Get the time
11469  Fw::Time _logTime;
11470  if (this->isConnected_timeCaller_OutputPort(0)) {
11471  this->timeCaller_out(0, _logTime);
11472  }
11473 
11474  const FwEventIdType _id = this->getIdBase() + EVENTID_TRANSACTIONRESUMED;
11475 
11476  // Emit the event on the log port
11477  if (this->isConnected_logOut_OutputPort(0)) {
11478  Fw::LogBuffer _logBuff;
11480 
11481 #if FW_AMPCS_COMPATIBLE
11482  // Serialize the number of arguments
11483  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11484  FW_ASSERT(
11485  _status == Fw::FW_SERIALIZE_OK,
11486  static_cast<FwAssertArgType>(_status)
11487  );
11488 #endif
11489 
11490 #if FW_AMPCS_COMPATIBLE
11491  // Serialize the argument size
11492  _status = _logBuff.serializeFrom(
11493  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
11494  );
11495  FW_ASSERT(
11496  _status == Fw::FW_SERIALIZE_OK,
11497  static_cast<FwAssertArgType>(_status)
11498  );
11499 #endif
11500  _status = _logBuff.serializeFrom(transactionSeq);
11501  FW_ASSERT(
11502  _status == Fw::FW_SERIALIZE_OK,
11503  static_cast<FwAssertArgType>(_status)
11504  );
11505 
11506 #if FW_AMPCS_COMPATIBLE
11507  // Serialize the argument size
11508  _status = _logBuff.serializeFrom(
11509  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
11510  );
11511  FW_ASSERT(
11512  _status == Fw::FW_SERIALIZE_OK,
11513  static_cast<FwAssertArgType>(_status)
11514  );
11515 #endif
11516  _status = _logBuff.serializeFrom(entityId);
11517  FW_ASSERT(
11518  _status == Fw::FW_SERIALIZE_OK,
11519  static_cast<FwAssertArgType>(_status)
11520  );
11521 
11522  this->logOut_out(
11523  0,
11524  _id,
11525  _logTime,
11527  _logBuff
11528  );
11529  }
11530 
11531  // Emit the event on the text log port
11532 #if FW_ENABLE_TEXT_LOGGING
11533  if (this->isConnected_logTextOut_OutputPort(0)) {
11534 #if FW_OBJECT_NAMES == 1
11535  const char* _formatString =
11536  "(%s) %s: Transaction (%" PRIu32 ", %" PRIu32 ") resumed";
11537 #else
11538  const char* _formatString =
11539  "%s: Transaction (%" PRIu32 ", %" PRIu32 ") resumed";
11540 #endif
11541 
11542  Fw::TextLogString _logString;
11543  (void) _logString.format(
11544  _formatString,
11545 #if FW_OBJECT_NAMES == 1
11546  this->m_objName.toChar(),
11547 #endif
11548  "TransactionResumed ",
11549  transactionSeq,
11550  entityId
11551  );
11552 
11553  this->logTextOut_out(
11554  0,
11555  _id,
11556  _logTime,
11558  _logString
11559  );
11560  }
11561 #endif
11562  }
11563 
11566  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq,
11568  ) const
11569  {
11570  // Get the time
11571  Fw::Time _logTime;
11572  if (this->isConnected_timeCaller_OutputPort(0)) {
11573  this->timeCaller_out(0, _logTime);
11574  }
11575 
11576  const FwEventIdType _id = this->getIdBase() + EVENTID_TRANSACTIONCANCELED;
11577 
11578  // Emit the event on the log port
11579  if (this->isConnected_logOut_OutputPort(0)) {
11580  Fw::LogBuffer _logBuff;
11582 
11583 #if FW_AMPCS_COMPATIBLE
11584  // Serialize the number of arguments
11585  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11586  FW_ASSERT(
11587  _status == Fw::FW_SERIALIZE_OK,
11588  static_cast<FwAssertArgType>(_status)
11589  );
11590 #endif
11591 
11592 #if FW_AMPCS_COMPATIBLE
11593  // Serialize the argument size
11594  _status = _logBuff.serializeFrom(
11595  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
11596  );
11597  FW_ASSERT(
11598  _status == Fw::FW_SERIALIZE_OK,
11599  static_cast<FwAssertArgType>(_status)
11600  );
11601 #endif
11602  _status = _logBuff.serializeFrom(transactionSeq);
11603  FW_ASSERT(
11604  _status == Fw::FW_SERIALIZE_OK,
11605  static_cast<FwAssertArgType>(_status)
11606  );
11607 
11608 #if FW_AMPCS_COMPATIBLE
11609  // Serialize the argument size
11610  _status = _logBuff.serializeFrom(
11611  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
11612  );
11613  FW_ASSERT(
11614  _status == Fw::FW_SERIALIZE_OK,
11615  static_cast<FwAssertArgType>(_status)
11616  );
11617 #endif
11618  _status = _logBuff.serializeFrom(entityId);
11619  FW_ASSERT(
11620  _status == Fw::FW_SERIALIZE_OK,
11621  static_cast<FwAssertArgType>(_status)
11622  );
11623 
11624  this->logOut_out(
11625  0,
11626  _id,
11627  _logTime,
11629  _logBuff
11630  );
11631  }
11632 
11633  // Emit the event on the text log port
11634 #if FW_ENABLE_TEXT_LOGGING
11635  if (this->isConnected_logTextOut_OutputPort(0)) {
11636 #if FW_OBJECT_NAMES == 1
11637  const char* _formatString =
11638  "(%s) %s: Transaction (%" PRIu32 ", %" PRIu32 ") canceled";
11639 #else
11640  const char* _formatString =
11641  "%s: Transaction (%" PRIu32 ", %" PRIu32 ") canceled";
11642 #endif
11643 
11644  Fw::TextLogString _logString;
11645  (void) _logString.format(
11646  _formatString,
11647 #if FW_OBJECT_NAMES == 1
11648  this->m_objName.toChar(),
11649 #endif
11650  "TransactionCanceled ",
11651  transactionSeq,
11652  entityId
11653  );
11654 
11655  this->logTextOut_out(
11656  0,
11657  _id,
11658  _logTime,
11660  _logString
11661  );
11662  }
11663 #endif
11664  }
11665 
11668  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq,
11670  ) const
11671  {
11672  // Get the time
11673  Fw::Time _logTime;
11674  if (this->isConnected_timeCaller_OutputPort(0)) {
11675  this->timeCaller_out(0, _logTime);
11676  }
11677 
11679 
11680  // Emit the event on the log port
11681  if (this->isConnected_logOut_OutputPort(0)) {
11682  Fw::LogBuffer _logBuff;
11684 
11685 #if FW_AMPCS_COMPATIBLE
11686  // Serialize the number of arguments
11687  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11688  FW_ASSERT(
11689  _status == Fw::FW_SERIALIZE_OK,
11690  static_cast<FwAssertArgType>(_status)
11691  );
11692 #endif
11693 
11694 #if FW_AMPCS_COMPATIBLE
11695  // Serialize the argument size
11696  _status = _logBuff.serializeFrom(
11697  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
11698  );
11699  FW_ASSERT(
11700  _status == Fw::FW_SERIALIZE_OK,
11701  static_cast<FwAssertArgType>(_status)
11702  );
11703 #endif
11704  _status = _logBuff.serializeFrom(transactionSeq);
11705  FW_ASSERT(
11706  _status == Fw::FW_SERIALIZE_OK,
11707  static_cast<FwAssertArgType>(_status)
11708  );
11709 
11710 #if FW_AMPCS_COMPATIBLE
11711  // Serialize the argument size
11712  _status = _logBuff.serializeFrom(
11713  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
11714  );
11715  FW_ASSERT(
11716  _status == Fw::FW_SERIALIZE_OK,
11717  static_cast<FwAssertArgType>(_status)
11718  );
11719 #endif
11720  _status = _logBuff.serializeFrom(entityId);
11721  FW_ASSERT(
11722  _status == Fw::FW_SERIALIZE_OK,
11723  static_cast<FwAssertArgType>(_status)
11724  );
11725 
11726  this->logOut_out(
11727  0,
11728  _id,
11729  _logTime,
11731  _logBuff
11732  );
11733  }
11734 
11735  // Emit the event on the text log port
11736 #if FW_ENABLE_TEXT_LOGGING
11737  if (this->isConnected_logTextOut_OutputPort(0)) {
11738 #if FW_OBJECT_NAMES == 1
11739  const char* _formatString =
11740  "(%s) %s: Transaction (%" PRIu32 ", %" PRIu32 ") abandoned";
11741 #else
11742  const char* _formatString =
11743  "%s: Transaction (%" PRIu32 ", %" PRIu32 ") abandoned";
11744 #endif
11745 
11746  Fw::TextLogString _logString;
11747  (void) _logString.format(
11748  _formatString,
11749 #if FW_OBJECT_NAMES == 1
11750  this->m_objName.toChar(),
11751 #endif
11752  "TransactionAbandoned ",
11753  transactionSeq,
11754  entityId
11755  );
11756 
11757  this->logTextOut_out(
11758  0,
11759  _id,
11760  _logTime,
11762  _logString
11763  );
11764  }
11765 #endif
11766  }
11767 
11770  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq,
11772  ) const
11773  {
11774  // Get the time
11775  Fw::Time _logTime;
11776  if (this->isConnected_timeCaller_OutputPort(0)) {
11777  this->timeCaller_out(0, _logTime);
11778  }
11779 
11780  const FwEventIdType _id = this->getIdBase() + EVENTID_TRANSACTIONNOTFOUND;
11781 
11782  // Emit the event on the log port
11783  if (this->isConnected_logOut_OutputPort(0)) {
11784  Fw::LogBuffer _logBuff;
11786 
11787 #if FW_AMPCS_COMPATIBLE
11788  // Serialize the number of arguments
11789  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11790  FW_ASSERT(
11791  _status == Fw::FW_SERIALIZE_OK,
11792  static_cast<FwAssertArgType>(_status)
11793  );
11794 #endif
11795 
11796 #if FW_AMPCS_COMPATIBLE
11797  // Serialize the argument size
11798  _status = _logBuff.serializeFrom(
11799  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
11800  );
11801  FW_ASSERT(
11802  _status == Fw::FW_SERIALIZE_OK,
11803  static_cast<FwAssertArgType>(_status)
11804  );
11805 #endif
11806  _status = _logBuff.serializeFrom(transactionSeq);
11807  FW_ASSERT(
11808  _status == Fw::FW_SERIALIZE_OK,
11809  static_cast<FwAssertArgType>(_status)
11810  );
11811 
11812 #if FW_AMPCS_COMPATIBLE
11813  // Serialize the argument size
11814  _status = _logBuff.serializeFrom(
11815  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
11816  );
11817  FW_ASSERT(
11818  _status == Fw::FW_SERIALIZE_OK,
11819  static_cast<FwAssertArgType>(_status)
11820  );
11821 #endif
11822  _status = _logBuff.serializeFrom(entityId);
11823  FW_ASSERT(
11824  _status == Fw::FW_SERIALIZE_OK,
11825  static_cast<FwAssertArgType>(_status)
11826  );
11827 
11828  this->logOut_out(
11829  0,
11830  _id,
11831  _logTime,
11833  _logBuff
11834  );
11835  }
11836 
11837  // Emit the event on the text log port
11838 #if FW_ENABLE_TEXT_LOGGING
11839  if (this->isConnected_logTextOut_OutputPort(0)) {
11840 #if FW_OBJECT_NAMES == 1
11841  const char* _formatString =
11842  "(%s) %s: Transaction (%" PRIu32 ", %" PRIu32 ") not found";
11843 #else
11844  const char* _formatString =
11845  "%s: Transaction (%" PRIu32 ", %" PRIu32 ") not found";
11846 #endif
11847 
11848  Fw::TextLogString _logString;
11849  (void) _logString.format(
11850  _formatString,
11851 #if FW_OBJECT_NAMES == 1
11852  this->m_objName.toChar(),
11853 #endif
11854  "TransactionNotFound ",
11855  transactionSeq,
11856  entityId
11857  );
11858 
11859  this->logTextOut_out(
11860  0,
11861  _id,
11862  _logTime,
11864  _logString
11865  );
11866  }
11867 #endif
11868  }
11869 
11872  {
11873  // Get the time
11874  Fw::Time _logTime;
11875  if (this->isConnected_timeCaller_OutputPort(0)) {
11876  this->timeCaller_out(0, _logTime);
11877  }
11878 
11879  const FwEventIdType _id = this->getIdBase() + EVENTID_RESETCOUNTERS;
11880 
11881  // Emit the event on the log port
11882  if (this->isConnected_logOut_OutputPort(0)) {
11883  Fw::LogBuffer _logBuff;
11885 
11886 #if FW_AMPCS_COMPATIBLE
11887  // Serialize the number of arguments
11888  _status = _logBuff.serializeFrom(static_cast<U8>(1));
11889  FW_ASSERT(
11890  _status == Fw::FW_SERIALIZE_OK,
11891  static_cast<FwAssertArgType>(_status)
11892  );
11893 #endif
11894 
11895 #if FW_AMPCS_COMPATIBLE
11896  // Serialize the argument size
11897  _status = _logBuff.serializeFrom(
11898  static_cast<U8>(sizeof(U8))
11899  );
11900  FW_ASSERT(
11901  _status == Fw::FW_SERIALIZE_OK,
11902  static_cast<FwAssertArgType>(_status)
11903  );
11904 #endif
11905  _status = _logBuff.serializeFrom(channelId);
11906  FW_ASSERT(
11907  _status == Fw::FW_SERIALIZE_OK,
11908  static_cast<FwAssertArgType>(_status)
11909  );
11910 
11911  this->logOut_out(
11912  0,
11913  _id,
11914  _logTime,
11916  _logBuff
11917  );
11918  }
11919 
11920  // Emit the event on the text log port
11921 #if FW_ENABLE_TEXT_LOGGING
11922  if (this->isConnected_logTextOut_OutputPort(0)) {
11923 #if FW_OBJECT_NAMES == 1
11924  const char* _formatString =
11925  "(%s) %s: Reset telemetry counters for channel %" PRIu8 "";
11926 #else
11927  const char* _formatString =
11928  "%s: Reset telemetry counters for channel %" PRIu8 "";
11929 #endif
11930 
11931  Fw::TextLogString _logString;
11932  (void) _logString.format(
11933  _formatString,
11934 #if FW_OBJECT_NAMES == 1
11935  this->m_objName.toChar(),
11936 #endif
11937  "ResetCounters ",
11938  channelId
11939  );
11940 
11941  this->logTextOut_out(
11942  0,
11943  _id,
11944  _logTime,
11946  _logString
11947  );
11948  }
11949 #endif
11950  }
11951 
11956  ) const
11957  {
11958  // Get the time
11959  Fw::Time _logTime;
11960  if (this->isConnected_timeCaller_OutputPort(0)) {
11961  this->timeCaller_out(0, _logTime);
11962  }
11963 
11964  const FwEventIdType _id = this->getIdBase() + EVENTID_TXLATEFINACKED;
11965 
11966  // Emit the event on the log port
11967  if (this->isConnected_logOut_OutputPort(0)) {
11968  Fw::LogBuffer _logBuff;
11970 
11971 #if FW_AMPCS_COMPATIBLE
11972  // Serialize the number of arguments
11973  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11974  FW_ASSERT(
11975  _status == Fw::FW_SERIALIZE_OK,
11976  static_cast<FwAssertArgType>(_status)
11977  );
11978 #endif
11979 
11980 #if FW_AMPCS_COMPATIBLE
11981  // Serialize the argument size
11982  _status = _logBuff.serializeFrom(
11983  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
11984  );
11985  FW_ASSERT(
11986  _status == Fw::FW_SERIALIZE_OK,
11987  static_cast<FwAssertArgType>(_status)
11988  );
11989 #endif
11990  _status = _logBuff.serializeFrom(srcEid);
11991  FW_ASSERT(
11992  _status == Fw::FW_SERIALIZE_OK,
11993  static_cast<FwAssertArgType>(_status)
11994  );
11995 
11996 #if FW_AMPCS_COMPATIBLE
11997  // Serialize the argument size
11998  _status = _logBuff.serializeFrom(
11999  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
12000  );
12001  FW_ASSERT(
12002  _status == Fw::FW_SERIALIZE_OK,
12003  static_cast<FwAssertArgType>(_status)
12004  );
12005 #endif
12006  _status = _logBuff.serializeFrom(seqNum);
12007  FW_ASSERT(
12008  _status == Fw::FW_SERIALIZE_OK,
12009  static_cast<FwAssertArgType>(_status)
12010  );
12011 
12012  this->logOut_out(
12013  0,
12014  _id,
12015  _logTime,
12017  _logBuff
12018  );
12019  }
12020 
12021  // Emit the event on the text log port
12022 #if FW_ENABLE_TEXT_LOGGING
12023  if (this->isConnected_logTextOut_OutputPort(0)) {
12024 #if FW_OBJECT_NAMES == 1
12025  const char* _formatString =
12026  "(%s) %s: Acknowledged late FIN for transaction %" PRIu32 ":%" PRIu32 "";
12027 #else
12028  const char* _formatString =
12029  "%s: Acknowledged late FIN for transaction %" PRIu32 ":%" PRIu32 "";
12030 #endif
12031 
12032  Fw::TextLogString _logString;
12033  (void) _logString.format(
12034  _formatString,
12035 #if FW_OBJECT_NAMES == 1
12036  this->m_objName.toChar(),
12037 #endif
12038  "TxLateFinAcked ",
12039  srcEid,
12040  seqNum
12041  );
12042 
12043  this->logTextOut_out(
12044  0,
12045  _id,
12046  _logTime,
12048  _logString
12049  );
12050  }
12051 #endif
12052  }
12053 
12054  // ----------------------------------------------------------------------
12055  // Telemetry serialized write
12056  // ----------------------------------------------------------------------
12057 
12060  FwChanIdType id,
12061  Fw::TlmBuffer& _tlmBuff,
12062  Fw::Time _tlmTime
12063  ) const
12064  {
12065  if (this->isConnected_tlmOut_OutputPort(0)) {
12066  if (
12068  (_tlmTime == Fw::ZERO_TIME)
12069  ) {
12070  this->timeCaller_out(0, _tlmTime);
12071  }
12072 
12073  FwChanIdType _id;
12074  _id = this->getIdBase() + id;
12075 
12076  this->tlmOut_out(
12077  0,
12078  _id,
12079  _tlmTime,
12080  _tlmBuff
12081  );
12082  }
12083  }
12084 
12085  // ----------------------------------------------------------------------
12086  // Telemetry write functions
12087  // ----------------------------------------------------------------------
12088 
12092  Fw::Time _tlmTime
12093  ) const
12094  {
12095  if (this->isConnected_tlmOut_OutputPort(0)) {
12096  Fw::TlmBuffer _tlmBuff;
12097  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12098  FW_ASSERT(
12099  _stat == Fw::FW_SERIALIZE_OK,
12100  static_cast<FwAssertArgType>(_stat)
12101  );
12102 
12103  this->tlmWrite(
12105  _tlmBuff,
12106  _tlmTime
12107  );
12108  }
12109  }
12110 
12111  // ----------------------------------------------------------------------
12112  // Parameter hook functions
12113  // ----------------------------------------------------------------------
12114 
12117  {
12118  // Do nothing by default
12119  }
12120 
12123  {
12124  // Do nothing by default
12125  }
12126 
12127  // ----------------------------------------------------------------------
12128  // Parameter get functions
12129  // ----------------------------------------------------------------------
12130 
12133  {
12134  Svc::Ccsds::Cfdp::EntityId _local{};
12135  this->m_paramLock.lock();
12136  valid = this->m_param_LocalEid_valid;
12137  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
12138  _local = this->m_LocalEid;
12139  }
12140  this->m_paramLock.unlock();
12141  return _local;
12142  }
12143 
12146  {
12147  U32 _local{};
12148  this->m_paramLock.lock();
12149  valid = this->m_param_OutgoingFileChunkSize_valid;
12150  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
12151  _local = this->m_OutgoingFileChunkSize;
12152  }
12153  this->m_paramLock.unlock();
12154  return _local;
12155  }
12156 
12159  {
12160  U32 _local{};
12161  this->m_paramLock.lock();
12162  valid = this->m_param_RxCrcCalcBytesPerCycle_valid;
12163  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
12164  _local = this->m_RxCrcCalcBytesPerCycle;
12165  }
12166  this->m_paramLock.unlock();
12167  return _local;
12168  }
12169 
12172  {
12173  U8 _local{};
12174  this->m_paramLock.lock();
12175  valid = this->m_param_PostInactivitySendRetries_valid;
12176  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
12177  _local = this->m_PostInactivitySendRetries;
12178  }
12179  this->m_paramLock.unlock();
12180  return _local;
12181  }
12182 
12185  {
12186  U8 _local{};
12187  this->m_paramLock.lock();
12188  valid = this->m_param_FileInDefaultChannel_valid;
12189  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
12190  _local = this->m_FileInDefaultChannel;
12191  }
12192  this->m_paramLock.unlock();
12193  return _local;
12194  }
12195 
12198  {
12199  Svc::Ccsds::Cfdp::EntityId _local{};
12200  this->m_paramLock.lock();
12201  valid = this->m_param_FileInDefaultDestEntityId_valid;
12202  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
12203  _local = this->m_FileInDefaultDestEntityId;
12204  }
12205  this->m_paramLock.unlock();
12206  return _local;
12207  }
12208 
12211  {
12212  Svc::Ccsds::Cfdp::Class _local{};
12213  this->m_paramLock.lock();
12214  valid = this->m_param_FileInDefaultClass_valid;
12215  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
12216  _local = this->m_FileInDefaultClass;
12217  }
12218  this->m_paramLock.unlock();
12219  return _local;
12220  }
12221 
12224  {
12225  Svc::Ccsds::Cfdp::Keep _local{};
12226  this->m_paramLock.lock();
12227  valid = this->m_param_FileInDefaultKeep_valid;
12228  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
12229  _local = this->m_FileInDefaultKeep;
12230  }
12231  this->m_paramLock.unlock();
12232  return _local;
12233  }
12234 
12237  {
12238  U8 _local{};
12239  this->m_paramLock.lock();
12240  valid = this->m_param_FileInDefaultPriority_valid;
12241  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
12242  _local = this->m_FileInDefaultPriority;
12243  }
12244  this->m_paramLock.unlock();
12245  return _local;
12246  }
12247 
12250  {
12252  this->m_paramLock.lock();
12253  valid = this->m_param_ChannelConfig_valid;
12254  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
12255  _local = this->m_ChannelConfig;
12256  }
12257  this->m_paramLock.unlock();
12258  return _local;
12259  }
12260 
12261  // ----------------------------------------------------------------------
12262  // Time
12263  // ----------------------------------------------------------------------
12264 
12266  getTime() const
12267  {
12268  if (this->isConnected_timeCaller_OutputPort(0)) {
12269  Fw::Time _time;
12270  this->timeCaller_out(0, _time);
12271  return _time;
12272  }
12273  else {
12274  return Fw::Time(TimeBase::TB_NONE, 0, 0);
12275  }
12276  }
12277 
12278  // ----------------------------------------------------------------------
12279  // Mutex operations for guarded ports
12280  //
12281  // You can override these operations to provide more sophisticated
12282  // synchronization
12283  // ----------------------------------------------------------------------
12284 
12287  {
12288  this->m_guardedPortMutex.lock();
12289  }
12290 
12293  {
12294  this->m_guardedPortMutex.unLock();
12295  }
12296 
12297  // ----------------------------------------------------------------------
12298  // Message dispatch functions
12299  // ----------------------------------------------------------------------
12300 
12301  Fw::QueuedComponentBase::MsgDispatchStatus CfdpManagerComponentBase ::
12302  doDispatch()
12303  {
12304  ComponentIpcSerializableBuffer _msg;
12305  FwQueuePriorityType _priority = 0;
12306 
12307  Os::Queue::Status _msgStatus = this->m_queue.receive(
12308  _msg,
12310  _priority
12311  );
12312  FW_ASSERT(
12313  _msgStatus == Os::Queue::OP_OK,
12314  static_cast<FwAssertArgType>(_msgStatus)
12315  );
12316 
12317  // Reset to beginning of buffer
12318  _msg.resetDeser();
12319 
12320  FwEnumStoreType _desMsg = 0;
12321  Fw::SerializeStatus _deserStatus = _msg.deserializeTo(_desMsg);
12322  FW_ASSERT(
12323  _deserStatus == Fw::FW_SERIALIZE_OK,
12324  static_cast<FwAssertArgType>(_deserStatus)
12325  );
12326 
12327  MsgTypeEnum _msgType = static_cast<MsgTypeEnum>(_desMsg);
12328 
12329  if (_msgType == CFDPMANAGER_COMPONENT_EXIT) {
12330  return MSG_DISPATCH_EXIT;
12331  }
12332 
12333  FwIndexType portNum = 0;
12334  _deserStatus = _msg.deserializeTo(portNum);
12335  FW_ASSERT(
12336  _deserStatus == Fw::FW_SERIALIZE_OK,
12337  static_cast<FwAssertArgType>(_deserStatus)
12338  );
12339 
12340  switch (_msgType) {
12341  // Handle async input port dataIn
12342  case DATAIN_BUFFERSEND: {
12343  // Deserialize argument fwBuffer
12344  Fw::Buffer fwBuffer;
12345  _deserStatus = _msg.deserializeTo(fwBuffer);
12346  FW_ASSERT(
12347  _deserStatus == Fw::FW_SERIALIZE_OK,
12348  static_cast<FwAssertArgType>(_deserStatus)
12349  );
12350  // Call handler function
12351  this->dataIn_handler(
12352  portNum,
12353  fwBuffer
12354  );
12355 
12356  break;
12357  }
12358 
12359  // Handle async input port dataReturnIn
12360  case DATARETURNIN_BUFFERSEND: {
12361  // Deserialize argument fwBuffer
12362  Fw::Buffer fwBuffer;
12363  _deserStatus = _msg.deserializeTo(fwBuffer);
12364  FW_ASSERT(
12365  _deserStatus == Fw::FW_SERIALIZE_OK,
12366  static_cast<FwAssertArgType>(_deserStatus)
12367  );
12368  // Call handler function
12369  this->dataReturnIn_handler(
12370  portNum,
12371  fwBuffer
12372  );
12373 
12374  break;
12375  }
12376 
12377  // Handle async input port pingIn
12378  case PINGIN_PING: {
12379  // Deserialize argument key
12380  U32 key;
12381  _deserStatus = _msg.deserializeTo(key);
12382  FW_ASSERT(
12383  _deserStatus == Fw::FW_SERIALIZE_OK,
12384  static_cast<FwAssertArgType>(_deserStatus)
12385  );
12386  // Call handler function
12387  this->pingIn_handler(
12388  portNum,
12389  key
12390  );
12391 
12392  break;
12393  }
12394 
12395  // Handle async input port run1Hz
12396  case RUN1HZ_SCHED: {
12397  // Deserialize argument context
12398  U32 context;
12399  _deserStatus = _msg.deserializeTo(context);
12400  FW_ASSERT(
12401  _deserStatus == Fw::FW_SERIALIZE_OK,
12402  static_cast<FwAssertArgType>(_deserStatus)
12403  );
12404  // Call handler function
12405  this->run1Hz_handler(
12406  portNum,
12407  context
12408  );
12409 
12410  break;
12411  }
12412 
12413  // Handle command SendFile
12414  case CMD_SENDFILE: {
12415  // Deserialize opcode
12416  FwOpcodeType _opCode = 0;
12417  _deserStatus = _msg.deserializeTo(_opCode);
12418  FW_ASSERT (
12419  _deserStatus == Fw::FW_SERIALIZE_OK,
12420  static_cast<FwAssertArgType>(_deserStatus)
12421  );
12422 
12423  // Deserialize command sequence
12424  U32 _cmdSeq = 0;
12425  _deserStatus = _msg.deserializeTo(_cmdSeq);
12426  FW_ASSERT (
12427  _deserStatus == Fw::FW_SERIALIZE_OK,
12428  static_cast<FwAssertArgType>(_deserStatus)
12429  );
12430 
12431  // Deserialize command argument buffer
12432  Fw::CmdArgBuffer args;
12433  _deserStatus = _msg.deserializeTo(args);
12434  FW_ASSERT (
12435  _deserStatus == Fw::FW_SERIALIZE_OK,
12436  static_cast<FwAssertArgType>(_deserStatus)
12437  );
12438 
12439  // Reset buffer
12440  args.resetDeser();
12441 
12442  // Deserialize argument channelId
12443  U8 channelId;
12444  _deserStatus = args.deserializeTo(channelId);
12445  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12447  this->cmdResponse_out(
12448  _opCode,
12449  _cmdSeq,
12451  );
12452  }
12453  // Don't crash the task if bad arguments were passed from the ground
12454  break;
12455  }
12456 
12457  // Deserialize argument destId
12459  _deserStatus = args.deserializeTo(destId);
12460  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12462  this->cmdResponse_out(
12463  _opCode,
12464  _cmdSeq,
12466  );
12467  }
12468  // Don't crash the task if bad arguments were passed from the ground
12469  break;
12470  }
12471 
12472  // Deserialize argument cfdpClass
12473  Svc::Ccsds::Cfdp::Class cfdpClass;
12474  _deserStatus = args.deserializeTo(cfdpClass);
12475  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12477  this->cmdResponse_out(
12478  _opCode,
12479  _cmdSeq,
12481  );
12482  }
12483  // Don't crash the task if bad arguments were passed from the ground
12484  break;
12485  }
12486 
12487  // Deserialize argument keep
12489  _deserStatus = args.deserializeTo(keep);
12490  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12492  this->cmdResponse_out(
12493  _opCode,
12494  _cmdSeq,
12496  );
12497  }
12498  // Don't crash the task if bad arguments were passed from the ground
12499  break;
12500  }
12501 
12502  // Deserialize argument priority
12503  U8 priority;
12504  _deserStatus = args.deserializeTo(priority);
12505  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12507  this->cmdResponse_out(
12508  _opCode,
12509  _cmdSeq,
12511  );
12512  }
12513  // Don't crash the task if bad arguments were passed from the ground
12514  break;
12515  }
12516 
12517  // Deserialize argument sourceFileName
12518  Fw::CmdStringArg sourceFileName;
12519  _deserStatus = args.deserializeTo(sourceFileName);
12520  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12522  this->cmdResponse_out(
12523  _opCode,
12524  _cmdSeq,
12526  );
12527  }
12528  // Don't crash the task if bad arguments were passed from the ground
12529  break;
12530  }
12531 
12532  // Deserialize argument destFileName
12533  Fw::CmdStringArg destFileName;
12534  _deserStatus = args.deserializeTo(destFileName);
12535  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12537  this->cmdResponse_out(
12538  _opCode,
12539  _cmdSeq,
12541  );
12542  }
12543  // Don't crash the task if bad arguments were passed from the ground
12544  break;
12545  }
12546 
12547  // Make sure there was no data left over.
12548  // That means the argument buffer size was incorrect.
12549 #if FW_CMD_CHECK_RESIDUAL
12550  if (args.getDeserializeSizeLeft() != 0) {
12552  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
12553  }
12554  // Don't crash the task if bad arguments were passed from the ground
12555  break;
12556  }
12557 #endif
12558 
12559  // Call handler function
12560  this->SendFile_cmdHandler(
12561  _opCode, _cmdSeq,
12562  channelId,
12563  destId,
12564  cfdpClass,
12565  keep,
12566  priority,
12567  sourceFileName,
12568  destFileName
12569  );
12570 
12571  break;
12572  }
12573 
12574  // Handle command PlaybackDirectory
12575  case CMD_PLAYBACKDIRECTORY: {
12576  // Deserialize opcode
12577  FwOpcodeType _opCode = 0;
12578  _deserStatus = _msg.deserializeTo(_opCode);
12579  FW_ASSERT (
12580  _deserStatus == Fw::FW_SERIALIZE_OK,
12581  static_cast<FwAssertArgType>(_deserStatus)
12582  );
12583 
12584  // Deserialize command sequence
12585  U32 _cmdSeq = 0;
12586  _deserStatus = _msg.deserializeTo(_cmdSeq);
12587  FW_ASSERT (
12588  _deserStatus == Fw::FW_SERIALIZE_OK,
12589  static_cast<FwAssertArgType>(_deserStatus)
12590  );
12591 
12592  // Deserialize command argument buffer
12593  Fw::CmdArgBuffer args;
12594  _deserStatus = _msg.deserializeTo(args);
12595  FW_ASSERT (
12596  _deserStatus == Fw::FW_SERIALIZE_OK,
12597  static_cast<FwAssertArgType>(_deserStatus)
12598  );
12599 
12600  // Reset buffer
12601  args.resetDeser();
12602 
12603  // Deserialize argument channelId
12604  U8 channelId;
12605  _deserStatus = args.deserializeTo(channelId);
12606  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12608  this->cmdResponse_out(
12609  _opCode,
12610  _cmdSeq,
12612  );
12613  }
12614  // Don't crash the task if bad arguments were passed from the ground
12615  break;
12616  }
12617 
12618  // Deserialize argument destId
12620  _deserStatus = args.deserializeTo(destId);
12621  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12623  this->cmdResponse_out(
12624  _opCode,
12625  _cmdSeq,
12627  );
12628  }
12629  // Don't crash the task if bad arguments were passed from the ground
12630  break;
12631  }
12632 
12633  // Deserialize argument cfdpClass
12634  Svc::Ccsds::Cfdp::Class cfdpClass;
12635  _deserStatus = args.deserializeTo(cfdpClass);
12636  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12638  this->cmdResponse_out(
12639  _opCode,
12640  _cmdSeq,
12642  );
12643  }
12644  // Don't crash the task if bad arguments were passed from the ground
12645  break;
12646  }
12647 
12648  // Deserialize argument keep
12650  _deserStatus = args.deserializeTo(keep);
12651  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12653  this->cmdResponse_out(
12654  _opCode,
12655  _cmdSeq,
12657  );
12658  }
12659  // Don't crash the task if bad arguments were passed from the ground
12660  break;
12661  }
12662 
12663  // Deserialize argument priority
12664  U8 priority;
12665  _deserStatus = args.deserializeTo(priority);
12666  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12668  this->cmdResponse_out(
12669  _opCode,
12670  _cmdSeq,
12672  );
12673  }
12674  // Don't crash the task if bad arguments were passed from the ground
12675  break;
12676  }
12677 
12678  // Deserialize argument sourceDirectory
12679  Fw::CmdStringArg sourceDirectory;
12680  _deserStatus = args.deserializeTo(sourceDirectory);
12681  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12683  this->cmdResponse_out(
12684  _opCode,
12685  _cmdSeq,
12687  );
12688  }
12689  // Don't crash the task if bad arguments were passed from the ground
12690  break;
12691  }
12692 
12693  // Deserialize argument destDirectory
12694  Fw::CmdStringArg destDirectory;
12695  _deserStatus = args.deserializeTo(destDirectory);
12696  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12698  this->cmdResponse_out(
12699  _opCode,
12700  _cmdSeq,
12702  );
12703  }
12704  // Don't crash the task if bad arguments were passed from the ground
12705  break;
12706  }
12707 
12708  // Make sure there was no data left over.
12709  // That means the argument buffer size was incorrect.
12710 #if FW_CMD_CHECK_RESIDUAL
12711  if (args.getDeserializeSizeLeft() != 0) {
12713  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
12714  }
12715  // Don't crash the task if bad arguments were passed from the ground
12716  break;
12717  }
12718 #endif
12719 
12720  // Call handler function
12722  _opCode, _cmdSeq,
12723  channelId,
12724  destId,
12725  cfdpClass,
12726  keep,
12727  priority,
12728  sourceDirectory,
12729  destDirectory
12730  );
12731 
12732  break;
12733  }
12734 
12735  // Handle command PollDirectory
12736  case CMD_POLLDIRECTORY: {
12737  // Deserialize opcode
12738  FwOpcodeType _opCode = 0;
12739  _deserStatus = _msg.deserializeTo(_opCode);
12740  FW_ASSERT (
12741  _deserStatus == Fw::FW_SERIALIZE_OK,
12742  static_cast<FwAssertArgType>(_deserStatus)
12743  );
12744 
12745  // Deserialize command sequence
12746  U32 _cmdSeq = 0;
12747  _deserStatus = _msg.deserializeTo(_cmdSeq);
12748  FW_ASSERT (
12749  _deserStatus == Fw::FW_SERIALIZE_OK,
12750  static_cast<FwAssertArgType>(_deserStatus)
12751  );
12752 
12753  // Deserialize command argument buffer
12754  Fw::CmdArgBuffer args;
12755  _deserStatus = _msg.deserializeTo(args);
12756  FW_ASSERT (
12757  _deserStatus == Fw::FW_SERIALIZE_OK,
12758  static_cast<FwAssertArgType>(_deserStatus)
12759  );
12760 
12761  // Reset buffer
12762  args.resetDeser();
12763 
12764  // Deserialize argument channelId
12765  U8 channelId;
12766  _deserStatus = args.deserializeTo(channelId);
12767  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12769  this->cmdResponse_out(
12770  _opCode,
12771  _cmdSeq,
12773  );
12774  }
12775  // Don't crash the task if bad arguments were passed from the ground
12776  break;
12777  }
12778 
12779  // Deserialize argument pollId
12780  U8 pollId;
12781  _deserStatus = args.deserializeTo(pollId);
12782  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12784  this->cmdResponse_out(
12785  _opCode,
12786  _cmdSeq,
12788  );
12789  }
12790  // Don't crash the task if bad arguments were passed from the ground
12791  break;
12792  }
12793 
12794  // Deserialize argument destId
12796  _deserStatus = args.deserializeTo(destId);
12797  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12799  this->cmdResponse_out(
12800  _opCode,
12801  _cmdSeq,
12803  );
12804  }
12805  // Don't crash the task if bad arguments were passed from the ground
12806  break;
12807  }
12808 
12809  // Deserialize argument cfdpClass
12810  Svc::Ccsds::Cfdp::Class cfdpClass;
12811  _deserStatus = args.deserializeTo(cfdpClass);
12812  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12814  this->cmdResponse_out(
12815  _opCode,
12816  _cmdSeq,
12818  );
12819  }
12820  // Don't crash the task if bad arguments were passed from the ground
12821  break;
12822  }
12823 
12824  // Deserialize argument priority
12825  U8 priority;
12826  _deserStatus = args.deserializeTo(priority);
12827  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12829  this->cmdResponse_out(
12830  _opCode,
12831  _cmdSeq,
12833  );
12834  }
12835  // Don't crash the task if bad arguments were passed from the ground
12836  break;
12837  }
12838 
12839  // Deserialize argument interval
12840  U32 interval;
12841  _deserStatus = args.deserializeTo(interval);
12842  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12844  this->cmdResponse_out(
12845  _opCode,
12846  _cmdSeq,
12848  );
12849  }
12850  // Don't crash the task if bad arguments were passed from the ground
12851  break;
12852  }
12853 
12854  // Deserialize argument sourceDirectory
12855  Fw::CmdStringArg sourceDirectory;
12856  _deserStatus = args.deserializeTo(sourceDirectory);
12857  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12859  this->cmdResponse_out(
12860  _opCode,
12861  _cmdSeq,
12863  );
12864  }
12865  // Don't crash the task if bad arguments were passed from the ground
12866  break;
12867  }
12868 
12869  // Deserialize argument destDirectory
12870  Fw::CmdStringArg destDirectory;
12871  _deserStatus = args.deserializeTo(destDirectory);
12872  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12874  this->cmdResponse_out(
12875  _opCode,
12876  _cmdSeq,
12878  );
12879  }
12880  // Don't crash the task if bad arguments were passed from the ground
12881  break;
12882  }
12883 
12884  // Make sure there was no data left over.
12885  // That means the argument buffer size was incorrect.
12886 #if FW_CMD_CHECK_RESIDUAL
12887  if (args.getDeserializeSizeLeft() != 0) {
12889  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
12890  }
12891  // Don't crash the task if bad arguments were passed from the ground
12892  break;
12893  }
12894 #endif
12895 
12896  // Call handler function
12898  _opCode, _cmdSeq,
12899  channelId,
12900  pollId,
12901  destId,
12902  cfdpClass,
12903  priority,
12904  interval,
12905  sourceDirectory,
12906  destDirectory
12907  );
12908 
12909  break;
12910  }
12911 
12912  // Handle command StopPollDirectory
12913  case CMD_STOPPOLLDIRECTORY: {
12914  // Deserialize opcode
12915  FwOpcodeType _opCode = 0;
12916  _deserStatus = _msg.deserializeTo(_opCode);
12917  FW_ASSERT (
12918  _deserStatus == Fw::FW_SERIALIZE_OK,
12919  static_cast<FwAssertArgType>(_deserStatus)
12920  );
12921 
12922  // Deserialize command sequence
12923  U32 _cmdSeq = 0;
12924  _deserStatus = _msg.deserializeTo(_cmdSeq);
12925  FW_ASSERT (
12926  _deserStatus == Fw::FW_SERIALIZE_OK,
12927  static_cast<FwAssertArgType>(_deserStatus)
12928  );
12929 
12930  // Deserialize command argument buffer
12931  Fw::CmdArgBuffer args;
12932  _deserStatus = _msg.deserializeTo(args);
12933  FW_ASSERT (
12934  _deserStatus == Fw::FW_SERIALIZE_OK,
12935  static_cast<FwAssertArgType>(_deserStatus)
12936  );
12937 
12938  // Reset buffer
12939  args.resetDeser();
12940 
12941  // Deserialize argument channelId
12942  U8 channelId;
12943  _deserStatus = args.deserializeTo(channelId);
12944  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12946  this->cmdResponse_out(
12947  _opCode,
12948  _cmdSeq,
12950  );
12951  }
12952  // Don't crash the task if bad arguments were passed from the ground
12953  break;
12954  }
12955 
12956  // Deserialize argument pollId
12957  U8 pollId;
12958  _deserStatus = args.deserializeTo(pollId);
12959  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
12961  this->cmdResponse_out(
12962  _opCode,
12963  _cmdSeq,
12965  );
12966  }
12967  // Don't crash the task if bad arguments were passed from the ground
12968  break;
12969  }
12970 
12971  // Make sure there was no data left over.
12972  // That means the argument buffer size was incorrect.
12973 #if FW_CMD_CHECK_RESIDUAL
12974  if (args.getDeserializeSizeLeft() != 0) {
12976  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
12977  }
12978  // Don't crash the task if bad arguments were passed from the ground
12979  break;
12980  }
12981 #endif
12982 
12983  // Call handler function
12985  _opCode, _cmdSeq,
12986  channelId,
12987  pollId
12988  );
12989 
12990  break;
12991  }
12992 
12993  // Handle command SetChannelFlow
12994  case CMD_SETCHANNELFLOW: {
12995  // Deserialize opcode
12996  FwOpcodeType _opCode = 0;
12997  _deserStatus = _msg.deserializeTo(_opCode);
12998  FW_ASSERT (
12999  _deserStatus == Fw::FW_SERIALIZE_OK,
13000  static_cast<FwAssertArgType>(_deserStatus)
13001  );
13002 
13003  // Deserialize command sequence
13004  U32 _cmdSeq = 0;
13005  _deserStatus = _msg.deserializeTo(_cmdSeq);
13006  FW_ASSERT (
13007  _deserStatus == Fw::FW_SERIALIZE_OK,
13008  static_cast<FwAssertArgType>(_deserStatus)
13009  );
13010 
13011  // Deserialize command argument buffer
13012  Fw::CmdArgBuffer args;
13013  _deserStatus = _msg.deserializeTo(args);
13014  FW_ASSERT (
13015  _deserStatus == Fw::FW_SERIALIZE_OK,
13016  static_cast<FwAssertArgType>(_deserStatus)
13017  );
13018 
13019  // Reset buffer
13020  args.resetDeser();
13021 
13022  // Deserialize argument channelId
13023  U8 channelId;
13024  _deserStatus = args.deserializeTo(channelId);
13025  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13027  this->cmdResponse_out(
13028  _opCode,
13029  _cmdSeq,
13031  );
13032  }
13033  // Don't crash the task if bad arguments were passed from the ground
13034  break;
13035  }
13036 
13037  // Deserialize argument freeze
13038  Svc::Ccsds::Cfdp::Flow freeze;
13039  _deserStatus = args.deserializeTo(freeze);
13040  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13042  this->cmdResponse_out(
13043  _opCode,
13044  _cmdSeq,
13046  );
13047  }
13048  // Don't crash the task if bad arguments were passed from the ground
13049  break;
13050  }
13051 
13052  // Make sure there was no data left over.
13053  // That means the argument buffer size was incorrect.
13054 #if FW_CMD_CHECK_RESIDUAL
13055  if (args.getDeserializeSizeLeft() != 0) {
13057  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
13058  }
13059  // Don't crash the task if bad arguments were passed from the ground
13060  break;
13061  }
13062 #endif
13063 
13064  // Call handler function
13066  _opCode, _cmdSeq,
13067  channelId,
13068  freeze
13069  );
13070 
13071  break;
13072  }
13073 
13074  // Handle command SuspendResumeTransaction
13075  case CMD_SUSPENDRESUMETRANSACTION: {
13076  // Deserialize opcode
13077  FwOpcodeType _opCode = 0;
13078  _deserStatus = _msg.deserializeTo(_opCode);
13079  FW_ASSERT (
13080  _deserStatus == Fw::FW_SERIALIZE_OK,
13081  static_cast<FwAssertArgType>(_deserStatus)
13082  );
13083 
13084  // Deserialize command sequence
13085  U32 _cmdSeq = 0;
13086  _deserStatus = _msg.deserializeTo(_cmdSeq);
13087  FW_ASSERT (
13088  _deserStatus == Fw::FW_SERIALIZE_OK,
13089  static_cast<FwAssertArgType>(_deserStatus)
13090  );
13091 
13092  // Deserialize command argument buffer
13093  Fw::CmdArgBuffer args;
13094  _deserStatus = _msg.deserializeTo(args);
13095  FW_ASSERT (
13096  _deserStatus == Fw::FW_SERIALIZE_OK,
13097  static_cast<FwAssertArgType>(_deserStatus)
13098  );
13099 
13100  // Reset buffer
13101  args.resetDeser();
13102 
13103  // Deserialize argument channelId
13104  U8 channelId;
13105  _deserStatus = args.deserializeTo(channelId);
13106  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13108  this->cmdResponse_out(
13109  _opCode,
13110  _cmdSeq,
13112  );
13113  }
13114  // Don't crash the task if bad arguments were passed from the ground
13115  break;
13116  }
13117 
13118  // Deserialize argument transactionSeq
13119  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq;
13120  _deserStatus = args.deserializeTo(transactionSeq);
13121  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13123  this->cmdResponse_out(
13124  _opCode,
13125  _cmdSeq,
13127  );
13128  }
13129  // Don't crash the task if bad arguments were passed from the ground
13130  break;
13131  }
13132 
13133  // Deserialize argument entityId
13134  Svc::Ccsds::Cfdp::EntityId entityId;
13135  _deserStatus = args.deserializeTo(entityId);
13136  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13138  this->cmdResponse_out(
13139  _opCode,
13140  _cmdSeq,
13142  );
13143  }
13144  // Don't crash the task if bad arguments were passed from the ground
13145  break;
13146  }
13147 
13148  // Deserialize argument action
13150  _deserStatus = args.deserializeTo(action);
13151  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13153  this->cmdResponse_out(
13154  _opCode,
13155  _cmdSeq,
13157  );
13158  }
13159  // Don't crash the task if bad arguments were passed from the ground
13160  break;
13161  }
13162 
13163  // Make sure there was no data left over.
13164  // That means the argument buffer size was incorrect.
13165 #if FW_CMD_CHECK_RESIDUAL
13166  if (args.getDeserializeSizeLeft() != 0) {
13168  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
13169  }
13170  // Don't crash the task if bad arguments were passed from the ground
13171  break;
13172  }
13173 #endif
13174 
13175  // Call handler function
13177  _opCode, _cmdSeq,
13178  channelId,
13179  transactionSeq,
13180  entityId,
13181  action
13182  );
13183 
13184  break;
13185  }
13186 
13187  // Handle command CancelTransaction
13188  case CMD_CANCELTRANSACTION: {
13189  // Deserialize opcode
13190  FwOpcodeType _opCode = 0;
13191  _deserStatus = _msg.deserializeTo(_opCode);
13192  FW_ASSERT (
13193  _deserStatus == Fw::FW_SERIALIZE_OK,
13194  static_cast<FwAssertArgType>(_deserStatus)
13195  );
13196 
13197  // Deserialize command sequence
13198  U32 _cmdSeq = 0;
13199  _deserStatus = _msg.deserializeTo(_cmdSeq);
13200  FW_ASSERT (
13201  _deserStatus == Fw::FW_SERIALIZE_OK,
13202  static_cast<FwAssertArgType>(_deserStatus)
13203  );
13204 
13205  // Deserialize command argument buffer
13206  Fw::CmdArgBuffer args;
13207  _deserStatus = _msg.deserializeTo(args);
13208  FW_ASSERT (
13209  _deserStatus == Fw::FW_SERIALIZE_OK,
13210  static_cast<FwAssertArgType>(_deserStatus)
13211  );
13212 
13213  // Reset buffer
13214  args.resetDeser();
13215 
13216  // Deserialize argument channelId
13217  U8 channelId;
13218  _deserStatus = args.deserializeTo(channelId);
13219  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13221  this->cmdResponse_out(
13222  _opCode,
13223  _cmdSeq,
13225  );
13226  }
13227  // Don't crash the task if bad arguments were passed from the ground
13228  break;
13229  }
13230 
13231  // Deserialize argument transactionSeq
13232  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq;
13233  _deserStatus = args.deserializeTo(transactionSeq);
13234  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13236  this->cmdResponse_out(
13237  _opCode,
13238  _cmdSeq,
13240  );
13241  }
13242  // Don't crash the task if bad arguments were passed from the ground
13243  break;
13244  }
13245 
13246  // Deserialize argument entityId
13247  Svc::Ccsds::Cfdp::EntityId entityId;
13248  _deserStatus = args.deserializeTo(entityId);
13249  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13251  this->cmdResponse_out(
13252  _opCode,
13253  _cmdSeq,
13255  );
13256  }
13257  // Don't crash the task if bad arguments were passed from the ground
13258  break;
13259  }
13260 
13261  // Make sure there was no data left over.
13262  // That means the argument buffer size was incorrect.
13263 #if FW_CMD_CHECK_RESIDUAL
13264  if (args.getDeserializeSizeLeft() != 0) {
13266  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
13267  }
13268  // Don't crash the task if bad arguments were passed from the ground
13269  break;
13270  }
13271 #endif
13272 
13273  // Call handler function
13275  _opCode, _cmdSeq,
13276  channelId,
13277  transactionSeq,
13278  entityId
13279  );
13280 
13281  break;
13282  }
13283 
13284  // Handle command AbandonTransaction
13285  case CMD_ABANDONTRANSACTION: {
13286  // Deserialize opcode
13287  FwOpcodeType _opCode = 0;
13288  _deserStatus = _msg.deserializeTo(_opCode);
13289  FW_ASSERT (
13290  _deserStatus == Fw::FW_SERIALIZE_OK,
13291  static_cast<FwAssertArgType>(_deserStatus)
13292  );
13293 
13294  // Deserialize command sequence
13295  U32 _cmdSeq = 0;
13296  _deserStatus = _msg.deserializeTo(_cmdSeq);
13297  FW_ASSERT (
13298  _deserStatus == Fw::FW_SERIALIZE_OK,
13299  static_cast<FwAssertArgType>(_deserStatus)
13300  );
13301 
13302  // Deserialize command argument buffer
13303  Fw::CmdArgBuffer args;
13304  _deserStatus = _msg.deserializeTo(args);
13305  FW_ASSERT (
13306  _deserStatus == Fw::FW_SERIALIZE_OK,
13307  static_cast<FwAssertArgType>(_deserStatus)
13308  );
13309 
13310  // Reset buffer
13311  args.resetDeser();
13312 
13313  // Deserialize argument channelId
13314  U8 channelId;
13315  _deserStatus = args.deserializeTo(channelId);
13316  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13318  this->cmdResponse_out(
13319  _opCode,
13320  _cmdSeq,
13322  );
13323  }
13324  // Don't crash the task if bad arguments were passed from the ground
13325  break;
13326  }
13327 
13328  // Deserialize argument transactionSeq
13329  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq;
13330  _deserStatus = args.deserializeTo(transactionSeq);
13331  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13333  this->cmdResponse_out(
13334  _opCode,
13335  _cmdSeq,
13337  );
13338  }
13339  // Don't crash the task if bad arguments were passed from the ground
13340  break;
13341  }
13342 
13343  // Deserialize argument entityId
13344  Svc::Ccsds::Cfdp::EntityId entityId;
13345  _deserStatus = args.deserializeTo(entityId);
13346  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13348  this->cmdResponse_out(
13349  _opCode,
13350  _cmdSeq,
13352  );
13353  }
13354  // Don't crash the task if bad arguments were passed from the ground
13355  break;
13356  }
13357 
13358  // Make sure there was no data left over.
13359  // That means the argument buffer size was incorrect.
13360 #if FW_CMD_CHECK_RESIDUAL
13361  if (args.getDeserializeSizeLeft() != 0) {
13363  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
13364  }
13365  // Don't crash the task if bad arguments were passed from the ground
13366  break;
13367  }
13368 #endif
13369 
13370  // Call handler function
13372  _opCode, _cmdSeq,
13373  channelId,
13374  transactionSeq,
13375  entityId
13376  );
13377 
13378  break;
13379  }
13380 
13381  // Handle command ResetCounters
13382  case CMD_RESETCOUNTERS: {
13383  // Deserialize opcode
13384  FwOpcodeType _opCode = 0;
13385  _deserStatus = _msg.deserializeTo(_opCode);
13386  FW_ASSERT (
13387  _deserStatus == Fw::FW_SERIALIZE_OK,
13388  static_cast<FwAssertArgType>(_deserStatus)
13389  );
13390 
13391  // Deserialize command sequence
13392  U32 _cmdSeq = 0;
13393  _deserStatus = _msg.deserializeTo(_cmdSeq);
13394  FW_ASSERT (
13395  _deserStatus == Fw::FW_SERIALIZE_OK,
13396  static_cast<FwAssertArgType>(_deserStatus)
13397  );
13398 
13399  // Deserialize command argument buffer
13400  Fw::CmdArgBuffer args;
13401  _deserStatus = _msg.deserializeTo(args);
13402  FW_ASSERT (
13403  _deserStatus == Fw::FW_SERIALIZE_OK,
13404  static_cast<FwAssertArgType>(_deserStatus)
13405  );
13406 
13407  // Reset buffer
13408  args.resetDeser();
13409 
13410  // Deserialize argument channelId
13411  U8 channelId;
13412  _deserStatus = args.deserializeTo(channelId);
13413  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13415  this->cmdResponse_out(
13416  _opCode,
13417  _cmdSeq,
13419  );
13420  }
13421  // Don't crash the task if bad arguments were passed from the ground
13422  break;
13423  }
13424 
13425  // Make sure there was no data left over.
13426  // That means the argument buffer size was incorrect.
13427 #if FW_CMD_CHECK_RESIDUAL
13428  if (args.getDeserializeSizeLeft() != 0) {
13430  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
13431  }
13432  // Don't crash the task if bad arguments were passed from the ground
13433  break;
13434  }
13435 #endif
13436 
13437  // Call handler function
13439  _opCode, _cmdSeq,
13440  channelId
13441  );
13442 
13443  break;
13444  }
13445 
13446  default:
13447  return MSG_DISPATCH_ERROR;
13448  }
13449 
13450  return MSG_DISPATCH_OK;
13451  }
13452 
13453  // ----------------------------------------------------------------------
13454  // Calls for messages received on special input ports
13455  // ----------------------------------------------------------------------
13456 
13457  void CfdpManagerComponentBase ::
13458  m_p_cmdIn_in(
13459  Fw::PassiveComponentBase* callComp,
13460  FwIndexType portNum,
13461  FwOpcodeType opCode,
13462  U32 cmdSeq,
13463  Fw::CmdArgBuffer& args
13464  )
13465  {
13466  FW_ASSERT(callComp != nullptr);
13467  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
13468  compPtr->cmdIn_handlerBase(
13469  portNum,
13470  opCode,
13471  cmdSeq,
13472  args
13473  );
13474  }
13475 
13476  // ----------------------------------------------------------------------
13477  // Calls for messages received on typed input ports
13478  // ----------------------------------------------------------------------
13479 
13480  void CfdpManagerComponentBase ::
13481  m_p_dataIn_in(
13482  Fw::PassiveComponentBase* callComp,
13483  FwIndexType portNum,
13484  Fw::Buffer& fwBuffer
13485  )
13486  {
13487  FW_ASSERT(callComp != nullptr);
13488  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
13489  compPtr->dataIn_handlerBase(
13490  portNum,
13491  fwBuffer
13492  );
13493  }
13494 
13495  void CfdpManagerComponentBase ::
13496  m_p_dataReturnIn_in(
13497  Fw::PassiveComponentBase* callComp,
13498  FwIndexType portNum,
13499  Fw::Buffer& fwBuffer
13500  )
13501  {
13502  FW_ASSERT(callComp != nullptr);
13503  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
13504  compPtr->dataReturnIn_handlerBase(
13505  portNum,
13506  fwBuffer
13507  );
13508  }
13509 
13510  Svc::SendFileResponse CfdpManagerComponentBase ::
13511  m_p_fileIn_in(
13512  Fw::PassiveComponentBase* callComp,
13513  FwIndexType portNum,
13514  const Fw::StringBase& sourceFileName,
13515  const Fw::StringBase& destFileName,
13516  U32 offset,
13517  U32 length
13518  )
13519  {
13520  FW_ASSERT(callComp != nullptr);
13521  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
13522  return compPtr->fileIn_handlerBase(
13523  portNum,
13524  sourceFileName,
13525  destFileName,
13526  offset,
13527  length
13528  );
13529  }
13530 
13531  void CfdpManagerComponentBase ::
13532  m_p_pingIn_in(
13533  Fw::PassiveComponentBase* callComp,
13534  FwIndexType portNum,
13535  U32 key
13536  )
13537  {
13538  FW_ASSERT(callComp != nullptr);
13539  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
13540  compPtr->pingIn_handlerBase(
13541  portNum,
13542  key
13543  );
13544  }
13545 
13546  void CfdpManagerComponentBase ::
13547  m_p_run1Hz_in(
13548  Fw::PassiveComponentBase* callComp,
13549  FwIndexType portNum,
13550  U32 context
13551  )
13552  {
13553  FW_ASSERT(callComp != nullptr);
13554  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
13555  compPtr->run1Hz_handlerBase(
13556  portNum,
13557  context
13558  );
13559  }
13560 
13561 #if !FW_DIRECT_PORT_CALLS
13562 
13563  // ----------------------------------------------------------------------
13564  // Invocation functions for special output ports
13565  // ----------------------------------------------------------------------
13566 
13567  void CfdpManagerComponentBase ::
13568  cmdRegOut_out(
13569  FwIndexType portNum,
13570  FwOpcodeType opCode
13571  ) const
13572  {
13573  FW_ASSERT(
13574  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
13575  static_cast<FwAssertArgType>(portNum)
13576  );
13577 
13578  FW_ASSERT(
13579  this->m_cmdRegOut_OutputPort[portNum].isConnected(),
13580  static_cast<FwAssertArgType>(portNum)
13581  );
13582  this->m_cmdRegOut_OutputPort[portNum].invoke(
13583  opCode
13584  );
13585  }
13586 
13587  void CfdpManagerComponentBase ::
13588  cmdResponseOut_out(
13589  FwIndexType portNum,
13590  FwOpcodeType opCode,
13591  U32 cmdSeq,
13592  const Fw::CmdResponse& response
13593  ) const
13594  {
13595  FW_ASSERT(
13596  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
13597  static_cast<FwAssertArgType>(portNum)
13598  );
13599 
13600  FW_ASSERT(
13601  this->m_cmdResponseOut_OutputPort[portNum].isConnected(),
13602  static_cast<FwAssertArgType>(portNum)
13603  );
13604  this->m_cmdResponseOut_OutputPort[portNum].invoke(
13605  opCode,
13606  cmdSeq,
13607  response
13608  );
13609  }
13610 
13611  void CfdpManagerComponentBase ::
13612  logOut_out(
13613  FwIndexType portNum,
13614  FwEventIdType id,
13615  Fw::Time& timeTag,
13616  const Fw::LogSeverity& severity,
13617  Fw::LogBuffer& args
13618  ) const
13619  {
13620  FW_ASSERT(
13621  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
13622  static_cast<FwAssertArgType>(portNum)
13623  );
13624 
13625  FW_ASSERT(
13626  this->m_logOut_OutputPort[portNum].isConnected(),
13627  static_cast<FwAssertArgType>(portNum)
13628  );
13629  this->m_logOut_OutputPort[portNum].invoke(
13630  id,
13631  timeTag,
13632  severity,
13633  args
13634  );
13635  }
13636 
13637 #if FW_ENABLE_TEXT_LOGGING
13638 
13639  void CfdpManagerComponentBase ::
13640  logTextOut_out(
13641  FwIndexType portNum,
13642  FwEventIdType id,
13643  Fw::Time& timeTag,
13644  const Fw::LogSeverity& severity,
13645  Fw::TextLogString& text
13646  ) const
13647  {
13648  FW_ASSERT(
13649  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
13650  static_cast<FwAssertArgType>(portNum)
13651  );
13652 
13653  FW_ASSERT(
13654  this->m_logTextOut_OutputPort[portNum].isConnected(),
13655  static_cast<FwAssertArgType>(portNum)
13656  );
13657  this->m_logTextOut_OutputPort[portNum].invoke(
13658  id,
13659  timeTag,
13660  severity,
13661  text
13662  );
13663  }
13664 
13665 #endif
13666 
13667  Fw::ParamValid CfdpManagerComponentBase ::
13668  prmGetOut_out(
13669  FwIndexType portNum,
13670  FwPrmIdType id,
13671  Fw::ParamBuffer& val
13672  ) const
13673  {
13674  FW_ASSERT(
13675  (0 <= portNum) && (portNum < this->getNum_prmGetOut_OutputPorts()),
13676  static_cast<FwAssertArgType>(portNum)
13677  );
13678 
13679  FW_ASSERT(
13680  this->m_prmGetOut_OutputPort[portNum].isConnected(),
13681  static_cast<FwAssertArgType>(portNum)
13682  );
13683  return this->m_prmGetOut_OutputPort[portNum].invoke(
13684  id,
13685  val
13686  );
13687  }
13688 
13689  void CfdpManagerComponentBase ::
13690  prmSetOut_out(
13691  FwIndexType portNum,
13692  FwPrmIdType id,
13693  Fw::ParamBuffer& val
13694  ) const
13695  {
13696  FW_ASSERT(
13697  (0 <= portNum) && (portNum < this->getNum_prmSetOut_OutputPorts()),
13698  static_cast<FwAssertArgType>(portNum)
13699  );
13700 
13701  FW_ASSERT(
13702  this->m_prmSetOut_OutputPort[portNum].isConnected(),
13703  static_cast<FwAssertArgType>(portNum)
13704  );
13705  this->m_prmSetOut_OutputPort[portNum].invoke(
13706  id,
13707  val
13708  );
13709  }
13710 
13711  void CfdpManagerComponentBase ::
13712  timeCaller_out(
13713  FwIndexType portNum,
13714  Fw::Time& time
13715  ) const
13716  {
13717  FW_ASSERT(
13718  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
13719  static_cast<FwAssertArgType>(portNum)
13720  );
13721 
13722  FW_ASSERT(
13723  this->m_timeCaller_OutputPort[portNum].isConnected(),
13724  static_cast<FwAssertArgType>(portNum)
13725  );
13726  this->m_timeCaller_OutputPort[portNum].invoke(
13727  time
13728  );
13729  }
13730 
13731  void CfdpManagerComponentBase ::
13732  tlmOut_out(
13733  FwIndexType portNum,
13734  FwChanIdType id,
13735  Fw::Time& timeTag,
13736  Fw::TlmBuffer& val
13737  ) const
13738  {
13739  FW_ASSERT(
13740  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
13741  static_cast<FwAssertArgType>(portNum)
13742  );
13743 
13744  FW_ASSERT(
13745  this->m_tlmOut_OutputPort[portNum].isConnected(),
13746  static_cast<FwAssertArgType>(portNum)
13747  );
13748  this->m_tlmOut_OutputPort[portNum].invoke(
13749  id,
13750  timeTag,
13751  val
13752  );
13753  }
13754 
13755 #endif
13756 
13757  // ----------------------------------------------------------------------
13758  // Parameter set functions
13759  // ----------------------------------------------------------------------
13760 
13761  Fw::CmdResponse CfdpManagerComponentBase ::
13762  paramSet_LocalEid(Fw::SerialBufferBase& val)
13763  {
13764  Svc::Ccsds::Cfdp::EntityId _localVal{};
13765  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
13766  if (_stat != Fw::FW_SERIALIZE_OK) {
13768  }
13769 
13770  // Assign value only if successfully deserialized
13771  this->m_paramLock.lock();
13772  this->m_LocalEid = _localVal;
13773  this->m_param_LocalEid_valid = Fw::ParamValid::VALID;
13774  this->m_paramLock.unlock();
13775 
13776  // Call notifier
13778  return Fw::CmdResponse::OK;
13779  }
13780 
13781  Fw::CmdResponse CfdpManagerComponentBase ::
13782  paramSet_OutgoingFileChunkSize(Fw::SerialBufferBase& val)
13783  {
13784  U32 _localVal{};
13785  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
13786  if (_stat != Fw::FW_SERIALIZE_OK) {
13788  }
13789 
13790  // Assign value only if successfully deserialized
13791  this->m_paramLock.lock();
13792  this->m_OutgoingFileChunkSize = _localVal;
13793  this->m_param_OutgoingFileChunkSize_valid = Fw::ParamValid::VALID;
13794  this->m_paramLock.unlock();
13795 
13796  // Call notifier
13798  return Fw::CmdResponse::OK;
13799  }
13800 
13801  Fw::CmdResponse CfdpManagerComponentBase ::
13802  paramSet_RxCrcCalcBytesPerCycle(Fw::SerialBufferBase& val)
13803  {
13804  U32 _localVal{};
13805  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
13806  if (_stat != Fw::FW_SERIALIZE_OK) {
13808  }
13809 
13810  // Assign value only if successfully deserialized
13811  this->m_paramLock.lock();
13812  this->m_RxCrcCalcBytesPerCycle = _localVal;
13813  this->m_param_RxCrcCalcBytesPerCycle_valid = Fw::ParamValid::VALID;
13814  this->m_paramLock.unlock();
13815 
13816  // Call notifier
13818  return Fw::CmdResponse::OK;
13819  }
13820 
13821  Fw::CmdResponse CfdpManagerComponentBase ::
13822  paramSet_PostInactivitySendRetries(Fw::SerialBufferBase& val)
13823  {
13824  U8 _localVal{};
13825  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
13826  if (_stat != Fw::FW_SERIALIZE_OK) {
13828  }
13829 
13830  // Assign value only if successfully deserialized
13831  this->m_paramLock.lock();
13832  this->m_PostInactivitySendRetries = _localVal;
13833  this->m_param_PostInactivitySendRetries_valid = Fw::ParamValid::VALID;
13834  this->m_paramLock.unlock();
13835 
13836  // Call notifier
13838  return Fw::CmdResponse::OK;
13839  }
13840 
13841  Fw::CmdResponse CfdpManagerComponentBase ::
13842  paramSet_FileInDefaultChannel(Fw::SerialBufferBase& val)
13843  {
13844  U8 _localVal{};
13845  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
13846  if (_stat != Fw::FW_SERIALIZE_OK) {
13848  }
13849 
13850  // Assign value only if successfully deserialized
13851  this->m_paramLock.lock();
13852  this->m_FileInDefaultChannel = _localVal;
13853  this->m_param_FileInDefaultChannel_valid = Fw::ParamValid::VALID;
13854  this->m_paramLock.unlock();
13855 
13856  // Call notifier
13858  return Fw::CmdResponse::OK;
13859  }
13860 
13861  Fw::CmdResponse CfdpManagerComponentBase ::
13862  paramSet_FileInDefaultDestEntityId(Fw::SerialBufferBase& val)
13863  {
13864  Svc::Ccsds::Cfdp::EntityId _localVal{};
13865  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
13866  if (_stat != Fw::FW_SERIALIZE_OK) {
13868  }
13869 
13870  // Assign value only if successfully deserialized
13871  this->m_paramLock.lock();
13872  this->m_FileInDefaultDestEntityId = _localVal;
13873  this->m_param_FileInDefaultDestEntityId_valid = Fw::ParamValid::VALID;
13874  this->m_paramLock.unlock();
13875 
13876  // Call notifier
13878  return Fw::CmdResponse::OK;
13879  }
13880 
13881  Fw::CmdResponse CfdpManagerComponentBase ::
13882  paramSet_FileInDefaultClass(Fw::SerialBufferBase& val)
13883  {
13884  Svc::Ccsds::Cfdp::Class _localVal{};
13885  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
13886  if (_stat != Fw::FW_SERIALIZE_OK) {
13888  }
13889 
13890  // Assign value only if successfully deserialized
13891  this->m_paramLock.lock();
13892  this->m_FileInDefaultClass = _localVal;
13893  this->m_param_FileInDefaultClass_valid = Fw::ParamValid::VALID;
13894  this->m_paramLock.unlock();
13895 
13896  // Call notifier
13898  return Fw::CmdResponse::OK;
13899  }
13900 
13901  Fw::CmdResponse CfdpManagerComponentBase ::
13902  paramSet_FileInDefaultKeep(Fw::SerialBufferBase& val)
13903  {
13904  Svc::Ccsds::Cfdp::Keep _localVal{};
13905  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
13906  if (_stat != Fw::FW_SERIALIZE_OK) {
13908  }
13909 
13910  // Assign value only if successfully deserialized
13911  this->m_paramLock.lock();
13912  this->m_FileInDefaultKeep = _localVal;
13913  this->m_param_FileInDefaultKeep_valid = Fw::ParamValid::VALID;
13914  this->m_paramLock.unlock();
13915 
13916  // Call notifier
13918  return Fw::CmdResponse::OK;
13919  }
13920 
13921  Fw::CmdResponse CfdpManagerComponentBase ::
13922  paramSet_FileInDefaultPriority(Fw::SerialBufferBase& val)
13923  {
13924  U8 _localVal{};
13925  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
13926  if (_stat != Fw::FW_SERIALIZE_OK) {
13928  }
13929 
13930  // Assign value only if successfully deserialized
13931  this->m_paramLock.lock();
13932  this->m_FileInDefaultPriority = _localVal;
13933  this->m_param_FileInDefaultPriority_valid = Fw::ParamValid::VALID;
13934  this->m_paramLock.unlock();
13935 
13936  // Call notifier
13938  return Fw::CmdResponse::OK;
13939  }
13940 
13941  Fw::CmdResponse CfdpManagerComponentBase ::
13942  paramSet_ChannelConfig(Fw::SerialBufferBase& val)
13943  {
13945  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
13946  if (_stat != Fw::FW_SERIALIZE_OK) {
13948  }
13949 
13950  // Assign value only if successfully deserialized
13951  this->m_paramLock.lock();
13952  this->m_ChannelConfig = _localVal;
13953  this->m_param_ChannelConfig_valid = Fw::ParamValid::VALID;
13954  this->m_paramLock.unlock();
13955 
13956  // Call notifier
13958  return Fw::CmdResponse::OK;
13959  }
13960 
13961  // ----------------------------------------------------------------------
13962  // Parameter save functions
13963  // ----------------------------------------------------------------------
13964 
13965  Fw::CmdResponse CfdpManagerComponentBase ::
13966  paramSave_LocalEid()
13967  {
13968  if (!this->isConnected_prmSetOut_OutputPort(0)) {
13970  }
13971  Fw::ParamBuffer _paramBuffer;
13972  const FwIdType idBase = this->getIdBase();
13974  // Serialize the parameter
13975  this->m_paramLock.lock();
13976  if ((this->m_param_LocalEid_valid == Fw::ParamValid::VALID) || (this->m_param_LocalEid_valid == Fw::ParamValid::DEFAULT)) {
13977  _stat = _paramBuffer.serializeFrom(m_LocalEid);
13978  }
13979  this->m_paramLock.unlock();
13980  if (_stat != Fw::FW_SERIALIZE_OK) {
13982  }
13983  // Save the parameter
13984  this->prmSetOut_out(
13985  0,
13986  static_cast<FwPrmIdType>(idBase + PARAMID_LOCALEID),
13987  _paramBuffer
13988  );
13989  // Return the command response
13990  return Fw::CmdResponse::OK;
13991  }
13992 
13993  Fw::CmdResponse CfdpManagerComponentBase ::
13994  paramSave_OutgoingFileChunkSize()
13995  {
13996  if (!this->isConnected_prmSetOut_OutputPort(0)) {
13998  }
13999  Fw::ParamBuffer _paramBuffer;
14000  const FwIdType idBase = this->getIdBase();
14002  // Serialize the parameter
14003  this->m_paramLock.lock();
14004  if ((this->m_param_OutgoingFileChunkSize_valid == Fw::ParamValid::VALID) || (this->m_param_OutgoingFileChunkSize_valid == Fw::ParamValid::DEFAULT)) {
14005  _stat = _paramBuffer.serializeFrom(m_OutgoingFileChunkSize);
14006  }
14007  this->m_paramLock.unlock();
14008  if (_stat != Fw::FW_SERIALIZE_OK) {
14010  }
14011  // Save the parameter
14012  this->prmSetOut_out(
14013  0,
14014  static_cast<FwPrmIdType>(idBase + PARAMID_OUTGOINGFILECHUNKSIZE),
14015  _paramBuffer
14016  );
14017  // Return the command response
14018  return Fw::CmdResponse::OK;
14019  }
14020 
14021  Fw::CmdResponse CfdpManagerComponentBase ::
14022  paramSave_RxCrcCalcBytesPerCycle()
14023  {
14024  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14026  }
14027  Fw::ParamBuffer _paramBuffer;
14028  const FwIdType idBase = this->getIdBase();
14030  // Serialize the parameter
14031  this->m_paramLock.lock();
14032  if ((this->m_param_RxCrcCalcBytesPerCycle_valid == Fw::ParamValid::VALID) || (this->m_param_RxCrcCalcBytesPerCycle_valid == Fw::ParamValid::DEFAULT)) {
14033  _stat = _paramBuffer.serializeFrom(m_RxCrcCalcBytesPerCycle);
14034  }
14035  this->m_paramLock.unlock();
14036  if (_stat != Fw::FW_SERIALIZE_OK) {
14038  }
14039  // Save the parameter
14040  this->prmSetOut_out(
14041  0,
14042  static_cast<FwPrmIdType>(idBase + PARAMID_RXCRCCALCBYTESPERCYCLE),
14043  _paramBuffer
14044  );
14045  // Return the command response
14046  return Fw::CmdResponse::OK;
14047  }
14048 
14049  Fw::CmdResponse CfdpManagerComponentBase ::
14050  paramSave_PostInactivitySendRetries()
14051  {
14052  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14054  }
14055  Fw::ParamBuffer _paramBuffer;
14056  const FwIdType idBase = this->getIdBase();
14058  // Serialize the parameter
14059  this->m_paramLock.lock();
14060  if ((this->m_param_PostInactivitySendRetries_valid == Fw::ParamValid::VALID) || (this->m_param_PostInactivitySendRetries_valid == Fw::ParamValid::DEFAULT)) {
14061  _stat = _paramBuffer.serializeFrom(m_PostInactivitySendRetries);
14062  }
14063  this->m_paramLock.unlock();
14064  if (_stat != Fw::FW_SERIALIZE_OK) {
14066  }
14067  // Save the parameter
14068  this->prmSetOut_out(
14069  0,
14070  static_cast<FwPrmIdType>(idBase + PARAMID_POSTINACTIVITYSENDRETRIES),
14071  _paramBuffer
14072  );
14073  // Return the command response
14074  return Fw::CmdResponse::OK;
14075  }
14076 
14077  Fw::CmdResponse CfdpManagerComponentBase ::
14078  paramSave_FileInDefaultChannel()
14079  {
14080  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14082  }
14083  Fw::ParamBuffer _paramBuffer;
14084  const FwIdType idBase = this->getIdBase();
14086  // Serialize the parameter
14087  this->m_paramLock.lock();
14088  if ((this->m_param_FileInDefaultChannel_valid == Fw::ParamValid::VALID) || (this->m_param_FileInDefaultChannel_valid == Fw::ParamValid::DEFAULT)) {
14089  _stat = _paramBuffer.serializeFrom(m_FileInDefaultChannel);
14090  }
14091  this->m_paramLock.unlock();
14092  if (_stat != Fw::FW_SERIALIZE_OK) {
14094  }
14095  // Save the parameter
14096  this->prmSetOut_out(
14097  0,
14098  static_cast<FwPrmIdType>(idBase + PARAMID_FILEINDEFAULTCHANNEL),
14099  _paramBuffer
14100  );
14101  // Return the command response
14102  return Fw::CmdResponse::OK;
14103  }
14104 
14105  Fw::CmdResponse CfdpManagerComponentBase ::
14106  paramSave_FileInDefaultDestEntityId()
14107  {
14108  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14110  }
14111  Fw::ParamBuffer _paramBuffer;
14112  const FwIdType idBase = this->getIdBase();
14114  // Serialize the parameter
14115  this->m_paramLock.lock();
14116  if ((this->m_param_FileInDefaultDestEntityId_valid == Fw::ParamValid::VALID) || (this->m_param_FileInDefaultDestEntityId_valid == Fw::ParamValid::DEFAULT)) {
14117  _stat = _paramBuffer.serializeFrom(m_FileInDefaultDestEntityId);
14118  }
14119  this->m_paramLock.unlock();
14120  if (_stat != Fw::FW_SERIALIZE_OK) {
14122  }
14123  // Save the parameter
14124  this->prmSetOut_out(
14125  0,
14126  static_cast<FwPrmIdType>(idBase + PARAMID_FILEINDEFAULTDESTENTITYID),
14127  _paramBuffer
14128  );
14129  // Return the command response
14130  return Fw::CmdResponse::OK;
14131  }
14132 
14133  Fw::CmdResponse CfdpManagerComponentBase ::
14134  paramSave_FileInDefaultClass()
14135  {
14136  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14138  }
14139  Fw::ParamBuffer _paramBuffer;
14140  const FwIdType idBase = this->getIdBase();
14142  // Serialize the parameter
14143  this->m_paramLock.lock();
14144  if ((this->m_param_FileInDefaultClass_valid == Fw::ParamValid::VALID) || (this->m_param_FileInDefaultClass_valid == Fw::ParamValid::DEFAULT)) {
14145  _stat = _paramBuffer.serializeFrom(m_FileInDefaultClass);
14146  }
14147  this->m_paramLock.unlock();
14148  if (_stat != Fw::FW_SERIALIZE_OK) {
14150  }
14151  // Save the parameter
14152  this->prmSetOut_out(
14153  0,
14154  static_cast<FwPrmIdType>(idBase + PARAMID_FILEINDEFAULTCLASS),
14155  _paramBuffer
14156  );
14157  // Return the command response
14158  return Fw::CmdResponse::OK;
14159  }
14160 
14161  Fw::CmdResponse CfdpManagerComponentBase ::
14162  paramSave_FileInDefaultKeep()
14163  {
14164  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14166  }
14167  Fw::ParamBuffer _paramBuffer;
14168  const FwIdType idBase = this->getIdBase();
14170  // Serialize the parameter
14171  this->m_paramLock.lock();
14172  if ((this->m_param_FileInDefaultKeep_valid == Fw::ParamValid::VALID) || (this->m_param_FileInDefaultKeep_valid == Fw::ParamValid::DEFAULT)) {
14173  _stat = _paramBuffer.serializeFrom(m_FileInDefaultKeep);
14174  }
14175  this->m_paramLock.unlock();
14176  if (_stat != Fw::FW_SERIALIZE_OK) {
14178  }
14179  // Save the parameter
14180  this->prmSetOut_out(
14181  0,
14182  static_cast<FwPrmIdType>(idBase + PARAMID_FILEINDEFAULTKEEP),
14183  _paramBuffer
14184  );
14185  // Return the command response
14186  return Fw::CmdResponse::OK;
14187  }
14188 
14189  Fw::CmdResponse CfdpManagerComponentBase ::
14190  paramSave_FileInDefaultPriority()
14191  {
14192  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14194  }
14195  Fw::ParamBuffer _paramBuffer;
14196  const FwIdType idBase = this->getIdBase();
14198  // Serialize the parameter
14199  this->m_paramLock.lock();
14200  if ((this->m_param_FileInDefaultPriority_valid == Fw::ParamValid::VALID) || (this->m_param_FileInDefaultPriority_valid == Fw::ParamValid::DEFAULT)) {
14201  _stat = _paramBuffer.serializeFrom(m_FileInDefaultPriority);
14202  }
14203  this->m_paramLock.unlock();
14204  if (_stat != Fw::FW_SERIALIZE_OK) {
14206  }
14207  // Save the parameter
14208  this->prmSetOut_out(
14209  0,
14210  static_cast<FwPrmIdType>(idBase + PARAMID_FILEINDEFAULTPRIORITY),
14211  _paramBuffer
14212  );
14213  // Return the command response
14214  return Fw::CmdResponse::OK;
14215  }
14216 
14217  Fw::CmdResponse CfdpManagerComponentBase ::
14218  paramSave_ChannelConfig()
14219  {
14220  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14222  }
14223  Fw::ParamBuffer _paramBuffer;
14224  const FwIdType idBase = this->getIdBase();
14226  // Serialize the parameter
14227  this->m_paramLock.lock();
14228  if ((this->m_param_ChannelConfig_valid == Fw::ParamValid::VALID) || (this->m_param_ChannelConfig_valid == Fw::ParamValid::DEFAULT)) {
14229  _stat = _paramBuffer.serializeFrom(m_ChannelConfig);
14230  }
14231  this->m_paramLock.unlock();
14232  if (_stat != Fw::FW_SERIALIZE_OK) {
14234  }
14235  // Save the parameter
14236  this->prmSetOut_out(
14237  0,
14238  static_cast<FwPrmIdType>(idBase + PARAMID_CHANNELCONFIG),
14239  _paramBuffer
14240  );
14241  // Return the command response
14242  return Fw::CmdResponse::OK;
14243  }
14244 
14245  }
14246 
14247  }
14248 
14249 }
Serialization/Deserialization operation was successful.
void tlmWrite(FwChanIdType id, Fw::TlmBuffer &_tlmBuff, Fw::Time _tlmTime=Fw::Time()) const
Svc::Ccsds::Cfdp::Keep paramGet_FileInDefaultKeep(Fw::ParamValid &valid)
void dataReturnIn_handlerBase(FwIndexType portNum, Fw::Buffer &fwBuffer)
Handler base-class function for input port dataReturnIn.
void log_ACTIVITY_LO_TransactionResumed(Svc::Ccsds::Cfdp::TransactionSeq transactionSeq, Svc::Ccsds::Cfdp::EntityId entityId) const
void addCallPort(InputTimePort *callPort)
Register an input port.
Definition: TimePortAc.cpp:157
CFDP ID to denote the current node when sending PDUs.
static constexpr FwIndexType getNum_cmdResponseOut_OutputPorts()
virtual void run1Hz_preMsgHook(FwIndexType portNum, U32 context)
Pre-message hook for async input port run1Hz.
bool isConnected_prmGetOut_OutputPort(FwIndexType portNum) const
static constexpr FwSizeType CAPACITY
Definition: CmdPortAc.hpp:36
Enum used to determine if a file should be kept or deleted after a CFDP transaction.
Definition: KeepEnumAc.hpp:22
virtual void run1Hz_handler(FwIndexType portNum, U32 context)=0
Handler for input port run1Hz.
void log_WARNING_LO_FailAckPduDeserialization(U8 channelId, I32 status) const
Log event FailAckPduDeserialization.
bool isConnected_cmdRegOut_OutputPort(FwIndexType portNum) const
static constexpr FwIndexType getNum_bufferDeallocate_OutputPorts()
void log_WARNING_LO_FailFileDataPduDeserialization(U8 channelId, I32 status) const
Log event FailFileDataPduDeserialization.
FwIdType FwOpcodeType
The type of a command opcode.
void log_WARNING_LO_TxFileSeekFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, I32 status) const
Log event TxFileSeekFailed.
void log_WARNING_LO_FailPollFileMove(const Fw::StringBase &srcFile, const Fw::StringBase &failDir, I32 status) const
Log event FailPollFileMove.
Operation succeeded.
Definition: Os.hpp:27
SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG) override
Serialize an 8-bit unsigned integer value.
message to exit active component task
void log_WARNING_LO_RxEofWithError(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U8 conditionCode) const
Log event RxEofWithError.
PlatformSizeType FwSizeType
The size of the serial representation.
Definition: FlowEnumAc.hpp:53
void PlaybackDirectory_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Status receive(U8 *destination, FwSizeType capacity, BlockingType blockType, FwSizeType &actualSize, FwQueuePriorityType &priority) override
receive a message from the queue through delegate
Definition: Queue.cpp:71
I32 FwEnumStoreType
void log_ACTIVITY_LO_RxTempFileCreated(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, const Fw::StringBase &filename) const
Log event RxTempFileCreated.
Enabled state.
virtual void dataReturnIn_handler(FwIndexType portNum, Fw::Buffer &fwBuffer)=0
Handler for input port dataReturnIn.
void regCommands()
Register commands with the Command Dispatcher.
void log_WARNING_LO_TxSendMetadataFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum) const
Log event TxSendMetadataFailed.
Status
status returned from the queue send function
Definition: Queue.hpp:30
Svc::SendFileResponse fileIn_handlerBase(FwIndexType portNum, const Fw::StringBase &sourceFileName, const Fw::StringBase &destFileName, U32 offset, U32 length)
Handler base-class function for input port fileIn.
void pingOut_out(FwIndexType portNum, U32 key) const
Invoke output port pingOut.
virtual void CancelTransaction_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CancelTransaction.
virtual Svc::SendFileResponse fileIn_handler(FwIndexType portNum, const Fw::StringBase &sourceFileName, const Fw::StringBase &destFileName, U32 offset, U32 length)=0
Handler for input port fileIn.
void set_dataOut_OutputPort(FwIndexType portNum, Fw::InputBufferSendPort *port)
Connect port to dataOut[portNum].
virtual void parametersLoaded()
Called whenever parameters are loaded.
void log_WARNING_LO_TxInactivityTimeout(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum) const
Log event TxInactivityTimeout.
U32 EntityId
Entity id size.
void init()
Initialization function.
Definition: SchedPortAc.cpp:73
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
void log_ACTIVITY_LO_TransactionSuspended(Svc::Ccsds::Cfdp::TransactionSeq transactionSeq, Svc::Ccsds::Cfdp::EntityId entityId) const
void log_WARNING_LO_RxAckLimitReached(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum) const
Log event RxAckLimitReached.
void dataInReturn_out(FwIndexType portNum, Fw::Buffer &fwBuffer) const
Invoke output port dataInReturn.
BYTE pingInPortSize[Svc::PingPortBuffer::CAPACITY]
virtual void SetChannelFlow_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U8 channelId, const Svc::Ccsds::Cfdp::Flow &freeze)=0
bool isConnected_pingOut_OutputPort(FwIndexType portNum) const
void set_bufferDeallocate_OutputPort(FwIndexType portNum, Fw::InputBufferSendPort *port)
Connect port to bufferDeallocate[portNum].
static constexpr FwIndexType getNum_fileIn_InputPorts()
void init()
Initialization function.
Definition: CmdPortAc.cpp:89
virtual void AbandonTransaction_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U8 channelId, Svc::Ccsds::Cfdp::TransactionSeq transactionSeq, Svc::Ccsds::Cfdp::EntityId entityId)=0
void set_prmGetOut_OutputPort(FwIndexType portNum, Fw::InputPrmGetPort *port)
Connect port to prmGetOut[portNum].
void log_WARNING_LO_InvalidDestinationEid(U32 destEid) const
Log event InvalidDestinationEid.
FwIdType FwPrmIdType
The type of a parameter identifier.
static constexpr FwSizeType CAPACITY
static constexpr FwIndexType getNum_dataInReturn_OutputPorts()
void log_ACTIVITY_LO_PollDirInitiated(const Fw::StringBase &sourceDirectory) const
Log event PollDirInitiated.
void log_WARNING_LO_TxAckLimitReached(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum) const
Log event TxAckLimitReached.
The size of the serial representation.
void log_WARNING_LO_RxSeekCrcFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U32 offset, I32 status) const
Log event RxSeekCrcFailed.
void unLock()
unlock the mutex and assert success
Definition: Mutex.cpp:41
virtual void CancelTransaction_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U8 channelId, Svc::Ccsds::Cfdp::TransactionSeq transactionSeq, Svc::Ccsds::Cfdp::EntityId entityId)=0
void addCallPort(InputPrmSetPort *callPort)
Register an input port.
void log_WARNING_LO_TxFileTransferFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 seqNum, U32 srcEid, const Fw::StringBase &srcFile, U32 destEid, const Fw::StringBase &destFile, U8 conditionCode) const
Log event TxFileTransferFailed.
virtual void parameterUpdated(FwPrmIdType id)
Called whenever a parameter is updated.
static constexpr FwIndexType getNum_timeCaller_OutputPorts()
void fileDoneOut_out(FwIndexType portNum, const Svc::SendFileResponse &resp) const
Invoke output port fileDoneOut.
void invoke(U32 key) const
Invoke a port connection.
Definition: PingPortAc.cpp:170
virtual const CHAR * toChar() const =0
Convert to a C-style char*.
void tlmWrite_ChannelTelemetry(const Svc::Ccsds::Cfdp::ChannelTelemetryArray &arg, Fw::Time _tlmTime=Fw::Time()) const
void SetChannelFlow_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
const Time ZERO_TIME
Definition: Time.cpp:5
void log_WARNING_LO_RxFileSizeMismatch(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U32 expected, U32 actual) const
Log event RxFileSizeMismatch.
void log_WARNING_LO_ChunklistUnavailable(U32 transactionSeq) const
Log event ChunklistUnavailable.
void log_WARNING_LO_RxWriteFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U32 expected, I32 actual) const
Log event RxWriteFailed.
virtual void dataIn_preMsgHook(FwIndexType portNum, Fw::Buffer &fwBuffer)
Pre-message hook for async input port dataIn.
void cmdResponse_out(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdResponse response)
Emit command response.
File will be deleted after the CFDP transaction.
Definition: KeepEnumAc.hpp:38
CFDP class 2 - Reliable transfer (Acknowledged)
Definition: ClassEnumAc.hpp:44
BYTE run1HzPortSize[Svc::SchedPortBuffer::CAPACITY]
void log_ACTIVITY_HI_TransactionAbandoned(Svc::Ccsds::Cfdp::TransactionSeq transactionSeq, Svc::Ccsds::Cfdp::EntityId entityId) const
void init()
Initialization function.
Definition: TlmPortAc.cpp:171
Enum representing a command response.
No time base has been established (Required)
void CancelTransaction_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void ResetCounters_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command ResetCounters.
void addCallPort(InputCmdRegPort *callPort)
Register an input port.
void log_ACTIVITY_HI_ResetCounters(U8 channelId) const
Log event ResetCounters.
void init()
Initialization function.
virtual void lock()
Lock the guarded mutex.
void set_cmdResponseOut_OutputPort(FwIndexType portNum, Fw::InputCmdResponsePort *port)
Connect port to cmdResponseOut[portNum].
void set_bufferAllocate_OutputPort(FwIndexType portNum, Fw::InputBufferGetPort *port)
Connect port to bufferAllocate[portNum].
void init()
Initialization function.
void log_WARNING_LO_RxNakLimitReached(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum) const
Log event RxNakLimitReached.
Os::Queue m_queue
queue object for active component
void SendFile_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Default CFDP channel for fileIn port-initiated file transfers.
void set_pingOut_OutputPort(FwIndexType portNum, Svc::InputPingPort *port)
Connect port to pingOut[portNum].
void set_dataInReturn_OutputPort(FwIndexType portNum, Fw::InputBufferSendPort *port)
Connect port to dataInReturn[portNum].
Software diagnostic events.
void log_ACTIVITY_HI_TxFileTransferCompleted(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 seqNum, U32 srcEid, const Fw::StringBase &srcFile, U32 destEid, const Fw::StringBase &destFile, U32 fileSize) const
Log event TxFileTransferCompleted.
void SuspendResumeTransaction_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void addCallPort(InputTlmPort *callPort)
Register an input port.
Definition: TlmPortAc.cpp:177
void set_prmSetOut_OutputPort(FwIndexType portNum, Fw::InputPrmSetPort *port)
Connect port to prmSetOut[portNum].
void addCallPort(InputPrmGetPort *callPort)
Register an input port.
void init()
Object initializer.
Definition: ObjBase.cpp:24
virtual void dataIn_handler(FwIndexType portNum, Fw::Buffer &fwBuffer)=0
Handler for input port dataIn.
static constexpr FwIndexType getNum_logOut_OutputPorts()
SerializeStatus
forward declaration for string
void log_WARNING_LO_SendFileInitiateFail(const Fw::StringBase &sourceFileName) const
Log event SendFileInitiateFail.
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
Definition: CmdPortAc.cpp:95
void addCallPort(InputBufferGetPort *callPort)
Register an input port.
virtual SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG)=0
Deserialize an 8-bit unsigned integer value.
Message will block until space is available.
Definition: Queue.hpp:47
void unlock()
alias for unLock to meet BasicLockable requirements
Definition: Mutex.hpp:64
void log_ACTIVITY_LO_MetadataReceived(const Fw::StringBase &srcFile, const Fw::StringBase &destFile, U32 transactionSeq) const
Log event MetadataReceived.
static constexpr FwIndexType getNum_tlmOut_OutputPorts()
void log_WARNING_LO_TxInvalidSegmentRequests(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U32 badCount) const
Log event TxInvalidSegmentRequests.
void dataIn_handlerBase(FwIndexType portNum, Fw::Buffer &fwBuffer)
Handler base-class function for input port dataIn.
virtual void ResetCounters_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U8 channelId)=0
U32 TransactionSeq
transaction sequence number size
Fw::InputBufferSendPort * get_dataIn_InputPort(FwIndexType portNum)
virtual void PlaybackDirectory_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U8 channelId, Svc::Ccsds::Cfdp::EntityId destId, const Svc::Ccsds::Cfdp::Class &cfdpClass, const Svc::Ccsds::Cfdp::Keep &keep, U8 priority, const Fw::CmdStringArg &sourceDirectory, const Fw::CmdStringArg &destDirectory)=0
FwIdType FwEventIdType
The type of an event identifier.
void log_WARNING_LO_MaxTxTransactionsReached() const
Log event MaxTxTransactionsReached.
static constexpr FwIndexType getNum_prmGetOut_OutputPorts()
void invoke(FwOpcodeType opCode) const
Invoke a port connection.
static constexpr FwSizeType CAPACITY
Definition: PingPortAc.hpp:34
CfdpManagerComponentBase(const char *compName="")
Construct CfdpManagerComponentBase object.
bool isConnected_fileDoneOut_OutputPort(FwIndexType portNum) const
void log_ACTIVITY_LO_PlaybackInitiated(const Fw::StringBase &sourceDirectory) const
Log event PlaybackInitiated.
#define FW_OBJECT_NAMES
Indicates whether or not object names are stored (more memory, can be used for tracking objects) ...
Definition: FpConfig.h:40
static constexpr FwIndexType getNum_cmdRegOut_OutputPorts()
Svc::Ccsds::Cfdp::Class paramGet_FileInDefaultClass(Fw::ParamValid &valid)
void init()
Initialization function.
Definition: TimePortAc.cpp:151
virtual void AbandonTransaction_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command AbandonTransaction.
void PollDirectory_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Data was the wrong format (e.g. wrong packet type)
Fw::InputBufferSendPort * get_dataReturnIn_InputPort(FwIndexType portNum)
void set_cmdRegOut_OutputPort(FwIndexType portNum, Fw::InputCmdRegPort *port)
Connect port to cmdRegOut[portNum].
void log_WARNING_LO_TxZeroLengthFile(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, const Fw::StringBase &filename) const
Log event TxZeroLengthFile.
Less important informational events.
Os::Queue::Status createQueue(FwSizeType depth, FwSizeType msgSize)
void set_tlmOut_OutputPort(FwIndexType portNum, Fw::InputTlmPort *port)
Connect port to tlmOut[portNum].
#define FW_MIN(a, b)
MIN macro (deprecated in C++, use std::min)
Definition: BasicTypes.h:99
A less serious but recoverable event.
void log_ACTIVITY_HI_TxFileTransferStarted(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 seqNum, U32 srcEid, const Fw::StringBase &srcFile, U32 destEid, const Fw::StringBase &destFile, U32 fileSize) const
Log event TxFileTransferStarted.
void invoke(Fw::Buffer &fwBuffer) const
Invoke a port connection.
Fw::ParamValid invoke(FwPrmIdType id, Fw::ParamBuffer &val) const
void pingIn_handlerBase(FwIndexType portNum, U32 key)
Handler base-class function for input port pingIn.
virtual void unLock()
Unlock the guarded mutex.
void log_WARNING_LO_FileDataSegmentMetadata() const
Log event FileDataSegmentMetadata.
virtual void SuspendResumeTransaction_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command SuspendResumeTransaction.
Svc::Ccsds::Cfdp::EntityId paramGet_LocalEid(Fw::ParamValid &valid)
void log_WARNING_LO_InvalidChannelPoll(U8 pollId, U8 maxPollId) const
Log event InvalidChannelPoll.
void init()
Initialization function.
Definition: PingPortAc.cpp:151
virtual void StopPollDirectory_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command StopPollDirectory.
void init()
Initialization function.
void addCallPort(InputBufferSendPort *callPort)
Register an input port.
static constexpr FwIndexType getNum_pingOut_OutputPorts()
static constexpr FwIndexType getNum_dataReturnIn_InputPorts()
bool isConnected_tlmOut_OutputPort(FwIndexType portNum) const
void invoke(Fw::Time &time) const
Invoke a port connection.
Definition: TimePortAc.cpp:170
void log_WARNING_LO_RxFileTransferFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 seqNum, U32 srcEid, const Fw::StringBase &srcFile, U32 destEid, const Fw::StringBase &destFile, U8 conditionCode) const
Log event RxFileTransferFailed.
void cmdIn_handlerBase(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Handler base-class function for input port cmdIn.
void log_WARNING_LO_RxFileCreateFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, const Fw::StringBase &filename, I32 status) const
Log event RxFileCreateFailed.
Command to cancel a transaction with graceful close-out.
Serializable::SizeType getDeserializeSizeLeft() const override
Get remaining deserialization buffer size.
void log_WARNING_LO_TxInvalidNakPdu(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum) const
Log event TxInvalidNakPdu.
void log_ACTIVITY_HI_TransactionCanceled(Svc::Ccsds::Cfdp::TransactionSeq transactionSeq, Svc::Ccsds::Cfdp::EntityId entityId) const
void invoke(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response) const
Invoke a port connection.
void set_logOut_OutputPort(FwIndexType portNum, Fw::InputLogPort *port)
Connect port to logOut[portNum].
FwIdType FwChanIdType
The type of a telemetry channel identifier.
bool isConnected_dataOut_OutputPort(FwIndexType portNum) const
FwSizeType SizeType
The maximum number of received bytes to calculate a CRC for in a single scheduler cycle...
void log_WARNING_LO_RxFileReopenFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, const Fw::StringBase &filename, I32 status) const
Log event RxFileReopenFailed.
void addCallPort(InputPingPort *callPort)
Register an input port.
Definition: PingPortAc.cpp:157
void log_WARNING_LO_InvalidChannel(U8 channelId, U8 maxChannelId) const
Log event InvalidChannel.
void log_WARNING_LO_TransactionNotFound(Svc::Ccsds::Cfdp::TransactionSeq transactionSeq, Svc::Ccsds::Cfdp::EntityId entityId) const
virtual ~CfdpManagerComponentBase()
Destroy CfdpManagerComponentBase object.
Status send(const U8 *buffer, FwSizeType size, FwQueuePriorityType priority, BlockingType blockType) override
send a message into the queue through delegate
Definition: Queue.cpp:54
virtual void SendFile_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U8 channelId, Svc::Ccsds::Cfdp::EntityId destId, const Svc::Ccsds::Cfdp::Class &cfdpClass, const Svc::Ccsds::Cfdp::Keep &keep, U8 priority, const Fw::CmdStringArg &sourceFileName, const Fw::CmdStringArg &destFileName)=0
The size of the serial representation.
Definition: ClassEnumAc.hpp:60
static constexpr FwIndexType getNum_prmSetOut_OutputPorts()
void resetDeser() override
Reset deserialization pointer to beginning of buffer.
virtual void SetChannelFlow_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command SetChannelFlow.
void log_WARNING_LO_UnsupportedSendFileArguments(U32 offset, U32 length) const
Log event UnsupportedSendFileArguments.
static constexpr FwIndexType getNum_cmdIn_InputPorts()
void log_WARNING_LO_FailEofPduDeserialization(U8 channelId, I32 status) const
Log event FailEofPduDeserialization.
Default destination entity ID for fileIn port-initiated file transfers.
static constexpr FwIndexType getNum_run1Hz_InputPorts()
void invoke(FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val) const
Invoke a port connection.
Definition: TlmPortAc.cpp:190
const char * toChar() const
Convert to a C-style char*.
virtual void dataReturnIn_preMsgHook(FwIndexType portNum, Fw::Buffer &fwBuffer)
Pre-message hook for async input port dataReturnIn.
bool isConnected() const
Definition: PortBase.cpp:38
Enum representing event severity.
virtual void PollDirectory_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command PollDirectory.
#define PRI_FwIndexType
void log_WARNING_LO_RxSeekFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U32 offset, I32 status) const
Log event RxSeekFailed.
virtual void pingIn_preMsgHook(FwIndexType portNum, U32 key)
Pre-message hook for async input port pingIn.
FormatStatus format(const CHAR *formatString,...)
write formatted string to buffer
Definition: StringBase.cpp:58
void init()
Initialization function.
Definition: LogPortAc.cpp:180
Command successfully executed.
void log_WARNING_LO_TxNonFileDirectivePduReceived(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum) const
Log event TxNonFileDirectivePduReceived.
virtual void SuspendResumeTransaction_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U8 channelId, Svc::Ccsds::Cfdp::TransactionSeq transactionSeq, Svc::Ccsds::Cfdp::EntityId entityId, const Svc::Ccsds::Cfdp::SuspendResume &action)=0
Svc::InputSendFileRequestPort * get_fileIn_InputPort(FwIndexType portNum)
void log_WARNING_LO_RxTransactionLimitReached(U32 srcEid, U32 transactionSeq) const
Log event RxTransactionLimitReached.
void loadParameters()
Load the parameters from a parameter source.
void log_WARNING_LO_FailKeepFileMove(const Fw::StringBase &srcFile, const Fw::StringBase &moveDir, I32 status) const
Log event FailKeepFileMove.
Svc::InputSchedPort * get_run1Hz_InputPort(FwIndexType portNum)
void setPortNum(FwIndexType portNum)
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:54
void log_WARNING_LO_RxEofMdSizeMismatch(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U32 mdSize, U32 eofSize) const
Log event RxEofMdSizeMismatch.
Structure for the configured array of CFDP channels.
BlockingType
message type
Definition: Queue.hpp:46
void dataOut_out(FwIndexType portNum, Fw::Buffer &fwBuffer) const
Invoke output port dataOut.
void init()
Initialization function.
void log_ACTIVITY_HI_RxEofCancelReceived(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum) const
Log event RxEofCancelReceived.
Fw::Buffer invoke(FwSizeType size) const
void bufferDeallocate_out(FwIndexType portNum, Fw::Buffer &fwBuffer) const
Invoke output port bufferDeallocate.
bool isConnected_prmSetOut_OutputPort(FwIndexType portNum) const
void log_ACTIVITY_LO_SetFlowState(U8 channelId, const Svc::Ccsds::Cfdp::Flow &flowState) const
Log event SetFlowState.
Command failed to deserialize.
Fw::Buffer bufferAllocate_out(FwIndexType portNum, FwSizeType size) const
Invoke output port bufferAllocate.
BYTE dataReturnInPortSize[Fw::BufferSendPortBuffer::CAPACITY]
PlatformQueuePriorityType FwQueuePriorityType
The type of queue priorities used.
void log_WARNING_LO_RxFileRenameFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, const Fw::StringBase &tempFile, const Fw::StringBase &finalFile, I32 status) const
Log event RxFileRenameFailed.
Command had execution error.
Structure for telemetry counters for a single CFDP channel.
Important informational events.
void init()
Initialization function.
void AbandonTransaction_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void pingIn_handler(FwIndexType portNum, U32 key)=0
Handler for input port pingIn.
bool isConnected_bufferAllocate_OutputPort(FwIndexType portNum) const
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
Definition: SchedPortAc.cpp:79
void log_WARNING_LO_TxFileOpenFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, const Fw::StringBase &filename, I32 status) const
Log event TxFileOpenFailed.
void invoke(FwEventIdType id, Fw::Time &timeTag, const Fw::LogSeverity &severity, Fw::LogBuffer &args) const
Invoke a port connection.
Definition: LogPortAc.cpp:199
void log_WARNING_LO_TxInvalidDirectiveCode(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U8 directiveCode, U8 substate) const
Log event TxInvalidDirectiveCode.
Fw::InputCmdPort * get_cmdIn_InputPort(FwIndexType portNum)
static constexpr FwIndexType getNum_dataIn_InputPorts()
void log_WARNING_LO_PlaybackDirReadFailed(const Fw::StringBase &directory, I32 status) const
Log event PlaybackDirReadFailed.
void log_ACTIVITY_LO_TxFileQueued(const Fw::StringBase &sourceFileName, U32 transactionSeq) const
Log event TxFileQueued.
Default file retention policy for fileIn port-initiated file transfers.
A message was sent requesting an exit of the loop.
void log_WARNING_LO_PlaybackDirSlotUnavailable() const
Log event PlaybackDirSlotUnavailable.
void log_WARNING_LO_UnhandledPduInIdleState() const
Log event UnhandledPduInIdleState.
BYTE dataInPortSize[Fw::BufferSendPortBuffer::CAPACITY]
bool isConnected_logOut_OutputPort(FwIndexType portNum) const
void log_WARNING_LO_BuffersExhausted() const
Log event BuffersExhausted.
PlatformIndexType FwIndexType
void log_WARNING_LO_RxCrcMismatch(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U32 expected, U32 actual) const
Log event RxCrcMismatch.
void log_WARNING_LO_RxFileDataOutOfBounds(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U32 offset, U32 dataSize, U32 fileSize) const
Log event RxFileDataOutOfBounds.
Send file response struct.
void log_WARNING_LO_FailPduSerialization(U8 channelId, const Svc::Ccsds::Cfdp::PduTypeEnum &pduType, I32 status) const
Log event FailPduSerialization.
void addCallPort(InputLogPort *callPort)
Register an input port.
Definition: LogPortAc.cpp:186
void log_ACTIVITY_HI_RxFileTransferCompleted(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 seqNum, U32 srcEid, const Fw::StringBase &srcFile, U32 destEid, const Fw::StringBase &destFile, U32 fileSize) const
Log event RxFileTransferCompleted.
bool isConnected_dataInReturn_OutputPort(FwIndexType portNum) const
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
void init()
Initialization function.
virtual void StopPollDirectory_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U8 channelId, U8 pollId)=0
void init()
Initialization function.
Definition: PingPortAc.cpp:73
void init()
Initialization function.
void set_timeCaller_OutputPort(FwIndexType portNum, Fw::InputTimePort *port)
Connect port to timeCaller[portNum].
Command failed validation.
Parameter configuration for an array CFDP channels.
RateGroupDivider component implementation.
static constexpr FwIndexType getNum_dataOut_OutputPorts()
void run1Hz_handlerBase(FwIndexType portNum, U32 context)
Handler base-class function for input port run1Hz.
void log_WARNING_LO_RxInvalidDirectiveCode(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U8 directiveCode, U8 substate) const
Log event RxInvalidDirectiveCode.
Svc::InputPingPort * get_pingIn_InputPort(FwIndexType portNum)
virtual void SendFile_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command SendFile.
message sent/received okay
Definition: Queue.hpp:31
SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG) override
Deserialize an 8-bit unsigned integer value.
Svc::Ccsds::Cfdp::EntityId paramGet_FileInDefaultDestEntityId(Fw::ParamValid &valid)
Enum representing parameter validity.
U8 BYTE
byte type
Definition: BasicTypes.h:57
static constexpr FwIndexType getNum_fileDoneOut_OutputPorts()
virtual void PlaybackDirectory_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command PlaybackDirectory.
void invoke(FwPrmIdType id, Fw::ParamBuffer &val) const
Invoke a port connection.
static constexpr FwIndexType getNum_pingIn_InputPorts()
bool isConnected_timeCaller_OutputPort(FwIndexType portNum) const
void log_WARNING_LO_RxReadCrcFailed(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum, U32 expected, I32 actual) const
Log event RxReadCrcFailed.
void log_WARNING_LO_FileRemoveFailed(const Fw::StringBase &filename, I32 status) const
Log event FileRemoveFailed.
void log_WARNING_LO_PlaybackDirOpenFailed(const Fw::StringBase &directory, I32 status) const
Log event PlaybackDirOpenFailed.
void log_WARNING_LO_DanglingFileHandleClosed(U8 channelId, U32 transactionSeq) const
Log event DanglingFileHandleClosed.
void invoke(const Svc::SendFileResponse &resp) const
Invoke a port connection.
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
Definition: PingPortAc.cpp:79
void log_WARNING_LO_RxInactivityTimeout(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum) const
Log event RxInactivityTimeout.
void log_WARNING_LO_PollDirNotActive(U8 channelId, U8 pollId) const
Log event PollDirNotActive.
Svc::Ccsds::Cfdp::ChannelArrayParams paramGet_ChannelConfig(Fw::ParamValid &valid)
Default priority for fileIn port-initiated file transfers.
void log_WARNING_LO_FailPduHeaderDeserialization(U8 channelId, I32 status) const
Log event FailPduHeaderDeserialization.
Message will return with status when space is unavailable.
Definition: Queue.hpp:48
Implementation of malloc based allocator.
void log_DIAGNOSTIC_ResetFreedTransaction() const
Log event ResetFreedTransaction.
virtual void PollDirectory_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U8 channelId, U8 pollId, Svc::Ccsds::Cfdp::EntityId destId, const Svc::Ccsds::Cfdp::Class &cfdpClass, U8 priority, U32 interval, const Fw::CmdStringArg &sourceDirectory, const Fw::CmdStringArg &destDirectory)=0
void init()
Initialization function.
void log_WARNING_LO_PollDirBusy(U8 channelId, U8 pollId) const
Log event PollDirBusy.
void init()
Initialization function.
void StopPollDirectory_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void ResetCounters_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
static constexpr FwIndexType getNum_bufferAllocate_OutputPorts()
void addCallPort(InputSendFileCompletePort *callPort)
Register an input port.
bool isConnected_bufferDeallocate_OutputPort(FwIndexType portNum) const
void set_fileDoneOut_OutputPort(FwIndexType portNum, Svc::InputSendFileCompletePort *port)
Connect port to fileDoneOut[portNum].
void log_DIAGNOSTIC_TxLateFinAcked(Svc::Ccsds::Cfdp::EntityId srcEid, Svc::Ccsds::Cfdp::TransactionSeq seqNum) const
#define FW_ASSERT(...)
Definition: Assert.hpp:14
static constexpr FwSizeType CAPACITY
Definition: SchedPortAc.hpp:34
void log_WARNING_LO_TxEarlyFinReceived(const Svc::Ccsds::Cfdp::Class &cfdpClass, U32 srcEid, U32 seqNum) const
Log event TxEarlyFinReceived.
void log_WARNING_LO_FailFinPduDeserialization(U8 channelId, I32 status) const
Log event FailFinPduDeserialization.
void addCallPort(InputCmdResponsePort *callPort)
Register an input port.
void log_ACTIVITY_LO_PollDirStopped(U8 channelId, U8 pollId) const
Log event PollDirStopped.
void lock()
lock the mutex and assert success
Definition: Mutex.cpp:34
bool isConnected_cmdResponseOut_OutputPort(FwIndexType portNum) const
void log_WARNING_LO_FailNakPduDeserialization(U8 channelId, I32 status) const
Log event FailNakPduDeserialization.
U32 FwIdType
The id type.
SerializeStatus serializeTo(SerialBufferBase &buffer, Endianness mode=Endianness::BIG) const override
Serialize the contents of this object to a buffer.
void log_WARNING_LO_FailMetadataPduDeserialization(U8 channelId, I32 status) const
Log event FailMetadataPduDeserialization.
BYTE cmdPortSize[Fw::CmdPortBuffer::CAPACITY]
Default CFDP class for fileIn port-initiated file transfers.