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