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 = 981;
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"), Fw::String("")));
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  U8 channelId,
5745  U32 srcEid,
5746  U32 seqNum,
5747  const Fw::StringBase& filename,
5748  const Fw::StringBase& rxDir,
5750  ) const
5751  {
5752  // Get the time
5753  Fw::Time _logTime;
5754  if (this->isConnected_timeCaller_OutputPort(0)) {
5755  this->timeCaller_out(0, _logTime);
5756  }
5757 
5758  const FwEventIdType _id = this->getIdBase() + EVENTID_RXDESTPATHREJECTED;
5759 
5760  // Emit the event on the log port
5761  if (this->isConnected_logOut_OutputPort(0)) {
5762  Fw::LogBuffer _logBuff;
5764 
5765 #if FW_AMPCS_COMPATIBLE
5766  // Serialize the number of arguments
5767  _status = _logBuff.serializeFrom(static_cast<U8>(6));
5768  FW_ASSERT(
5769  _status == Fw::FW_SERIALIZE_OK,
5770  static_cast<FwAssertArgType>(_status)
5771  );
5772 #endif
5773 
5774 #if FW_AMPCS_COMPATIBLE
5775  // Serialize the argument size
5776  _status = _logBuff.serializeFrom(
5777  static_cast<U8>(sizeof(U8))
5778  );
5779  FW_ASSERT(
5780  _status == Fw::FW_SERIALIZE_OK,
5781  static_cast<FwAssertArgType>(_status)
5782  );
5783 #endif
5784  _status = _logBuff.serializeFrom(channelId);
5785  FW_ASSERT(
5786  _status == Fw::FW_SERIALIZE_OK,
5787  static_cast<FwAssertArgType>(_status)
5788  );
5789 
5790 #if FW_AMPCS_COMPATIBLE
5791  // Serialize the argument size
5792  _status = _logBuff.serializeFrom(
5793  static_cast<U8>(sizeof(U32))
5794  );
5795  FW_ASSERT(
5796  _status == Fw::FW_SERIALIZE_OK,
5797  static_cast<FwAssertArgType>(_status)
5798  );
5799 #endif
5800  _status = _logBuff.serializeFrom(srcEid);
5801  FW_ASSERT(
5802  _status == Fw::FW_SERIALIZE_OK,
5803  static_cast<FwAssertArgType>(_status)
5804  );
5805 
5806 #if FW_AMPCS_COMPATIBLE
5807  // Serialize the argument size
5808  _status = _logBuff.serializeFrom(
5809  static_cast<U8>(sizeof(U32))
5810  );
5811  FW_ASSERT(
5812  _status == Fw::FW_SERIALIZE_OK,
5813  static_cast<FwAssertArgType>(_status)
5814  );
5815 #endif
5816  _status = _logBuff.serializeFrom(seqNum);
5817  FW_ASSERT(
5818  _status == Fw::FW_SERIALIZE_OK,
5819  static_cast<FwAssertArgType>(_status)
5820  );
5821 
5822  _status = filename.serializeTo(
5823  _logBuff,
5824  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
5825  );
5826  FW_ASSERT(
5827  _status == Fw::FW_SERIALIZE_OK,
5828  static_cast<FwAssertArgType>(_status)
5829  );
5830 
5831  _status = rxDir.serializeTo(
5832  _logBuff,
5833  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
5834  );
5835  FW_ASSERT(
5836  _status == Fw::FW_SERIALIZE_OK,
5837  static_cast<FwAssertArgType>(_status)
5838  );
5839 
5840 #if FW_AMPCS_COMPATIBLE
5841  // Serialize the argument size
5842  _status = _logBuff.serializeFrom(
5844  );
5845  FW_ASSERT(
5846  _status == Fw::FW_SERIALIZE_OK,
5847  static_cast<FwAssertArgType>(_status)
5848  );
5849 #endif
5850  _status = _logBuff.serializeFrom(reason);
5851  FW_ASSERT(
5852  _status == Fw::FW_SERIALIZE_OK,
5853  static_cast<FwAssertArgType>(_status)
5854  );
5855 
5856  this->logOut_out(
5857  0,
5858  _id,
5859  _logTime,
5861  _logBuff
5862  );
5863  }
5864 
5865  // Emit the event on the text log port
5866 #if FW_ENABLE_TEXT_LOGGING
5867  if (this->isConnected_logTextOut_OutputPort(0)) {
5868 #if FW_OBJECT_NAMES == 1
5869  const char* _formatString =
5870  "(%s) %s: RX transaction %" PRIu8 ":%" PRIu32 ":%" PRIu32 " rejected destination path %s for receive directory %s: %s";
5871 #else
5872  const char* _formatString =
5873  "%s: RX transaction %" PRIu8 ":%" PRIu32 ":%" PRIu32 " rejected destination path %s for receive directory %s: %s";
5874 #endif
5875 
5876  Fw::String reasonStr;
5877  reason.toString(reasonStr);
5878 
5879  Fw::TextLogString _logString;
5880  (void) _logString.format(
5881  _formatString,
5882 #if FW_OBJECT_NAMES == 1
5883  this->m_objName.toChar(),
5884 #endif
5885  "RxDestPathRejected ",
5886  channelId,
5887  srcEid,
5888  seqNum,
5889  filename.toChar(),
5890  rxDir.toChar(),
5891  reasonStr.toChar()
5892  );
5893 
5894  this->logTextOut_out(
5895  0,
5896  _id,
5897  _logTime,
5899  _logString
5900  );
5901  }
5902 #endif
5903  }
5904 
5907  const Svc::Ccsds::Cfdp::Class& cfdpClass,
5908  U32 srcEid,
5909  U32 seqNum,
5910  U32 expected,
5911  U32 actual
5912  ) const
5913  {
5914  // Get the time
5915  Fw::Time _logTime;
5916  if (this->isConnected_timeCaller_OutputPort(0)) {
5917  this->timeCaller_out(0, _logTime);
5918  }
5919 
5920  const FwEventIdType _id = this->getIdBase() + EVENTID_RXCRCMISMATCH;
5921 
5922  // Emit the event on the log port
5923  if (this->isConnected_logOut_OutputPort(0)) {
5924  Fw::LogBuffer _logBuff;
5926 
5927 #if FW_AMPCS_COMPATIBLE
5928  // Serialize the number of arguments
5929  _status = _logBuff.serializeFrom(static_cast<U8>(5));
5930  FW_ASSERT(
5931  _status == Fw::FW_SERIALIZE_OK,
5932  static_cast<FwAssertArgType>(_status)
5933  );
5934 #endif
5935 
5936 #if FW_AMPCS_COMPATIBLE
5937  // Serialize the argument size
5938  _status = _logBuff.serializeFrom(
5940  );
5941  FW_ASSERT(
5942  _status == Fw::FW_SERIALIZE_OK,
5943  static_cast<FwAssertArgType>(_status)
5944  );
5945 #endif
5946  _status = _logBuff.serializeFrom(cfdpClass);
5947  FW_ASSERT(
5948  _status == Fw::FW_SERIALIZE_OK,
5949  static_cast<FwAssertArgType>(_status)
5950  );
5951 
5952 #if FW_AMPCS_COMPATIBLE
5953  // Serialize the argument size
5954  _status = _logBuff.serializeFrom(
5955  static_cast<U8>(sizeof(U32))
5956  );
5957  FW_ASSERT(
5958  _status == Fw::FW_SERIALIZE_OK,
5959  static_cast<FwAssertArgType>(_status)
5960  );
5961 #endif
5962  _status = _logBuff.serializeFrom(srcEid);
5963  FW_ASSERT(
5964  _status == Fw::FW_SERIALIZE_OK,
5965  static_cast<FwAssertArgType>(_status)
5966  );
5967 
5968 #if FW_AMPCS_COMPATIBLE
5969  // Serialize the argument size
5970  _status = _logBuff.serializeFrom(
5971  static_cast<U8>(sizeof(U32))
5972  );
5973  FW_ASSERT(
5974  _status == Fw::FW_SERIALIZE_OK,
5975  static_cast<FwAssertArgType>(_status)
5976  );
5977 #endif
5978  _status = _logBuff.serializeFrom(seqNum);
5979  FW_ASSERT(
5980  _status == Fw::FW_SERIALIZE_OK,
5981  static_cast<FwAssertArgType>(_status)
5982  );
5983 
5984 #if FW_AMPCS_COMPATIBLE
5985  // Serialize the argument size
5986  _status = _logBuff.serializeFrom(
5987  static_cast<U8>(sizeof(U32))
5988  );
5989  FW_ASSERT(
5990  _status == Fw::FW_SERIALIZE_OK,
5991  static_cast<FwAssertArgType>(_status)
5992  );
5993 #endif
5994  _status = _logBuff.serializeFrom(expected);
5995  FW_ASSERT(
5996  _status == Fw::FW_SERIALIZE_OK,
5997  static_cast<FwAssertArgType>(_status)
5998  );
5999 
6000 #if FW_AMPCS_COMPATIBLE
6001  // Serialize the argument size
6002  _status = _logBuff.serializeFrom(
6003  static_cast<U8>(sizeof(U32))
6004  );
6005  FW_ASSERT(
6006  _status == Fw::FW_SERIALIZE_OK,
6007  static_cast<FwAssertArgType>(_status)
6008  );
6009 #endif
6010  _status = _logBuff.serializeFrom(actual);
6011  FW_ASSERT(
6012  _status == Fw::FW_SERIALIZE_OK,
6013  static_cast<FwAssertArgType>(_status)
6014  );
6015 
6016  this->logOut_out(
6017  0,
6018  _id,
6019  _logTime,
6021  _logBuff
6022  );
6023  }
6024 
6025  // Emit the event on the text log port
6026 #if FW_ENABLE_TEXT_LOGGING
6027  if (this->isConnected_logTextOut_OutputPort(0)) {
6028 #if FW_OBJECT_NAMES == 1
6029  const char* _formatString =
6030  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " CRC mismatch: expected 0x%" PRIx32 " actual 0x%" PRIx32 "";
6031 #else
6032  const char* _formatString =
6033  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " CRC mismatch: expected 0x%" PRIx32 " actual 0x%" PRIx32 "";
6034 #endif
6035 
6036  Fw::String cfdpClassStr;
6037  cfdpClass.toString(cfdpClassStr);
6038 
6039  Fw::TextLogString _logString;
6040  (void) _logString.format(
6041  _formatString,
6042 #if FW_OBJECT_NAMES == 1
6043  this->m_objName.toChar(),
6044 #endif
6045  "RxCrcMismatch ",
6046  cfdpClassStr.toChar(),
6047  srcEid,
6048  seqNum,
6049  expected,
6050  actual
6051  );
6052 
6053  this->logTextOut_out(
6054  0,
6055  _id,
6056  _logTime,
6058  _logString
6059  );
6060  }
6061 #endif
6062  }
6063 
6066  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6067  U32 srcEid,
6068  U32 seqNum
6069  ) const
6070  {
6071  // Get the time
6072  Fw::Time _logTime;
6073  if (this->isConnected_timeCaller_OutputPort(0)) {
6074  this->timeCaller_out(0, _logTime);
6075  }
6076 
6077  const FwEventIdType _id = this->getIdBase() + EVENTID_RXNAKLIMITREACHED;
6078 
6079  // Emit the event on the log port
6080  if (this->isConnected_logOut_OutputPort(0)) {
6081  Fw::LogBuffer _logBuff;
6083 
6084 #if FW_AMPCS_COMPATIBLE
6085  // Serialize the number of arguments
6086  _status = _logBuff.serializeFrom(static_cast<U8>(3));
6087  FW_ASSERT(
6088  _status == Fw::FW_SERIALIZE_OK,
6089  static_cast<FwAssertArgType>(_status)
6090  );
6091 #endif
6092 
6093 #if FW_AMPCS_COMPATIBLE
6094  // Serialize the argument size
6095  _status = _logBuff.serializeFrom(
6097  );
6098  FW_ASSERT(
6099  _status == Fw::FW_SERIALIZE_OK,
6100  static_cast<FwAssertArgType>(_status)
6101  );
6102 #endif
6103  _status = _logBuff.serializeFrom(cfdpClass);
6104  FW_ASSERT(
6105  _status == Fw::FW_SERIALIZE_OK,
6106  static_cast<FwAssertArgType>(_status)
6107  );
6108 
6109 #if FW_AMPCS_COMPATIBLE
6110  // Serialize the argument size
6111  _status = _logBuff.serializeFrom(
6112  static_cast<U8>(sizeof(U32))
6113  );
6114  FW_ASSERT(
6115  _status == Fw::FW_SERIALIZE_OK,
6116  static_cast<FwAssertArgType>(_status)
6117  );
6118 #endif
6119  _status = _logBuff.serializeFrom(srcEid);
6120  FW_ASSERT(
6121  _status == Fw::FW_SERIALIZE_OK,
6122  static_cast<FwAssertArgType>(_status)
6123  );
6124 
6125 #if FW_AMPCS_COMPATIBLE
6126  // Serialize the argument size
6127  _status = _logBuff.serializeFrom(
6128  static_cast<U8>(sizeof(U32))
6129  );
6130  FW_ASSERT(
6131  _status == Fw::FW_SERIALIZE_OK,
6132  static_cast<FwAssertArgType>(_status)
6133  );
6134 #endif
6135  _status = _logBuff.serializeFrom(seqNum);
6136  FW_ASSERT(
6137  _status == Fw::FW_SERIALIZE_OK,
6138  static_cast<FwAssertArgType>(_status)
6139  );
6140 
6141  this->logOut_out(
6142  0,
6143  _id,
6144  _logTime,
6146  _logBuff
6147  );
6148  }
6149 
6150  // Emit the event on the text log port
6151 #if FW_ENABLE_TEXT_LOGGING
6152  if (this->isConnected_logTextOut_OutputPort(0)) {
6153 #if FW_OBJECT_NAMES == 1
6154  const char* _formatString =
6155  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " NAK limit reached";
6156 #else
6157  const char* _formatString =
6158  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " NAK limit reached";
6159 #endif
6160 
6161  Fw::String cfdpClassStr;
6162  cfdpClass.toString(cfdpClassStr);
6163 
6164  Fw::TextLogString _logString;
6165  (void) _logString.format(
6166  _formatString,
6167 #if FW_OBJECT_NAMES == 1
6168  this->m_objName.toChar(),
6169 #endif
6170  "RxNakLimitReached ",
6171  cfdpClassStr.toChar(),
6172  srcEid,
6173  seqNum
6174  );
6175 
6176  this->logTextOut_out(
6177  0,
6178  _id,
6179  _logTime,
6181  _logString
6182  );
6183  }
6184 #endif
6185  }
6186 
6189  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6190  U32 srcEid,
6191  U32 seqNum,
6192  U32 offset,
6193  I32 status
6194  ) const
6195  {
6196  // Get the time
6197  Fw::Time _logTime;
6198  if (this->isConnected_timeCaller_OutputPort(0)) {
6199  this->timeCaller_out(0, _logTime);
6200  }
6201 
6202  const FwEventIdType _id = this->getIdBase() + EVENTID_RXSEEKFAILED;
6203 
6204  // Emit the event on the log port
6205  if (this->isConnected_logOut_OutputPort(0)) {
6206  Fw::LogBuffer _logBuff;
6208 
6209 #if FW_AMPCS_COMPATIBLE
6210  // Serialize the number of arguments
6211  _status = _logBuff.serializeFrom(static_cast<U8>(5));
6212  FW_ASSERT(
6213  _status == Fw::FW_SERIALIZE_OK,
6214  static_cast<FwAssertArgType>(_status)
6215  );
6216 #endif
6217 
6218 #if FW_AMPCS_COMPATIBLE
6219  // Serialize the argument size
6220  _status = _logBuff.serializeFrom(
6222  );
6223  FW_ASSERT(
6224  _status == Fw::FW_SERIALIZE_OK,
6225  static_cast<FwAssertArgType>(_status)
6226  );
6227 #endif
6228  _status = _logBuff.serializeFrom(cfdpClass);
6229  FW_ASSERT(
6230  _status == Fw::FW_SERIALIZE_OK,
6231  static_cast<FwAssertArgType>(_status)
6232  );
6233 
6234 #if FW_AMPCS_COMPATIBLE
6235  // Serialize the argument size
6236  _status = _logBuff.serializeFrom(
6237  static_cast<U8>(sizeof(U32))
6238  );
6239  FW_ASSERT(
6240  _status == Fw::FW_SERIALIZE_OK,
6241  static_cast<FwAssertArgType>(_status)
6242  );
6243 #endif
6244  _status = _logBuff.serializeFrom(srcEid);
6245  FW_ASSERT(
6246  _status == Fw::FW_SERIALIZE_OK,
6247  static_cast<FwAssertArgType>(_status)
6248  );
6249 
6250 #if FW_AMPCS_COMPATIBLE
6251  // Serialize the argument size
6252  _status = _logBuff.serializeFrom(
6253  static_cast<U8>(sizeof(U32))
6254  );
6255  FW_ASSERT(
6256  _status == Fw::FW_SERIALIZE_OK,
6257  static_cast<FwAssertArgType>(_status)
6258  );
6259 #endif
6260  _status = _logBuff.serializeFrom(seqNum);
6261  FW_ASSERT(
6262  _status == Fw::FW_SERIALIZE_OK,
6263  static_cast<FwAssertArgType>(_status)
6264  );
6265 
6266 #if FW_AMPCS_COMPATIBLE
6267  // Serialize the argument size
6268  _status = _logBuff.serializeFrom(
6269  static_cast<U8>(sizeof(U32))
6270  );
6271  FW_ASSERT(
6272  _status == Fw::FW_SERIALIZE_OK,
6273  static_cast<FwAssertArgType>(_status)
6274  );
6275 #endif
6276  _status = _logBuff.serializeFrom(offset);
6277  FW_ASSERT(
6278  _status == Fw::FW_SERIALIZE_OK,
6279  static_cast<FwAssertArgType>(_status)
6280  );
6281 
6282 #if FW_AMPCS_COMPATIBLE
6283  // Serialize the argument size
6284  _status = _logBuff.serializeFrom(
6285  static_cast<U8>(sizeof(I32))
6286  );
6287  FW_ASSERT(
6288  _status == Fw::FW_SERIALIZE_OK,
6289  static_cast<FwAssertArgType>(_status)
6290  );
6291 #endif
6292  _status = _logBuff.serializeFrom(status);
6293  FW_ASSERT(
6294  _status == Fw::FW_SERIALIZE_OK,
6295  static_cast<FwAssertArgType>(_status)
6296  );
6297 
6298  this->logOut_out(
6299  0,
6300  _id,
6301  _logTime,
6303  _logBuff
6304  );
6305  }
6306 
6307  // Emit the event on the text log port
6308 #if FW_ENABLE_TEXT_LOGGING
6309  if (this->isConnected_logTextOut_OutputPort(0)) {
6310 #if FW_OBJECT_NAMES == 1
6311  const char* _formatString =
6312  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek to offset %" PRIu32 ", error=%" PRIi32 "";
6313 #else
6314  const char* _formatString =
6315  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek to offset %" PRIu32 ", error=%" PRIi32 "";
6316 #endif
6317 
6318  Fw::String cfdpClassStr;
6319  cfdpClass.toString(cfdpClassStr);
6320 
6321  Fw::TextLogString _logString;
6322  (void) _logString.format(
6323  _formatString,
6324 #if FW_OBJECT_NAMES == 1
6325  this->m_objName.toChar(),
6326 #endif
6327  "RxSeekFailed ",
6328  cfdpClassStr.toChar(),
6329  srcEid,
6330  seqNum,
6331  offset,
6332  status
6333  );
6334 
6335  this->logTextOut_out(
6336  0,
6337  _id,
6338  _logTime,
6340  _logString
6341  );
6342  }
6343 #endif
6344  }
6345 
6348  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6349  U32 srcEid,
6350  U32 seqNum,
6351  U32 expected,
6352  I32 actual
6353  ) const
6354  {
6355  // Get the time
6356  Fw::Time _logTime;
6357  if (this->isConnected_timeCaller_OutputPort(0)) {
6358  this->timeCaller_out(0, _logTime);
6359  }
6360 
6361  const FwEventIdType _id = this->getIdBase() + EVENTID_RXWRITEFAILED;
6362 
6363  // Emit the event on the log port
6364  if (this->isConnected_logOut_OutputPort(0)) {
6365  Fw::LogBuffer _logBuff;
6367 
6368 #if FW_AMPCS_COMPATIBLE
6369  // Serialize the number of arguments
6370  _status = _logBuff.serializeFrom(static_cast<U8>(5));
6371  FW_ASSERT(
6372  _status == Fw::FW_SERIALIZE_OK,
6373  static_cast<FwAssertArgType>(_status)
6374  );
6375 #endif
6376 
6377 #if FW_AMPCS_COMPATIBLE
6378  // Serialize the argument size
6379  _status = _logBuff.serializeFrom(
6381  );
6382  FW_ASSERT(
6383  _status == Fw::FW_SERIALIZE_OK,
6384  static_cast<FwAssertArgType>(_status)
6385  );
6386 #endif
6387  _status = _logBuff.serializeFrom(cfdpClass);
6388  FW_ASSERT(
6389  _status == Fw::FW_SERIALIZE_OK,
6390  static_cast<FwAssertArgType>(_status)
6391  );
6392 
6393 #if FW_AMPCS_COMPATIBLE
6394  // Serialize the argument size
6395  _status = _logBuff.serializeFrom(
6396  static_cast<U8>(sizeof(U32))
6397  );
6398  FW_ASSERT(
6399  _status == Fw::FW_SERIALIZE_OK,
6400  static_cast<FwAssertArgType>(_status)
6401  );
6402 #endif
6403  _status = _logBuff.serializeFrom(srcEid);
6404  FW_ASSERT(
6405  _status == Fw::FW_SERIALIZE_OK,
6406  static_cast<FwAssertArgType>(_status)
6407  );
6408 
6409 #if FW_AMPCS_COMPATIBLE
6410  // Serialize the argument size
6411  _status = _logBuff.serializeFrom(
6412  static_cast<U8>(sizeof(U32))
6413  );
6414  FW_ASSERT(
6415  _status == Fw::FW_SERIALIZE_OK,
6416  static_cast<FwAssertArgType>(_status)
6417  );
6418 #endif
6419  _status = _logBuff.serializeFrom(seqNum);
6420  FW_ASSERT(
6421  _status == Fw::FW_SERIALIZE_OK,
6422  static_cast<FwAssertArgType>(_status)
6423  );
6424 
6425 #if FW_AMPCS_COMPATIBLE
6426  // Serialize the argument size
6427  _status = _logBuff.serializeFrom(
6428  static_cast<U8>(sizeof(U32))
6429  );
6430  FW_ASSERT(
6431  _status == Fw::FW_SERIALIZE_OK,
6432  static_cast<FwAssertArgType>(_status)
6433  );
6434 #endif
6435  _status = _logBuff.serializeFrom(expected);
6436  FW_ASSERT(
6437  _status == Fw::FW_SERIALIZE_OK,
6438  static_cast<FwAssertArgType>(_status)
6439  );
6440 
6441 #if FW_AMPCS_COMPATIBLE
6442  // Serialize the argument size
6443  _status = _logBuff.serializeFrom(
6444  static_cast<U8>(sizeof(I32))
6445  );
6446  FW_ASSERT(
6447  _status == Fw::FW_SERIALIZE_OK,
6448  static_cast<FwAssertArgType>(_status)
6449  );
6450 #endif
6451  _status = _logBuff.serializeFrom(actual);
6452  FW_ASSERT(
6453  _status == Fw::FW_SERIALIZE_OK,
6454  static_cast<FwAssertArgType>(_status)
6455  );
6456 
6457  this->logOut_out(
6458  0,
6459  _id,
6460  _logTime,
6462  _logBuff
6463  );
6464  }
6465 
6466  // Emit the event on the text log port
6467 #if FW_ENABLE_TEXT_LOGGING
6468  if (this->isConnected_logTextOut_OutputPort(0)) {
6469 #if FW_OBJECT_NAMES == 1
6470  const char* _formatString =
6471  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " write failed: expected %" PRIu32 " bytes, got %" PRIi32 "";
6472 #else
6473  const char* _formatString =
6474  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " write failed: expected %" PRIu32 " bytes, got %" PRIi32 "";
6475 #endif
6476 
6477  Fw::String cfdpClassStr;
6478  cfdpClass.toString(cfdpClassStr);
6479 
6480  Fw::TextLogString _logString;
6481  (void) _logString.format(
6482  _formatString,
6483 #if FW_OBJECT_NAMES == 1
6484  this->m_objName.toChar(),
6485 #endif
6486  "RxWriteFailed ",
6487  cfdpClassStr.toChar(),
6488  srcEid,
6489  seqNum,
6490  expected,
6491  actual
6492  );
6493 
6494  this->logTextOut_out(
6495  0,
6496  _id,
6497  _logTime,
6499  _logString
6500  );
6501  }
6502 #endif
6503  }
6504 
6507  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6508  U32 srcEid,
6509  U32 seqNum,
6510  U32 offset,
6511  U32 dataSize,
6512  U32 fileSize
6513  ) const
6514  {
6515  // Get the time
6516  Fw::Time _logTime;
6517  if (this->isConnected_timeCaller_OutputPort(0)) {
6518  this->timeCaller_out(0, _logTime);
6519  }
6520 
6522 
6523  // Emit the event on the log port
6524  if (this->isConnected_logOut_OutputPort(0)) {
6525  Fw::LogBuffer _logBuff;
6527 
6528 #if FW_AMPCS_COMPATIBLE
6529  // Serialize the number of arguments
6530  _status = _logBuff.serializeFrom(static_cast<U8>(6));
6531  FW_ASSERT(
6532  _status == Fw::FW_SERIALIZE_OK,
6533  static_cast<FwAssertArgType>(_status)
6534  );
6535 #endif
6536 
6537 #if FW_AMPCS_COMPATIBLE
6538  // Serialize the argument size
6539  _status = _logBuff.serializeFrom(
6541  );
6542  FW_ASSERT(
6543  _status == Fw::FW_SERIALIZE_OK,
6544  static_cast<FwAssertArgType>(_status)
6545  );
6546 #endif
6547  _status = _logBuff.serializeFrom(cfdpClass);
6548  FW_ASSERT(
6549  _status == Fw::FW_SERIALIZE_OK,
6550  static_cast<FwAssertArgType>(_status)
6551  );
6552 
6553 #if FW_AMPCS_COMPATIBLE
6554  // Serialize the argument size
6555  _status = _logBuff.serializeFrom(
6556  static_cast<U8>(sizeof(U32))
6557  );
6558  FW_ASSERT(
6559  _status == Fw::FW_SERIALIZE_OK,
6560  static_cast<FwAssertArgType>(_status)
6561  );
6562 #endif
6563  _status = _logBuff.serializeFrom(srcEid);
6564  FW_ASSERT(
6565  _status == Fw::FW_SERIALIZE_OK,
6566  static_cast<FwAssertArgType>(_status)
6567  );
6568 
6569 #if FW_AMPCS_COMPATIBLE
6570  // Serialize the argument size
6571  _status = _logBuff.serializeFrom(
6572  static_cast<U8>(sizeof(U32))
6573  );
6574  FW_ASSERT(
6575  _status == Fw::FW_SERIALIZE_OK,
6576  static_cast<FwAssertArgType>(_status)
6577  );
6578 #endif
6579  _status = _logBuff.serializeFrom(seqNum);
6580  FW_ASSERT(
6581  _status == Fw::FW_SERIALIZE_OK,
6582  static_cast<FwAssertArgType>(_status)
6583  );
6584 
6585 #if FW_AMPCS_COMPATIBLE
6586  // Serialize the argument size
6587  _status = _logBuff.serializeFrom(
6588  static_cast<U8>(sizeof(U32))
6589  );
6590  FW_ASSERT(
6591  _status == Fw::FW_SERIALIZE_OK,
6592  static_cast<FwAssertArgType>(_status)
6593  );
6594 #endif
6595  _status = _logBuff.serializeFrom(offset);
6596  FW_ASSERT(
6597  _status == Fw::FW_SERIALIZE_OK,
6598  static_cast<FwAssertArgType>(_status)
6599  );
6600 
6601 #if FW_AMPCS_COMPATIBLE
6602  // Serialize the argument size
6603  _status = _logBuff.serializeFrom(
6604  static_cast<U8>(sizeof(U32))
6605  );
6606  FW_ASSERT(
6607  _status == Fw::FW_SERIALIZE_OK,
6608  static_cast<FwAssertArgType>(_status)
6609  );
6610 #endif
6611  _status = _logBuff.serializeFrom(dataSize);
6612  FW_ASSERT(
6613  _status == Fw::FW_SERIALIZE_OK,
6614  static_cast<FwAssertArgType>(_status)
6615  );
6616 
6617 #if FW_AMPCS_COMPATIBLE
6618  // Serialize the argument size
6619  _status = _logBuff.serializeFrom(
6620  static_cast<U8>(sizeof(U32))
6621  );
6622  FW_ASSERT(
6623  _status == Fw::FW_SERIALIZE_OK,
6624  static_cast<FwAssertArgType>(_status)
6625  );
6626 #endif
6627  _status = _logBuff.serializeFrom(fileSize);
6628  FW_ASSERT(
6629  _status == Fw::FW_SERIALIZE_OK,
6630  static_cast<FwAssertArgType>(_status)
6631  );
6632 
6633  this->logOut_out(
6634  0,
6635  _id,
6636  _logTime,
6638  _logBuff
6639  );
6640  }
6641 
6642  // Emit the event on the text log port
6643 #if FW_ENABLE_TEXT_LOGGING
6644  if (this->isConnected_logTextOut_OutputPort(0)) {
6645 #if FW_OBJECT_NAMES == 1
6646  const char* _formatString =
6647  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " file data [%" PRIu32 ", +%" PRIu32 "] exceeds file size bound %" PRIu32 ", PDU rejected";
6648 #else
6649  const char* _formatString =
6650  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " file data [%" PRIu32 ", +%" PRIu32 "] exceeds file size bound %" PRIu32 ", PDU rejected";
6651 #endif
6652 
6653  Fw::String cfdpClassStr;
6654  cfdpClass.toString(cfdpClassStr);
6655 
6656  Fw::TextLogString _logString;
6657  (void) _logString.format(
6658  _formatString,
6659 #if FW_OBJECT_NAMES == 1
6660  this->m_objName.toChar(),
6661 #endif
6662  "RxFileDataOutOfBounds ",
6663  cfdpClassStr.toChar(),
6664  srcEid,
6665  seqNum,
6666  offset,
6667  dataSize,
6668  fileSize
6669  );
6670 
6671  this->logTextOut_out(
6672  0,
6673  _id,
6674  _logTime,
6676  _logString
6677  );
6678  }
6679 #endif
6680  }
6681 
6684  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6685  U32 srcEid,
6686  U32 seqNum,
6687  U32 expected,
6688  U32 actual
6689  ) const
6690  {
6691  // Get the time
6692  Fw::Time _logTime;
6693  if (this->isConnected_timeCaller_OutputPort(0)) {
6694  this->timeCaller_out(0, _logTime);
6695  }
6696 
6697  const FwEventIdType _id = this->getIdBase() + EVENTID_RXFILESIZEMISMATCH;
6698 
6699  // Emit the event on the log port
6700  if (this->isConnected_logOut_OutputPort(0)) {
6701  Fw::LogBuffer _logBuff;
6703 
6704 #if FW_AMPCS_COMPATIBLE
6705  // Serialize the number of arguments
6706  _status = _logBuff.serializeFrom(static_cast<U8>(5));
6707  FW_ASSERT(
6708  _status == Fw::FW_SERIALIZE_OK,
6709  static_cast<FwAssertArgType>(_status)
6710  );
6711 #endif
6712 
6713 #if FW_AMPCS_COMPATIBLE
6714  // Serialize the argument size
6715  _status = _logBuff.serializeFrom(
6717  );
6718  FW_ASSERT(
6719  _status == Fw::FW_SERIALIZE_OK,
6720  static_cast<FwAssertArgType>(_status)
6721  );
6722 #endif
6723  _status = _logBuff.serializeFrom(cfdpClass);
6724  FW_ASSERT(
6725  _status == Fw::FW_SERIALIZE_OK,
6726  static_cast<FwAssertArgType>(_status)
6727  );
6728 
6729 #if FW_AMPCS_COMPATIBLE
6730  // Serialize the argument size
6731  _status = _logBuff.serializeFrom(
6732  static_cast<U8>(sizeof(U32))
6733  );
6734  FW_ASSERT(
6735  _status == Fw::FW_SERIALIZE_OK,
6736  static_cast<FwAssertArgType>(_status)
6737  );
6738 #endif
6739  _status = _logBuff.serializeFrom(srcEid);
6740  FW_ASSERT(
6741  _status == Fw::FW_SERIALIZE_OK,
6742  static_cast<FwAssertArgType>(_status)
6743  );
6744 
6745 #if FW_AMPCS_COMPATIBLE
6746  // Serialize the argument size
6747  _status = _logBuff.serializeFrom(
6748  static_cast<U8>(sizeof(U32))
6749  );
6750  FW_ASSERT(
6751  _status == Fw::FW_SERIALIZE_OK,
6752  static_cast<FwAssertArgType>(_status)
6753  );
6754 #endif
6755  _status = _logBuff.serializeFrom(seqNum);
6756  FW_ASSERT(
6757  _status == Fw::FW_SERIALIZE_OK,
6758  static_cast<FwAssertArgType>(_status)
6759  );
6760 
6761 #if FW_AMPCS_COMPATIBLE
6762  // Serialize the argument size
6763  _status = _logBuff.serializeFrom(
6764  static_cast<U8>(sizeof(U32))
6765  );
6766  FW_ASSERT(
6767  _status == Fw::FW_SERIALIZE_OK,
6768  static_cast<FwAssertArgType>(_status)
6769  );
6770 #endif
6771  _status = _logBuff.serializeFrom(expected);
6772  FW_ASSERT(
6773  _status == Fw::FW_SERIALIZE_OK,
6774  static_cast<FwAssertArgType>(_status)
6775  );
6776 
6777 #if FW_AMPCS_COMPATIBLE
6778  // Serialize the argument size
6779  _status = _logBuff.serializeFrom(
6780  static_cast<U8>(sizeof(U32))
6781  );
6782  FW_ASSERT(
6783  _status == Fw::FW_SERIALIZE_OK,
6784  static_cast<FwAssertArgType>(_status)
6785  );
6786 #endif
6787  _status = _logBuff.serializeFrom(actual);
6788  FW_ASSERT(
6789  _status == Fw::FW_SERIALIZE_OK,
6790  static_cast<FwAssertArgType>(_status)
6791  );
6792 
6793  this->logOut_out(
6794  0,
6795  _id,
6796  _logTime,
6798  _logBuff
6799  );
6800  }
6801 
6802  // Emit the event on the text log port
6803 #if FW_ENABLE_TEXT_LOGGING
6804  if (this->isConnected_logTextOut_OutputPort(0)) {
6805 #if FW_OBJECT_NAMES == 1
6806  const char* _formatString =
6807  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " EOF file size mismatch: expected %" PRIu32 " got %" PRIu32 "";
6808 #else
6809  const char* _formatString =
6810  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " EOF file size mismatch: expected %" PRIu32 " got %" PRIu32 "";
6811 #endif
6812 
6813  Fw::String cfdpClassStr;
6814  cfdpClass.toString(cfdpClassStr);
6815 
6816  Fw::TextLogString _logString;
6817  (void) _logString.format(
6818  _formatString,
6819 #if FW_OBJECT_NAMES == 1
6820  this->m_objName.toChar(),
6821 #endif
6822  "RxFileSizeMismatch ",
6823  cfdpClassStr.toChar(),
6824  srcEid,
6825  seqNum,
6826  expected,
6827  actual
6828  );
6829 
6830  this->logTextOut_out(
6831  0,
6832  _id,
6833  _logTime,
6835  _logString
6836  );
6837  }
6838 #endif
6839  }
6840 
6843  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6844  U32 srcEid,
6845  U32 seqNum
6846  ) const
6847  {
6848  // Get the time
6849  Fw::Time _logTime;
6850  if (this->isConnected_timeCaller_OutputPort(0)) {
6851  this->timeCaller_out(0, _logTime);
6852  }
6853 
6854  const FwEventIdType _id = this->getIdBase() + EVENTID_RXEOFCANCELRECEIVED;
6855 
6856  // Emit the event on the log port
6857  if (this->isConnected_logOut_OutputPort(0)) {
6858  Fw::LogBuffer _logBuff;
6860 
6861 #if FW_AMPCS_COMPATIBLE
6862  // Serialize the number of arguments
6863  _status = _logBuff.serializeFrom(static_cast<U8>(3));
6864  FW_ASSERT(
6865  _status == Fw::FW_SERIALIZE_OK,
6866  static_cast<FwAssertArgType>(_status)
6867  );
6868 #endif
6869 
6870 #if FW_AMPCS_COMPATIBLE
6871  // Serialize the argument size
6872  _status = _logBuff.serializeFrom(
6874  );
6875  FW_ASSERT(
6876  _status == Fw::FW_SERIALIZE_OK,
6877  static_cast<FwAssertArgType>(_status)
6878  );
6879 #endif
6880  _status = _logBuff.serializeFrom(cfdpClass);
6881  FW_ASSERT(
6882  _status == Fw::FW_SERIALIZE_OK,
6883  static_cast<FwAssertArgType>(_status)
6884  );
6885 
6886 #if FW_AMPCS_COMPATIBLE
6887  // Serialize the argument size
6888  _status = _logBuff.serializeFrom(
6889  static_cast<U8>(sizeof(U32))
6890  );
6891  FW_ASSERT(
6892  _status == Fw::FW_SERIALIZE_OK,
6893  static_cast<FwAssertArgType>(_status)
6894  );
6895 #endif
6896  _status = _logBuff.serializeFrom(srcEid);
6897  FW_ASSERT(
6898  _status == Fw::FW_SERIALIZE_OK,
6899  static_cast<FwAssertArgType>(_status)
6900  );
6901 
6902 #if FW_AMPCS_COMPATIBLE
6903  // Serialize the argument size
6904  _status = _logBuff.serializeFrom(
6905  static_cast<U8>(sizeof(U32))
6906  );
6907  FW_ASSERT(
6908  _status == Fw::FW_SERIALIZE_OK,
6909  static_cast<FwAssertArgType>(_status)
6910  );
6911 #endif
6912  _status = _logBuff.serializeFrom(seqNum);
6913  FW_ASSERT(
6914  _status == Fw::FW_SERIALIZE_OK,
6915  static_cast<FwAssertArgType>(_status)
6916  );
6917 
6918  this->logOut_out(
6919  0,
6920  _id,
6921  _logTime,
6923  _logBuff
6924  );
6925  }
6926 
6927  // Emit the event on the text log port
6928 #if FW_ENABLE_TEXT_LOGGING
6929  if (this->isConnected_logTextOut_OutputPort(0)) {
6930 #if FW_OBJECT_NAMES == 1
6931  const char* _formatString =
6932  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " cancelled by sender";
6933 #else
6934  const char* _formatString =
6935  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " cancelled by sender";
6936 #endif
6937 
6938  Fw::String cfdpClassStr;
6939  cfdpClass.toString(cfdpClassStr);
6940 
6941  Fw::TextLogString _logString;
6942  (void) _logString.format(
6943  _formatString,
6944 #if FW_OBJECT_NAMES == 1
6945  this->m_objName.toChar(),
6946 #endif
6947  "RxEofCancelReceived ",
6948  cfdpClassStr.toChar(),
6949  srcEid,
6950  seqNum
6951  );
6952 
6953  this->logTextOut_out(
6954  0,
6955  _id,
6956  _logTime,
6958  _logString
6959  );
6960  }
6961 #endif
6962  }
6963 
6966  const Svc::Ccsds::Cfdp::Class& cfdpClass,
6967  U32 srcEid,
6968  U32 seqNum,
6969  U8 conditionCode
6970  ) const
6971  {
6972  // Get the time
6973  Fw::Time _logTime;
6974  if (this->isConnected_timeCaller_OutputPort(0)) {
6975  this->timeCaller_out(0, _logTime);
6976  }
6977 
6978  const FwEventIdType _id = this->getIdBase() + EVENTID_RXEOFWITHERROR;
6979 
6980  // Emit the event on the log port
6981  if (this->isConnected_logOut_OutputPort(0)) {
6982  Fw::LogBuffer _logBuff;
6984 
6985 #if FW_AMPCS_COMPATIBLE
6986  // Serialize the number of arguments
6987  _status = _logBuff.serializeFrom(static_cast<U8>(4));
6988  FW_ASSERT(
6989  _status == Fw::FW_SERIALIZE_OK,
6990  static_cast<FwAssertArgType>(_status)
6991  );
6992 #endif
6993 
6994 #if FW_AMPCS_COMPATIBLE
6995  // Serialize the argument size
6996  _status = _logBuff.serializeFrom(
6998  );
6999  FW_ASSERT(
7000  _status == Fw::FW_SERIALIZE_OK,
7001  static_cast<FwAssertArgType>(_status)
7002  );
7003 #endif
7004  _status = _logBuff.serializeFrom(cfdpClass);
7005  FW_ASSERT(
7006  _status == Fw::FW_SERIALIZE_OK,
7007  static_cast<FwAssertArgType>(_status)
7008  );
7009 
7010 #if FW_AMPCS_COMPATIBLE
7011  // Serialize the argument size
7012  _status = _logBuff.serializeFrom(
7013  static_cast<U8>(sizeof(U32))
7014  );
7015  FW_ASSERT(
7016  _status == Fw::FW_SERIALIZE_OK,
7017  static_cast<FwAssertArgType>(_status)
7018  );
7019 #endif
7020  _status = _logBuff.serializeFrom(srcEid);
7021  FW_ASSERT(
7022  _status == Fw::FW_SERIALIZE_OK,
7023  static_cast<FwAssertArgType>(_status)
7024  );
7025 
7026 #if FW_AMPCS_COMPATIBLE
7027  // Serialize the argument size
7028  _status = _logBuff.serializeFrom(
7029  static_cast<U8>(sizeof(U32))
7030  );
7031  FW_ASSERT(
7032  _status == Fw::FW_SERIALIZE_OK,
7033  static_cast<FwAssertArgType>(_status)
7034  );
7035 #endif
7036  _status = _logBuff.serializeFrom(seqNum);
7037  FW_ASSERT(
7038  _status == Fw::FW_SERIALIZE_OK,
7039  static_cast<FwAssertArgType>(_status)
7040  );
7041 
7042 #if FW_AMPCS_COMPATIBLE
7043  // Serialize the argument size
7044  _status = _logBuff.serializeFrom(
7045  static_cast<U8>(sizeof(U8))
7046  );
7047  FW_ASSERT(
7048  _status == Fw::FW_SERIALIZE_OK,
7049  static_cast<FwAssertArgType>(_status)
7050  );
7051 #endif
7052  _status = _logBuff.serializeFrom(conditionCode);
7053  FW_ASSERT(
7054  _status == Fw::FW_SERIALIZE_OK,
7055  static_cast<FwAssertArgType>(_status)
7056  );
7057 
7058  this->logOut_out(
7059  0,
7060  _id,
7061  _logTime,
7063  _logBuff
7064  );
7065  }
7066 
7067  // Emit the event on the text log port
7068 #if FW_ENABLE_TEXT_LOGGING
7069  if (this->isConnected_logTextOut_OutputPort(0)) {
7070 #if FW_OBJECT_NAMES == 1
7071  const char* _formatString =
7072  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " received EOF with error condition code %" PRIu8 "";
7073 #else
7074  const char* _formatString =
7075  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " received EOF with error condition code %" PRIu8 "";
7076 #endif
7077 
7078  Fw::String cfdpClassStr;
7079  cfdpClass.toString(cfdpClassStr);
7080 
7081  Fw::TextLogString _logString;
7082  (void) _logString.format(
7083  _formatString,
7084 #if FW_OBJECT_NAMES == 1
7085  this->m_objName.toChar(),
7086 #endif
7087  "RxEofWithError ",
7088  cfdpClassStr.toChar(),
7089  srcEid,
7090  seqNum,
7091  conditionCode
7092  );
7093 
7094  this->logTextOut_out(
7095  0,
7096  _id,
7097  _logTime,
7099  _logString
7100  );
7101  }
7102 #endif
7103  }
7104 
7107  const Svc::Ccsds::Cfdp::Class& cfdpClass,
7108  U32 srcEid,
7109  U32 seqNum,
7110  U32 offset,
7111  I32 status
7112  ) const
7113  {
7114  // Get the time
7115  Fw::Time _logTime;
7116  if (this->isConnected_timeCaller_OutputPort(0)) {
7117  this->timeCaller_out(0, _logTime);
7118  }
7119 
7120  const FwEventIdType _id = this->getIdBase() + EVENTID_RXSEEKCRCFAILED;
7121 
7122  // Emit the event on the log port
7123  if (this->isConnected_logOut_OutputPort(0)) {
7124  Fw::LogBuffer _logBuff;
7126 
7127 #if FW_AMPCS_COMPATIBLE
7128  // Serialize the number of arguments
7129  _status = _logBuff.serializeFrom(static_cast<U8>(5));
7130  FW_ASSERT(
7131  _status == Fw::FW_SERIALIZE_OK,
7132  static_cast<FwAssertArgType>(_status)
7133  );
7134 #endif
7135 
7136 #if FW_AMPCS_COMPATIBLE
7137  // Serialize the argument size
7138  _status = _logBuff.serializeFrom(
7140  );
7141  FW_ASSERT(
7142  _status == Fw::FW_SERIALIZE_OK,
7143  static_cast<FwAssertArgType>(_status)
7144  );
7145 #endif
7146  _status = _logBuff.serializeFrom(cfdpClass);
7147  FW_ASSERT(
7148  _status == Fw::FW_SERIALIZE_OK,
7149  static_cast<FwAssertArgType>(_status)
7150  );
7151 
7152 #if FW_AMPCS_COMPATIBLE
7153  // Serialize the argument size
7154  _status = _logBuff.serializeFrom(
7155  static_cast<U8>(sizeof(U32))
7156  );
7157  FW_ASSERT(
7158  _status == Fw::FW_SERIALIZE_OK,
7159  static_cast<FwAssertArgType>(_status)
7160  );
7161 #endif
7162  _status = _logBuff.serializeFrom(srcEid);
7163  FW_ASSERT(
7164  _status == Fw::FW_SERIALIZE_OK,
7165  static_cast<FwAssertArgType>(_status)
7166  );
7167 
7168 #if FW_AMPCS_COMPATIBLE
7169  // Serialize the argument size
7170  _status = _logBuff.serializeFrom(
7171  static_cast<U8>(sizeof(U32))
7172  );
7173  FW_ASSERT(
7174  _status == Fw::FW_SERIALIZE_OK,
7175  static_cast<FwAssertArgType>(_status)
7176  );
7177 #endif
7178  _status = _logBuff.serializeFrom(seqNum);
7179  FW_ASSERT(
7180  _status == Fw::FW_SERIALIZE_OK,
7181  static_cast<FwAssertArgType>(_status)
7182  );
7183 
7184 #if FW_AMPCS_COMPATIBLE
7185  // Serialize the argument size
7186  _status = _logBuff.serializeFrom(
7187  static_cast<U8>(sizeof(U32))
7188  );
7189  FW_ASSERT(
7190  _status == Fw::FW_SERIALIZE_OK,
7191  static_cast<FwAssertArgType>(_status)
7192  );
7193 #endif
7194  _status = _logBuff.serializeFrom(offset);
7195  FW_ASSERT(
7196  _status == Fw::FW_SERIALIZE_OK,
7197  static_cast<FwAssertArgType>(_status)
7198  );
7199 
7200 #if FW_AMPCS_COMPATIBLE
7201  // Serialize the argument size
7202  _status = _logBuff.serializeFrom(
7203  static_cast<U8>(sizeof(I32))
7204  );
7205  FW_ASSERT(
7206  _status == Fw::FW_SERIALIZE_OK,
7207  static_cast<FwAssertArgType>(_status)
7208  );
7209 #endif
7210  _status = _logBuff.serializeFrom(status);
7211  FW_ASSERT(
7212  _status == Fw::FW_SERIALIZE_OK,
7213  static_cast<FwAssertArgType>(_status)
7214  );
7215 
7216  this->logOut_out(
7217  0,
7218  _id,
7219  _logTime,
7221  _logBuff
7222  );
7223  }
7224 
7225  // Emit the event on the text log port
7226 #if FW_ENABLE_TEXT_LOGGING
7227  if (this->isConnected_logTextOut_OutputPort(0)) {
7228 #if FW_OBJECT_NAMES == 1
7229  const char* _formatString =
7230  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek offset %" PRIu32 " during CRC calculation, error=%" PRIi32 "";
7231 #else
7232  const char* _formatString =
7233  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek offset %" PRIu32 " during CRC calculation, error=%" PRIi32 "";
7234 #endif
7235 
7236  Fw::String cfdpClassStr;
7237  cfdpClass.toString(cfdpClassStr);
7238 
7239  Fw::TextLogString _logString;
7240  (void) _logString.format(
7241  _formatString,
7242 #if FW_OBJECT_NAMES == 1
7243  this->m_objName.toChar(),
7244 #endif
7245  "RxSeekCrcFailed ",
7246  cfdpClassStr.toChar(),
7247  srcEid,
7248  seqNum,
7249  offset,
7250  status
7251  );
7252 
7253  this->logTextOut_out(
7254  0,
7255  _id,
7256  _logTime,
7258  _logString
7259  );
7260  }
7261 #endif
7262  }
7263 
7266  const Svc::Ccsds::Cfdp::Class& cfdpClass,
7267  U32 srcEid,
7268  U32 seqNum,
7269  U32 expected,
7270  I32 actual
7271  ) const
7272  {
7273  // Get the time
7274  Fw::Time _logTime;
7275  if (this->isConnected_timeCaller_OutputPort(0)) {
7276  this->timeCaller_out(0, _logTime);
7277  }
7278 
7279  const FwEventIdType _id = this->getIdBase() + EVENTID_RXREADCRCFAILED;
7280 
7281  // Emit the event on the log port
7282  if (this->isConnected_logOut_OutputPort(0)) {
7283  Fw::LogBuffer _logBuff;
7285 
7286 #if FW_AMPCS_COMPATIBLE
7287  // Serialize the number of arguments
7288  _status = _logBuff.serializeFrom(static_cast<U8>(5));
7289  FW_ASSERT(
7290  _status == Fw::FW_SERIALIZE_OK,
7291  static_cast<FwAssertArgType>(_status)
7292  );
7293 #endif
7294 
7295 #if FW_AMPCS_COMPATIBLE
7296  // Serialize the argument size
7297  _status = _logBuff.serializeFrom(
7299  );
7300  FW_ASSERT(
7301  _status == Fw::FW_SERIALIZE_OK,
7302  static_cast<FwAssertArgType>(_status)
7303  );
7304 #endif
7305  _status = _logBuff.serializeFrom(cfdpClass);
7306  FW_ASSERT(
7307  _status == Fw::FW_SERIALIZE_OK,
7308  static_cast<FwAssertArgType>(_status)
7309  );
7310 
7311 #if FW_AMPCS_COMPATIBLE
7312  // Serialize the argument size
7313  _status = _logBuff.serializeFrom(
7314  static_cast<U8>(sizeof(U32))
7315  );
7316  FW_ASSERT(
7317  _status == Fw::FW_SERIALIZE_OK,
7318  static_cast<FwAssertArgType>(_status)
7319  );
7320 #endif
7321  _status = _logBuff.serializeFrom(srcEid);
7322  FW_ASSERT(
7323  _status == Fw::FW_SERIALIZE_OK,
7324  static_cast<FwAssertArgType>(_status)
7325  );
7326 
7327 #if FW_AMPCS_COMPATIBLE
7328  // Serialize the argument size
7329  _status = _logBuff.serializeFrom(
7330  static_cast<U8>(sizeof(U32))
7331  );
7332  FW_ASSERT(
7333  _status == Fw::FW_SERIALIZE_OK,
7334  static_cast<FwAssertArgType>(_status)
7335  );
7336 #endif
7337  _status = _logBuff.serializeFrom(seqNum);
7338  FW_ASSERT(
7339  _status == Fw::FW_SERIALIZE_OK,
7340  static_cast<FwAssertArgType>(_status)
7341  );
7342 
7343 #if FW_AMPCS_COMPATIBLE
7344  // Serialize the argument size
7345  _status = _logBuff.serializeFrom(
7346  static_cast<U8>(sizeof(U32))
7347  );
7348  FW_ASSERT(
7349  _status == Fw::FW_SERIALIZE_OK,
7350  static_cast<FwAssertArgType>(_status)
7351  );
7352 #endif
7353  _status = _logBuff.serializeFrom(expected);
7354  FW_ASSERT(
7355  _status == Fw::FW_SERIALIZE_OK,
7356  static_cast<FwAssertArgType>(_status)
7357  );
7358 
7359 #if FW_AMPCS_COMPATIBLE
7360  // Serialize the argument size
7361  _status = _logBuff.serializeFrom(
7362  static_cast<U8>(sizeof(I32))
7363  );
7364  FW_ASSERT(
7365  _status == Fw::FW_SERIALIZE_OK,
7366  static_cast<FwAssertArgType>(_status)
7367  );
7368 #endif
7369  _status = _logBuff.serializeFrom(actual);
7370  FW_ASSERT(
7371  _status == Fw::FW_SERIALIZE_OK,
7372  static_cast<FwAssertArgType>(_status)
7373  );
7374 
7375  this->logOut_out(
7376  0,
7377  _id,
7378  _logTime,
7380  _logBuff
7381  );
7382  }
7383 
7384  // Emit the event on the text log port
7385 #if FW_ENABLE_TEXT_LOGGING
7386  if (this->isConnected_logTextOut_OutputPort(0)) {
7387 #if FW_OBJECT_NAMES == 1
7388  const char* _formatString =
7389  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to read during CRC calculation: expected %" PRIu32 " bytes, got %" PRIi32 "";
7390 #else
7391  const char* _formatString =
7392  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to read during CRC calculation: expected %" PRIu32 " bytes, got %" PRIi32 "";
7393 #endif
7394 
7395  Fw::String cfdpClassStr;
7396  cfdpClass.toString(cfdpClassStr);
7397 
7398  Fw::TextLogString _logString;
7399  (void) _logString.format(
7400  _formatString,
7401 #if FW_OBJECT_NAMES == 1
7402  this->m_objName.toChar(),
7403 #endif
7404  "RxReadCrcFailed ",
7405  cfdpClassStr.toChar(),
7406  srcEid,
7407  seqNum,
7408  expected,
7409  actual
7410  );
7411 
7412  this->logTextOut_out(
7413  0,
7414  _id,
7415  _logTime,
7417  _logString
7418  );
7419  }
7420 #endif
7421  }
7422 
7425  const Svc::Ccsds::Cfdp::Class& cfdpClass,
7426  U32 srcEid,
7427  U32 seqNum,
7428  U32 mdSize,
7429  U32 eofSize
7430  ) const
7431  {
7432  // Get the time
7433  Fw::Time _logTime;
7434  if (this->isConnected_timeCaller_OutputPort(0)) {
7435  this->timeCaller_out(0, _logTime);
7436  }
7437 
7438  const FwEventIdType _id = this->getIdBase() + EVENTID_RXEOFMDSIZEMISMATCH;
7439 
7440  // Emit the event on the log port
7441  if (this->isConnected_logOut_OutputPort(0)) {
7442  Fw::LogBuffer _logBuff;
7444 
7445 #if FW_AMPCS_COMPATIBLE
7446  // Serialize the number of arguments
7447  _status = _logBuff.serializeFrom(static_cast<U8>(5));
7448  FW_ASSERT(
7449  _status == Fw::FW_SERIALIZE_OK,
7450  static_cast<FwAssertArgType>(_status)
7451  );
7452 #endif
7453 
7454 #if FW_AMPCS_COMPATIBLE
7455  // Serialize the argument size
7456  _status = _logBuff.serializeFrom(
7458  );
7459  FW_ASSERT(
7460  _status == Fw::FW_SERIALIZE_OK,
7461  static_cast<FwAssertArgType>(_status)
7462  );
7463 #endif
7464  _status = _logBuff.serializeFrom(cfdpClass);
7465  FW_ASSERT(
7466  _status == Fw::FW_SERIALIZE_OK,
7467  static_cast<FwAssertArgType>(_status)
7468  );
7469 
7470 #if FW_AMPCS_COMPATIBLE
7471  // Serialize the argument size
7472  _status = _logBuff.serializeFrom(
7473  static_cast<U8>(sizeof(U32))
7474  );
7475  FW_ASSERT(
7476  _status == Fw::FW_SERIALIZE_OK,
7477  static_cast<FwAssertArgType>(_status)
7478  );
7479 #endif
7480  _status = _logBuff.serializeFrom(srcEid);
7481  FW_ASSERT(
7482  _status == Fw::FW_SERIALIZE_OK,
7483  static_cast<FwAssertArgType>(_status)
7484  );
7485 
7486 #if FW_AMPCS_COMPATIBLE
7487  // Serialize the argument size
7488  _status = _logBuff.serializeFrom(
7489  static_cast<U8>(sizeof(U32))
7490  );
7491  FW_ASSERT(
7492  _status == Fw::FW_SERIALIZE_OK,
7493  static_cast<FwAssertArgType>(_status)
7494  );
7495 #endif
7496  _status = _logBuff.serializeFrom(seqNum);
7497  FW_ASSERT(
7498  _status == Fw::FW_SERIALIZE_OK,
7499  static_cast<FwAssertArgType>(_status)
7500  );
7501 
7502 #if FW_AMPCS_COMPATIBLE
7503  // Serialize the argument size
7504  _status = _logBuff.serializeFrom(
7505  static_cast<U8>(sizeof(U32))
7506  );
7507  FW_ASSERT(
7508  _status == Fw::FW_SERIALIZE_OK,
7509  static_cast<FwAssertArgType>(_status)
7510  );
7511 #endif
7512  _status = _logBuff.serializeFrom(mdSize);
7513  FW_ASSERT(
7514  _status == Fw::FW_SERIALIZE_OK,
7515  static_cast<FwAssertArgType>(_status)
7516  );
7517 
7518 #if FW_AMPCS_COMPATIBLE
7519  // Serialize the argument size
7520  _status = _logBuff.serializeFrom(
7521  static_cast<U8>(sizeof(U32))
7522  );
7523  FW_ASSERT(
7524  _status == Fw::FW_SERIALIZE_OK,
7525  static_cast<FwAssertArgType>(_status)
7526  );
7527 #endif
7528  _status = _logBuff.serializeFrom(eofSize);
7529  FW_ASSERT(
7530  _status == Fw::FW_SERIALIZE_OK,
7531  static_cast<FwAssertArgType>(_status)
7532  );
7533 
7534  this->logOut_out(
7535  0,
7536  _id,
7537  _logTime,
7539  _logBuff
7540  );
7541  }
7542 
7543  // Emit the event on the text log port
7544 #if FW_ENABLE_TEXT_LOGGING
7545  if (this->isConnected_logTextOut_OutputPort(0)) {
7546 #if FW_OBJECT_NAMES == 1
7547  const char* _formatString =
7548  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " EOF/metadata size mismatch: metadata=%" PRIu32 ", EOF=%" PRIu32 "";
7549 #else
7550  const char* _formatString =
7551  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " EOF/metadata size mismatch: metadata=%" PRIu32 ", EOF=%" PRIu32 "";
7552 #endif
7553 
7554  Fw::String cfdpClassStr;
7555  cfdpClass.toString(cfdpClassStr);
7556 
7557  Fw::TextLogString _logString;
7558  (void) _logString.format(
7559  _formatString,
7560 #if FW_OBJECT_NAMES == 1
7561  this->m_objName.toChar(),
7562 #endif
7563  "RxEofMdSizeMismatch ",
7564  cfdpClassStr.toChar(),
7565  srcEid,
7566  seqNum,
7567  mdSize,
7568  eofSize
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& tempFile,
7588  const Fw::StringBase& finalFile,
7589  I32 status
7590  ) const
7591  {
7592  // Get the time
7593  Fw::Time _logTime;
7594  if (this->isConnected_timeCaller_OutputPort(0)) {
7595  this->timeCaller_out(0, _logTime);
7596  }
7597 
7598  const FwEventIdType _id = this->getIdBase() + EVENTID_RXFILERENAMEFAILED;
7599 
7600  // Emit the event on the log port
7601  if (this->isConnected_logOut_OutputPort(0)) {
7602  Fw::LogBuffer _logBuff;
7604 
7605 #if FW_AMPCS_COMPATIBLE
7606  // Serialize the number of arguments
7607  _status = _logBuff.serializeFrom(static_cast<U8>(6));
7608  FW_ASSERT(
7609  _status == Fw::FW_SERIALIZE_OK,
7610  static_cast<FwAssertArgType>(_status)
7611  );
7612 #endif
7613 
7614 #if FW_AMPCS_COMPATIBLE
7615  // Serialize the argument size
7616  _status = _logBuff.serializeFrom(
7618  );
7619  FW_ASSERT(
7620  _status == Fw::FW_SERIALIZE_OK,
7621  static_cast<FwAssertArgType>(_status)
7622  );
7623 #endif
7624  _status = _logBuff.serializeFrom(cfdpClass);
7625  FW_ASSERT(
7626  _status == Fw::FW_SERIALIZE_OK,
7627  static_cast<FwAssertArgType>(_status)
7628  );
7629 
7630 #if FW_AMPCS_COMPATIBLE
7631  // Serialize the argument size
7632  _status = _logBuff.serializeFrom(
7633  static_cast<U8>(sizeof(U32))
7634  );
7635  FW_ASSERT(
7636  _status == Fw::FW_SERIALIZE_OK,
7637  static_cast<FwAssertArgType>(_status)
7638  );
7639 #endif
7640  _status = _logBuff.serializeFrom(srcEid);
7641  FW_ASSERT(
7642  _status == Fw::FW_SERIALIZE_OK,
7643  static_cast<FwAssertArgType>(_status)
7644  );
7645 
7646 #if FW_AMPCS_COMPATIBLE
7647  // Serialize the argument size
7648  _status = _logBuff.serializeFrom(
7649  static_cast<U8>(sizeof(U32))
7650  );
7651  FW_ASSERT(
7652  _status == Fw::FW_SERIALIZE_OK,
7653  static_cast<FwAssertArgType>(_status)
7654  );
7655 #endif
7656  _status = _logBuff.serializeFrom(seqNum);
7657  FW_ASSERT(
7658  _status == Fw::FW_SERIALIZE_OK,
7659  static_cast<FwAssertArgType>(_status)
7660  );
7661 
7662  _status = tempFile.serializeTo(
7663  _logBuff,
7664  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
7665  );
7666  FW_ASSERT(
7667  _status == Fw::FW_SERIALIZE_OK,
7668  static_cast<FwAssertArgType>(_status)
7669  );
7670 
7671  _status = finalFile.serializeTo(
7672  _logBuff,
7673  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
7674  );
7675  FW_ASSERT(
7676  _status == Fw::FW_SERIALIZE_OK,
7677  static_cast<FwAssertArgType>(_status)
7678  );
7679 
7680 #if FW_AMPCS_COMPATIBLE
7681  // Serialize the argument size
7682  _status = _logBuff.serializeFrom(
7683  static_cast<U8>(sizeof(I32))
7684  );
7685  FW_ASSERT(
7686  _status == Fw::FW_SERIALIZE_OK,
7687  static_cast<FwAssertArgType>(_status)
7688  );
7689 #endif
7690  _status = _logBuff.serializeFrom(status);
7691  FW_ASSERT(
7692  _status == Fw::FW_SERIALIZE_OK,
7693  static_cast<FwAssertArgType>(_status)
7694  );
7695 
7696  this->logOut_out(
7697  0,
7698  _id,
7699  _logTime,
7701  _logBuff
7702  );
7703  }
7704 
7705  // Emit the event on the text log port
7706 #if FW_ENABLE_TEXT_LOGGING
7707  if (this->isConnected_logTextOut_OutputPort(0)) {
7708 #if FW_OBJECT_NAMES == 1
7709  const char* _formatString =
7710  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to rename %s to %s, error=%" PRIi32 "";
7711 #else
7712  const char* _formatString =
7713  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to rename %s to %s, error=%" PRIi32 "";
7714 #endif
7715 
7716  Fw::String cfdpClassStr;
7717  cfdpClass.toString(cfdpClassStr);
7718 
7719  Fw::TextLogString _logString;
7720  (void) _logString.format(
7721  _formatString,
7722 #if FW_OBJECT_NAMES == 1
7723  this->m_objName.toChar(),
7724 #endif
7725  "RxFileRenameFailed ",
7726  cfdpClassStr.toChar(),
7727  srcEid,
7728  seqNum,
7729  tempFile.toChar(),
7730  finalFile.toChar(),
7731  status
7732  );
7733 
7734  this->logTextOut_out(
7735  0,
7736  _id,
7737  _logTime,
7739  _logString
7740  );
7741  }
7742 #endif
7743  }
7744 
7747  const Svc::Ccsds::Cfdp::Class& cfdpClass,
7748  U32 srcEid,
7749  U32 seqNum,
7750  const Fw::StringBase& filename,
7751  I32 status
7752  ) const
7753  {
7754  // Get the time
7755  Fw::Time _logTime;
7756  if (this->isConnected_timeCaller_OutputPort(0)) {
7757  this->timeCaller_out(0, _logTime);
7758  }
7759 
7760  const FwEventIdType _id = this->getIdBase() + EVENTID_RXFILEREOPENFAILED;
7761 
7762  // Emit the event on the log port
7763  if (this->isConnected_logOut_OutputPort(0)) {
7764  Fw::LogBuffer _logBuff;
7766 
7767 #if FW_AMPCS_COMPATIBLE
7768  // Serialize the number of arguments
7769  _status = _logBuff.serializeFrom(static_cast<U8>(5));
7770  FW_ASSERT(
7771  _status == Fw::FW_SERIALIZE_OK,
7772  static_cast<FwAssertArgType>(_status)
7773  );
7774 #endif
7775 
7776 #if FW_AMPCS_COMPATIBLE
7777  // Serialize the argument size
7778  _status = _logBuff.serializeFrom(
7780  );
7781  FW_ASSERT(
7782  _status == Fw::FW_SERIALIZE_OK,
7783  static_cast<FwAssertArgType>(_status)
7784  );
7785 #endif
7786  _status = _logBuff.serializeFrom(cfdpClass);
7787  FW_ASSERT(
7788  _status == Fw::FW_SERIALIZE_OK,
7789  static_cast<FwAssertArgType>(_status)
7790  );
7791 
7792 #if FW_AMPCS_COMPATIBLE
7793  // Serialize the argument size
7794  _status = _logBuff.serializeFrom(
7795  static_cast<U8>(sizeof(U32))
7796  );
7797  FW_ASSERT(
7798  _status == Fw::FW_SERIALIZE_OK,
7799  static_cast<FwAssertArgType>(_status)
7800  );
7801 #endif
7802  _status = _logBuff.serializeFrom(srcEid);
7803  FW_ASSERT(
7804  _status == Fw::FW_SERIALIZE_OK,
7805  static_cast<FwAssertArgType>(_status)
7806  );
7807 
7808 #if FW_AMPCS_COMPATIBLE
7809  // Serialize the argument size
7810  _status = _logBuff.serializeFrom(
7811  static_cast<U8>(sizeof(U32))
7812  );
7813  FW_ASSERT(
7814  _status == Fw::FW_SERIALIZE_OK,
7815  static_cast<FwAssertArgType>(_status)
7816  );
7817 #endif
7818  _status = _logBuff.serializeFrom(seqNum);
7819  FW_ASSERT(
7820  _status == Fw::FW_SERIALIZE_OK,
7821  static_cast<FwAssertArgType>(_status)
7822  );
7823 
7824  _status = filename.serializeTo(
7825  _logBuff,
7826  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
7827  );
7828  FW_ASSERT(
7829  _status == Fw::FW_SERIALIZE_OK,
7830  static_cast<FwAssertArgType>(_status)
7831  );
7832 
7833 #if FW_AMPCS_COMPATIBLE
7834  // Serialize the argument size
7835  _status = _logBuff.serializeFrom(
7836  static_cast<U8>(sizeof(I32))
7837  );
7838  FW_ASSERT(
7839  _status == Fw::FW_SERIALIZE_OK,
7840  static_cast<FwAssertArgType>(_status)
7841  );
7842 #endif
7843  _status = _logBuff.serializeFrom(status);
7844  FW_ASSERT(
7845  _status == Fw::FW_SERIALIZE_OK,
7846  static_cast<FwAssertArgType>(_status)
7847  );
7848 
7849  this->logOut_out(
7850  0,
7851  _id,
7852  _logTime,
7854  _logBuff
7855  );
7856  }
7857 
7858  // Emit the event on the text log port
7859 #if FW_ENABLE_TEXT_LOGGING
7860  if (this->isConnected_logTextOut_OutputPort(0)) {
7861 #if FW_OBJECT_NAMES == 1
7862  const char* _formatString =
7863  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to reopen file %s after rename, error=%" PRIi32 "";
7864 #else
7865  const char* _formatString =
7866  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " failed to reopen file %s after rename, error=%" PRIi32 "";
7867 #endif
7868 
7869  Fw::String cfdpClassStr;
7870  cfdpClass.toString(cfdpClassStr);
7871 
7872  Fw::TextLogString _logString;
7873  (void) _logString.format(
7874  _formatString,
7875 #if FW_OBJECT_NAMES == 1
7876  this->m_objName.toChar(),
7877 #endif
7878  "RxFileReopenFailed ",
7879  cfdpClassStr.toChar(),
7880  srcEid,
7881  seqNum,
7882  filename.toChar(),
7883  status
7884  );
7885 
7886  this->logTextOut_out(
7887  0,
7888  _id,
7889  _logTime,
7891  _logString
7892  );
7893  }
7894 #endif
7895  }
7896 
7899  const Svc::Ccsds::Cfdp::Class& cfdpClass,
7900  U32 srcEid,
7901  U32 seqNum
7902  ) const
7903  {
7904  // Get the time
7905  Fw::Time _logTime;
7906  if (this->isConnected_timeCaller_OutputPort(0)) {
7907  this->timeCaller_out(0, _logTime);
7908  }
7909 
7910  const FwEventIdType _id = this->getIdBase() + EVENTID_RXINACTIVITYTIMEOUT;
7911 
7912  // Emit the event on the log port
7913  if (this->isConnected_logOut_OutputPort(0)) {
7914  Fw::LogBuffer _logBuff;
7916 
7917 #if FW_AMPCS_COMPATIBLE
7918  // Serialize the number of arguments
7919  _status = _logBuff.serializeFrom(static_cast<U8>(3));
7920  FW_ASSERT(
7921  _status == Fw::FW_SERIALIZE_OK,
7922  static_cast<FwAssertArgType>(_status)
7923  );
7924 #endif
7925 
7926 #if FW_AMPCS_COMPATIBLE
7927  // Serialize the argument size
7928  _status = _logBuff.serializeFrom(
7930  );
7931  FW_ASSERT(
7932  _status == Fw::FW_SERIALIZE_OK,
7933  static_cast<FwAssertArgType>(_status)
7934  );
7935 #endif
7936  _status = _logBuff.serializeFrom(cfdpClass);
7937  FW_ASSERT(
7938  _status == Fw::FW_SERIALIZE_OK,
7939  static_cast<FwAssertArgType>(_status)
7940  );
7941 
7942 #if FW_AMPCS_COMPATIBLE
7943  // Serialize the argument size
7944  _status = _logBuff.serializeFrom(
7945  static_cast<U8>(sizeof(U32))
7946  );
7947  FW_ASSERT(
7948  _status == Fw::FW_SERIALIZE_OK,
7949  static_cast<FwAssertArgType>(_status)
7950  );
7951 #endif
7952  _status = _logBuff.serializeFrom(srcEid);
7953  FW_ASSERT(
7954  _status == Fw::FW_SERIALIZE_OK,
7955  static_cast<FwAssertArgType>(_status)
7956  );
7957 
7958 #if FW_AMPCS_COMPATIBLE
7959  // Serialize the argument size
7960  _status = _logBuff.serializeFrom(
7961  static_cast<U8>(sizeof(U32))
7962  );
7963  FW_ASSERT(
7964  _status == Fw::FW_SERIALIZE_OK,
7965  static_cast<FwAssertArgType>(_status)
7966  );
7967 #endif
7968  _status = _logBuff.serializeFrom(seqNum);
7969  FW_ASSERT(
7970  _status == Fw::FW_SERIALIZE_OK,
7971  static_cast<FwAssertArgType>(_status)
7972  );
7973 
7974  this->logOut_out(
7975  0,
7976  _id,
7977  _logTime,
7979  _logBuff
7980  );
7981  }
7982 
7983  // Emit the event on the text log port
7984 #if FW_ENABLE_TEXT_LOGGING
7985  if (this->isConnected_logTextOut_OutputPort(0)) {
7986 #if FW_OBJECT_NAMES == 1
7987  const char* _formatString =
7988  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " inactivity timer expired";
7989 #else
7990  const char* _formatString =
7991  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " inactivity timer expired";
7992 #endif
7993 
7994  Fw::String cfdpClassStr;
7995  cfdpClass.toString(cfdpClassStr);
7996 
7997  Fw::TextLogString _logString;
7998  (void) _logString.format(
7999  _formatString,
8000 #if FW_OBJECT_NAMES == 1
8001  this->m_objName.toChar(),
8002 #endif
8003  "RxInactivityTimeout ",
8004  cfdpClassStr.toChar(),
8005  srcEid,
8006  seqNum
8007  );
8008 
8009  this->logTextOut_out(
8010  0,
8011  _id,
8012  _logTime,
8014  _logString
8015  );
8016  }
8017 #endif
8018  }
8019 
8022  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8023  U32 srcEid,
8024  U32 seqNum,
8025  U8 directiveCode,
8026  U8 substate
8027  ) const
8028  {
8029  // Get the time
8030  Fw::Time _logTime;
8031  if (this->isConnected_timeCaller_OutputPort(0)) {
8032  this->timeCaller_out(0, _logTime);
8033  }
8034 
8036 
8037  // Emit the event on the log port
8038  if (this->isConnected_logOut_OutputPort(0)) {
8039  Fw::LogBuffer _logBuff;
8041 
8042 #if FW_AMPCS_COMPATIBLE
8043  // Serialize the number of arguments
8044  _status = _logBuff.serializeFrom(static_cast<U8>(5));
8045  FW_ASSERT(
8046  _status == Fw::FW_SERIALIZE_OK,
8047  static_cast<FwAssertArgType>(_status)
8048  );
8049 #endif
8050 
8051 #if FW_AMPCS_COMPATIBLE
8052  // Serialize the argument size
8053  _status = _logBuff.serializeFrom(
8055  );
8056  FW_ASSERT(
8057  _status == Fw::FW_SERIALIZE_OK,
8058  static_cast<FwAssertArgType>(_status)
8059  );
8060 #endif
8061  _status = _logBuff.serializeFrom(cfdpClass);
8062  FW_ASSERT(
8063  _status == Fw::FW_SERIALIZE_OK,
8064  static_cast<FwAssertArgType>(_status)
8065  );
8066 
8067 #if FW_AMPCS_COMPATIBLE
8068  // Serialize the argument size
8069  _status = _logBuff.serializeFrom(
8070  static_cast<U8>(sizeof(U32))
8071  );
8072  FW_ASSERT(
8073  _status == Fw::FW_SERIALIZE_OK,
8074  static_cast<FwAssertArgType>(_status)
8075  );
8076 #endif
8077  _status = _logBuff.serializeFrom(srcEid);
8078  FW_ASSERT(
8079  _status == Fw::FW_SERIALIZE_OK,
8080  static_cast<FwAssertArgType>(_status)
8081  );
8082 
8083 #if FW_AMPCS_COMPATIBLE
8084  // Serialize the argument size
8085  _status = _logBuff.serializeFrom(
8086  static_cast<U8>(sizeof(U32))
8087  );
8088  FW_ASSERT(
8089  _status == Fw::FW_SERIALIZE_OK,
8090  static_cast<FwAssertArgType>(_status)
8091  );
8092 #endif
8093  _status = _logBuff.serializeFrom(seqNum);
8094  FW_ASSERT(
8095  _status == Fw::FW_SERIALIZE_OK,
8096  static_cast<FwAssertArgType>(_status)
8097  );
8098 
8099 #if FW_AMPCS_COMPATIBLE
8100  // Serialize the argument size
8101  _status = _logBuff.serializeFrom(
8102  static_cast<U8>(sizeof(U8))
8103  );
8104  FW_ASSERT(
8105  _status == Fw::FW_SERIALIZE_OK,
8106  static_cast<FwAssertArgType>(_status)
8107  );
8108 #endif
8109  _status = _logBuff.serializeFrom(directiveCode);
8110  FW_ASSERT(
8111  _status == Fw::FW_SERIALIZE_OK,
8112  static_cast<FwAssertArgType>(_status)
8113  );
8114 
8115 #if FW_AMPCS_COMPATIBLE
8116  // Serialize the argument size
8117  _status = _logBuff.serializeFrom(
8118  static_cast<U8>(sizeof(U8))
8119  );
8120  FW_ASSERT(
8121  _status == Fw::FW_SERIALIZE_OK,
8122  static_cast<FwAssertArgType>(_status)
8123  );
8124 #endif
8125  _status = _logBuff.serializeFrom(substate);
8126  FW_ASSERT(
8127  _status == Fw::FW_SERIALIZE_OK,
8128  static_cast<FwAssertArgType>(_status)
8129  );
8130 
8131  this->logOut_out(
8132  0,
8133  _id,
8134  _logTime,
8136  _logBuff
8137  );
8138  }
8139 
8140  // Emit the event on the text log port
8141 #if FW_ENABLE_TEXT_LOGGING
8142  if (this->isConnected_logTextOut_OutputPort(0)) {
8143 #if FW_OBJECT_NAMES == 1
8144  const char* _formatString =
8145  "(%s) %s: RX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid directive code %" PRIu8 " for substate %" PRIu8 "";
8146 #else
8147  const char* _formatString =
8148  "%s: RX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid directive code %" PRIu8 " for substate %" PRIu8 "";
8149 #endif
8150 
8151  Fw::String cfdpClassStr;
8152  cfdpClass.toString(cfdpClassStr);
8153 
8154  Fw::TextLogString _logString;
8155  (void) _logString.format(
8156  _formatString,
8157 #if FW_OBJECT_NAMES == 1
8158  this->m_objName.toChar(),
8159 #endif
8160  "RxInvalidDirectiveCode ",
8161  cfdpClassStr.toChar(),
8162  srcEid,
8163  seqNum,
8164  directiveCode,
8165  substate
8166  );
8167 
8168  this->logTextOut_out(
8169  0,
8170  _id,
8171  _logTime,
8173  _logString
8174  );
8175  }
8176 #endif
8177  }
8178 
8181  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8182  U32 srcEid,
8183  U32 seqNum
8184  ) const
8185  {
8186  // Get the time
8187  Fw::Time _logTime;
8188  if (this->isConnected_timeCaller_OutputPort(0)) {
8189  this->timeCaller_out(0, _logTime);
8190  }
8191 
8192  const FwEventIdType _id = this->getIdBase() + EVENTID_TXACKLIMITREACHED;
8193 
8194  // Emit the event on the log port
8195  if (this->isConnected_logOut_OutputPort(0)) {
8196  Fw::LogBuffer _logBuff;
8198 
8199 #if FW_AMPCS_COMPATIBLE
8200  // Serialize the number of arguments
8201  _status = _logBuff.serializeFrom(static_cast<U8>(3));
8202  FW_ASSERT(
8203  _status == Fw::FW_SERIALIZE_OK,
8204  static_cast<FwAssertArgType>(_status)
8205  );
8206 #endif
8207 
8208 #if FW_AMPCS_COMPATIBLE
8209  // Serialize the argument size
8210  _status = _logBuff.serializeFrom(
8212  );
8213  FW_ASSERT(
8214  _status == Fw::FW_SERIALIZE_OK,
8215  static_cast<FwAssertArgType>(_status)
8216  );
8217 #endif
8218  _status = _logBuff.serializeFrom(cfdpClass);
8219  FW_ASSERT(
8220  _status == Fw::FW_SERIALIZE_OK,
8221  static_cast<FwAssertArgType>(_status)
8222  );
8223 
8224 #if FW_AMPCS_COMPATIBLE
8225  // Serialize the argument size
8226  _status = _logBuff.serializeFrom(
8227  static_cast<U8>(sizeof(U32))
8228  );
8229  FW_ASSERT(
8230  _status == Fw::FW_SERIALIZE_OK,
8231  static_cast<FwAssertArgType>(_status)
8232  );
8233 #endif
8234  _status = _logBuff.serializeFrom(srcEid);
8235  FW_ASSERT(
8236  _status == Fw::FW_SERIALIZE_OK,
8237  static_cast<FwAssertArgType>(_status)
8238  );
8239 
8240 #if FW_AMPCS_COMPATIBLE
8241  // Serialize the argument size
8242  _status = _logBuff.serializeFrom(
8243  static_cast<U8>(sizeof(U32))
8244  );
8245  FW_ASSERT(
8246  _status == Fw::FW_SERIALIZE_OK,
8247  static_cast<FwAssertArgType>(_status)
8248  );
8249 #endif
8250  _status = _logBuff.serializeFrom(seqNum);
8251  FW_ASSERT(
8252  _status == Fw::FW_SERIALIZE_OK,
8253  static_cast<FwAssertArgType>(_status)
8254  );
8255 
8256  this->logOut_out(
8257  0,
8258  _id,
8259  _logTime,
8261  _logBuff
8262  );
8263  }
8264 
8265  // Emit the event on the text log port
8266 #if FW_ENABLE_TEXT_LOGGING
8267  if (this->isConnected_logTextOut_OutputPort(0)) {
8268 #if FW_OBJECT_NAMES == 1
8269  const char* _formatString =
8270  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " ACK limit reached, no eof-ack received";
8271 #else
8272  const char* _formatString =
8273  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " ACK limit reached, no eof-ack received";
8274 #endif
8275 
8276  Fw::String cfdpClassStr;
8277  cfdpClass.toString(cfdpClassStr);
8278 
8279  Fw::TextLogString _logString;
8280  (void) _logString.format(
8281  _formatString,
8282 #if FW_OBJECT_NAMES == 1
8283  this->m_objName.toChar(),
8284 #endif
8285  "TxAckLimitReached ",
8286  cfdpClassStr.toChar(),
8287  srcEid,
8288  seqNum
8289  );
8290 
8291  this->logTextOut_out(
8292  0,
8293  _id,
8294  _logTime,
8296  _logString
8297  );
8298  }
8299 #endif
8300  }
8301 
8304  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8305  U32 srcEid,
8306  U32 seqNum
8307  ) const
8308  {
8309  // Get the time
8310  Fw::Time _logTime;
8311  if (this->isConnected_timeCaller_OutputPort(0)) {
8312  this->timeCaller_out(0, _logTime);
8313  }
8314 
8315  const FwEventIdType _id = this->getIdBase() + EVENTID_TXINACTIVITYTIMEOUT;
8316 
8317  // Emit the event on the log port
8318  if (this->isConnected_logOut_OutputPort(0)) {
8319  Fw::LogBuffer _logBuff;
8321 
8322 #if FW_AMPCS_COMPATIBLE
8323  // Serialize the number of arguments
8324  _status = _logBuff.serializeFrom(static_cast<U8>(3));
8325  FW_ASSERT(
8326  _status == Fw::FW_SERIALIZE_OK,
8327  static_cast<FwAssertArgType>(_status)
8328  );
8329 #endif
8330 
8331 #if FW_AMPCS_COMPATIBLE
8332  // Serialize the argument size
8333  _status = _logBuff.serializeFrom(
8335  );
8336  FW_ASSERT(
8337  _status == Fw::FW_SERIALIZE_OK,
8338  static_cast<FwAssertArgType>(_status)
8339  );
8340 #endif
8341  _status = _logBuff.serializeFrom(cfdpClass);
8342  FW_ASSERT(
8343  _status == Fw::FW_SERIALIZE_OK,
8344  static_cast<FwAssertArgType>(_status)
8345  );
8346 
8347 #if FW_AMPCS_COMPATIBLE
8348  // Serialize the argument size
8349  _status = _logBuff.serializeFrom(
8350  static_cast<U8>(sizeof(U32))
8351  );
8352  FW_ASSERT(
8353  _status == Fw::FW_SERIALIZE_OK,
8354  static_cast<FwAssertArgType>(_status)
8355  );
8356 #endif
8357  _status = _logBuff.serializeFrom(srcEid);
8358  FW_ASSERT(
8359  _status == Fw::FW_SERIALIZE_OK,
8360  static_cast<FwAssertArgType>(_status)
8361  );
8362 
8363 #if FW_AMPCS_COMPATIBLE
8364  // Serialize the argument size
8365  _status = _logBuff.serializeFrom(
8366  static_cast<U8>(sizeof(U32))
8367  );
8368  FW_ASSERT(
8369  _status == Fw::FW_SERIALIZE_OK,
8370  static_cast<FwAssertArgType>(_status)
8371  );
8372 #endif
8373  _status = _logBuff.serializeFrom(seqNum);
8374  FW_ASSERT(
8375  _status == Fw::FW_SERIALIZE_OK,
8376  static_cast<FwAssertArgType>(_status)
8377  );
8378 
8379  this->logOut_out(
8380  0,
8381  _id,
8382  _logTime,
8384  _logBuff
8385  );
8386  }
8387 
8388  // Emit the event on the text log port
8389 #if FW_ENABLE_TEXT_LOGGING
8390  if (this->isConnected_logTextOut_OutputPort(0)) {
8391 #if FW_OBJECT_NAMES == 1
8392  const char* _formatString =
8393  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " inactivity timer expired";
8394 #else
8395  const char* _formatString =
8396  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " inactivity timer expired";
8397 #endif
8398 
8399  Fw::String cfdpClassStr;
8400  cfdpClass.toString(cfdpClassStr);
8401 
8402  Fw::TextLogString _logString;
8403  (void) _logString.format(
8404  _formatString,
8405 #if FW_OBJECT_NAMES == 1
8406  this->m_objName.toChar(),
8407 #endif
8408  "TxInactivityTimeout ",
8409  cfdpClassStr.toChar(),
8410  srcEid,
8411  seqNum
8412  );
8413 
8414  this->logTextOut_out(
8415  0,
8416  _id,
8417  _logTime,
8419  _logString
8420  );
8421  }
8422 #endif
8423  }
8424 
8427  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8428  U32 srcEid,
8429  U32 seqNum,
8430  const Fw::StringBase& filename
8431  ) const
8432  {
8433  // Get the time
8434  Fw::Time _logTime;
8435  if (this->isConnected_timeCaller_OutputPort(0)) {
8436  this->timeCaller_out(0, _logTime);
8437  }
8438 
8439  const FwEventIdType _id = this->getIdBase() + EVENTID_TXZEROLENGTHFILE;
8440 
8441  // Emit the event on the log port
8442  if (this->isConnected_logOut_OutputPort(0)) {
8443  Fw::LogBuffer _logBuff;
8445 
8446 #if FW_AMPCS_COMPATIBLE
8447  // Serialize the number of arguments
8448  _status = _logBuff.serializeFrom(static_cast<U8>(4));
8449  FW_ASSERT(
8450  _status == Fw::FW_SERIALIZE_OK,
8451  static_cast<FwAssertArgType>(_status)
8452  );
8453 #endif
8454 
8455 #if FW_AMPCS_COMPATIBLE
8456  // Serialize the argument size
8457  _status = _logBuff.serializeFrom(
8459  );
8460  FW_ASSERT(
8461  _status == Fw::FW_SERIALIZE_OK,
8462  static_cast<FwAssertArgType>(_status)
8463  );
8464 #endif
8465  _status = _logBuff.serializeFrom(cfdpClass);
8466  FW_ASSERT(
8467  _status == Fw::FW_SERIALIZE_OK,
8468  static_cast<FwAssertArgType>(_status)
8469  );
8470 
8471 #if FW_AMPCS_COMPATIBLE
8472  // Serialize the argument size
8473  _status = _logBuff.serializeFrom(
8474  static_cast<U8>(sizeof(U32))
8475  );
8476  FW_ASSERT(
8477  _status == Fw::FW_SERIALIZE_OK,
8478  static_cast<FwAssertArgType>(_status)
8479  );
8480 #endif
8481  _status = _logBuff.serializeFrom(srcEid);
8482  FW_ASSERT(
8483  _status == Fw::FW_SERIALIZE_OK,
8484  static_cast<FwAssertArgType>(_status)
8485  );
8486 
8487 #if FW_AMPCS_COMPATIBLE
8488  // Serialize the argument size
8489  _status = _logBuff.serializeFrom(
8490  static_cast<U8>(sizeof(U32))
8491  );
8492  FW_ASSERT(
8493  _status == Fw::FW_SERIALIZE_OK,
8494  static_cast<FwAssertArgType>(_status)
8495  );
8496 #endif
8497  _status = _logBuff.serializeFrom(seqNum);
8498  FW_ASSERT(
8499  _status == Fw::FW_SERIALIZE_OK,
8500  static_cast<FwAssertArgType>(_status)
8501  );
8502 
8503  _status = filename.serializeTo(
8504  _logBuff,
8505  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
8506  );
8507  FW_ASSERT(
8508  _status == Fw::FW_SERIALIZE_OK,
8509  static_cast<FwAssertArgType>(_status)
8510  );
8511 
8512  this->logOut_out(
8513  0,
8514  _id,
8515  _logTime,
8517  _logBuff
8518  );
8519  }
8520 
8521  // Emit the event on the text log port
8522 #if FW_ENABLE_TEXT_LOGGING
8523  if (this->isConnected_logTextOut_OutputPort(0)) {
8524 #if FW_OBJECT_NAMES == 1
8525  const char* _formatString =
8526  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " cannot transfer zero-length file %s";
8527 #else
8528  const char* _formatString =
8529  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " cannot transfer zero-length file %s";
8530 #endif
8531 
8532  Fw::String cfdpClassStr;
8533  cfdpClass.toString(cfdpClassStr);
8534 
8535  Fw::TextLogString _logString;
8536  (void) _logString.format(
8537  _formatString,
8538 #if FW_OBJECT_NAMES == 1
8539  this->m_objName.toChar(),
8540 #endif
8541  "TxZeroLengthFile ",
8542  cfdpClassStr.toChar(),
8543  srcEid,
8544  seqNum,
8545  filename.toChar()
8546  );
8547 
8548  this->logTextOut_out(
8549  0,
8550  _id,
8551  _logTime,
8553  _logString
8554  );
8555  }
8556 #endif
8557  }
8558 
8561  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8562  U32 srcEid,
8563  U32 seqNum,
8564  const Fw::StringBase& filename,
8565  I32 status
8566  ) const
8567  {
8568  // Get the time
8569  Fw::Time _logTime;
8570  if (this->isConnected_timeCaller_OutputPort(0)) {
8571  this->timeCaller_out(0, _logTime);
8572  }
8573 
8574  const FwEventIdType _id = this->getIdBase() + EVENTID_TXFILEOPENFAILED;
8575 
8576  // Emit the event on the log port
8577  if (this->isConnected_logOut_OutputPort(0)) {
8578  Fw::LogBuffer _logBuff;
8580 
8581 #if FW_AMPCS_COMPATIBLE
8582  // Serialize the number of arguments
8583  _status = _logBuff.serializeFrom(static_cast<U8>(5));
8584  FW_ASSERT(
8585  _status == Fw::FW_SERIALIZE_OK,
8586  static_cast<FwAssertArgType>(_status)
8587  );
8588 #endif
8589 
8590 #if FW_AMPCS_COMPATIBLE
8591  // Serialize the argument size
8592  _status = _logBuff.serializeFrom(
8594  );
8595  FW_ASSERT(
8596  _status == Fw::FW_SERIALIZE_OK,
8597  static_cast<FwAssertArgType>(_status)
8598  );
8599 #endif
8600  _status = _logBuff.serializeFrom(cfdpClass);
8601  FW_ASSERT(
8602  _status == Fw::FW_SERIALIZE_OK,
8603  static_cast<FwAssertArgType>(_status)
8604  );
8605 
8606 #if FW_AMPCS_COMPATIBLE
8607  // Serialize the argument size
8608  _status = _logBuff.serializeFrom(
8609  static_cast<U8>(sizeof(U32))
8610  );
8611  FW_ASSERT(
8612  _status == Fw::FW_SERIALIZE_OK,
8613  static_cast<FwAssertArgType>(_status)
8614  );
8615 #endif
8616  _status = _logBuff.serializeFrom(srcEid);
8617  FW_ASSERT(
8618  _status == Fw::FW_SERIALIZE_OK,
8619  static_cast<FwAssertArgType>(_status)
8620  );
8621 
8622 #if FW_AMPCS_COMPATIBLE
8623  // Serialize the argument size
8624  _status = _logBuff.serializeFrom(
8625  static_cast<U8>(sizeof(U32))
8626  );
8627  FW_ASSERT(
8628  _status == Fw::FW_SERIALIZE_OK,
8629  static_cast<FwAssertArgType>(_status)
8630  );
8631 #endif
8632  _status = _logBuff.serializeFrom(seqNum);
8633  FW_ASSERT(
8634  _status == Fw::FW_SERIALIZE_OK,
8635  static_cast<FwAssertArgType>(_status)
8636  );
8637 
8638  _status = filename.serializeTo(
8639  _logBuff,
8640  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
8641  );
8642  FW_ASSERT(
8643  _status == Fw::FW_SERIALIZE_OK,
8644  static_cast<FwAssertArgType>(_status)
8645  );
8646 
8647 #if FW_AMPCS_COMPATIBLE
8648  // Serialize the argument size
8649  _status = _logBuff.serializeFrom(
8650  static_cast<U8>(sizeof(I32))
8651  );
8652  FW_ASSERT(
8653  _status == Fw::FW_SERIALIZE_OK,
8654  static_cast<FwAssertArgType>(_status)
8655  );
8656 #endif
8657  _status = _logBuff.serializeFrom(status);
8658  FW_ASSERT(
8659  _status == Fw::FW_SERIALIZE_OK,
8660  static_cast<FwAssertArgType>(_status)
8661  );
8662 
8663  this->logOut_out(
8664  0,
8665  _id,
8666  _logTime,
8668  _logBuff
8669  );
8670  }
8671 
8672  // Emit the event on the text log port
8673 #if FW_ENABLE_TEXT_LOGGING
8674  if (this->isConnected_logTextOut_OutputPort(0)) {
8675 #if FW_OBJECT_NAMES == 1
8676  const char* _formatString =
8677  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to open file %s, error=%" PRIi32 "";
8678 #else
8679  const char* _formatString =
8680  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to open file %s, error=%" PRIi32 "";
8681 #endif
8682 
8683  Fw::String cfdpClassStr;
8684  cfdpClass.toString(cfdpClassStr);
8685 
8686  Fw::TextLogString _logString;
8687  (void) _logString.format(
8688  _formatString,
8689 #if FW_OBJECT_NAMES == 1
8690  this->m_objName.toChar(),
8691 #endif
8692  "TxFileOpenFailed ",
8693  cfdpClassStr.toChar(),
8694  srcEid,
8695  seqNum,
8696  filename.toChar(),
8697  status
8698  );
8699 
8700  this->logTextOut_out(
8701  0,
8702  _id,
8703  _logTime,
8705  _logString
8706  );
8707  }
8708 #endif
8709  }
8710 
8713  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8714  U32 srcEid,
8715  U32 seqNum,
8716  I32 status
8717  ) const
8718  {
8719  // Get the time
8720  Fw::Time _logTime;
8721  if (this->isConnected_timeCaller_OutputPort(0)) {
8722  this->timeCaller_out(0, _logTime);
8723  }
8724 
8725  const FwEventIdType _id = this->getIdBase() + EVENTID_TXFILESEEKFAILED;
8726 
8727  // Emit the event on the log port
8728  if (this->isConnected_logOut_OutputPort(0)) {
8729  Fw::LogBuffer _logBuff;
8731 
8732 #if FW_AMPCS_COMPATIBLE
8733  // Serialize the number of arguments
8734  _status = _logBuff.serializeFrom(static_cast<U8>(4));
8735  FW_ASSERT(
8736  _status == Fw::FW_SERIALIZE_OK,
8737  static_cast<FwAssertArgType>(_status)
8738  );
8739 #endif
8740 
8741 #if FW_AMPCS_COMPATIBLE
8742  // Serialize the argument size
8743  _status = _logBuff.serializeFrom(
8745  );
8746  FW_ASSERT(
8747  _status == Fw::FW_SERIALIZE_OK,
8748  static_cast<FwAssertArgType>(_status)
8749  );
8750 #endif
8751  _status = _logBuff.serializeFrom(cfdpClass);
8752  FW_ASSERT(
8753  _status == Fw::FW_SERIALIZE_OK,
8754  static_cast<FwAssertArgType>(_status)
8755  );
8756 
8757 #if FW_AMPCS_COMPATIBLE
8758  // Serialize the argument size
8759  _status = _logBuff.serializeFrom(
8760  static_cast<U8>(sizeof(U32))
8761  );
8762  FW_ASSERT(
8763  _status == Fw::FW_SERIALIZE_OK,
8764  static_cast<FwAssertArgType>(_status)
8765  );
8766 #endif
8767  _status = _logBuff.serializeFrom(srcEid);
8768  FW_ASSERT(
8769  _status == Fw::FW_SERIALIZE_OK,
8770  static_cast<FwAssertArgType>(_status)
8771  );
8772 
8773 #if FW_AMPCS_COMPATIBLE
8774  // Serialize the argument size
8775  _status = _logBuff.serializeFrom(
8776  static_cast<U8>(sizeof(U32))
8777  );
8778  FW_ASSERT(
8779  _status == Fw::FW_SERIALIZE_OK,
8780  static_cast<FwAssertArgType>(_status)
8781  );
8782 #endif
8783  _status = _logBuff.serializeFrom(seqNum);
8784  FW_ASSERT(
8785  _status == Fw::FW_SERIALIZE_OK,
8786  static_cast<FwAssertArgType>(_status)
8787  );
8788 
8789 #if FW_AMPCS_COMPATIBLE
8790  // Serialize the argument size
8791  _status = _logBuff.serializeFrom(
8792  static_cast<U8>(sizeof(I32))
8793  );
8794  FW_ASSERT(
8795  _status == Fw::FW_SERIALIZE_OK,
8796  static_cast<FwAssertArgType>(_status)
8797  );
8798 #endif
8799  _status = _logBuff.serializeFrom(status);
8800  FW_ASSERT(
8801  _status == Fw::FW_SERIALIZE_OK,
8802  static_cast<FwAssertArgType>(_status)
8803  );
8804 
8805  this->logOut_out(
8806  0,
8807  _id,
8808  _logTime,
8810  _logBuff
8811  );
8812  }
8813 
8814  // Emit the event on the text log port
8815 #if FW_ENABLE_TEXT_LOGGING
8816  if (this->isConnected_logTextOut_OutputPort(0)) {
8817 #if FW_OBJECT_NAMES == 1
8818  const char* _formatString =
8819  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek to beginning of file, error=%" PRIi32 "";
8820 #else
8821  const char* _formatString =
8822  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to seek to beginning of file, error=%" PRIi32 "";
8823 #endif
8824 
8825  Fw::String cfdpClassStr;
8826  cfdpClass.toString(cfdpClassStr);
8827 
8828  Fw::TextLogString _logString;
8829  (void) _logString.format(
8830  _formatString,
8831 #if FW_OBJECT_NAMES == 1
8832  this->m_objName.toChar(),
8833 #endif
8834  "TxFileSeekFailed ",
8835  cfdpClassStr.toChar(),
8836  srcEid,
8837  seqNum,
8838  status
8839  );
8840 
8841  this->logTextOut_out(
8842  0,
8843  _id,
8844  _logTime,
8846  _logString
8847  );
8848  }
8849 #endif
8850  }
8851 
8854  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8855  U32 srcEid,
8856  U32 seqNum
8857  ) const
8858  {
8859  // Get the time
8860  Fw::Time _logTime;
8861  if (this->isConnected_timeCaller_OutputPort(0)) {
8862  this->timeCaller_out(0, _logTime);
8863  }
8864 
8866 
8867  // Emit the event on the log port
8868  if (this->isConnected_logOut_OutputPort(0)) {
8869  Fw::LogBuffer _logBuff;
8871 
8872 #if FW_AMPCS_COMPATIBLE
8873  // Serialize the number of arguments
8874  _status = _logBuff.serializeFrom(static_cast<U8>(3));
8875  FW_ASSERT(
8876  _status == Fw::FW_SERIALIZE_OK,
8877  static_cast<FwAssertArgType>(_status)
8878  );
8879 #endif
8880 
8881 #if FW_AMPCS_COMPATIBLE
8882  // Serialize the argument size
8883  _status = _logBuff.serializeFrom(
8885  );
8886  FW_ASSERT(
8887  _status == Fw::FW_SERIALIZE_OK,
8888  static_cast<FwAssertArgType>(_status)
8889  );
8890 #endif
8891  _status = _logBuff.serializeFrom(cfdpClass);
8892  FW_ASSERT(
8893  _status == Fw::FW_SERIALIZE_OK,
8894  static_cast<FwAssertArgType>(_status)
8895  );
8896 
8897 #if FW_AMPCS_COMPATIBLE
8898  // Serialize the argument size
8899  _status = _logBuff.serializeFrom(
8900  static_cast<U8>(sizeof(U32))
8901  );
8902  FW_ASSERT(
8903  _status == Fw::FW_SERIALIZE_OK,
8904  static_cast<FwAssertArgType>(_status)
8905  );
8906 #endif
8907  _status = _logBuff.serializeFrom(srcEid);
8908  FW_ASSERT(
8909  _status == Fw::FW_SERIALIZE_OK,
8910  static_cast<FwAssertArgType>(_status)
8911  );
8912 
8913 #if FW_AMPCS_COMPATIBLE
8914  // Serialize the argument size
8915  _status = _logBuff.serializeFrom(
8916  static_cast<U8>(sizeof(U32))
8917  );
8918  FW_ASSERT(
8919  _status == Fw::FW_SERIALIZE_OK,
8920  static_cast<FwAssertArgType>(_status)
8921  );
8922 #endif
8923  _status = _logBuff.serializeFrom(seqNum);
8924  FW_ASSERT(
8925  _status == Fw::FW_SERIALIZE_OK,
8926  static_cast<FwAssertArgType>(_status)
8927  );
8928 
8929  this->logOut_out(
8930  0,
8931  _id,
8932  _logTime,
8934  _logBuff
8935  );
8936  }
8937 
8938  // Emit the event on the text log port
8939 #if FW_ENABLE_TEXT_LOGGING
8940  if (this->isConnected_logTextOut_OutputPort(0)) {
8941 #if FW_OBJECT_NAMES == 1
8942  const char* _formatString =
8943  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to send metadata PDU";
8944 #else
8945  const char* _formatString =
8946  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " failed to send metadata PDU";
8947 #endif
8948 
8949  Fw::String cfdpClassStr;
8950  cfdpClass.toString(cfdpClassStr);
8951 
8952  Fw::TextLogString _logString;
8953  (void) _logString.format(
8954  _formatString,
8955 #if FW_OBJECT_NAMES == 1
8956  this->m_objName.toChar(),
8957 #endif
8958  "TxSendMetadataFailed ",
8959  cfdpClassStr.toChar(),
8960  srcEid,
8961  seqNum
8962  );
8963 
8964  this->logTextOut_out(
8965  0,
8966  _id,
8967  _logTime,
8969  _logString
8970  );
8971  }
8972 #endif
8973  }
8974 
8977  const Svc::Ccsds::Cfdp::Class& cfdpClass,
8978  U32 srcEid,
8979  U32 seqNum
8980  ) const
8981  {
8982  // Get the time
8983  Fw::Time _logTime;
8984  if (this->isConnected_timeCaller_OutputPort(0)) {
8985  this->timeCaller_out(0, _logTime);
8986  }
8987 
8988  const FwEventIdType _id = this->getIdBase() + EVENTID_TXEARLYFINRECEIVED;
8989 
8990  // Emit the event on the log port
8991  if (this->isConnected_logOut_OutputPort(0)) {
8992  Fw::LogBuffer _logBuff;
8994 
8995 #if FW_AMPCS_COMPATIBLE
8996  // Serialize the number of arguments
8997  _status = _logBuff.serializeFrom(static_cast<U8>(3));
8998  FW_ASSERT(
8999  _status == Fw::FW_SERIALIZE_OK,
9000  static_cast<FwAssertArgType>(_status)
9001  );
9002 #endif
9003 
9004 #if FW_AMPCS_COMPATIBLE
9005  // Serialize the argument size
9006  _status = _logBuff.serializeFrom(
9008  );
9009  FW_ASSERT(
9010  _status == Fw::FW_SERIALIZE_OK,
9011  static_cast<FwAssertArgType>(_status)
9012  );
9013 #endif
9014  _status = _logBuff.serializeFrom(cfdpClass);
9015  FW_ASSERT(
9016  _status == Fw::FW_SERIALIZE_OK,
9017  static_cast<FwAssertArgType>(_status)
9018  );
9019 
9020 #if FW_AMPCS_COMPATIBLE
9021  // Serialize the argument size
9022  _status = _logBuff.serializeFrom(
9023  static_cast<U8>(sizeof(U32))
9024  );
9025  FW_ASSERT(
9026  _status == Fw::FW_SERIALIZE_OK,
9027  static_cast<FwAssertArgType>(_status)
9028  );
9029 #endif
9030  _status = _logBuff.serializeFrom(srcEid);
9031  FW_ASSERT(
9032  _status == Fw::FW_SERIALIZE_OK,
9033  static_cast<FwAssertArgType>(_status)
9034  );
9035 
9036 #if FW_AMPCS_COMPATIBLE
9037  // Serialize the argument size
9038  _status = _logBuff.serializeFrom(
9039  static_cast<U8>(sizeof(U32))
9040  );
9041  FW_ASSERT(
9042  _status == Fw::FW_SERIALIZE_OK,
9043  static_cast<FwAssertArgType>(_status)
9044  );
9045 #endif
9046  _status = _logBuff.serializeFrom(seqNum);
9047  FW_ASSERT(
9048  _status == Fw::FW_SERIALIZE_OK,
9049  static_cast<FwAssertArgType>(_status)
9050  );
9051 
9052  this->logOut_out(
9053  0,
9054  _id,
9055  _logTime,
9057  _logBuff
9058  );
9059  }
9060 
9061  // Emit the event on the text log port
9062 #if FW_ENABLE_TEXT_LOGGING
9063  if (this->isConnected_logTextOut_OutputPort(0)) {
9064 #if FW_OBJECT_NAMES == 1
9065  const char* _formatString =
9066  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received early FIN, cancelling transfer";
9067 #else
9068  const char* _formatString =
9069  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received early FIN, cancelling transfer";
9070 #endif
9071 
9072  Fw::String cfdpClassStr;
9073  cfdpClass.toString(cfdpClassStr);
9074 
9075  Fw::TextLogString _logString;
9076  (void) _logString.format(
9077  _formatString,
9078 #if FW_OBJECT_NAMES == 1
9079  this->m_objName.toChar(),
9080 #endif
9081  "TxEarlyFinReceived ",
9082  cfdpClassStr.toChar(),
9083  srcEid,
9084  seqNum
9085  );
9086 
9087  this->logTextOut_out(
9088  0,
9089  _id,
9090  _logTime,
9092  _logString
9093  );
9094  }
9095 #endif
9096  }
9097 
9100  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9101  U32 srcEid,
9102  U32 seqNum
9103  ) const
9104  {
9105  // Get the time
9106  Fw::Time _logTime;
9107  if (this->isConnected_timeCaller_OutputPort(0)) {
9108  this->timeCaller_out(0, _logTime);
9109  }
9110 
9111  const FwEventIdType _id = this->getIdBase() + EVENTID_TXINVALIDNAKPDU;
9112 
9113  // Emit the event on the log port
9114  if (this->isConnected_logOut_OutputPort(0)) {
9115  Fw::LogBuffer _logBuff;
9117 
9118 #if FW_AMPCS_COMPATIBLE
9119  // Serialize the number of arguments
9120  _status = _logBuff.serializeFrom(static_cast<U8>(3));
9121  FW_ASSERT(
9122  _status == Fw::FW_SERIALIZE_OK,
9123  static_cast<FwAssertArgType>(_status)
9124  );
9125 #endif
9126 
9127 #if FW_AMPCS_COMPATIBLE
9128  // Serialize the argument size
9129  _status = _logBuff.serializeFrom(
9131  );
9132  FW_ASSERT(
9133  _status == Fw::FW_SERIALIZE_OK,
9134  static_cast<FwAssertArgType>(_status)
9135  );
9136 #endif
9137  _status = _logBuff.serializeFrom(cfdpClass);
9138  FW_ASSERT(
9139  _status == Fw::FW_SERIALIZE_OK,
9140  static_cast<FwAssertArgType>(_status)
9141  );
9142 
9143 #if FW_AMPCS_COMPATIBLE
9144  // Serialize the argument size
9145  _status = _logBuff.serializeFrom(
9146  static_cast<U8>(sizeof(U32))
9147  );
9148  FW_ASSERT(
9149  _status == Fw::FW_SERIALIZE_OK,
9150  static_cast<FwAssertArgType>(_status)
9151  );
9152 #endif
9153  _status = _logBuff.serializeFrom(srcEid);
9154  FW_ASSERT(
9155  _status == Fw::FW_SERIALIZE_OK,
9156  static_cast<FwAssertArgType>(_status)
9157  );
9158 
9159 #if FW_AMPCS_COMPATIBLE
9160  // Serialize the argument size
9161  _status = _logBuff.serializeFrom(
9162  static_cast<U8>(sizeof(U32))
9163  );
9164  FW_ASSERT(
9165  _status == Fw::FW_SERIALIZE_OK,
9166  static_cast<FwAssertArgType>(_status)
9167  );
9168 #endif
9169  _status = _logBuff.serializeFrom(seqNum);
9170  FW_ASSERT(
9171  _status == Fw::FW_SERIALIZE_OK,
9172  static_cast<FwAssertArgType>(_status)
9173  );
9174 
9175  this->logOut_out(
9176  0,
9177  _id,
9178  _logTime,
9180  _logBuff
9181  );
9182  }
9183 
9184  // Emit the event on the text log port
9185 #if FW_ENABLE_TEXT_LOGGING
9186  if (this->isConnected_logTextOut_OutputPort(0)) {
9187 #if FW_OBJECT_NAMES == 1
9188  const char* _formatString =
9189  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid NAK PDU";
9190 #else
9191  const char* _formatString =
9192  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid NAK PDU";
9193 #endif
9194 
9195  Fw::String cfdpClassStr;
9196  cfdpClass.toString(cfdpClassStr);
9197 
9198  Fw::TextLogString _logString;
9199  (void) _logString.format(
9200  _formatString,
9201 #if FW_OBJECT_NAMES == 1
9202  this->m_objName.toChar(),
9203 #endif
9204  "TxInvalidNakPdu ",
9205  cfdpClassStr.toChar(),
9206  srcEid,
9207  seqNum
9208  );
9209 
9210  this->logTextOut_out(
9211  0,
9212  _id,
9213  _logTime,
9215  _logString
9216  );
9217  }
9218 #endif
9219  }
9220 
9223  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9224  U32 srcEid,
9225  U32 seqNum,
9226  U32 badCount
9227  ) const
9228  {
9229  // Get the time
9230  Fw::Time _logTime;
9231  if (this->isConnected_timeCaller_OutputPort(0)) {
9232  this->timeCaller_out(0, _logTime);
9233  }
9234 
9236 
9237  // Emit the event on the log port
9238  if (this->isConnected_logOut_OutputPort(0)) {
9239  Fw::LogBuffer _logBuff;
9241 
9242 #if FW_AMPCS_COMPATIBLE
9243  // Serialize the number of arguments
9244  _status = _logBuff.serializeFrom(static_cast<U8>(4));
9245  FW_ASSERT(
9246  _status == Fw::FW_SERIALIZE_OK,
9247  static_cast<FwAssertArgType>(_status)
9248  );
9249 #endif
9250 
9251 #if FW_AMPCS_COMPATIBLE
9252  // Serialize the argument size
9253  _status = _logBuff.serializeFrom(
9255  );
9256  FW_ASSERT(
9257  _status == Fw::FW_SERIALIZE_OK,
9258  static_cast<FwAssertArgType>(_status)
9259  );
9260 #endif
9261  _status = _logBuff.serializeFrom(cfdpClass);
9262  FW_ASSERT(
9263  _status == Fw::FW_SERIALIZE_OK,
9264  static_cast<FwAssertArgType>(_status)
9265  );
9266 
9267 #if FW_AMPCS_COMPATIBLE
9268  // Serialize the argument size
9269  _status = _logBuff.serializeFrom(
9270  static_cast<U8>(sizeof(U32))
9271  );
9272  FW_ASSERT(
9273  _status == Fw::FW_SERIALIZE_OK,
9274  static_cast<FwAssertArgType>(_status)
9275  );
9276 #endif
9277  _status = _logBuff.serializeFrom(srcEid);
9278  FW_ASSERT(
9279  _status == Fw::FW_SERIALIZE_OK,
9280  static_cast<FwAssertArgType>(_status)
9281  );
9282 
9283 #if FW_AMPCS_COMPATIBLE
9284  // Serialize the argument size
9285  _status = _logBuff.serializeFrom(
9286  static_cast<U8>(sizeof(U32))
9287  );
9288  FW_ASSERT(
9289  _status == Fw::FW_SERIALIZE_OK,
9290  static_cast<FwAssertArgType>(_status)
9291  );
9292 #endif
9293  _status = _logBuff.serializeFrom(seqNum);
9294  FW_ASSERT(
9295  _status == Fw::FW_SERIALIZE_OK,
9296  static_cast<FwAssertArgType>(_status)
9297  );
9298 
9299 #if FW_AMPCS_COMPATIBLE
9300  // Serialize the argument size
9301  _status = _logBuff.serializeFrom(
9302  static_cast<U8>(sizeof(U32))
9303  );
9304  FW_ASSERT(
9305  _status == Fw::FW_SERIALIZE_OK,
9306  static_cast<FwAssertArgType>(_status)
9307  );
9308 #endif
9309  _status = _logBuff.serializeFrom(badCount);
9310  FW_ASSERT(
9311  _status == Fw::FW_SERIALIZE_OK,
9312  static_cast<FwAssertArgType>(_status)
9313  );
9314 
9315  this->logOut_out(
9316  0,
9317  _id,
9318  _logTime,
9320  _logBuff
9321  );
9322  }
9323 
9324  // Emit the event on the text log port
9325 #if FW_ENABLE_TEXT_LOGGING
9326  if (this->isConnected_logTextOut_OutputPort(0)) {
9327 #if FW_OBJECT_NAMES == 1
9328  const char* _formatString =
9329  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received %" PRIu32 " invalid NAK segment requests";
9330 #else
9331  const char* _formatString =
9332  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received %" PRIu32 " invalid NAK segment requests";
9333 #endif
9334 
9335  Fw::String cfdpClassStr;
9336  cfdpClass.toString(cfdpClassStr);
9337 
9338  Fw::TextLogString _logString;
9339  (void) _logString.format(
9340  _formatString,
9341 #if FW_OBJECT_NAMES == 1
9342  this->m_objName.toChar(),
9343 #endif
9344  "TxInvalidSegmentRequests ",
9345  cfdpClassStr.toChar(),
9346  srcEid,
9347  seqNum,
9348  badCount
9349  );
9350 
9351  this->logTextOut_out(
9352  0,
9353  _id,
9354  _logTime,
9356  _logString
9357  );
9358  }
9359 #endif
9360  }
9361 
9364  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9365  U32 srcEid,
9366  U32 seqNum
9367  ) const
9368  {
9369  // Get the time
9370  Fw::Time _logTime;
9371  if (this->isConnected_timeCaller_OutputPort(0)) {
9372  this->timeCaller_out(0, _logTime);
9373  }
9374 
9376 
9377  // Emit the event on the log port
9378  if (this->isConnected_logOut_OutputPort(0)) {
9379  Fw::LogBuffer _logBuff;
9381 
9382 #if FW_AMPCS_COMPATIBLE
9383  // Serialize the number of arguments
9384  _status = _logBuff.serializeFrom(static_cast<U8>(3));
9385  FW_ASSERT(
9386  _status == Fw::FW_SERIALIZE_OK,
9387  static_cast<FwAssertArgType>(_status)
9388  );
9389 #endif
9390 
9391 #if FW_AMPCS_COMPATIBLE
9392  // Serialize the argument size
9393  _status = _logBuff.serializeFrom(
9395  );
9396  FW_ASSERT(
9397  _status == Fw::FW_SERIALIZE_OK,
9398  static_cast<FwAssertArgType>(_status)
9399  );
9400 #endif
9401  _status = _logBuff.serializeFrom(cfdpClass);
9402  FW_ASSERT(
9403  _status == Fw::FW_SERIALIZE_OK,
9404  static_cast<FwAssertArgType>(_status)
9405  );
9406 
9407 #if FW_AMPCS_COMPATIBLE
9408  // Serialize the argument size
9409  _status = _logBuff.serializeFrom(
9410  static_cast<U8>(sizeof(U32))
9411  );
9412  FW_ASSERT(
9413  _status == Fw::FW_SERIALIZE_OK,
9414  static_cast<FwAssertArgType>(_status)
9415  );
9416 #endif
9417  _status = _logBuff.serializeFrom(srcEid);
9418  FW_ASSERT(
9419  _status == Fw::FW_SERIALIZE_OK,
9420  static_cast<FwAssertArgType>(_status)
9421  );
9422 
9423 #if FW_AMPCS_COMPATIBLE
9424  // Serialize the argument size
9425  _status = _logBuff.serializeFrom(
9426  static_cast<U8>(sizeof(U32))
9427  );
9428  FW_ASSERT(
9429  _status == Fw::FW_SERIALIZE_OK,
9430  static_cast<FwAssertArgType>(_status)
9431  );
9432 #endif
9433  _status = _logBuff.serializeFrom(seqNum);
9434  FW_ASSERT(
9435  _status == Fw::FW_SERIALIZE_OK,
9436  static_cast<FwAssertArgType>(_status)
9437  );
9438 
9439  this->logOut_out(
9440  0,
9441  _id,
9442  _logTime,
9444  _logBuff
9445  );
9446  }
9447 
9448  // Emit the event on the text log port
9449 #if FW_ENABLE_TEXT_LOGGING
9450  if (this->isConnected_logTextOut_OutputPort(0)) {
9451 #if FW_OBJECT_NAMES == 1
9452  const char* _formatString =
9453  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received non-file-directive PDU";
9454 #else
9455  const char* _formatString =
9456  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received non-file-directive PDU";
9457 #endif
9458 
9459  Fw::String cfdpClassStr;
9460  cfdpClass.toString(cfdpClassStr);
9461 
9462  Fw::TextLogString _logString;
9463  (void) _logString.format(
9464  _formatString,
9465 #if FW_OBJECT_NAMES == 1
9466  this->m_objName.toChar(),
9467 #endif
9468  "TxNonFileDirectivePduReceived ",
9469  cfdpClassStr.toChar(),
9470  srcEid,
9471  seqNum
9472  );
9473 
9474  this->logTextOut_out(
9475  0,
9476  _id,
9477  _logTime,
9479  _logString
9480  );
9481  }
9482 #endif
9483  }
9484 
9487  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9488  U32 srcEid,
9489  U32 seqNum,
9490  U8 directiveCode,
9491  U8 substate
9492  ) const
9493  {
9494  // Get the time
9495  Fw::Time _logTime;
9496  if (this->isConnected_timeCaller_OutputPort(0)) {
9497  this->timeCaller_out(0, _logTime);
9498  }
9499 
9501 
9502  // Emit the event on the log port
9503  if (this->isConnected_logOut_OutputPort(0)) {
9504  Fw::LogBuffer _logBuff;
9506 
9507 #if FW_AMPCS_COMPATIBLE
9508  // Serialize the number of arguments
9509  _status = _logBuff.serializeFrom(static_cast<U8>(5));
9510  FW_ASSERT(
9511  _status == Fw::FW_SERIALIZE_OK,
9512  static_cast<FwAssertArgType>(_status)
9513  );
9514 #endif
9515 
9516 #if FW_AMPCS_COMPATIBLE
9517  // Serialize the argument size
9518  _status = _logBuff.serializeFrom(
9520  );
9521  FW_ASSERT(
9522  _status == Fw::FW_SERIALIZE_OK,
9523  static_cast<FwAssertArgType>(_status)
9524  );
9525 #endif
9526  _status = _logBuff.serializeFrom(cfdpClass);
9527  FW_ASSERT(
9528  _status == Fw::FW_SERIALIZE_OK,
9529  static_cast<FwAssertArgType>(_status)
9530  );
9531 
9532 #if FW_AMPCS_COMPATIBLE
9533  // Serialize the argument size
9534  _status = _logBuff.serializeFrom(
9535  static_cast<U8>(sizeof(U32))
9536  );
9537  FW_ASSERT(
9538  _status == Fw::FW_SERIALIZE_OK,
9539  static_cast<FwAssertArgType>(_status)
9540  );
9541 #endif
9542  _status = _logBuff.serializeFrom(srcEid);
9543  FW_ASSERT(
9544  _status == Fw::FW_SERIALIZE_OK,
9545  static_cast<FwAssertArgType>(_status)
9546  );
9547 
9548 #if FW_AMPCS_COMPATIBLE
9549  // Serialize the argument size
9550  _status = _logBuff.serializeFrom(
9551  static_cast<U8>(sizeof(U32))
9552  );
9553  FW_ASSERT(
9554  _status == Fw::FW_SERIALIZE_OK,
9555  static_cast<FwAssertArgType>(_status)
9556  );
9557 #endif
9558  _status = _logBuff.serializeFrom(seqNum);
9559  FW_ASSERT(
9560  _status == Fw::FW_SERIALIZE_OK,
9561  static_cast<FwAssertArgType>(_status)
9562  );
9563 
9564 #if FW_AMPCS_COMPATIBLE
9565  // Serialize the argument size
9566  _status = _logBuff.serializeFrom(
9567  static_cast<U8>(sizeof(U8))
9568  );
9569  FW_ASSERT(
9570  _status == Fw::FW_SERIALIZE_OK,
9571  static_cast<FwAssertArgType>(_status)
9572  );
9573 #endif
9574  _status = _logBuff.serializeFrom(directiveCode);
9575  FW_ASSERT(
9576  _status == Fw::FW_SERIALIZE_OK,
9577  static_cast<FwAssertArgType>(_status)
9578  );
9579 
9580 #if FW_AMPCS_COMPATIBLE
9581  // Serialize the argument size
9582  _status = _logBuff.serializeFrom(
9583  static_cast<U8>(sizeof(U8))
9584  );
9585  FW_ASSERT(
9586  _status == Fw::FW_SERIALIZE_OK,
9587  static_cast<FwAssertArgType>(_status)
9588  );
9589 #endif
9590  _status = _logBuff.serializeFrom(substate);
9591  FW_ASSERT(
9592  _status == Fw::FW_SERIALIZE_OK,
9593  static_cast<FwAssertArgType>(_status)
9594  );
9595 
9596  this->logOut_out(
9597  0,
9598  _id,
9599  _logTime,
9601  _logBuff
9602  );
9603  }
9604 
9605  // Emit the event on the text log port
9606 #if FW_ENABLE_TEXT_LOGGING
9607  if (this->isConnected_logTextOut_OutputPort(0)) {
9608 #if FW_OBJECT_NAMES == 1
9609  const char* _formatString =
9610  "(%s) %s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid directive code %" PRIu8 " for substate %" PRIu8 "";
9611 #else
9612  const char* _formatString =
9613  "%s: TX class %s transaction %" PRIu32 ":%" PRIu32 " received invalid directive code %" PRIu8 " for substate %" PRIu8 "";
9614 #endif
9615 
9616  Fw::String cfdpClassStr;
9617  cfdpClass.toString(cfdpClassStr);
9618 
9619  Fw::TextLogString _logString;
9620  (void) _logString.format(
9621  _formatString,
9622 #if FW_OBJECT_NAMES == 1
9623  this->m_objName.toChar(),
9624 #endif
9625  "TxInvalidDirectiveCode ",
9626  cfdpClassStr.toChar(),
9627  srcEid,
9628  seqNum,
9629  directiveCode,
9630  substate
9631  );
9632 
9633  this->logTextOut_out(
9634  0,
9635  _id,
9636  _logTime,
9638  _logString
9639  );
9640  }
9641 #endif
9642  }
9643 
9646  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9647  U32 seqNum,
9648  U32 srcEid,
9649  const Fw::StringBase& srcFile,
9650  U32 destEid,
9651  const Fw::StringBase& destFile,
9652  U32 fileSize
9653  ) const
9654  {
9655  // Get the time
9656  Fw::Time _logTime;
9657  if (this->isConnected_timeCaller_OutputPort(0)) {
9658  this->timeCaller_out(0, _logTime);
9659  }
9660 
9662 
9663  // Emit the event on the log port
9664  if (this->isConnected_logOut_OutputPort(0)) {
9665  Fw::LogBuffer _logBuff;
9667 
9668 #if FW_AMPCS_COMPATIBLE
9669  // Serialize the number of arguments
9670  _status = _logBuff.serializeFrom(static_cast<U8>(7));
9671  FW_ASSERT(
9672  _status == Fw::FW_SERIALIZE_OK,
9673  static_cast<FwAssertArgType>(_status)
9674  );
9675 #endif
9676 
9677 #if FW_AMPCS_COMPATIBLE
9678  // Serialize the argument size
9679  _status = _logBuff.serializeFrom(
9681  );
9682  FW_ASSERT(
9683  _status == Fw::FW_SERIALIZE_OK,
9684  static_cast<FwAssertArgType>(_status)
9685  );
9686 #endif
9687  _status = _logBuff.serializeFrom(cfdpClass);
9688  FW_ASSERT(
9689  _status == Fw::FW_SERIALIZE_OK,
9690  static_cast<FwAssertArgType>(_status)
9691  );
9692 
9693 #if FW_AMPCS_COMPATIBLE
9694  // Serialize the argument size
9695  _status = _logBuff.serializeFrom(
9696  static_cast<U8>(sizeof(U32))
9697  );
9698  FW_ASSERT(
9699  _status == Fw::FW_SERIALIZE_OK,
9700  static_cast<FwAssertArgType>(_status)
9701  );
9702 #endif
9703  _status = _logBuff.serializeFrom(seqNum);
9704  FW_ASSERT(
9705  _status == Fw::FW_SERIALIZE_OK,
9706  static_cast<FwAssertArgType>(_status)
9707  );
9708 
9709 #if FW_AMPCS_COMPATIBLE
9710  // Serialize the argument size
9711  _status = _logBuff.serializeFrom(
9712  static_cast<U8>(sizeof(U32))
9713  );
9714  FW_ASSERT(
9715  _status == Fw::FW_SERIALIZE_OK,
9716  static_cast<FwAssertArgType>(_status)
9717  );
9718 #endif
9719  _status = _logBuff.serializeFrom(srcEid);
9720  FW_ASSERT(
9721  _status == Fw::FW_SERIALIZE_OK,
9722  static_cast<FwAssertArgType>(_status)
9723  );
9724 
9725  _status = srcFile.serializeTo(
9726  _logBuff,
9727  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
9728  );
9729  FW_ASSERT(
9730  _status == Fw::FW_SERIALIZE_OK,
9731  static_cast<FwAssertArgType>(_status)
9732  );
9733 
9734 #if FW_AMPCS_COMPATIBLE
9735  // Serialize the argument size
9736  _status = _logBuff.serializeFrom(
9737  static_cast<U8>(sizeof(U32))
9738  );
9739  FW_ASSERT(
9740  _status == Fw::FW_SERIALIZE_OK,
9741  static_cast<FwAssertArgType>(_status)
9742  );
9743 #endif
9744  _status = _logBuff.serializeFrom(destEid);
9745  FW_ASSERT(
9746  _status == Fw::FW_SERIALIZE_OK,
9747  static_cast<FwAssertArgType>(_status)
9748  );
9749 
9750  _status = destFile.serializeTo(
9751  _logBuff,
9752  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
9753  );
9754  FW_ASSERT(
9755  _status == Fw::FW_SERIALIZE_OK,
9756  static_cast<FwAssertArgType>(_status)
9757  );
9758 
9759 #if FW_AMPCS_COMPATIBLE
9760  // Serialize the argument size
9761  _status = _logBuff.serializeFrom(
9762  static_cast<U8>(sizeof(U32))
9763  );
9764  FW_ASSERT(
9765  _status == Fw::FW_SERIALIZE_OK,
9766  static_cast<FwAssertArgType>(_status)
9767  );
9768 #endif
9769  _status = _logBuff.serializeFrom(fileSize);
9770  FW_ASSERT(
9771  _status == Fw::FW_SERIALIZE_OK,
9772  static_cast<FwAssertArgType>(_status)
9773  );
9774 
9775  this->logOut_out(
9776  0,
9777  _id,
9778  _logTime,
9780  _logBuff
9781  );
9782  }
9783 
9784  // Emit the event on the text log port
9785 #if FW_ENABLE_TEXT_LOGGING
9786  if (this->isConnected_logTextOut_OutputPort(0)) {
9787 #if FW_OBJECT_NAMES == 1
9788  const char* _formatString =
9789  "(%s) %s: TX %s transaction %" PRIu32 " transfer started, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
9790 #else
9791  const char* _formatString =
9792  "%s: TX %s transaction %" PRIu32 " transfer started, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
9793 #endif
9794 
9795  Fw::String cfdpClassStr;
9796  cfdpClass.toString(cfdpClassStr);
9797 
9798  Fw::TextLogString _logString;
9799  (void) _logString.format(
9800  _formatString,
9801 #if FW_OBJECT_NAMES == 1
9802  this->m_objName.toChar(),
9803 #endif
9804  "TxFileTransferStarted ",
9805  cfdpClassStr.toChar(),
9806  seqNum,
9807  srcEid,
9808  srcFile.toChar(),
9809  destEid,
9810  destFile.toChar(),
9811  fileSize
9812  );
9813 
9814  this->logTextOut_out(
9815  0,
9816  _id,
9817  _logTime,
9819  _logString
9820  );
9821  }
9822 #endif
9823  }
9824 
9827  const Svc::Ccsds::Cfdp::Class& cfdpClass,
9828  U32 seqNum,
9829  U32 srcEid,
9830  const Fw::StringBase& srcFile,
9831  U32 destEid,
9832  const Fw::StringBase& destFile,
9833  U32 fileSize
9834  ) const
9835  {
9836  // Get the time
9837  Fw::Time _logTime;
9838  if (this->isConnected_timeCaller_OutputPort(0)) {
9839  this->timeCaller_out(0, _logTime);
9840  }
9841 
9843 
9844  // Emit the event on the log port
9845  if (this->isConnected_logOut_OutputPort(0)) {
9846  Fw::LogBuffer _logBuff;
9848 
9849 #if FW_AMPCS_COMPATIBLE
9850  // Serialize the number of arguments
9851  _status = _logBuff.serializeFrom(static_cast<U8>(7));
9852  FW_ASSERT(
9853  _status == Fw::FW_SERIALIZE_OK,
9854  static_cast<FwAssertArgType>(_status)
9855  );
9856 #endif
9857 
9858 #if FW_AMPCS_COMPATIBLE
9859  // Serialize the argument size
9860  _status = _logBuff.serializeFrom(
9862  );
9863  FW_ASSERT(
9864  _status == Fw::FW_SERIALIZE_OK,
9865  static_cast<FwAssertArgType>(_status)
9866  );
9867 #endif
9868  _status = _logBuff.serializeFrom(cfdpClass);
9869  FW_ASSERT(
9870  _status == Fw::FW_SERIALIZE_OK,
9871  static_cast<FwAssertArgType>(_status)
9872  );
9873 
9874 #if FW_AMPCS_COMPATIBLE
9875  // Serialize the argument size
9876  _status = _logBuff.serializeFrom(
9877  static_cast<U8>(sizeof(U32))
9878  );
9879  FW_ASSERT(
9880  _status == Fw::FW_SERIALIZE_OK,
9881  static_cast<FwAssertArgType>(_status)
9882  );
9883 #endif
9884  _status = _logBuff.serializeFrom(seqNum);
9885  FW_ASSERT(
9886  _status == Fw::FW_SERIALIZE_OK,
9887  static_cast<FwAssertArgType>(_status)
9888  );
9889 
9890 #if FW_AMPCS_COMPATIBLE
9891  // Serialize the argument size
9892  _status = _logBuff.serializeFrom(
9893  static_cast<U8>(sizeof(U32))
9894  );
9895  FW_ASSERT(
9896  _status == Fw::FW_SERIALIZE_OK,
9897  static_cast<FwAssertArgType>(_status)
9898  );
9899 #endif
9900  _status = _logBuff.serializeFrom(srcEid);
9901  FW_ASSERT(
9902  _status == Fw::FW_SERIALIZE_OK,
9903  static_cast<FwAssertArgType>(_status)
9904  );
9905 
9906  _status = srcFile.serializeTo(
9907  _logBuff,
9908  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
9909  );
9910  FW_ASSERT(
9911  _status == Fw::FW_SERIALIZE_OK,
9912  static_cast<FwAssertArgType>(_status)
9913  );
9914 
9915 #if FW_AMPCS_COMPATIBLE
9916  // Serialize the argument size
9917  _status = _logBuff.serializeFrom(
9918  static_cast<U8>(sizeof(U32))
9919  );
9920  FW_ASSERT(
9921  _status == Fw::FW_SERIALIZE_OK,
9922  static_cast<FwAssertArgType>(_status)
9923  );
9924 #endif
9925  _status = _logBuff.serializeFrom(destEid);
9926  FW_ASSERT(
9927  _status == Fw::FW_SERIALIZE_OK,
9928  static_cast<FwAssertArgType>(_status)
9929  );
9930 
9931  _status = destFile.serializeTo(
9932  _logBuff,
9933  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
9934  );
9935  FW_ASSERT(
9936  _status == Fw::FW_SERIALIZE_OK,
9937  static_cast<FwAssertArgType>(_status)
9938  );
9939 
9940 #if FW_AMPCS_COMPATIBLE
9941  // Serialize the argument size
9942  _status = _logBuff.serializeFrom(
9943  static_cast<U8>(sizeof(U32))
9944  );
9945  FW_ASSERT(
9946  _status == Fw::FW_SERIALIZE_OK,
9947  static_cast<FwAssertArgType>(_status)
9948  );
9949 #endif
9950  _status = _logBuff.serializeFrom(fileSize);
9951  FW_ASSERT(
9952  _status == Fw::FW_SERIALIZE_OK,
9953  static_cast<FwAssertArgType>(_status)
9954  );
9955 
9956  this->logOut_out(
9957  0,
9958  _id,
9959  _logTime,
9961  _logBuff
9962  );
9963  }
9964 
9965  // Emit the event on the text log port
9966 #if FW_ENABLE_TEXT_LOGGING
9967  if (this->isConnected_logTextOut_OutputPort(0)) {
9968 #if FW_OBJECT_NAMES == 1
9969  const char* _formatString =
9970  "(%s) %s: TX %s transaction %" PRIu32 " completed, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
9971 #else
9972  const char* _formatString =
9973  "%s: TX %s transaction %" PRIu32 " completed, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
9974 #endif
9975 
9976  Fw::String cfdpClassStr;
9977  cfdpClass.toString(cfdpClassStr);
9978 
9979  Fw::TextLogString _logString;
9980  (void) _logString.format(
9981  _formatString,
9982 #if FW_OBJECT_NAMES == 1
9983  this->m_objName.toChar(),
9984 #endif
9985  "TxFileTransferCompleted ",
9986  cfdpClassStr.toChar(),
9987  seqNum,
9988  srcEid,
9989  srcFile.toChar(),
9990  destEid,
9991  destFile.toChar(),
9992  fileSize
9993  );
9994 
9995  this->logTextOut_out(
9996  0,
9997  _id,
9998  _logTime,
10000  _logString
10001  );
10002  }
10003 #endif
10004  }
10005 
10008  const Svc::Ccsds::Cfdp::Class& cfdpClass,
10009  U32 seqNum,
10010  U32 srcEid,
10011  const Fw::StringBase& srcFile,
10012  U32 destEid,
10013  const Fw::StringBase& destFile,
10014  U8 conditionCode
10015  ) const
10016  {
10017  // Get the time
10018  Fw::Time _logTime;
10019  if (this->isConnected_timeCaller_OutputPort(0)) {
10020  this->timeCaller_out(0, _logTime);
10021  }
10022 
10024 
10025  // Emit the event on the log port
10026  if (this->isConnected_logOut_OutputPort(0)) {
10027  Fw::LogBuffer _logBuff;
10029 
10030 #if FW_AMPCS_COMPATIBLE
10031  // Serialize the number of arguments
10032  _status = _logBuff.serializeFrom(static_cast<U8>(7));
10033  FW_ASSERT(
10034  _status == Fw::FW_SERIALIZE_OK,
10035  static_cast<FwAssertArgType>(_status)
10036  );
10037 #endif
10038 
10039 #if FW_AMPCS_COMPATIBLE
10040  // Serialize the argument size
10041  _status = _logBuff.serializeFrom(
10043  );
10044  FW_ASSERT(
10045  _status == Fw::FW_SERIALIZE_OK,
10046  static_cast<FwAssertArgType>(_status)
10047  );
10048 #endif
10049  _status = _logBuff.serializeFrom(cfdpClass);
10050  FW_ASSERT(
10051  _status == Fw::FW_SERIALIZE_OK,
10052  static_cast<FwAssertArgType>(_status)
10053  );
10054 
10055 #if FW_AMPCS_COMPATIBLE
10056  // Serialize the argument size
10057  _status = _logBuff.serializeFrom(
10058  static_cast<U8>(sizeof(U32))
10059  );
10060  FW_ASSERT(
10061  _status == Fw::FW_SERIALIZE_OK,
10062  static_cast<FwAssertArgType>(_status)
10063  );
10064 #endif
10065  _status = _logBuff.serializeFrom(seqNum);
10066  FW_ASSERT(
10067  _status == Fw::FW_SERIALIZE_OK,
10068  static_cast<FwAssertArgType>(_status)
10069  );
10070 
10071 #if FW_AMPCS_COMPATIBLE
10072  // Serialize the argument size
10073  _status = _logBuff.serializeFrom(
10074  static_cast<U8>(sizeof(U32))
10075  );
10076  FW_ASSERT(
10077  _status == Fw::FW_SERIALIZE_OK,
10078  static_cast<FwAssertArgType>(_status)
10079  );
10080 #endif
10081  _status = _logBuff.serializeFrom(srcEid);
10082  FW_ASSERT(
10083  _status == Fw::FW_SERIALIZE_OK,
10084  static_cast<FwAssertArgType>(_status)
10085  );
10086 
10087  _status = srcFile.serializeTo(
10088  _logBuff,
10089  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10090  );
10091  FW_ASSERT(
10092  _status == Fw::FW_SERIALIZE_OK,
10093  static_cast<FwAssertArgType>(_status)
10094  );
10095 
10096 #if FW_AMPCS_COMPATIBLE
10097  // Serialize the argument size
10098  _status = _logBuff.serializeFrom(
10099  static_cast<U8>(sizeof(U32))
10100  );
10101  FW_ASSERT(
10102  _status == Fw::FW_SERIALIZE_OK,
10103  static_cast<FwAssertArgType>(_status)
10104  );
10105 #endif
10106  _status = _logBuff.serializeFrom(destEid);
10107  FW_ASSERT(
10108  _status == Fw::FW_SERIALIZE_OK,
10109  static_cast<FwAssertArgType>(_status)
10110  );
10111 
10112  _status = destFile.serializeTo(
10113  _logBuff,
10114  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10115  );
10116  FW_ASSERT(
10117  _status == Fw::FW_SERIALIZE_OK,
10118  static_cast<FwAssertArgType>(_status)
10119  );
10120 
10121 #if FW_AMPCS_COMPATIBLE
10122  // Serialize the argument size
10123  _status = _logBuff.serializeFrom(
10124  static_cast<U8>(sizeof(U8))
10125  );
10126  FW_ASSERT(
10127  _status == Fw::FW_SERIALIZE_OK,
10128  static_cast<FwAssertArgType>(_status)
10129  );
10130 #endif
10131  _status = _logBuff.serializeFrom(conditionCode);
10132  FW_ASSERT(
10133  _status == Fw::FW_SERIALIZE_OK,
10134  static_cast<FwAssertArgType>(_status)
10135  );
10136 
10137  this->logOut_out(
10138  0,
10139  _id,
10140  _logTime,
10142  _logBuff
10143  );
10144  }
10145 
10146  // Emit the event on the text log port
10147 #if FW_ENABLE_TEXT_LOGGING
10148  if (this->isConnected_logTextOut_OutputPort(0)) {
10149 #if FW_OBJECT_NAMES == 1
10150  const char* _formatString =
10151  "(%s) %s: TX %s transaction %" PRIu32 " FAILED, %" PRIu32 ":%s -> %" PRIu32 ":%s, error code %" PRIu8 "";
10152 #else
10153  const char* _formatString =
10154  "%s: TX %s transaction %" PRIu32 " FAILED, %" PRIu32 ":%s -> %" PRIu32 ":%s, error code %" PRIu8 "";
10155 #endif
10156 
10157  Fw::String cfdpClassStr;
10158  cfdpClass.toString(cfdpClassStr);
10159 
10160  Fw::TextLogString _logString;
10161  (void) _logString.format(
10162  _formatString,
10163 #if FW_OBJECT_NAMES == 1
10164  this->m_objName.toChar(),
10165 #endif
10166  "TxFileTransferFailed ",
10167  cfdpClassStr.toChar(),
10168  seqNum,
10169  srcEid,
10170  srcFile.toChar(),
10171  destEid,
10172  destFile.toChar(),
10173  conditionCode
10174  );
10175 
10176  this->logTextOut_out(
10177  0,
10178  _id,
10179  _logTime,
10181  _logString
10182  );
10183  }
10184 #endif
10185  }
10186 
10189  const Svc::Ccsds::Cfdp::Class& cfdpClass,
10190  U32 seqNum,
10191  U32 srcEid,
10192  const Fw::StringBase& srcFile,
10193  U32 destEid,
10194  const Fw::StringBase& destFile,
10195  U32 fileSize
10196  ) const
10197  {
10198  // Get the time
10199  Fw::Time _logTime;
10200  if (this->isConnected_timeCaller_OutputPort(0)) {
10201  this->timeCaller_out(0, _logTime);
10202  }
10203 
10205 
10206  // Emit the event on the log port
10207  if (this->isConnected_logOut_OutputPort(0)) {
10208  Fw::LogBuffer _logBuff;
10210 
10211 #if FW_AMPCS_COMPATIBLE
10212  // Serialize the number of arguments
10213  _status = _logBuff.serializeFrom(static_cast<U8>(7));
10214  FW_ASSERT(
10215  _status == Fw::FW_SERIALIZE_OK,
10216  static_cast<FwAssertArgType>(_status)
10217  );
10218 #endif
10219 
10220 #if FW_AMPCS_COMPATIBLE
10221  // Serialize the argument size
10222  _status = _logBuff.serializeFrom(
10224  );
10225  FW_ASSERT(
10226  _status == Fw::FW_SERIALIZE_OK,
10227  static_cast<FwAssertArgType>(_status)
10228  );
10229 #endif
10230  _status = _logBuff.serializeFrom(cfdpClass);
10231  FW_ASSERT(
10232  _status == Fw::FW_SERIALIZE_OK,
10233  static_cast<FwAssertArgType>(_status)
10234  );
10235 
10236 #if FW_AMPCS_COMPATIBLE
10237  // Serialize the argument size
10238  _status = _logBuff.serializeFrom(
10239  static_cast<U8>(sizeof(U32))
10240  );
10241  FW_ASSERT(
10242  _status == Fw::FW_SERIALIZE_OK,
10243  static_cast<FwAssertArgType>(_status)
10244  );
10245 #endif
10246  _status = _logBuff.serializeFrom(seqNum);
10247  FW_ASSERT(
10248  _status == Fw::FW_SERIALIZE_OK,
10249  static_cast<FwAssertArgType>(_status)
10250  );
10251 
10252 #if FW_AMPCS_COMPATIBLE
10253  // Serialize the argument size
10254  _status = _logBuff.serializeFrom(
10255  static_cast<U8>(sizeof(U32))
10256  );
10257  FW_ASSERT(
10258  _status == Fw::FW_SERIALIZE_OK,
10259  static_cast<FwAssertArgType>(_status)
10260  );
10261 #endif
10262  _status = _logBuff.serializeFrom(srcEid);
10263  FW_ASSERT(
10264  _status == Fw::FW_SERIALIZE_OK,
10265  static_cast<FwAssertArgType>(_status)
10266  );
10267 
10268  _status = srcFile.serializeTo(
10269  _logBuff,
10270  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10271  );
10272  FW_ASSERT(
10273  _status == Fw::FW_SERIALIZE_OK,
10274  static_cast<FwAssertArgType>(_status)
10275  );
10276 
10277 #if FW_AMPCS_COMPATIBLE
10278  // Serialize the argument size
10279  _status = _logBuff.serializeFrom(
10280  static_cast<U8>(sizeof(U32))
10281  );
10282  FW_ASSERT(
10283  _status == Fw::FW_SERIALIZE_OK,
10284  static_cast<FwAssertArgType>(_status)
10285  );
10286 #endif
10287  _status = _logBuff.serializeFrom(destEid);
10288  FW_ASSERT(
10289  _status == Fw::FW_SERIALIZE_OK,
10290  static_cast<FwAssertArgType>(_status)
10291  );
10292 
10293  _status = destFile.serializeTo(
10294  _logBuff,
10295  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10296  );
10297  FW_ASSERT(
10298  _status == Fw::FW_SERIALIZE_OK,
10299  static_cast<FwAssertArgType>(_status)
10300  );
10301 
10302 #if FW_AMPCS_COMPATIBLE
10303  // Serialize the argument size
10304  _status = _logBuff.serializeFrom(
10305  static_cast<U8>(sizeof(U32))
10306  );
10307  FW_ASSERT(
10308  _status == Fw::FW_SERIALIZE_OK,
10309  static_cast<FwAssertArgType>(_status)
10310  );
10311 #endif
10312  _status = _logBuff.serializeFrom(fileSize);
10313  FW_ASSERT(
10314  _status == Fw::FW_SERIALIZE_OK,
10315  static_cast<FwAssertArgType>(_status)
10316  );
10317 
10318  this->logOut_out(
10319  0,
10320  _id,
10321  _logTime,
10323  _logBuff
10324  );
10325  }
10326 
10327  // Emit the event on the text log port
10328 #if FW_ENABLE_TEXT_LOGGING
10329  if (this->isConnected_logTextOut_OutputPort(0)) {
10330 #if FW_OBJECT_NAMES == 1
10331  const char* _formatString =
10332  "(%s) %s: RX %s transaction %" PRIu32 " completed, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
10333 #else
10334  const char* _formatString =
10335  "%s: RX %s transaction %" PRIu32 " completed, %" PRIu32 ":%s -> %" PRIu32 ":%s, %" PRIu32 " bytes";
10336 #endif
10337 
10338  Fw::String cfdpClassStr;
10339  cfdpClass.toString(cfdpClassStr);
10340 
10341  Fw::TextLogString _logString;
10342  (void) _logString.format(
10343  _formatString,
10344 #if FW_OBJECT_NAMES == 1
10345  this->m_objName.toChar(),
10346 #endif
10347  "RxFileTransferCompleted ",
10348  cfdpClassStr.toChar(),
10349  seqNum,
10350  srcEid,
10351  srcFile.toChar(),
10352  destEid,
10353  destFile.toChar(),
10354  fileSize
10355  );
10356 
10357  this->logTextOut_out(
10358  0,
10359  _id,
10360  _logTime,
10362  _logString
10363  );
10364  }
10365 #endif
10366  }
10367 
10370  const Svc::Ccsds::Cfdp::Class& cfdpClass,
10371  U32 seqNum,
10372  U32 srcEid,
10373  const Fw::StringBase& srcFile,
10374  U32 destEid,
10375  const Fw::StringBase& destFile,
10376  U8 conditionCode
10377  ) const
10378  {
10379  // Get the time
10380  Fw::Time _logTime;
10381  if (this->isConnected_timeCaller_OutputPort(0)) {
10382  this->timeCaller_out(0, _logTime);
10383  }
10384 
10386 
10387  // Emit the event on the log port
10388  if (this->isConnected_logOut_OutputPort(0)) {
10389  Fw::LogBuffer _logBuff;
10391 
10392 #if FW_AMPCS_COMPATIBLE
10393  // Serialize the number of arguments
10394  _status = _logBuff.serializeFrom(static_cast<U8>(7));
10395  FW_ASSERT(
10396  _status == Fw::FW_SERIALIZE_OK,
10397  static_cast<FwAssertArgType>(_status)
10398  );
10399 #endif
10400 
10401 #if FW_AMPCS_COMPATIBLE
10402  // Serialize the argument size
10403  _status = _logBuff.serializeFrom(
10405  );
10406  FW_ASSERT(
10407  _status == Fw::FW_SERIALIZE_OK,
10408  static_cast<FwAssertArgType>(_status)
10409  );
10410 #endif
10411  _status = _logBuff.serializeFrom(cfdpClass);
10412  FW_ASSERT(
10413  _status == Fw::FW_SERIALIZE_OK,
10414  static_cast<FwAssertArgType>(_status)
10415  );
10416 
10417 #if FW_AMPCS_COMPATIBLE
10418  // Serialize the argument size
10419  _status = _logBuff.serializeFrom(
10420  static_cast<U8>(sizeof(U32))
10421  );
10422  FW_ASSERT(
10423  _status == Fw::FW_SERIALIZE_OK,
10424  static_cast<FwAssertArgType>(_status)
10425  );
10426 #endif
10427  _status = _logBuff.serializeFrom(seqNum);
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(srcEid);
10444  FW_ASSERT(
10445  _status == Fw::FW_SERIALIZE_OK,
10446  static_cast<FwAssertArgType>(_status)
10447  );
10448 
10449  _status = srcFile.serializeTo(
10450  _logBuff,
10451  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10452  );
10453  FW_ASSERT(
10454  _status == Fw::FW_SERIALIZE_OK,
10455  static_cast<FwAssertArgType>(_status)
10456  );
10457 
10458 #if FW_AMPCS_COMPATIBLE
10459  // Serialize the argument size
10460  _status = _logBuff.serializeFrom(
10461  static_cast<U8>(sizeof(U32))
10462  );
10463  FW_ASSERT(
10464  _status == Fw::FW_SERIALIZE_OK,
10465  static_cast<FwAssertArgType>(_status)
10466  );
10467 #endif
10468  _status = _logBuff.serializeFrom(destEid);
10469  FW_ASSERT(
10470  _status == Fw::FW_SERIALIZE_OK,
10471  static_cast<FwAssertArgType>(_status)
10472  );
10473 
10474  _status = destFile.serializeTo(
10475  _logBuff,
10476  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10477  );
10478  FW_ASSERT(
10479  _status == Fw::FW_SERIALIZE_OK,
10480  static_cast<FwAssertArgType>(_status)
10481  );
10482 
10483 #if FW_AMPCS_COMPATIBLE
10484  // Serialize the argument size
10485  _status = _logBuff.serializeFrom(
10486  static_cast<U8>(sizeof(U8))
10487  );
10488  FW_ASSERT(
10489  _status == Fw::FW_SERIALIZE_OK,
10490  static_cast<FwAssertArgType>(_status)
10491  );
10492 #endif
10493  _status = _logBuff.serializeFrom(conditionCode);
10494  FW_ASSERT(
10495  _status == Fw::FW_SERIALIZE_OK,
10496  static_cast<FwAssertArgType>(_status)
10497  );
10498 
10499  this->logOut_out(
10500  0,
10501  _id,
10502  _logTime,
10504  _logBuff
10505  );
10506  }
10507 
10508  // Emit the event on the text log port
10509 #if FW_ENABLE_TEXT_LOGGING
10510  if (this->isConnected_logTextOut_OutputPort(0)) {
10511 #if FW_OBJECT_NAMES == 1
10512  const char* _formatString =
10513  "(%s) %s: RX %s transaction %" PRIu32 " FAILED, %" PRIu32 ":%s -> %" PRIu32 ":%s, error code %" PRIu8 "";
10514 #else
10515  const char* _formatString =
10516  "%s: RX %s transaction %" PRIu32 " FAILED, %" PRIu32 ":%s -> %" PRIu32 ":%s, error code %" PRIu8 "";
10517 #endif
10518 
10519  Fw::String cfdpClassStr;
10520  cfdpClass.toString(cfdpClassStr);
10521 
10522  Fw::TextLogString _logString;
10523  (void) _logString.format(
10524  _formatString,
10525 #if FW_OBJECT_NAMES == 1
10526  this->m_objName.toChar(),
10527 #endif
10528  "RxFileTransferFailed ",
10529  cfdpClassStr.toChar(),
10530  seqNum,
10531  srcEid,
10532  srcFile.toChar(),
10533  destEid,
10534  destFile.toChar(),
10535  conditionCode
10536  );
10537 
10538  this->logTextOut_out(
10539  0,
10540  _id,
10541  _logTime,
10543  _logString
10544  );
10545  }
10546 #endif
10547  }
10548 
10551  const Fw::StringBase& srcFile,
10552  const Fw::StringBase& destFile,
10553  U32 transactionSeq
10554  ) const
10555  {
10556  // Get the time
10557  Fw::Time _logTime;
10558  if (this->isConnected_timeCaller_OutputPort(0)) {
10559  this->timeCaller_out(0, _logTime);
10560  }
10561 
10562  const FwEventIdType _id = this->getIdBase() + EVENTID_METADATARECEIVED;
10563 
10564  // Emit the event on the log port
10565  if (this->isConnected_logOut_OutputPort(0)) {
10566  Fw::LogBuffer _logBuff;
10568 
10569 #if FW_AMPCS_COMPATIBLE
10570  // Serialize the number of arguments
10571  _status = _logBuff.serializeFrom(static_cast<U8>(3));
10572  FW_ASSERT(
10573  _status == Fw::FW_SERIALIZE_OK,
10574  static_cast<FwAssertArgType>(_status)
10575  );
10576 #endif
10577 
10578  _status = srcFile.serializeTo(
10579  _logBuff,
10580  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10581  );
10582  FW_ASSERT(
10583  _status == Fw::FW_SERIALIZE_OK,
10584  static_cast<FwAssertArgType>(_status)
10585  );
10586 
10587  _status = destFile.serializeTo(
10588  _logBuff,
10589  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
10590  );
10591  FW_ASSERT(
10592  _status == Fw::FW_SERIALIZE_OK,
10593  static_cast<FwAssertArgType>(_status)
10594  );
10595 
10596 #if FW_AMPCS_COMPATIBLE
10597  // Serialize the argument size
10598  _status = _logBuff.serializeFrom(
10599  static_cast<U8>(sizeof(U32))
10600  );
10601  FW_ASSERT(
10602  _status == Fw::FW_SERIALIZE_OK,
10603  static_cast<FwAssertArgType>(_status)
10604  );
10605 #endif
10606  _status = _logBuff.serializeFrom(transactionSeq);
10607  FW_ASSERT(
10608  _status == Fw::FW_SERIALIZE_OK,
10609  static_cast<FwAssertArgType>(_status)
10610  );
10611 
10612  this->logOut_out(
10613  0,
10614  _id,
10615  _logTime,
10617  _logBuff
10618  );
10619  }
10620 
10621  // Emit the event on the text log port
10622 #if FW_ENABLE_TEXT_LOGGING
10623  if (this->isConnected_logTextOut_OutputPort(0)) {
10624 #if FW_OBJECT_NAMES == 1
10625  const char* _formatString =
10626  "(%s) %s: Metadata received for source: %s, dest: %s (transaction %" PRIu32 ")";
10627 #else
10628  const char* _formatString =
10629  "%s: Metadata received for source: %s, dest: %s (transaction %" PRIu32 ")";
10630 #endif
10631 
10632  Fw::TextLogString _logString;
10633  (void) _logString.format(
10634  _formatString,
10635 #if FW_OBJECT_NAMES == 1
10636  this->m_objName.toChar(),
10637 #endif
10638  "MetadataReceived ",
10639  srcFile.toChar(),
10640  destFile.toChar(),
10641  transactionSeq
10642  );
10643 
10644  this->logTextOut_out(
10645  0,
10646  _id,
10647  _logTime,
10649  _logString
10650  );
10651  }
10652 #endif
10653  }
10654 
10657  {
10658  // Get the time
10659  Fw::Time _logTime;
10660  if (this->isConnected_timeCaller_OutputPort(0)) {
10661  this->timeCaller_out(0, _logTime);
10662  }
10663 
10665 
10666  // Emit the event on the log port
10667  if (this->isConnected_logOut_OutputPort(0)) {
10668  Fw::LogBuffer _logBuff;
10669 
10670 #if FW_AMPCS_COMPATIBLE
10672  // Serialize the number of arguments
10673  _status = _logBuff.serializeFrom(static_cast<U8>(0));
10674  FW_ASSERT(
10675  _status == Fw::FW_SERIALIZE_OK,
10676  static_cast<FwAssertArgType>(_status)
10677  );
10678 #endif
10679 
10680  this->logOut_out(
10681  0,
10682  _id,
10683  _logTime,
10685  _logBuff
10686  );
10687  }
10688 
10689  // Emit the event on the text log port
10690 #if FW_ENABLE_TEXT_LOGGING
10691  if (this->isConnected_logTextOut_OutputPort(0)) {
10692 #if FW_OBJECT_NAMES == 1
10693  const char* _formatString =
10694  "(%s) %s: File data PDU with unsupported segment metadata received";
10695 #else
10696  const char* _formatString =
10697  "%s: File data PDU with unsupported segment metadata received";
10698 #endif
10699 
10700  Fw::TextLogString _logString;
10701  (void) _logString.format(
10702  _formatString,
10703 #if FW_OBJECT_NAMES == 1
10704  this->m_objName.toChar(),
10705 #endif
10706  "FileDataSegmentMetadata "
10707  );
10708 
10709  this->logTextOut_out(
10710  0,
10711  _id,
10712  _logTime,
10714  _logString
10715  );
10716  }
10717 #endif
10718  }
10719 
10721  log_WARNING_LO_ChunklistUnavailable(U32 transactionSeq) const
10722  {
10723  // Get the time
10724  Fw::Time _logTime;
10725  if (this->isConnected_timeCaller_OutputPort(0)) {
10726  this->timeCaller_out(0, _logTime);
10727  }
10728 
10730 
10731  // Emit the event on the log port
10732  if (this->isConnected_logOut_OutputPort(0)) {
10733  Fw::LogBuffer _logBuff;
10735 
10736 #if FW_AMPCS_COMPATIBLE
10737  // Serialize the number of arguments
10738  _status = _logBuff.serializeFrom(static_cast<U8>(1));
10739  FW_ASSERT(
10740  _status == Fw::FW_SERIALIZE_OK,
10741  static_cast<FwAssertArgType>(_status)
10742  );
10743 #endif
10744 
10745 #if FW_AMPCS_COMPATIBLE
10746  // Serialize the argument size
10747  _status = _logBuff.serializeFrom(
10748  static_cast<U8>(sizeof(U32))
10749  );
10750  FW_ASSERT(
10751  _status == Fw::FW_SERIALIZE_OK,
10752  static_cast<FwAssertArgType>(_status)
10753  );
10754 #endif
10755  _status = _logBuff.serializeFrom(transactionSeq);
10756  FW_ASSERT(
10757  _status == Fw::FW_SERIALIZE_OK,
10758  static_cast<FwAssertArgType>(_status)
10759  );
10760 
10761  this->logOut_out(
10762  0,
10763  _id,
10764  _logTime,
10766  _logBuff
10767  );
10768  }
10769 
10770  // Emit the event on the text log port
10771 #if FW_ENABLE_TEXT_LOGGING
10772  if (this->isConnected_logTextOut_OutputPort(0)) {
10773 #if FW_OBJECT_NAMES == 1
10774  const char* _formatString =
10775  "(%s) %s: Cannot get chunklist, abandoning transaction %" PRIu32 "";
10776 #else
10777  const char* _formatString =
10778  "%s: Cannot get chunklist, abandoning transaction %" PRIu32 "";
10779 #endif
10780 
10781  Fw::TextLogString _logString;
10782  (void) _logString.format(
10783  _formatString,
10784 #if FW_OBJECT_NAMES == 1
10785  this->m_objName.toChar(),
10786 #endif
10787  "ChunklistUnavailable ",
10788  transactionSeq
10789  );
10790 
10791  this->logTextOut_out(
10792  0,
10793  _id,
10794  _logTime,
10796  _logString
10797  );
10798  }
10799 #endif
10800  }
10801 
10804  {
10805  // Get the time
10806  Fw::Time _logTime;
10807  if (this->isConnected_timeCaller_OutputPort(0)) {
10808  this->timeCaller_out(0, _logTime);
10809  }
10810 
10812 
10813  // Emit the event on the log port
10814  if (this->isConnected_logOut_OutputPort(0)) {
10815  Fw::LogBuffer _logBuff;
10816 
10817 #if FW_AMPCS_COMPATIBLE
10819  // Serialize the number of arguments
10820  _status = _logBuff.serializeFrom(static_cast<U8>(0));
10821  FW_ASSERT(
10822  _status == Fw::FW_SERIALIZE_OK,
10823  static_cast<FwAssertArgType>(_status)
10824  );
10825 #endif
10826 
10827  this->logOut_out(
10828  0,
10829  _id,
10830  _logTime,
10832  _logBuff
10833  );
10834  }
10835 
10836  // Emit the event on the text log port
10837 #if FW_ENABLE_TEXT_LOGGING
10838  if (this->isConnected_logTextOut_OutputPort(0)) {
10839 #if FW_OBJECT_NAMES == 1
10840  const char* _formatString =
10841  "(%s) %s: Unhandled PDU type received in idle state";
10842 #else
10843  const char* _formatString =
10844  "%s: Unhandled PDU type received in idle state";
10845 #endif
10846 
10847  Fw::TextLogString _logString;
10848  (void) _logString.format(
10849  _formatString,
10850 #if FW_OBJECT_NAMES == 1
10851  this->m_objName.toChar(),
10852 #endif
10853  "UnhandledPduInIdleState "
10854  );
10855 
10856  this->logTextOut_out(
10857  0,
10858  _id,
10859  _logTime,
10861  _logString
10862  );
10863  }
10864 #endif
10865  }
10866 
10869  U32 srcEid,
10870  U32 transactionSeq
10871  ) const
10872  {
10873  // Get the time
10874  Fw::Time _logTime;
10875  if (this->isConnected_timeCaller_OutputPort(0)) {
10876  this->timeCaller_out(0, _logTime);
10877  }
10878 
10880 
10881  // Emit the event on the log port
10882  if (this->isConnected_logOut_OutputPort(0)) {
10883  Fw::LogBuffer _logBuff;
10885 
10886 #if FW_AMPCS_COMPATIBLE
10887  // Serialize the number of arguments
10888  _status = _logBuff.serializeFrom(static_cast<U8>(2));
10889  FW_ASSERT(
10890  _status == Fw::FW_SERIALIZE_OK,
10891  static_cast<FwAssertArgType>(_status)
10892  );
10893 #endif
10894 
10895 #if FW_AMPCS_COMPATIBLE
10896  // Serialize the argument size
10897  _status = _logBuff.serializeFrom(
10898  static_cast<U8>(sizeof(U32))
10899  );
10900  FW_ASSERT(
10901  _status == Fw::FW_SERIALIZE_OK,
10902  static_cast<FwAssertArgType>(_status)
10903  );
10904 #endif
10905  _status = _logBuff.serializeFrom(srcEid);
10906  FW_ASSERT(
10907  _status == Fw::FW_SERIALIZE_OK,
10908  static_cast<FwAssertArgType>(_status)
10909  );
10910 
10911 #if FW_AMPCS_COMPATIBLE
10912  // Serialize the argument size
10913  _status = _logBuff.serializeFrom(
10914  static_cast<U8>(sizeof(U32))
10915  );
10916  FW_ASSERT(
10917  _status == Fw::FW_SERIALIZE_OK,
10918  static_cast<FwAssertArgType>(_status)
10919  );
10920 #endif
10921  _status = _logBuff.serializeFrom(transactionSeq);
10922  FW_ASSERT(
10923  _status == Fw::FW_SERIALIZE_OK,
10924  static_cast<FwAssertArgType>(_status)
10925  );
10926 
10927  this->logOut_out(
10928  0,
10929  _id,
10930  _logTime,
10932  _logBuff
10933  );
10934  }
10935 
10936  // Emit the event on the text log port
10937 #if FW_ENABLE_TEXT_LOGGING
10938  if (this->isConnected_logTextOut_OutputPort(0)) {
10939 #if FW_OBJECT_NAMES == 1
10940  const char* _formatString =
10941  "(%s) %s: Dropping packet from %" PRIu32 " transaction %" PRIu32 " due to max RX transactions reached";
10942 #else
10943  const char* _formatString =
10944  "%s: Dropping packet from %" PRIu32 " transaction %" PRIu32 " due to max RX transactions reached";
10945 #endif
10946 
10947  Fw::TextLogString _logString;
10948  (void) _logString.format(
10949  _formatString,
10950 #if FW_OBJECT_NAMES == 1
10951  this->m_objName.toChar(),
10952 #endif
10953  "RxTransactionLimitReached ",
10954  srcEid,
10955  transactionSeq
10956  );
10957 
10958  this->logTextOut_out(
10959  0,
10960  _id,
10961  _logTime,
10963  _logString
10964  );
10965  }
10966 #endif
10967  }
10968 
10971  {
10972  // Get the time
10973  Fw::Time _logTime;
10974  if (this->isConnected_timeCaller_OutputPort(0)) {
10975  this->timeCaller_out(0, _logTime);
10976  }
10977 
10979 
10980  // Emit the event on the log port
10981  if (this->isConnected_logOut_OutputPort(0)) {
10982  Fw::LogBuffer _logBuff;
10984 
10985 #if FW_AMPCS_COMPATIBLE
10986  // Serialize the number of arguments
10987  _status = _logBuff.serializeFrom(static_cast<U8>(1));
10988  FW_ASSERT(
10989  _status == Fw::FW_SERIALIZE_OK,
10990  static_cast<FwAssertArgType>(_status)
10991  );
10992 #endif
10993 
10994 #if FW_AMPCS_COMPATIBLE
10995  // Serialize the argument size
10996  _status = _logBuff.serializeFrom(
10997  static_cast<U8>(sizeof(U32))
10998  );
10999  FW_ASSERT(
11000  _status == Fw::FW_SERIALIZE_OK,
11001  static_cast<FwAssertArgType>(_status)
11002  );
11003 #endif
11004  _status = _logBuff.serializeFrom(destEid);
11005  FW_ASSERT(
11006  _status == Fw::FW_SERIALIZE_OK,
11007  static_cast<FwAssertArgType>(_status)
11008  );
11009 
11010  this->logOut_out(
11011  0,
11012  _id,
11013  _logTime,
11015  _logBuff
11016  );
11017  }
11018 
11019  // Emit the event on the text log port
11020 #if FW_ENABLE_TEXT_LOGGING
11021  if (this->isConnected_logTextOut_OutputPort(0)) {
11022 #if FW_OBJECT_NAMES == 1
11023  const char* _formatString =
11024  "(%s) %s: Dropping packet for invalid destination EID %" PRIu32 "";
11025 #else
11026  const char* _formatString =
11027  "%s: Dropping packet for invalid destination EID %" PRIu32 "";
11028 #endif
11029 
11030  Fw::TextLogString _logString;
11031  (void) _logString.format(
11032  _formatString,
11033 #if FW_OBJECT_NAMES == 1
11034  this->m_objName.toChar(),
11035 #endif
11036  "InvalidDestinationEid ",
11037  destEid
11038  );
11039 
11040  this->logTextOut_out(
11041  0,
11042  _id,
11043  _logTime,
11045  _logString
11046  );
11047  }
11048 #endif
11049  }
11050 
11053  {
11054  // Get the time
11055  Fw::Time _logTime;
11056  if (this->isConnected_timeCaller_OutputPort(0)) {
11057  this->timeCaller_out(0, _logTime);
11058  }
11059 
11061 
11062  // Emit the event on the log port
11063  if (this->isConnected_logOut_OutputPort(0)) {
11064  Fw::LogBuffer _logBuff;
11065 
11066 #if FW_AMPCS_COMPATIBLE
11068  // Serialize the number of arguments
11069  _status = _logBuff.serializeFrom(static_cast<U8>(0));
11070  FW_ASSERT(
11071  _status == Fw::FW_SERIALIZE_OK,
11072  static_cast<FwAssertArgType>(_status)
11073  );
11074 #endif
11075 
11076  this->logOut_out(
11077  0,
11078  _id,
11079  _logTime,
11081  _logBuff
11082  );
11083  }
11084 
11085  // Emit the event on the text log port
11086 #if FW_ENABLE_TEXT_LOGGING
11087  if (this->isConnected_logTextOut_OutputPort(0)) {
11088 #if FW_OBJECT_NAMES == 1
11089  const char* _formatString =
11090  "(%s) %s: Maximum number of commanded TX files reached";
11091 #else
11092  const char* _formatString =
11093  "%s: Maximum number of commanded TX files reached";
11094 #endif
11095 
11096  Fw::TextLogString _logString;
11097  (void) _logString.format(
11098  _formatString,
11099 #if FW_OBJECT_NAMES == 1
11100  this->m_objName.toChar(),
11101 #endif
11102  "MaxTxTransactionsReached "
11103  );
11104 
11105  this->logTextOut_out(
11106  0,
11107  _id,
11108  _logTime,
11110  _logString
11111  );
11112  }
11113 #endif
11114  }
11115 
11118  const Fw::StringBase& directory,
11119  I32 status
11120  ) const
11121  {
11122  // Get the time
11123  Fw::Time _logTime;
11124  if (this->isConnected_timeCaller_OutputPort(0)) {
11125  this->timeCaller_out(0, _logTime);
11126  }
11127 
11129 
11130  // Emit the event on the log port
11131  if (this->isConnected_logOut_OutputPort(0)) {
11132  Fw::LogBuffer _logBuff;
11134 
11135 #if FW_AMPCS_COMPATIBLE
11136  // Serialize the number of arguments
11137  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11138  FW_ASSERT(
11139  _status == Fw::FW_SERIALIZE_OK,
11140  static_cast<FwAssertArgType>(_status)
11141  );
11142 #endif
11143 
11144  _status = directory.serializeTo(
11145  _logBuff,
11146  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
11147  );
11148  FW_ASSERT(
11149  _status == Fw::FW_SERIALIZE_OK,
11150  static_cast<FwAssertArgType>(_status)
11151  );
11152 
11153 #if FW_AMPCS_COMPATIBLE
11154  // Serialize the argument size
11155  _status = _logBuff.serializeFrom(
11156  static_cast<U8>(sizeof(I32))
11157  );
11158  FW_ASSERT(
11159  _status == Fw::FW_SERIALIZE_OK,
11160  static_cast<FwAssertArgType>(_status)
11161  );
11162 #endif
11163  _status = _logBuff.serializeFrom(status);
11164  FW_ASSERT(
11165  _status == Fw::FW_SERIALIZE_OK,
11166  static_cast<FwAssertArgType>(_status)
11167  );
11168 
11169  this->logOut_out(
11170  0,
11171  _id,
11172  _logTime,
11174  _logBuff
11175  );
11176  }
11177 
11178  // Emit the event on the text log port
11179 #if FW_ENABLE_TEXT_LOGGING
11180  if (this->isConnected_logTextOut_OutputPort(0)) {
11181 #if FW_OBJECT_NAMES == 1
11182  const char* _formatString =
11183  "(%s) %s: Failed to open playback directory %s, error=%" PRIi32 "";
11184 #else
11185  const char* _formatString =
11186  "%s: Failed to open playback directory %s, error=%" PRIi32 "";
11187 #endif
11188 
11189  Fw::TextLogString _logString;
11190  (void) _logString.format(
11191  _formatString,
11192 #if FW_OBJECT_NAMES == 1
11193  this->m_objName.toChar(),
11194 #endif
11195  "PlaybackDirOpenFailed ",
11196  directory.toChar(),
11197  status
11198  );
11199 
11200  this->logTextOut_out(
11201  0,
11202  _id,
11203  _logTime,
11205  _logString
11206  );
11207  }
11208 #endif
11209  }
11210 
11213  {
11214  // Get the time
11215  Fw::Time _logTime;
11216  if (this->isConnected_timeCaller_OutputPort(0)) {
11217  this->timeCaller_out(0, _logTime);
11218  }
11219 
11221 
11222  // Emit the event on the log port
11223  if (this->isConnected_logOut_OutputPort(0)) {
11224  Fw::LogBuffer _logBuff;
11225 
11226 #if FW_AMPCS_COMPATIBLE
11228  // Serialize the number of arguments
11229  _status = _logBuff.serializeFrom(static_cast<U8>(0));
11230  FW_ASSERT(
11231  _status == Fw::FW_SERIALIZE_OK,
11232  static_cast<FwAssertArgType>(_status)
11233  );
11234 #endif
11235 
11236  this->logOut_out(
11237  0,
11238  _id,
11239  _logTime,
11241  _logBuff
11242  );
11243  }
11244 
11245  // Emit the event on the text log port
11246 #if FW_ENABLE_TEXT_LOGGING
11247  if (this->isConnected_logTextOut_OutputPort(0)) {
11248 #if FW_OBJECT_NAMES == 1
11249  const char* _formatString =
11250  "(%s) %s: No playback directory slot available";
11251 #else
11252  const char* _formatString =
11253  "%s: No playback directory slot available";
11254 #endif
11255 
11256  Fw::TextLogString _logString;
11257  (void) _logString.format(
11258  _formatString,
11259 #if FW_OBJECT_NAMES == 1
11260  this->m_objName.toChar(),
11261 #endif
11262  "PlaybackDirSlotUnavailable "
11263  );
11264 
11265  this->logTextOut_out(
11266  0,
11267  _id,
11268  _logTime,
11270  _logString
11271  );
11272  }
11273 #endif
11274  }
11275 
11278  U8 channelId,
11279  U32 transactionSeq
11280  ) const
11281  {
11282  // Get the time
11283  Fw::Time _logTime;
11284  if (this->isConnected_timeCaller_OutputPort(0)) {
11285  this->timeCaller_out(0, _logTime);
11286  }
11287 
11289 
11290  // Emit the event on the log port
11291  if (this->isConnected_logOut_OutputPort(0)) {
11292  Fw::LogBuffer _logBuff;
11294 
11295 #if FW_AMPCS_COMPATIBLE
11296  // Serialize the number of arguments
11297  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11298  FW_ASSERT(
11299  _status == Fw::FW_SERIALIZE_OK,
11300  static_cast<FwAssertArgType>(_status)
11301  );
11302 #endif
11303 
11304 #if FW_AMPCS_COMPATIBLE
11305  // Serialize the argument size
11306  _status = _logBuff.serializeFrom(
11307  static_cast<U8>(sizeof(U8))
11308  );
11309  FW_ASSERT(
11310  _status == Fw::FW_SERIALIZE_OK,
11311  static_cast<FwAssertArgType>(_status)
11312  );
11313 #endif
11314  _status = _logBuff.serializeFrom(channelId);
11315  FW_ASSERT(
11316  _status == Fw::FW_SERIALIZE_OK,
11317  static_cast<FwAssertArgType>(_status)
11318  );
11319 
11320 #if FW_AMPCS_COMPATIBLE
11321  // Serialize the argument size
11322  _status = _logBuff.serializeFrom(
11323  static_cast<U8>(sizeof(U32))
11324  );
11325  FW_ASSERT(
11326  _status == Fw::FW_SERIALIZE_OK,
11327  static_cast<FwAssertArgType>(_status)
11328  );
11329 #endif
11330  _status = _logBuff.serializeFrom(transactionSeq);
11331  FW_ASSERT(
11332  _status == Fw::FW_SERIALIZE_OK,
11333  static_cast<FwAssertArgType>(_status)
11334  );
11335 
11336  this->logOut_out(
11337  0,
11338  _id,
11339  _logTime,
11341  _logBuff
11342  );
11343  }
11344 
11345  // Emit the event on the text log port
11346 #if FW_ENABLE_TEXT_LOGGING
11347  if (this->isConnected_logTextOut_OutputPort(0)) {
11348 #if FW_OBJECT_NAMES == 1
11349  const char* _formatString =
11350  "(%s) %s: Closed dangling file handle for channel %" PRIu8 " transaction %" PRIu32 "";
11351 #else
11352  const char* _formatString =
11353  "%s: Closed dangling file handle for channel %" PRIu8 " transaction %" PRIu32 "";
11354 #endif
11355 
11356  Fw::TextLogString _logString;
11357  (void) _logString.format(
11358  _formatString,
11359 #if FW_OBJECT_NAMES == 1
11360  this->m_objName.toChar(),
11361 #endif
11362  "DanglingFileHandleClosed ",
11363  channelId,
11364  transactionSeq
11365  );
11366 
11367  this->logTextOut_out(
11368  0,
11369  _id,
11370  _logTime,
11372  _logString
11373  );
11374  }
11375 #endif
11376  }
11377 
11380  const Fw::StringBase& directory,
11381  I32 status
11382  ) const
11383  {
11384  // Get the time
11385  Fw::Time _logTime;
11386  if (this->isConnected_timeCaller_OutputPort(0)) {
11387  this->timeCaller_out(0, _logTime);
11388  }
11389 
11391 
11392  // Emit the event on the log port
11393  if (this->isConnected_logOut_OutputPort(0)) {
11394  Fw::LogBuffer _logBuff;
11396 
11397 #if FW_AMPCS_COMPATIBLE
11398  // Serialize the number of arguments
11399  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11400  FW_ASSERT(
11401  _status == Fw::FW_SERIALIZE_OK,
11402  static_cast<FwAssertArgType>(_status)
11403  );
11404 #endif
11405 
11406  _status = directory.serializeTo(
11407  _logBuff,
11408  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
11409  );
11410  FW_ASSERT(
11411  _status == Fw::FW_SERIALIZE_OK,
11412  static_cast<FwAssertArgType>(_status)
11413  );
11414 
11415 #if FW_AMPCS_COMPATIBLE
11416  // Serialize the argument size
11417  _status = _logBuff.serializeFrom(
11418  static_cast<U8>(sizeof(I32))
11419  );
11420  FW_ASSERT(
11421  _status == Fw::FW_SERIALIZE_OK,
11422  static_cast<FwAssertArgType>(_status)
11423  );
11424 #endif
11425  _status = _logBuff.serializeFrom(status);
11426  FW_ASSERT(
11427  _status == Fw::FW_SERIALIZE_OK,
11428  static_cast<FwAssertArgType>(_status)
11429  );
11430 
11431  this->logOut_out(
11432  0,
11433  _id,
11434  _logTime,
11436  _logBuff
11437  );
11438  }
11439 
11440  // Emit the event on the text log port
11441 #if FW_ENABLE_TEXT_LOGGING
11442  if (this->isConnected_logTextOut_OutputPort(0)) {
11443 #if FW_OBJECT_NAMES == 1
11444  const char* _formatString =
11445  "(%s) %s: Failed to read from playback directory %s, error=%" PRIi32 "";
11446 #else
11447  const char* _formatString =
11448  "%s: Failed to read from playback directory %s, error=%" PRIi32 "";
11449 #endif
11450 
11451  Fw::TextLogString _logString;
11452  (void) _logString.format(
11453  _formatString,
11454 #if FW_OBJECT_NAMES == 1
11455  this->m_objName.toChar(),
11456 #endif
11457  "PlaybackDirReadFailed ",
11458  directory.toChar(),
11459  status
11460  );
11461 
11462  this->logTextOut_out(
11463  0,
11464  _id,
11465  _logTime,
11467  _logString
11468  );
11469  }
11470 #endif
11471  }
11472 
11475  FwSizeType length,
11476  FwSizeType maxLength,
11477  const Fw::StringBase& directory,
11478  const Fw::StringBase& entry
11479  ) const
11480  {
11481  // Get the time
11482  Fw::Time _logTime;
11483  if (this->isConnected_timeCaller_OutputPort(0)) {
11484  this->timeCaller_out(0, _logTime);
11485  }
11486 
11488 
11489  // Emit the event on the log port
11490  if (this->isConnected_logOut_OutputPort(0)) {
11491  Fw::LogBuffer _logBuff;
11493 
11494 #if FW_AMPCS_COMPATIBLE
11495  // Serialize the number of arguments
11496  _status = _logBuff.serializeFrom(static_cast<U8>(4));
11497  FW_ASSERT(
11498  _status == Fw::FW_SERIALIZE_OK,
11499  static_cast<FwAssertArgType>(_status)
11500  );
11501 #endif
11502 
11503 #if FW_AMPCS_COMPATIBLE
11504  // Serialize the argument size
11505  _status = _logBuff.serializeFrom(
11506  static_cast<U8>(sizeof(FwSizeType))
11507  );
11508  FW_ASSERT(
11509  _status == Fw::FW_SERIALIZE_OK,
11510  static_cast<FwAssertArgType>(_status)
11511  );
11512 #endif
11513  _status = _logBuff.serializeFrom(length);
11514  FW_ASSERT(
11515  _status == Fw::FW_SERIALIZE_OK,
11516  static_cast<FwAssertArgType>(_status)
11517  );
11518 
11519 #if FW_AMPCS_COMPATIBLE
11520  // Serialize the argument size
11521  _status = _logBuff.serializeFrom(
11522  static_cast<U8>(sizeof(FwSizeType))
11523  );
11524  FW_ASSERT(
11525  _status == Fw::FW_SERIALIZE_OK,
11526  static_cast<FwAssertArgType>(_status)
11527  );
11528 #endif
11529  _status = _logBuff.serializeFrom(maxLength);
11530  FW_ASSERT(
11531  _status == Fw::FW_SERIALIZE_OK,
11532  static_cast<FwAssertArgType>(_status)
11533  );
11534 
11535  _status = directory.serializeTo(
11536  _logBuff,
11537  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
11538  );
11539  FW_ASSERT(
11540  _status == Fw::FW_SERIALIZE_OK,
11541  static_cast<FwAssertArgType>(_status)
11542  );
11543 
11544  _status = entry.serializeTo(
11545  _logBuff,
11546  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
11547  );
11548  FW_ASSERT(
11549  _status == Fw::FW_SERIALIZE_OK,
11550  static_cast<FwAssertArgType>(_status)
11551  );
11552 
11553  this->logOut_out(
11554  0,
11555  _id,
11556  _logTime,
11558  _logBuff
11559  );
11560  }
11561 
11562  // Emit the event on the text log port
11563 #if FW_ENABLE_TEXT_LOGGING
11564  if (this->isConnected_logTextOut_OutputPort(0)) {
11565 #if FW_OBJECT_NAMES == 1
11566  const char* _formatString =
11567  "(%s) %s: Source path length %" PRIu64 " exceeds maximum %" PRIu64 ", skipped playback entry %s/%s";
11568 #else
11569  const char* _formatString =
11570  "%s: Source path length %" PRIu64 " exceeds maximum %" PRIu64 ", skipped playback entry %s/%s";
11571 #endif
11572 
11573  Fw::TextLogString _logString;
11574  (void) _logString.format(
11575  _formatString,
11576 #if FW_OBJECT_NAMES == 1
11577  this->m_objName.toChar(),
11578 #endif
11579  "PlaybackSourcePathTooLong ",
11580  length,
11581  maxLength,
11582  directory.toChar(),
11583  entry.toChar()
11584  );
11585 
11586  this->logTextOut_out(
11587  0,
11588  _id,
11589  _logTime,
11591  _logString
11592  );
11593  }
11594 #endif
11595  }
11596 
11599  FwSizeType length,
11600  FwSizeType maxLength,
11601  const Fw::StringBase& directory,
11602  const Fw::StringBase& entry
11603  ) const
11604  {
11605  // Get the time
11606  Fw::Time _logTime;
11607  if (this->isConnected_timeCaller_OutputPort(0)) {
11608  this->timeCaller_out(0, _logTime);
11609  }
11610 
11612 
11613  // Emit the event on the log port
11614  if (this->isConnected_logOut_OutputPort(0)) {
11615  Fw::LogBuffer _logBuff;
11617 
11618 #if FW_AMPCS_COMPATIBLE
11619  // Serialize the number of arguments
11620  _status = _logBuff.serializeFrom(static_cast<U8>(4));
11621  FW_ASSERT(
11622  _status == Fw::FW_SERIALIZE_OK,
11623  static_cast<FwAssertArgType>(_status)
11624  );
11625 #endif
11626 
11627 #if FW_AMPCS_COMPATIBLE
11628  // Serialize the argument size
11629  _status = _logBuff.serializeFrom(
11630  static_cast<U8>(sizeof(FwSizeType))
11631  );
11632  FW_ASSERT(
11633  _status == Fw::FW_SERIALIZE_OK,
11634  static_cast<FwAssertArgType>(_status)
11635  );
11636 #endif
11637  _status = _logBuff.serializeFrom(length);
11638  FW_ASSERT(
11639  _status == Fw::FW_SERIALIZE_OK,
11640  static_cast<FwAssertArgType>(_status)
11641  );
11642 
11643 #if FW_AMPCS_COMPATIBLE
11644  // Serialize the argument size
11645  _status = _logBuff.serializeFrom(
11646  static_cast<U8>(sizeof(FwSizeType))
11647  );
11648  FW_ASSERT(
11649  _status == Fw::FW_SERIALIZE_OK,
11650  static_cast<FwAssertArgType>(_status)
11651  );
11652 #endif
11653  _status = _logBuff.serializeFrom(maxLength);
11654  FW_ASSERT(
11655  _status == Fw::FW_SERIALIZE_OK,
11656  static_cast<FwAssertArgType>(_status)
11657  );
11658 
11659  _status = directory.serializeTo(
11660  _logBuff,
11661  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
11662  );
11663  FW_ASSERT(
11664  _status == Fw::FW_SERIALIZE_OK,
11665  static_cast<FwAssertArgType>(_status)
11666  );
11667 
11668  _status = entry.serializeTo(
11669  _logBuff,
11670  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
11671  );
11672  FW_ASSERT(
11673  _status == Fw::FW_SERIALIZE_OK,
11674  static_cast<FwAssertArgType>(_status)
11675  );
11676 
11677  this->logOut_out(
11678  0,
11679  _id,
11680  _logTime,
11682  _logBuff
11683  );
11684  }
11685 
11686  // Emit the event on the text log port
11687 #if FW_ENABLE_TEXT_LOGGING
11688  if (this->isConnected_logTextOut_OutputPort(0)) {
11689 #if FW_OBJECT_NAMES == 1
11690  const char* _formatString =
11691  "(%s) %s: Destination path length %" PRIu64 " exceeds maximum %" PRIu64 ", skipped playback entry %s/%s";
11692 #else
11693  const char* _formatString =
11694  "%s: Destination path length %" PRIu64 " exceeds maximum %" PRIu64 ", skipped playback entry %s/%s";
11695 #endif
11696 
11697  Fw::TextLogString _logString;
11698  (void) _logString.format(
11699  _formatString,
11700 #if FW_OBJECT_NAMES == 1
11701  this->m_objName.toChar(),
11702 #endif
11703  "PlaybackDestinationPathTooLong ",
11704  length,
11705  maxLength,
11706  directory.toChar(),
11707  entry.toChar()
11708  );
11709 
11710  this->logTextOut_out(
11711  0,
11712  _id,
11713  _logTime,
11715  _logString
11716  );
11717  }
11718 #endif
11719  }
11720 
11723  {
11724  // Get the time
11725  Fw::Time _logTime;
11726  if (this->isConnected_timeCaller_OutputPort(0)) {
11727  this->timeCaller_out(0, _logTime);
11728  }
11729 
11731 
11732  // Emit the event on the log port
11733  if (this->isConnected_logOut_OutputPort(0)) {
11734  Fw::LogBuffer _logBuff;
11735 
11736 #if FW_AMPCS_COMPATIBLE
11738  // Serialize the number of arguments
11739  _status = _logBuff.serializeFrom(static_cast<U8>(0));
11740  FW_ASSERT(
11741  _status == Fw::FW_SERIALIZE_OK,
11742  static_cast<FwAssertArgType>(_status)
11743  );
11744 #endif
11745 
11746  this->logOut_out(
11747  0,
11748  _id,
11749  _logTime,
11751  _logBuff
11752  );
11753  }
11754 
11755  // Emit the event on the text log port
11756 #if FW_ENABLE_TEXT_LOGGING
11757  if (this->isConnected_logTextOut_OutputPort(0)) {
11758 #if FW_OBJECT_NAMES == 1
11759  const char* _formatString =
11760  "(%s) %s: Attempt to reset a transaction that has already been freed";
11761 #else
11762  const char* _formatString =
11763  "%s: Attempt to reset a transaction that has already been freed";
11764 #endif
11765 
11766  Fw::TextLogString _logString;
11767  (void) _logString.format(
11768  _formatString,
11769 #if FW_OBJECT_NAMES == 1
11770  this->m_objName.toChar(),
11771 #endif
11772  "ResetFreedTransaction "
11773  );
11774 
11775  this->logTextOut_out(
11776  0,
11777  _id,
11778  _logTime,
11780  _logString
11781  );
11782  }
11783 #endif
11784  }
11785 
11788  const Fw::StringBase& filename,
11789  I32 status
11790  ) const
11791  {
11792  // Get the time
11793  Fw::Time _logTime;
11794  if (this->isConnected_timeCaller_OutputPort(0)) {
11795  this->timeCaller_out(0, _logTime);
11796  }
11797 
11798  const FwEventIdType _id = this->getIdBase() + EVENTID_FILEREMOVEFAILED;
11799 
11800  // Emit the event on the log port
11801  if (this->isConnected_logOut_OutputPort(0)) {
11802  Fw::LogBuffer _logBuff;
11804 
11805 #if FW_AMPCS_COMPATIBLE
11806  // Serialize the number of arguments
11807  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11808  FW_ASSERT(
11809  _status == Fw::FW_SERIALIZE_OK,
11810  static_cast<FwAssertArgType>(_status)
11811  );
11812 #endif
11813 
11814  _status = filename.serializeTo(
11815  _logBuff,
11816  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), 200)
11817  );
11818  FW_ASSERT(
11819  _status == Fw::FW_SERIALIZE_OK,
11820  static_cast<FwAssertArgType>(_status)
11821  );
11822 
11823 #if FW_AMPCS_COMPATIBLE
11824  // Serialize the argument size
11825  _status = _logBuff.serializeFrom(
11826  static_cast<U8>(sizeof(I32))
11827  );
11828  FW_ASSERT(
11829  _status == Fw::FW_SERIALIZE_OK,
11830  static_cast<FwAssertArgType>(_status)
11831  );
11832 #endif
11833  _status = _logBuff.serializeFrom(status);
11834  FW_ASSERT(
11835  _status == Fw::FW_SERIALIZE_OK,
11836  static_cast<FwAssertArgType>(_status)
11837  );
11838 
11839  this->logOut_out(
11840  0,
11841  _id,
11842  _logTime,
11844  _logBuff
11845  );
11846  }
11847 
11848  // Emit the event on the text log port
11849 #if FW_ENABLE_TEXT_LOGGING
11850  if (this->isConnected_logTextOut_OutputPort(0)) {
11851 #if FW_OBJECT_NAMES == 1
11852  const char* _formatString =
11853  "(%s) %s: Failed to remove file %s, error=%" PRIi32 "";
11854 #else
11855  const char* _formatString =
11856  "%s: Failed to remove file %s, error=%" PRIi32 "";
11857 #endif
11858 
11859  Fw::TextLogString _logString;
11860  (void) _logString.format(
11861  _formatString,
11862 #if FW_OBJECT_NAMES == 1
11863  this->m_objName.toChar(),
11864 #endif
11865  "FileRemoveFailed ",
11866  filename.toChar(),
11867  status
11868  );
11869 
11870  this->logTextOut_out(
11871  0,
11872  _id,
11873  _logTime,
11875  _logString
11876  );
11877  }
11878 #endif
11879  }
11880 
11883  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq,
11885  ) const
11886  {
11887  // Get the time
11888  Fw::Time _logTime;
11889  if (this->isConnected_timeCaller_OutputPort(0)) {
11890  this->timeCaller_out(0, _logTime);
11891  }
11892 
11894 
11895  // Emit the event on the log port
11896  if (this->isConnected_logOut_OutputPort(0)) {
11897  Fw::LogBuffer _logBuff;
11899 
11900 #if FW_AMPCS_COMPATIBLE
11901  // Serialize the number of arguments
11902  _status = _logBuff.serializeFrom(static_cast<U8>(2));
11903  FW_ASSERT(
11904  _status == Fw::FW_SERIALIZE_OK,
11905  static_cast<FwAssertArgType>(_status)
11906  );
11907 #endif
11908 
11909 #if FW_AMPCS_COMPATIBLE
11910  // Serialize the argument size
11911  _status = _logBuff.serializeFrom(
11912  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
11913  );
11914  FW_ASSERT(
11915  _status == Fw::FW_SERIALIZE_OK,
11916  static_cast<FwAssertArgType>(_status)
11917  );
11918 #endif
11919  _status = _logBuff.serializeFrom(transactionSeq);
11920  FW_ASSERT(
11921  _status == Fw::FW_SERIALIZE_OK,
11922  static_cast<FwAssertArgType>(_status)
11923  );
11924 
11925 #if FW_AMPCS_COMPATIBLE
11926  // Serialize the argument size
11927  _status = _logBuff.serializeFrom(
11928  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
11929  );
11930  FW_ASSERT(
11931  _status == Fw::FW_SERIALIZE_OK,
11932  static_cast<FwAssertArgType>(_status)
11933  );
11934 #endif
11935  _status = _logBuff.serializeFrom(entityId);
11936  FW_ASSERT(
11937  _status == Fw::FW_SERIALIZE_OK,
11938  static_cast<FwAssertArgType>(_status)
11939  );
11940 
11941  this->logOut_out(
11942  0,
11943  _id,
11944  _logTime,
11946  _logBuff
11947  );
11948  }
11949 
11950  // Emit the event on the text log port
11951 #if FW_ENABLE_TEXT_LOGGING
11952  if (this->isConnected_logTextOut_OutputPort(0)) {
11953 #if FW_OBJECT_NAMES == 1
11954  const char* _formatString =
11955  "(%s) %s: Transaction (%" PRIu32 ", %" PRIu32 ") suspended";
11956 #else
11957  const char* _formatString =
11958  "%s: Transaction (%" PRIu32 ", %" PRIu32 ") suspended";
11959 #endif
11960 
11961  Fw::TextLogString _logString;
11962  (void) _logString.format(
11963  _formatString,
11964 #if FW_OBJECT_NAMES == 1
11965  this->m_objName.toChar(),
11966 #endif
11967  "TransactionSuspended ",
11968  transactionSeq,
11969  entityId
11970  );
11971 
11972  this->logTextOut_out(
11973  0,
11974  _id,
11975  _logTime,
11977  _logString
11978  );
11979  }
11980 #endif
11981  }
11982 
11985  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq,
11987  ) const
11988  {
11989  // Get the time
11990  Fw::Time _logTime;
11991  if (this->isConnected_timeCaller_OutputPort(0)) {
11992  this->timeCaller_out(0, _logTime);
11993  }
11994 
11995  const FwEventIdType _id = this->getIdBase() + EVENTID_TRANSACTIONRESUMED;
11996 
11997  // Emit the event on the log port
11998  if (this->isConnected_logOut_OutputPort(0)) {
11999  Fw::LogBuffer _logBuff;
12001 
12002 #if FW_AMPCS_COMPATIBLE
12003  // Serialize the number of arguments
12004  _status = _logBuff.serializeFrom(static_cast<U8>(2));
12005  FW_ASSERT(
12006  _status == Fw::FW_SERIALIZE_OK,
12007  static_cast<FwAssertArgType>(_status)
12008  );
12009 #endif
12010 
12011 #if FW_AMPCS_COMPATIBLE
12012  // Serialize the argument size
12013  _status = _logBuff.serializeFrom(
12014  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
12015  );
12016  FW_ASSERT(
12017  _status == Fw::FW_SERIALIZE_OK,
12018  static_cast<FwAssertArgType>(_status)
12019  );
12020 #endif
12021  _status = _logBuff.serializeFrom(transactionSeq);
12022  FW_ASSERT(
12023  _status == Fw::FW_SERIALIZE_OK,
12024  static_cast<FwAssertArgType>(_status)
12025  );
12026 
12027 #if FW_AMPCS_COMPATIBLE
12028  // Serialize the argument size
12029  _status = _logBuff.serializeFrom(
12030  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
12031  );
12032  FW_ASSERT(
12033  _status == Fw::FW_SERIALIZE_OK,
12034  static_cast<FwAssertArgType>(_status)
12035  );
12036 #endif
12037  _status = _logBuff.serializeFrom(entityId);
12038  FW_ASSERT(
12039  _status == Fw::FW_SERIALIZE_OK,
12040  static_cast<FwAssertArgType>(_status)
12041  );
12042 
12043  this->logOut_out(
12044  0,
12045  _id,
12046  _logTime,
12048  _logBuff
12049  );
12050  }
12051 
12052  // Emit the event on the text log port
12053 #if FW_ENABLE_TEXT_LOGGING
12054  if (this->isConnected_logTextOut_OutputPort(0)) {
12055 #if FW_OBJECT_NAMES == 1
12056  const char* _formatString =
12057  "(%s) %s: Transaction (%" PRIu32 ", %" PRIu32 ") resumed";
12058 #else
12059  const char* _formatString =
12060  "%s: Transaction (%" PRIu32 ", %" PRIu32 ") resumed";
12061 #endif
12062 
12063  Fw::TextLogString _logString;
12064  (void) _logString.format(
12065  _formatString,
12066 #if FW_OBJECT_NAMES == 1
12067  this->m_objName.toChar(),
12068 #endif
12069  "TransactionResumed ",
12070  transactionSeq,
12071  entityId
12072  );
12073 
12074  this->logTextOut_out(
12075  0,
12076  _id,
12077  _logTime,
12079  _logString
12080  );
12081  }
12082 #endif
12083  }
12084 
12087  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq,
12089  ) const
12090  {
12091  // Get the time
12092  Fw::Time _logTime;
12093  if (this->isConnected_timeCaller_OutputPort(0)) {
12094  this->timeCaller_out(0, _logTime);
12095  }
12096 
12097  const FwEventIdType _id = this->getIdBase() + EVENTID_TRANSACTIONCANCELED;
12098 
12099  // Emit the event on the log port
12100  if (this->isConnected_logOut_OutputPort(0)) {
12101  Fw::LogBuffer _logBuff;
12103 
12104 #if FW_AMPCS_COMPATIBLE
12105  // Serialize the number of arguments
12106  _status = _logBuff.serializeFrom(static_cast<U8>(2));
12107  FW_ASSERT(
12108  _status == Fw::FW_SERIALIZE_OK,
12109  static_cast<FwAssertArgType>(_status)
12110  );
12111 #endif
12112 
12113 #if FW_AMPCS_COMPATIBLE
12114  // Serialize the argument size
12115  _status = _logBuff.serializeFrom(
12116  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
12117  );
12118  FW_ASSERT(
12119  _status == Fw::FW_SERIALIZE_OK,
12120  static_cast<FwAssertArgType>(_status)
12121  );
12122 #endif
12123  _status = _logBuff.serializeFrom(transactionSeq);
12124  FW_ASSERT(
12125  _status == Fw::FW_SERIALIZE_OK,
12126  static_cast<FwAssertArgType>(_status)
12127  );
12128 
12129 #if FW_AMPCS_COMPATIBLE
12130  // Serialize the argument size
12131  _status = _logBuff.serializeFrom(
12132  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
12133  );
12134  FW_ASSERT(
12135  _status == Fw::FW_SERIALIZE_OK,
12136  static_cast<FwAssertArgType>(_status)
12137  );
12138 #endif
12139  _status = _logBuff.serializeFrom(entityId);
12140  FW_ASSERT(
12141  _status == Fw::FW_SERIALIZE_OK,
12142  static_cast<FwAssertArgType>(_status)
12143  );
12144 
12145  this->logOut_out(
12146  0,
12147  _id,
12148  _logTime,
12150  _logBuff
12151  );
12152  }
12153 
12154  // Emit the event on the text log port
12155 #if FW_ENABLE_TEXT_LOGGING
12156  if (this->isConnected_logTextOut_OutputPort(0)) {
12157 #if FW_OBJECT_NAMES == 1
12158  const char* _formatString =
12159  "(%s) %s: Transaction (%" PRIu32 ", %" PRIu32 ") canceled";
12160 #else
12161  const char* _formatString =
12162  "%s: Transaction (%" PRIu32 ", %" PRIu32 ") canceled";
12163 #endif
12164 
12165  Fw::TextLogString _logString;
12166  (void) _logString.format(
12167  _formatString,
12168 #if FW_OBJECT_NAMES == 1
12169  this->m_objName.toChar(),
12170 #endif
12171  "TransactionCanceled ",
12172  transactionSeq,
12173  entityId
12174  );
12175 
12176  this->logTextOut_out(
12177  0,
12178  _id,
12179  _logTime,
12181  _logString
12182  );
12183  }
12184 #endif
12185  }
12186 
12189  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq,
12191  ) const
12192  {
12193  // Get the time
12194  Fw::Time _logTime;
12195  if (this->isConnected_timeCaller_OutputPort(0)) {
12196  this->timeCaller_out(0, _logTime);
12197  }
12198 
12200 
12201  // Emit the event on the log port
12202  if (this->isConnected_logOut_OutputPort(0)) {
12203  Fw::LogBuffer _logBuff;
12205 
12206 #if FW_AMPCS_COMPATIBLE
12207  // Serialize the number of arguments
12208  _status = _logBuff.serializeFrom(static_cast<U8>(2));
12209  FW_ASSERT(
12210  _status == Fw::FW_SERIALIZE_OK,
12211  static_cast<FwAssertArgType>(_status)
12212  );
12213 #endif
12214 
12215 #if FW_AMPCS_COMPATIBLE
12216  // Serialize the argument size
12217  _status = _logBuff.serializeFrom(
12218  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
12219  );
12220  FW_ASSERT(
12221  _status == Fw::FW_SERIALIZE_OK,
12222  static_cast<FwAssertArgType>(_status)
12223  );
12224 #endif
12225  _status = _logBuff.serializeFrom(transactionSeq);
12226  FW_ASSERT(
12227  _status == Fw::FW_SERIALIZE_OK,
12228  static_cast<FwAssertArgType>(_status)
12229  );
12230 
12231 #if FW_AMPCS_COMPATIBLE
12232  // Serialize the argument size
12233  _status = _logBuff.serializeFrom(
12234  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
12235  );
12236  FW_ASSERT(
12237  _status == Fw::FW_SERIALIZE_OK,
12238  static_cast<FwAssertArgType>(_status)
12239  );
12240 #endif
12241  _status = _logBuff.serializeFrom(entityId);
12242  FW_ASSERT(
12243  _status == Fw::FW_SERIALIZE_OK,
12244  static_cast<FwAssertArgType>(_status)
12245  );
12246 
12247  this->logOut_out(
12248  0,
12249  _id,
12250  _logTime,
12252  _logBuff
12253  );
12254  }
12255 
12256  // Emit the event on the text log port
12257 #if FW_ENABLE_TEXT_LOGGING
12258  if (this->isConnected_logTextOut_OutputPort(0)) {
12259 #if FW_OBJECT_NAMES == 1
12260  const char* _formatString =
12261  "(%s) %s: Transaction (%" PRIu32 ", %" PRIu32 ") abandoned";
12262 #else
12263  const char* _formatString =
12264  "%s: Transaction (%" PRIu32 ", %" PRIu32 ") abandoned";
12265 #endif
12266 
12267  Fw::TextLogString _logString;
12268  (void) _logString.format(
12269  _formatString,
12270 #if FW_OBJECT_NAMES == 1
12271  this->m_objName.toChar(),
12272 #endif
12273  "TransactionAbandoned ",
12274  transactionSeq,
12275  entityId
12276  );
12277 
12278  this->logTextOut_out(
12279  0,
12280  _id,
12281  _logTime,
12283  _logString
12284  );
12285  }
12286 #endif
12287  }
12288 
12291  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq,
12293  ) const
12294  {
12295  // Get the time
12296  Fw::Time _logTime;
12297  if (this->isConnected_timeCaller_OutputPort(0)) {
12298  this->timeCaller_out(0, _logTime);
12299  }
12300 
12301  const FwEventIdType _id = this->getIdBase() + EVENTID_TRANSACTIONNOTFOUND;
12302 
12303  // Emit the event on the log port
12304  if (this->isConnected_logOut_OutputPort(0)) {
12305  Fw::LogBuffer _logBuff;
12307 
12308 #if FW_AMPCS_COMPATIBLE
12309  // Serialize the number of arguments
12310  _status = _logBuff.serializeFrom(static_cast<U8>(2));
12311  FW_ASSERT(
12312  _status == Fw::FW_SERIALIZE_OK,
12313  static_cast<FwAssertArgType>(_status)
12314  );
12315 #endif
12316 
12317 #if FW_AMPCS_COMPATIBLE
12318  // Serialize the argument size
12319  _status = _logBuff.serializeFrom(
12320  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
12321  );
12322  FW_ASSERT(
12323  _status == Fw::FW_SERIALIZE_OK,
12324  static_cast<FwAssertArgType>(_status)
12325  );
12326 #endif
12327  _status = _logBuff.serializeFrom(transactionSeq);
12328  FW_ASSERT(
12329  _status == Fw::FW_SERIALIZE_OK,
12330  static_cast<FwAssertArgType>(_status)
12331  );
12332 
12333 #if FW_AMPCS_COMPATIBLE
12334  // Serialize the argument size
12335  _status = _logBuff.serializeFrom(
12336  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
12337  );
12338  FW_ASSERT(
12339  _status == Fw::FW_SERIALIZE_OK,
12340  static_cast<FwAssertArgType>(_status)
12341  );
12342 #endif
12343  _status = _logBuff.serializeFrom(entityId);
12344  FW_ASSERT(
12345  _status == Fw::FW_SERIALIZE_OK,
12346  static_cast<FwAssertArgType>(_status)
12347  );
12348 
12349  this->logOut_out(
12350  0,
12351  _id,
12352  _logTime,
12354  _logBuff
12355  );
12356  }
12357 
12358  // Emit the event on the text log port
12359 #if FW_ENABLE_TEXT_LOGGING
12360  if (this->isConnected_logTextOut_OutputPort(0)) {
12361 #if FW_OBJECT_NAMES == 1
12362  const char* _formatString =
12363  "(%s) %s: Transaction (%" PRIu32 ", %" PRIu32 ") not found";
12364 #else
12365  const char* _formatString =
12366  "%s: Transaction (%" PRIu32 ", %" PRIu32 ") not found";
12367 #endif
12368 
12369  Fw::TextLogString _logString;
12370  (void) _logString.format(
12371  _formatString,
12372 #if FW_OBJECT_NAMES == 1
12373  this->m_objName.toChar(),
12374 #endif
12375  "TransactionNotFound ",
12376  transactionSeq,
12377  entityId
12378  );
12379 
12380  this->logTextOut_out(
12381  0,
12382  _id,
12383  _logTime,
12385  _logString
12386  );
12387  }
12388 #endif
12389  }
12390 
12393  {
12394  // Get the time
12395  Fw::Time _logTime;
12396  if (this->isConnected_timeCaller_OutputPort(0)) {
12397  this->timeCaller_out(0, _logTime);
12398  }
12399 
12400  const FwEventIdType _id = this->getIdBase() + EVENTID_RESETCOUNTERS;
12401 
12402  // Emit the event on the log port
12403  if (this->isConnected_logOut_OutputPort(0)) {
12404  Fw::LogBuffer _logBuff;
12406 
12407 #if FW_AMPCS_COMPATIBLE
12408  // Serialize the number of arguments
12409  _status = _logBuff.serializeFrom(static_cast<U8>(1));
12410  FW_ASSERT(
12411  _status == Fw::FW_SERIALIZE_OK,
12412  static_cast<FwAssertArgType>(_status)
12413  );
12414 #endif
12415 
12416 #if FW_AMPCS_COMPATIBLE
12417  // Serialize the argument size
12418  _status = _logBuff.serializeFrom(
12419  static_cast<U8>(sizeof(U8))
12420  );
12421  FW_ASSERT(
12422  _status == Fw::FW_SERIALIZE_OK,
12423  static_cast<FwAssertArgType>(_status)
12424  );
12425 #endif
12426  _status = _logBuff.serializeFrom(channelId);
12427  FW_ASSERT(
12428  _status == Fw::FW_SERIALIZE_OK,
12429  static_cast<FwAssertArgType>(_status)
12430  );
12431 
12432  this->logOut_out(
12433  0,
12434  _id,
12435  _logTime,
12437  _logBuff
12438  );
12439  }
12440 
12441  // Emit the event on the text log port
12442 #if FW_ENABLE_TEXT_LOGGING
12443  if (this->isConnected_logTextOut_OutputPort(0)) {
12444 #if FW_OBJECT_NAMES == 1
12445  const char* _formatString =
12446  "(%s) %s: Reset telemetry counters for channel %" PRIu8 "";
12447 #else
12448  const char* _formatString =
12449  "%s: Reset telemetry counters for channel %" PRIu8 "";
12450 #endif
12451 
12452  Fw::TextLogString _logString;
12453  (void) _logString.format(
12454  _formatString,
12455 #if FW_OBJECT_NAMES == 1
12456  this->m_objName.toChar(),
12457 #endif
12458  "ResetCounters ",
12459  channelId
12460  );
12461 
12462  this->logTextOut_out(
12463  0,
12464  _id,
12465  _logTime,
12467  _logString
12468  );
12469  }
12470 #endif
12471  }
12472 
12477  ) const
12478  {
12479  // Get the time
12480  Fw::Time _logTime;
12481  if (this->isConnected_timeCaller_OutputPort(0)) {
12482  this->timeCaller_out(0, _logTime);
12483  }
12484 
12485  const FwEventIdType _id = this->getIdBase() + EVENTID_TXLATEFINACKED;
12486 
12487  // Emit the event on the log port
12488  if (this->isConnected_logOut_OutputPort(0)) {
12489  Fw::LogBuffer _logBuff;
12491 
12492 #if FW_AMPCS_COMPATIBLE
12493  // Serialize the number of arguments
12494  _status = _logBuff.serializeFrom(static_cast<U8>(2));
12495  FW_ASSERT(
12496  _status == Fw::FW_SERIALIZE_OK,
12497  static_cast<FwAssertArgType>(_status)
12498  );
12499 #endif
12500 
12501 #if FW_AMPCS_COMPATIBLE
12502  // Serialize the argument size
12503  _status = _logBuff.serializeFrom(
12504  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::EntityId))
12505  );
12506  FW_ASSERT(
12507  _status == Fw::FW_SERIALIZE_OK,
12508  static_cast<FwAssertArgType>(_status)
12509  );
12510 #endif
12511  _status = _logBuff.serializeFrom(srcEid);
12512  FW_ASSERT(
12513  _status == Fw::FW_SERIALIZE_OK,
12514  static_cast<FwAssertArgType>(_status)
12515  );
12516 
12517 #if FW_AMPCS_COMPATIBLE
12518  // Serialize the argument size
12519  _status = _logBuff.serializeFrom(
12520  static_cast<U8>(sizeof(Svc::Ccsds::Cfdp::TransactionSeq))
12521  );
12522  FW_ASSERT(
12523  _status == Fw::FW_SERIALIZE_OK,
12524  static_cast<FwAssertArgType>(_status)
12525  );
12526 #endif
12527  _status = _logBuff.serializeFrom(seqNum);
12528  FW_ASSERT(
12529  _status == Fw::FW_SERIALIZE_OK,
12530  static_cast<FwAssertArgType>(_status)
12531  );
12532 
12533  this->logOut_out(
12534  0,
12535  _id,
12536  _logTime,
12538  _logBuff
12539  );
12540  }
12541 
12542  // Emit the event on the text log port
12543 #if FW_ENABLE_TEXT_LOGGING
12544  if (this->isConnected_logTextOut_OutputPort(0)) {
12545 #if FW_OBJECT_NAMES == 1
12546  const char* _formatString =
12547  "(%s) %s: Acknowledged late FIN for transaction %" PRIu32 ":%" PRIu32 "";
12548 #else
12549  const char* _formatString =
12550  "%s: Acknowledged late FIN for transaction %" PRIu32 ":%" PRIu32 "";
12551 #endif
12552 
12553  Fw::TextLogString _logString;
12554  (void) _logString.format(
12555  _formatString,
12556 #if FW_OBJECT_NAMES == 1
12557  this->m_objName.toChar(),
12558 #endif
12559  "TxLateFinAcked ",
12560  srcEid,
12561  seqNum
12562  );
12563 
12564  this->logTextOut_out(
12565  0,
12566  _id,
12567  _logTime,
12569  _logString
12570  );
12571  }
12572 #endif
12573  }
12574 
12575  // ----------------------------------------------------------------------
12576  // Telemetry serialized write
12577  // ----------------------------------------------------------------------
12578 
12581  FwChanIdType id,
12582  Fw::TlmBuffer& _tlmBuff,
12583  Fw::Time _tlmTime
12584  ) const
12585  {
12586  if (this->isConnected_tlmOut_OutputPort(0)) {
12587  if (
12589  (_tlmTime == Fw::ZERO_TIME)
12590  ) {
12591  this->timeCaller_out(0, _tlmTime);
12592  }
12593 
12594  FwChanIdType _id;
12595  _id = this->getIdBase() + id;
12596 
12597  this->tlmOut_out(
12598  0,
12599  _id,
12600  _tlmTime,
12601  _tlmBuff
12602  );
12603  }
12604  }
12605 
12606  // ----------------------------------------------------------------------
12607  // Telemetry write functions
12608  // ----------------------------------------------------------------------
12609 
12613  Fw::Time _tlmTime
12614  ) const
12615  {
12616  if (this->isConnected_tlmOut_OutputPort(0)) {
12617  Fw::TlmBuffer _tlmBuff;
12618  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12619  FW_ASSERT(
12620  _stat == Fw::FW_SERIALIZE_OK,
12621  static_cast<FwAssertArgType>(_stat)
12622  );
12623 
12624  this->tlmWrite(
12626  _tlmBuff,
12627  _tlmTime
12628  );
12629  }
12630  }
12631 
12635  Fw::Time _tlmTime
12636  )
12637  {
12638  // Check to see if it is the first time
12639  if (not this->m_first_update_PRM_LOCAL_EID) {
12640  // Check to see if value has changed. If not, don't write it.
12641  if (arg == this->m_last_PRM_LOCAL_EID) {
12642  return;
12643  }
12644  else {
12645  this->m_last_PRM_LOCAL_EID = arg;
12646  }
12647  }
12648  else {
12649  this->m_first_update_PRM_LOCAL_EID = false;
12650  this->m_last_PRM_LOCAL_EID = arg;
12651  }
12652 
12653  if (this->isConnected_tlmOut_OutputPort(0)) {
12654  Fw::TlmBuffer _tlmBuff;
12655  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12656  FW_ASSERT(
12657  _stat == Fw::FW_SERIALIZE_OK,
12658  static_cast<FwAssertArgType>(_stat)
12659  );
12660 
12661  this->tlmWrite(
12663  _tlmBuff,
12664  _tlmTime
12665  );
12666  }
12667  }
12668 
12671  U32 arg,
12672  Fw::Time _tlmTime
12673  )
12674  {
12675  // Check to see if it is the first time
12676  if (not this->m_first_update_PRM_OUTGOING_FILE_CHUNK_SIZE) {
12677  // Check to see if value has changed. If not, don't write it.
12678  if (arg == this->m_last_PRM_OUTGOING_FILE_CHUNK_SIZE) {
12679  return;
12680  }
12681  else {
12682  this->m_last_PRM_OUTGOING_FILE_CHUNK_SIZE = arg;
12683  }
12684  }
12685  else {
12686  this->m_first_update_PRM_OUTGOING_FILE_CHUNK_SIZE = false;
12687  this->m_last_PRM_OUTGOING_FILE_CHUNK_SIZE = arg;
12688  }
12689 
12690  if (this->isConnected_tlmOut_OutputPort(0)) {
12691  Fw::TlmBuffer _tlmBuff;
12692  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12693  FW_ASSERT(
12694  _stat == Fw::FW_SERIALIZE_OK,
12695  static_cast<FwAssertArgType>(_stat)
12696  );
12697 
12698  this->tlmWrite(
12700  _tlmBuff,
12701  _tlmTime
12702  );
12703  }
12704  }
12705 
12708  U32 arg,
12709  Fw::Time _tlmTime
12710  )
12711  {
12712  // Check to see if it is the first time
12713  if (not this->m_first_update_PRM_RX_CRC_CALC_BYTES_PER_CYCLE) {
12714  // Check to see if value has changed. If not, don't write it.
12715  if (arg == this->m_last_PRM_RX_CRC_CALC_BYTES_PER_CYCLE) {
12716  return;
12717  }
12718  else {
12719  this->m_last_PRM_RX_CRC_CALC_BYTES_PER_CYCLE = arg;
12720  }
12721  }
12722  else {
12723  this->m_first_update_PRM_RX_CRC_CALC_BYTES_PER_CYCLE = false;
12724  this->m_last_PRM_RX_CRC_CALC_BYTES_PER_CYCLE = arg;
12725  }
12726 
12727  if (this->isConnected_tlmOut_OutputPort(0)) {
12728  Fw::TlmBuffer _tlmBuff;
12729  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12730  FW_ASSERT(
12731  _stat == Fw::FW_SERIALIZE_OK,
12732  static_cast<FwAssertArgType>(_stat)
12733  );
12734 
12735  this->tlmWrite(
12737  _tlmBuff,
12738  _tlmTime
12739  );
12740  }
12741  }
12742 
12745  U8 arg,
12746  Fw::Time _tlmTime
12747  )
12748  {
12749  // Check to see if it is the first time
12750  if (not this->m_first_update_PRM_POST_INACTIVITY_SEND_RETRIES) {
12751  // Check to see if value has changed. If not, don't write it.
12752  if (arg == this->m_last_PRM_POST_INACTIVITY_SEND_RETRIES) {
12753  return;
12754  }
12755  else {
12756  this->m_last_PRM_POST_INACTIVITY_SEND_RETRIES = arg;
12757  }
12758  }
12759  else {
12760  this->m_first_update_PRM_POST_INACTIVITY_SEND_RETRIES = false;
12761  this->m_last_PRM_POST_INACTIVITY_SEND_RETRIES = arg;
12762  }
12763 
12764  if (this->isConnected_tlmOut_OutputPort(0)) {
12765  Fw::TlmBuffer _tlmBuff;
12766  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12767  FW_ASSERT(
12768  _stat == Fw::FW_SERIALIZE_OK,
12769  static_cast<FwAssertArgType>(_stat)
12770  );
12771 
12772  this->tlmWrite(
12774  _tlmBuff,
12775  _tlmTime
12776  );
12777  }
12778  }
12779 
12782  U8 arg,
12783  Fw::Time _tlmTime
12784  )
12785  {
12786  // Check to see if it is the first time
12787  if (not this->m_first_update_PRM_FILE_IN_DEFAULT_CHANNEL) {
12788  // Check to see if value has changed. If not, don't write it.
12789  if (arg == this->m_last_PRM_FILE_IN_DEFAULT_CHANNEL) {
12790  return;
12791  }
12792  else {
12793  this->m_last_PRM_FILE_IN_DEFAULT_CHANNEL = arg;
12794  }
12795  }
12796  else {
12797  this->m_first_update_PRM_FILE_IN_DEFAULT_CHANNEL = false;
12798  this->m_last_PRM_FILE_IN_DEFAULT_CHANNEL = arg;
12799  }
12800 
12801  if (this->isConnected_tlmOut_OutputPort(0)) {
12802  Fw::TlmBuffer _tlmBuff;
12803  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12804  FW_ASSERT(
12805  _stat == Fw::FW_SERIALIZE_OK,
12806  static_cast<FwAssertArgType>(_stat)
12807  );
12808 
12809  this->tlmWrite(
12811  _tlmBuff,
12812  _tlmTime
12813  );
12814  }
12815  }
12816 
12820  Fw::Time _tlmTime
12821  )
12822  {
12823  // Check to see if it is the first time
12824  if (not this->m_first_update_PRM_FILE_IN_DEFAULT_DEST_ENTITY_ID) {
12825  // Check to see if value has changed. If not, don't write it.
12826  if (arg == this->m_last_PRM_FILE_IN_DEFAULT_DEST_ENTITY_ID) {
12827  return;
12828  }
12829  else {
12830  this->m_last_PRM_FILE_IN_DEFAULT_DEST_ENTITY_ID = arg;
12831  }
12832  }
12833  else {
12834  this->m_first_update_PRM_FILE_IN_DEFAULT_DEST_ENTITY_ID = false;
12835  this->m_last_PRM_FILE_IN_DEFAULT_DEST_ENTITY_ID = arg;
12836  }
12837 
12838  if (this->isConnected_tlmOut_OutputPort(0)) {
12839  Fw::TlmBuffer _tlmBuff;
12840  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12841  FW_ASSERT(
12842  _stat == Fw::FW_SERIALIZE_OK,
12843  static_cast<FwAssertArgType>(_stat)
12844  );
12845 
12846  this->tlmWrite(
12848  _tlmBuff,
12849  _tlmTime
12850  );
12851  }
12852  }
12853 
12856  const Svc::Ccsds::Cfdp::Class& arg,
12857  Fw::Time _tlmTime
12858  )
12859  {
12860  // Check to see if it is the first time
12861  if (not this->m_first_update_PRM_FILE_IN_DEFAULT_CLASS) {
12862  // Check to see if value has changed. If not, don't write it.
12863  if (arg == this->m_last_PRM_FILE_IN_DEFAULT_CLASS) {
12864  return;
12865  }
12866  else {
12867  this->m_last_PRM_FILE_IN_DEFAULT_CLASS = arg;
12868  }
12869  }
12870  else {
12871  this->m_first_update_PRM_FILE_IN_DEFAULT_CLASS = false;
12872  this->m_last_PRM_FILE_IN_DEFAULT_CLASS = arg;
12873  }
12874 
12875  if (this->isConnected_tlmOut_OutputPort(0)) {
12876  Fw::TlmBuffer _tlmBuff;
12877  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12878  FW_ASSERT(
12879  _stat == Fw::FW_SERIALIZE_OK,
12880  static_cast<FwAssertArgType>(_stat)
12881  );
12882 
12883  this->tlmWrite(
12885  _tlmBuff,
12886  _tlmTime
12887  );
12888  }
12889  }
12890 
12893  const Svc::Ccsds::Cfdp::Keep& arg,
12894  Fw::Time _tlmTime
12895  )
12896  {
12897  // Check to see if it is the first time
12898  if (not this->m_first_update_PRM_FILE_IN_DEFAULT_KEEP) {
12899  // Check to see if value has changed. If not, don't write it.
12900  if (arg == this->m_last_PRM_FILE_IN_DEFAULT_KEEP) {
12901  return;
12902  }
12903  else {
12904  this->m_last_PRM_FILE_IN_DEFAULT_KEEP = arg;
12905  }
12906  }
12907  else {
12908  this->m_first_update_PRM_FILE_IN_DEFAULT_KEEP = false;
12909  this->m_last_PRM_FILE_IN_DEFAULT_KEEP = arg;
12910  }
12911 
12912  if (this->isConnected_tlmOut_OutputPort(0)) {
12913  Fw::TlmBuffer _tlmBuff;
12914  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12915  FW_ASSERT(
12916  _stat == Fw::FW_SERIALIZE_OK,
12917  static_cast<FwAssertArgType>(_stat)
12918  );
12919 
12920  this->tlmWrite(
12922  _tlmBuff,
12923  _tlmTime
12924  );
12925  }
12926  }
12927 
12930  U8 arg,
12931  Fw::Time _tlmTime
12932  )
12933  {
12934  // Check to see if it is the first time
12935  if (not this->m_first_update_PRM_FILE_IN_DEFAULT_PRIORITY) {
12936  // Check to see if value has changed. If not, don't write it.
12937  if (arg == this->m_last_PRM_FILE_IN_DEFAULT_PRIORITY) {
12938  return;
12939  }
12940  else {
12941  this->m_last_PRM_FILE_IN_DEFAULT_PRIORITY = arg;
12942  }
12943  }
12944  else {
12945  this->m_first_update_PRM_FILE_IN_DEFAULT_PRIORITY = false;
12946  this->m_last_PRM_FILE_IN_DEFAULT_PRIORITY = arg;
12947  }
12948 
12949  if (this->isConnected_tlmOut_OutputPort(0)) {
12950  Fw::TlmBuffer _tlmBuff;
12951  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12952  FW_ASSERT(
12953  _stat == Fw::FW_SERIALIZE_OK,
12954  static_cast<FwAssertArgType>(_stat)
12955  );
12956 
12957  this->tlmWrite(
12959  _tlmBuff,
12960  _tlmTime
12961  );
12962  }
12963  }
12964 
12968  Fw::Time _tlmTime
12969  )
12970  {
12971  // Check to see if it is the first time
12972  if (not this->m_first_update_PRM_CHANNEL_CONFIG) {
12973  // Check to see if value has changed. If not, don't write it.
12974  if (arg == this->m_last_PRM_CHANNEL_CONFIG) {
12975  return;
12976  }
12977  else {
12978  this->m_last_PRM_CHANNEL_CONFIG = arg;
12979  }
12980  }
12981  else {
12982  this->m_first_update_PRM_CHANNEL_CONFIG = false;
12983  this->m_last_PRM_CHANNEL_CONFIG = arg;
12984  }
12985 
12986  if (this->isConnected_tlmOut_OutputPort(0)) {
12987  Fw::TlmBuffer _tlmBuff;
12988  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
12989  FW_ASSERT(
12990  _stat == Fw::FW_SERIALIZE_OK,
12991  static_cast<FwAssertArgType>(_stat)
12992  );
12993 
12994  this->tlmWrite(
12996  _tlmBuff,
12997  _tlmTime
12998  );
12999  }
13000  }
13001 
13002  // ----------------------------------------------------------------------
13003  // Parameter hook functions
13004  // ----------------------------------------------------------------------
13005 
13008  {
13009  // Do nothing by default
13010  }
13011 
13014  {
13015  // Do nothing by default
13016  }
13017 
13020  FwPrmIdType id,
13021  Fw::ParamValid valid
13022  )
13023  {
13024  if (FW_PARAM_OK(valid)) {
13025  this->parameterUpdated(id);
13026  }
13027  }
13028 
13029  // ----------------------------------------------------------------------
13030  // Parameter get functions
13031  // ----------------------------------------------------------------------
13032 
13035  {
13036  Svc::Ccsds::Cfdp::EntityId _local{};
13037  this->m_paramLock.lock();
13038  valid = this->m_param_LocalEid_valid;
13039  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
13040  _local = this->m_LocalEid;
13041  }
13042  this->m_paramLock.unlock();
13043  return _local;
13044  }
13045 
13048  {
13049  U32 _local{};
13050  this->m_paramLock.lock();
13051  valid = this->m_param_OutgoingFileChunkSize_valid;
13052  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
13053  _local = this->m_OutgoingFileChunkSize;
13054  }
13055  this->m_paramLock.unlock();
13056  return _local;
13057  }
13058 
13061  {
13062  U32 _local{};
13063  this->m_paramLock.lock();
13064  valid = this->m_param_RxCrcCalcBytesPerCycle_valid;
13065  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
13066  _local = this->m_RxCrcCalcBytesPerCycle;
13067  }
13068  this->m_paramLock.unlock();
13069  return _local;
13070  }
13071 
13074  {
13075  U8 _local{};
13076  this->m_paramLock.lock();
13077  valid = this->m_param_PostInactivitySendRetries_valid;
13078  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
13079  _local = this->m_PostInactivitySendRetries;
13080  }
13081  this->m_paramLock.unlock();
13082  return _local;
13083  }
13084 
13087  {
13088  U8 _local{};
13089  this->m_paramLock.lock();
13090  valid = this->m_param_FileInDefaultChannel_valid;
13091  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
13092  _local = this->m_FileInDefaultChannel;
13093  }
13094  this->m_paramLock.unlock();
13095  return _local;
13096  }
13097 
13100  {
13101  Svc::Ccsds::Cfdp::EntityId _local{};
13102  this->m_paramLock.lock();
13103  valid = this->m_param_FileInDefaultDestEntityId_valid;
13104  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
13105  _local = this->m_FileInDefaultDestEntityId;
13106  }
13107  this->m_paramLock.unlock();
13108  return _local;
13109  }
13110 
13113  {
13114  Svc::Ccsds::Cfdp::Class _local{};
13115  this->m_paramLock.lock();
13116  valid = this->m_param_FileInDefaultClass_valid;
13117  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
13118  _local = this->m_FileInDefaultClass;
13119  }
13120  this->m_paramLock.unlock();
13121  return _local;
13122  }
13123 
13126  {
13127  Svc::Ccsds::Cfdp::Keep _local{};
13128  this->m_paramLock.lock();
13129  valid = this->m_param_FileInDefaultKeep_valid;
13130  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
13131  _local = this->m_FileInDefaultKeep;
13132  }
13133  this->m_paramLock.unlock();
13134  return _local;
13135  }
13136 
13139  {
13140  U8 _local{};
13141  this->m_paramLock.lock();
13142  valid = this->m_param_FileInDefaultPriority_valid;
13143  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
13144  _local = this->m_FileInDefaultPriority;
13145  }
13146  this->m_paramLock.unlock();
13147  return _local;
13148  }
13149 
13152  {
13154  this->m_paramLock.lock();
13155  valid = this->m_param_ChannelConfig_valid;
13156  if ((valid == Fw::ParamValid::VALID) || (valid == Fw::ParamValid::DEFAULT)) {
13157  _local = this->m_ChannelConfig;
13158  }
13159  this->m_paramLock.unlock();
13160  return _local;
13161  }
13162 
13163  // ----------------------------------------------------------------------
13164  // Time
13165  // ----------------------------------------------------------------------
13166 
13168  getTime() const
13169  {
13170  if (this->isConnected_timeCaller_OutputPort(0)) {
13171  Fw::Time _time;
13172  this->timeCaller_out(0, _time);
13173  return _time;
13174  }
13175  else {
13176  return Fw::Time(TimeBase::TB_NONE, 0, 0);
13177  }
13178  }
13179 
13180  // ----------------------------------------------------------------------
13181  // Mutex operations for guarded ports
13182  //
13183  // You can override these operations to provide more sophisticated
13184  // synchronization
13185  // ----------------------------------------------------------------------
13186 
13189  {
13190  this->m_guardedPortMutex.lock();
13191  }
13192 
13195  {
13196  this->m_guardedPortMutex.unLock();
13197  }
13198 
13199  // ----------------------------------------------------------------------
13200  // Message dispatch functions
13201  // ----------------------------------------------------------------------
13202 
13203  Fw::QueuedComponentBase::MsgDispatchStatus CfdpManagerComponentBase ::
13204  doDispatch()
13205  {
13206  ComponentIpcSerializableBuffer _msg;
13207  FwQueuePriorityType _priority = 0;
13208 
13209  Os::Queue::Status _msgStatus = this->m_queue.receive(
13210  _msg,
13212  _priority
13213  );
13214  FW_ASSERT(
13215  _msgStatus == Os::Queue::OP_OK,
13216  static_cast<FwAssertArgType>(_msgStatus)
13217  );
13218 
13219  // Reset to beginning of buffer
13220  _msg.resetDeser();
13221 
13222  FwEnumStoreType _desMsg = 0;
13223  Fw::SerializeStatus _deserStatus = _msg.deserializeTo(_desMsg);
13224  FW_ASSERT(
13225  _deserStatus == Fw::FW_SERIALIZE_OK,
13226  static_cast<FwAssertArgType>(_deserStatus)
13227  );
13228 
13229  MsgTypeEnum _msgType = static_cast<MsgTypeEnum>(_desMsg);
13230 
13231  if (_msgType == CFDPMANAGER_COMPONENT_EXIT) {
13232  return MSG_DISPATCH_EXIT;
13233  }
13234 
13235  FwIndexType portNum = 0;
13236  _deserStatus = _msg.deserializeTo(portNum);
13237  FW_ASSERT(
13238  _deserStatus == Fw::FW_SERIALIZE_OK,
13239  static_cast<FwAssertArgType>(_deserStatus)
13240  );
13241 
13242  switch (_msgType) {
13243  // Handle async input port dataIn
13244  case DATAIN_BUFFERSEND: {
13245  // Deserialize argument fwBuffer
13246  Fw::Buffer fwBuffer;
13247  _deserStatus = _msg.deserializeTo(fwBuffer);
13248  FW_ASSERT(
13249  _deserStatus == Fw::FW_SERIALIZE_OK,
13250  static_cast<FwAssertArgType>(_deserStatus)
13251  );
13252  // Call handler function
13253  this->dataIn_handler(
13254  portNum,
13255  fwBuffer
13256  );
13257 
13258  break;
13259  }
13260 
13261  // Handle async input port dataReturnIn
13262  case DATARETURNIN_BUFFERSEND: {
13263  // Deserialize argument fwBuffer
13264  Fw::Buffer fwBuffer;
13265  _deserStatus = _msg.deserializeTo(fwBuffer);
13266  FW_ASSERT(
13267  _deserStatus == Fw::FW_SERIALIZE_OK,
13268  static_cast<FwAssertArgType>(_deserStatus)
13269  );
13270  // Call handler function
13271  this->dataReturnIn_handler(
13272  portNum,
13273  fwBuffer
13274  );
13275 
13276  break;
13277  }
13278 
13279  // Handle async input port pingIn
13280  case PINGIN_PING: {
13281  // Deserialize argument key
13282  U32 key;
13283  _deserStatus = _msg.deserializeTo(key);
13284  FW_ASSERT(
13285  _deserStatus == Fw::FW_SERIALIZE_OK,
13286  static_cast<FwAssertArgType>(_deserStatus)
13287  );
13288  // Call handler function
13289  this->pingIn_handler(
13290  portNum,
13291  key
13292  );
13293 
13294  break;
13295  }
13296 
13297  // Handle async input port run1Hz
13298  case RUN1HZ_SCHED: {
13299  // Deserialize argument context
13300  U32 context;
13301  _deserStatus = _msg.deserializeTo(context);
13302  FW_ASSERT(
13303  _deserStatus == Fw::FW_SERIALIZE_OK,
13304  static_cast<FwAssertArgType>(_deserStatus)
13305  );
13306  // Call handler function
13307  this->run1Hz_handler(
13308  portNum,
13309  context
13310  );
13311 
13312  break;
13313  }
13314 
13315  // Handle command SendFile
13316  case CMD_SENDFILE: {
13317  // Deserialize opcode
13318  FwOpcodeType _opCode = 0;
13319  _deserStatus = _msg.deserializeTo(_opCode);
13320  FW_ASSERT (
13321  _deserStatus == Fw::FW_SERIALIZE_OK,
13322  static_cast<FwAssertArgType>(_deserStatus)
13323  );
13324 
13325  // Deserialize command sequence
13326  U32 _cmdSeq = 0;
13327  _deserStatus = _msg.deserializeTo(_cmdSeq);
13328  FW_ASSERT (
13329  _deserStatus == Fw::FW_SERIALIZE_OK,
13330  static_cast<FwAssertArgType>(_deserStatus)
13331  );
13332 
13333  // Deserialize command argument buffer
13334  Fw::CmdArgBuffer args;
13335  _deserStatus = _msg.deserializeTo(args);
13336  FW_ASSERT (
13337  _deserStatus == Fw::FW_SERIALIZE_OK,
13338  static_cast<FwAssertArgType>(_deserStatus)
13339  );
13340 
13341  // Reset buffer
13342  args.resetDeser();
13343 
13344  // Deserialize argument channelId
13345  U8 channelId;
13346  _deserStatus = args.deserializeTo(channelId);
13347  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13349  this->cmdResponse_out(
13350  _opCode,
13351  _cmdSeq,
13353  );
13354  }
13355  // Don't crash the task if bad arguments were passed from the ground
13356  break;
13357  }
13358 
13359  // Deserialize argument destId
13361  _deserStatus = args.deserializeTo(destId);
13362  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13364  this->cmdResponse_out(
13365  _opCode,
13366  _cmdSeq,
13368  );
13369  }
13370  // Don't crash the task if bad arguments were passed from the ground
13371  break;
13372  }
13373 
13374  // Deserialize argument cfdpClass
13375  Svc::Ccsds::Cfdp::Class cfdpClass;
13376  _deserStatus = args.deserializeTo(cfdpClass);
13377  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13379  this->cmdResponse_out(
13380  _opCode,
13381  _cmdSeq,
13383  );
13384  }
13385  // Don't crash the task if bad arguments were passed from the ground
13386  break;
13387  }
13388 
13389  // Deserialize argument keep
13391  _deserStatus = args.deserializeTo(keep);
13392  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13394  this->cmdResponse_out(
13395  _opCode,
13396  _cmdSeq,
13398  );
13399  }
13400  // Don't crash the task if bad arguments were passed from the ground
13401  break;
13402  }
13403 
13404  // Deserialize argument priority
13405  U8 priority;
13406  _deserStatus = args.deserializeTo(priority);
13407  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13409  this->cmdResponse_out(
13410  _opCode,
13411  _cmdSeq,
13413  );
13414  }
13415  // Don't crash the task if bad arguments were passed from the ground
13416  break;
13417  }
13418 
13419  // Deserialize argument sourceFileName
13420  Fw::CmdStringArg sourceFileName;
13421  _deserStatus = args.deserializeTo(sourceFileName);
13422  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13424  this->cmdResponse_out(
13425  _opCode,
13426  _cmdSeq,
13428  );
13429  }
13430  // Don't crash the task if bad arguments were passed from the ground
13431  break;
13432  }
13433 
13434  // Deserialize argument destFileName
13435  Fw::CmdStringArg destFileName;
13436  _deserStatus = args.deserializeTo(destFileName);
13437  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13439  this->cmdResponse_out(
13440  _opCode,
13441  _cmdSeq,
13443  );
13444  }
13445  // Don't crash the task if bad arguments were passed from the ground
13446  break;
13447  }
13448 
13449  // Make sure there was no data left over.
13450  // That means the argument buffer size was incorrect.
13451 #if FW_CMD_CHECK_RESIDUAL
13452  if (args.getDeserializeSizeLeft() != 0) {
13454  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
13455  }
13456  // Don't crash the task if bad arguments were passed from the ground
13457  break;
13458  }
13459 #endif
13460 
13461  // Call handler function
13462  this->SendFile_cmdHandler(
13463  _opCode, _cmdSeq,
13464  channelId,
13465  destId,
13466  cfdpClass,
13467  keep,
13468  priority,
13469  sourceFileName,
13470  destFileName
13471  );
13472 
13473  break;
13474  }
13475 
13476  // Handle command PlaybackDirectory
13477  case CMD_PLAYBACKDIRECTORY: {
13478  // Deserialize opcode
13479  FwOpcodeType _opCode = 0;
13480  _deserStatus = _msg.deserializeTo(_opCode);
13481  FW_ASSERT (
13482  _deserStatus == Fw::FW_SERIALIZE_OK,
13483  static_cast<FwAssertArgType>(_deserStatus)
13484  );
13485 
13486  // Deserialize command sequence
13487  U32 _cmdSeq = 0;
13488  _deserStatus = _msg.deserializeTo(_cmdSeq);
13489  FW_ASSERT (
13490  _deserStatus == Fw::FW_SERIALIZE_OK,
13491  static_cast<FwAssertArgType>(_deserStatus)
13492  );
13493 
13494  // Deserialize command argument buffer
13495  Fw::CmdArgBuffer args;
13496  _deserStatus = _msg.deserializeTo(args);
13497  FW_ASSERT (
13498  _deserStatus == Fw::FW_SERIALIZE_OK,
13499  static_cast<FwAssertArgType>(_deserStatus)
13500  );
13501 
13502  // Reset buffer
13503  args.resetDeser();
13504 
13505  // Deserialize argument channelId
13506  U8 channelId;
13507  _deserStatus = args.deserializeTo(channelId);
13508  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13510  this->cmdResponse_out(
13511  _opCode,
13512  _cmdSeq,
13514  );
13515  }
13516  // Don't crash the task if bad arguments were passed from the ground
13517  break;
13518  }
13519 
13520  // Deserialize argument destId
13522  _deserStatus = args.deserializeTo(destId);
13523  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13525  this->cmdResponse_out(
13526  _opCode,
13527  _cmdSeq,
13529  );
13530  }
13531  // Don't crash the task if bad arguments were passed from the ground
13532  break;
13533  }
13534 
13535  // Deserialize argument cfdpClass
13536  Svc::Ccsds::Cfdp::Class cfdpClass;
13537  _deserStatus = args.deserializeTo(cfdpClass);
13538  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13540  this->cmdResponse_out(
13541  _opCode,
13542  _cmdSeq,
13544  );
13545  }
13546  // Don't crash the task if bad arguments were passed from the ground
13547  break;
13548  }
13549 
13550  // Deserialize argument keep
13552  _deserStatus = args.deserializeTo(keep);
13553  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13555  this->cmdResponse_out(
13556  _opCode,
13557  _cmdSeq,
13559  );
13560  }
13561  // Don't crash the task if bad arguments were passed from the ground
13562  break;
13563  }
13564 
13565  // Deserialize argument priority
13566  U8 priority;
13567  _deserStatus = args.deserializeTo(priority);
13568  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13570  this->cmdResponse_out(
13571  _opCode,
13572  _cmdSeq,
13574  );
13575  }
13576  // Don't crash the task if bad arguments were passed from the ground
13577  break;
13578  }
13579 
13580  // Deserialize argument sourceDirectory
13581  Fw::CmdStringArg sourceDirectory;
13582  _deserStatus = args.deserializeTo(sourceDirectory);
13583  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13585  this->cmdResponse_out(
13586  _opCode,
13587  _cmdSeq,
13589  );
13590  }
13591  // Don't crash the task if bad arguments were passed from the ground
13592  break;
13593  }
13594 
13595  // Deserialize argument destDirectory
13596  Fw::CmdStringArg destDirectory;
13597  _deserStatus = args.deserializeTo(destDirectory);
13598  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13600  this->cmdResponse_out(
13601  _opCode,
13602  _cmdSeq,
13604  );
13605  }
13606  // Don't crash the task if bad arguments were passed from the ground
13607  break;
13608  }
13609 
13610  // Make sure there was no data left over.
13611  // That means the argument buffer size was incorrect.
13612 #if FW_CMD_CHECK_RESIDUAL
13613  if (args.getDeserializeSizeLeft() != 0) {
13615  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
13616  }
13617  // Don't crash the task if bad arguments were passed from the ground
13618  break;
13619  }
13620 #endif
13621 
13622  // Call handler function
13624  _opCode, _cmdSeq,
13625  channelId,
13626  destId,
13627  cfdpClass,
13628  keep,
13629  priority,
13630  sourceDirectory,
13631  destDirectory
13632  );
13633 
13634  break;
13635  }
13636 
13637  // Handle command PollDirectory
13638  case CMD_POLLDIRECTORY: {
13639  // Deserialize opcode
13640  FwOpcodeType _opCode = 0;
13641  _deserStatus = _msg.deserializeTo(_opCode);
13642  FW_ASSERT (
13643  _deserStatus == Fw::FW_SERIALIZE_OK,
13644  static_cast<FwAssertArgType>(_deserStatus)
13645  );
13646 
13647  // Deserialize command sequence
13648  U32 _cmdSeq = 0;
13649  _deserStatus = _msg.deserializeTo(_cmdSeq);
13650  FW_ASSERT (
13651  _deserStatus == Fw::FW_SERIALIZE_OK,
13652  static_cast<FwAssertArgType>(_deserStatus)
13653  );
13654 
13655  // Deserialize command argument buffer
13656  Fw::CmdArgBuffer args;
13657  _deserStatus = _msg.deserializeTo(args);
13658  FW_ASSERT (
13659  _deserStatus == Fw::FW_SERIALIZE_OK,
13660  static_cast<FwAssertArgType>(_deserStatus)
13661  );
13662 
13663  // Reset buffer
13664  args.resetDeser();
13665 
13666  // Deserialize argument channelId
13667  U8 channelId;
13668  _deserStatus = args.deserializeTo(channelId);
13669  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13671  this->cmdResponse_out(
13672  _opCode,
13673  _cmdSeq,
13675  );
13676  }
13677  // Don't crash the task if bad arguments were passed from the ground
13678  break;
13679  }
13680 
13681  // Deserialize argument pollId
13682  U8 pollId;
13683  _deserStatus = args.deserializeTo(pollId);
13684  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13686  this->cmdResponse_out(
13687  _opCode,
13688  _cmdSeq,
13690  );
13691  }
13692  // Don't crash the task if bad arguments were passed from the ground
13693  break;
13694  }
13695 
13696  // Deserialize argument destId
13698  _deserStatus = args.deserializeTo(destId);
13699  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13701  this->cmdResponse_out(
13702  _opCode,
13703  _cmdSeq,
13705  );
13706  }
13707  // Don't crash the task if bad arguments were passed from the ground
13708  break;
13709  }
13710 
13711  // Deserialize argument cfdpClass
13712  Svc::Ccsds::Cfdp::Class cfdpClass;
13713  _deserStatus = args.deserializeTo(cfdpClass);
13714  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13716  this->cmdResponse_out(
13717  _opCode,
13718  _cmdSeq,
13720  );
13721  }
13722  // Don't crash the task if bad arguments were passed from the ground
13723  break;
13724  }
13725 
13726  // Deserialize argument priority
13727  U8 priority;
13728  _deserStatus = args.deserializeTo(priority);
13729  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13731  this->cmdResponse_out(
13732  _opCode,
13733  _cmdSeq,
13735  );
13736  }
13737  // Don't crash the task if bad arguments were passed from the ground
13738  break;
13739  }
13740 
13741  // Deserialize argument interval
13742  U32 interval;
13743  _deserStatus = args.deserializeTo(interval);
13744  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13746  this->cmdResponse_out(
13747  _opCode,
13748  _cmdSeq,
13750  );
13751  }
13752  // Don't crash the task if bad arguments were passed from the ground
13753  break;
13754  }
13755 
13756  // Deserialize argument sourceDirectory
13757  Fw::CmdStringArg sourceDirectory;
13758  _deserStatus = args.deserializeTo(sourceDirectory);
13759  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13761  this->cmdResponse_out(
13762  _opCode,
13763  _cmdSeq,
13765  );
13766  }
13767  // Don't crash the task if bad arguments were passed from the ground
13768  break;
13769  }
13770 
13771  // Deserialize argument destDirectory
13772  Fw::CmdStringArg destDirectory;
13773  _deserStatus = args.deserializeTo(destDirectory);
13774  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13776  this->cmdResponse_out(
13777  _opCode,
13778  _cmdSeq,
13780  );
13781  }
13782  // Don't crash the task if bad arguments were passed from the ground
13783  break;
13784  }
13785 
13786  // Make sure there was no data left over.
13787  // That means the argument buffer size was incorrect.
13788 #if FW_CMD_CHECK_RESIDUAL
13789  if (args.getDeserializeSizeLeft() != 0) {
13791  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
13792  }
13793  // Don't crash the task if bad arguments were passed from the ground
13794  break;
13795  }
13796 #endif
13797 
13798  // Call handler function
13800  _opCode, _cmdSeq,
13801  channelId,
13802  pollId,
13803  destId,
13804  cfdpClass,
13805  priority,
13806  interval,
13807  sourceDirectory,
13808  destDirectory
13809  );
13810 
13811  break;
13812  }
13813 
13814  // Handle command StopPollDirectory
13815  case CMD_STOPPOLLDIRECTORY: {
13816  // Deserialize opcode
13817  FwOpcodeType _opCode = 0;
13818  _deserStatus = _msg.deserializeTo(_opCode);
13819  FW_ASSERT (
13820  _deserStatus == Fw::FW_SERIALIZE_OK,
13821  static_cast<FwAssertArgType>(_deserStatus)
13822  );
13823 
13824  // Deserialize command sequence
13825  U32 _cmdSeq = 0;
13826  _deserStatus = _msg.deserializeTo(_cmdSeq);
13827  FW_ASSERT (
13828  _deserStatus == Fw::FW_SERIALIZE_OK,
13829  static_cast<FwAssertArgType>(_deserStatus)
13830  );
13831 
13832  // Deserialize command argument buffer
13833  Fw::CmdArgBuffer args;
13834  _deserStatus = _msg.deserializeTo(args);
13835  FW_ASSERT (
13836  _deserStatus == Fw::FW_SERIALIZE_OK,
13837  static_cast<FwAssertArgType>(_deserStatus)
13838  );
13839 
13840  // Reset buffer
13841  args.resetDeser();
13842 
13843  // Deserialize argument channelId
13844  U8 channelId;
13845  _deserStatus = args.deserializeTo(channelId);
13846  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13848  this->cmdResponse_out(
13849  _opCode,
13850  _cmdSeq,
13852  );
13853  }
13854  // Don't crash the task if bad arguments were passed from the ground
13855  break;
13856  }
13857 
13858  // Deserialize argument pollId
13859  U8 pollId;
13860  _deserStatus = args.deserializeTo(pollId);
13861  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13863  this->cmdResponse_out(
13864  _opCode,
13865  _cmdSeq,
13867  );
13868  }
13869  // Don't crash the task if bad arguments were passed from the ground
13870  break;
13871  }
13872 
13873  // Make sure there was no data left over.
13874  // That means the argument buffer size was incorrect.
13875 #if FW_CMD_CHECK_RESIDUAL
13876  if (args.getDeserializeSizeLeft() != 0) {
13878  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
13879  }
13880  // Don't crash the task if bad arguments were passed from the ground
13881  break;
13882  }
13883 #endif
13884 
13885  // Call handler function
13887  _opCode, _cmdSeq,
13888  channelId,
13889  pollId
13890  );
13891 
13892  break;
13893  }
13894 
13895  // Handle command SetChannelFlow
13896  case CMD_SETCHANNELFLOW: {
13897  // Deserialize opcode
13898  FwOpcodeType _opCode = 0;
13899  _deserStatus = _msg.deserializeTo(_opCode);
13900  FW_ASSERT (
13901  _deserStatus == Fw::FW_SERIALIZE_OK,
13902  static_cast<FwAssertArgType>(_deserStatus)
13903  );
13904 
13905  // Deserialize command sequence
13906  U32 _cmdSeq = 0;
13907  _deserStatus = _msg.deserializeTo(_cmdSeq);
13908  FW_ASSERT (
13909  _deserStatus == Fw::FW_SERIALIZE_OK,
13910  static_cast<FwAssertArgType>(_deserStatus)
13911  );
13912 
13913  // Deserialize command argument buffer
13914  Fw::CmdArgBuffer args;
13915  _deserStatus = _msg.deserializeTo(args);
13916  FW_ASSERT (
13917  _deserStatus == Fw::FW_SERIALIZE_OK,
13918  static_cast<FwAssertArgType>(_deserStatus)
13919  );
13920 
13921  // Reset buffer
13922  args.resetDeser();
13923 
13924  // Deserialize argument channelId
13925  U8 channelId;
13926  _deserStatus = args.deserializeTo(channelId);
13927  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13929  this->cmdResponse_out(
13930  _opCode,
13931  _cmdSeq,
13933  );
13934  }
13935  // Don't crash the task if bad arguments were passed from the ground
13936  break;
13937  }
13938 
13939  // Deserialize argument freeze
13940  Svc::Ccsds::Cfdp::Flow freeze;
13941  _deserStatus = args.deserializeTo(freeze);
13942  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
13944  this->cmdResponse_out(
13945  _opCode,
13946  _cmdSeq,
13948  );
13949  }
13950  // Don't crash the task if bad arguments were passed from the ground
13951  break;
13952  }
13953 
13954  // Make sure there was no data left over.
13955  // That means the argument buffer size was incorrect.
13956 #if FW_CMD_CHECK_RESIDUAL
13957  if (args.getDeserializeSizeLeft() != 0) {
13959  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
13960  }
13961  // Don't crash the task if bad arguments were passed from the ground
13962  break;
13963  }
13964 #endif
13965 
13966  // Call handler function
13968  _opCode, _cmdSeq,
13969  channelId,
13970  freeze
13971  );
13972 
13973  break;
13974  }
13975 
13976  // Handle command SuspendResumeTransaction
13977  case CMD_SUSPENDRESUMETRANSACTION: {
13978  // Deserialize opcode
13979  FwOpcodeType _opCode = 0;
13980  _deserStatus = _msg.deserializeTo(_opCode);
13981  FW_ASSERT (
13982  _deserStatus == Fw::FW_SERIALIZE_OK,
13983  static_cast<FwAssertArgType>(_deserStatus)
13984  );
13985 
13986  // Deserialize command sequence
13987  U32 _cmdSeq = 0;
13988  _deserStatus = _msg.deserializeTo(_cmdSeq);
13989  FW_ASSERT (
13990  _deserStatus == Fw::FW_SERIALIZE_OK,
13991  static_cast<FwAssertArgType>(_deserStatus)
13992  );
13993 
13994  // Deserialize command argument buffer
13995  Fw::CmdArgBuffer args;
13996  _deserStatus = _msg.deserializeTo(args);
13997  FW_ASSERT (
13998  _deserStatus == Fw::FW_SERIALIZE_OK,
13999  static_cast<FwAssertArgType>(_deserStatus)
14000  );
14001 
14002  // Reset buffer
14003  args.resetDeser();
14004 
14005  // Deserialize argument channelId
14006  U8 channelId;
14007  _deserStatus = args.deserializeTo(channelId);
14008  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
14010  this->cmdResponse_out(
14011  _opCode,
14012  _cmdSeq,
14014  );
14015  }
14016  // Don't crash the task if bad arguments were passed from the ground
14017  break;
14018  }
14019 
14020  // Deserialize argument transactionSeq
14021  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq;
14022  _deserStatus = args.deserializeTo(transactionSeq);
14023  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
14025  this->cmdResponse_out(
14026  _opCode,
14027  _cmdSeq,
14029  );
14030  }
14031  // Don't crash the task if bad arguments were passed from the ground
14032  break;
14033  }
14034 
14035  // Deserialize argument entityId
14036  Svc::Ccsds::Cfdp::EntityId entityId;
14037  _deserStatus = args.deserializeTo(entityId);
14038  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
14040  this->cmdResponse_out(
14041  _opCode,
14042  _cmdSeq,
14044  );
14045  }
14046  // Don't crash the task if bad arguments were passed from the ground
14047  break;
14048  }
14049 
14050  // Deserialize argument action
14052  _deserStatus = args.deserializeTo(action);
14053  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
14055  this->cmdResponse_out(
14056  _opCode,
14057  _cmdSeq,
14059  );
14060  }
14061  // Don't crash the task if bad arguments were passed from the ground
14062  break;
14063  }
14064 
14065  // Make sure there was no data left over.
14066  // That means the argument buffer size was incorrect.
14067 #if FW_CMD_CHECK_RESIDUAL
14068  if (args.getDeserializeSizeLeft() != 0) {
14070  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
14071  }
14072  // Don't crash the task if bad arguments were passed from the ground
14073  break;
14074  }
14075 #endif
14076 
14077  // Call handler function
14079  _opCode, _cmdSeq,
14080  channelId,
14081  transactionSeq,
14082  entityId,
14083  action
14084  );
14085 
14086  break;
14087  }
14088 
14089  // Handle command CancelTransaction
14090  case CMD_CANCELTRANSACTION: {
14091  // Deserialize opcode
14092  FwOpcodeType _opCode = 0;
14093  _deserStatus = _msg.deserializeTo(_opCode);
14094  FW_ASSERT (
14095  _deserStatus == Fw::FW_SERIALIZE_OK,
14096  static_cast<FwAssertArgType>(_deserStatus)
14097  );
14098 
14099  // Deserialize command sequence
14100  U32 _cmdSeq = 0;
14101  _deserStatus = _msg.deserializeTo(_cmdSeq);
14102  FW_ASSERT (
14103  _deserStatus == Fw::FW_SERIALIZE_OK,
14104  static_cast<FwAssertArgType>(_deserStatus)
14105  );
14106 
14107  // Deserialize command argument buffer
14108  Fw::CmdArgBuffer args;
14109  _deserStatus = _msg.deserializeTo(args);
14110  FW_ASSERT (
14111  _deserStatus == Fw::FW_SERIALIZE_OK,
14112  static_cast<FwAssertArgType>(_deserStatus)
14113  );
14114 
14115  // Reset buffer
14116  args.resetDeser();
14117 
14118  // Deserialize argument channelId
14119  U8 channelId;
14120  _deserStatus = args.deserializeTo(channelId);
14121  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
14123  this->cmdResponse_out(
14124  _opCode,
14125  _cmdSeq,
14127  );
14128  }
14129  // Don't crash the task if bad arguments were passed from the ground
14130  break;
14131  }
14132 
14133  // Deserialize argument transactionSeq
14134  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq;
14135  _deserStatus = args.deserializeTo(transactionSeq);
14136  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
14138  this->cmdResponse_out(
14139  _opCode,
14140  _cmdSeq,
14142  );
14143  }
14144  // Don't crash the task if bad arguments were passed from the ground
14145  break;
14146  }
14147 
14148  // Deserialize argument entityId
14149  Svc::Ccsds::Cfdp::EntityId entityId;
14150  _deserStatus = args.deserializeTo(entityId);
14151  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
14153  this->cmdResponse_out(
14154  _opCode,
14155  _cmdSeq,
14157  );
14158  }
14159  // Don't crash the task if bad arguments were passed from the ground
14160  break;
14161  }
14162 
14163  // Make sure there was no data left over.
14164  // That means the argument buffer size was incorrect.
14165 #if FW_CMD_CHECK_RESIDUAL
14166  if (args.getDeserializeSizeLeft() != 0) {
14168  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
14169  }
14170  // Don't crash the task if bad arguments were passed from the ground
14171  break;
14172  }
14173 #endif
14174 
14175  // Call handler function
14177  _opCode, _cmdSeq,
14178  channelId,
14179  transactionSeq,
14180  entityId
14181  );
14182 
14183  break;
14184  }
14185 
14186  // Handle command AbandonTransaction
14187  case CMD_ABANDONTRANSACTION: {
14188  // Deserialize opcode
14189  FwOpcodeType _opCode = 0;
14190  _deserStatus = _msg.deserializeTo(_opCode);
14191  FW_ASSERT (
14192  _deserStatus == Fw::FW_SERIALIZE_OK,
14193  static_cast<FwAssertArgType>(_deserStatus)
14194  );
14195 
14196  // Deserialize command sequence
14197  U32 _cmdSeq = 0;
14198  _deserStatus = _msg.deserializeTo(_cmdSeq);
14199  FW_ASSERT (
14200  _deserStatus == Fw::FW_SERIALIZE_OK,
14201  static_cast<FwAssertArgType>(_deserStatus)
14202  );
14203 
14204  // Deserialize command argument buffer
14205  Fw::CmdArgBuffer args;
14206  _deserStatus = _msg.deserializeTo(args);
14207  FW_ASSERT (
14208  _deserStatus == Fw::FW_SERIALIZE_OK,
14209  static_cast<FwAssertArgType>(_deserStatus)
14210  );
14211 
14212  // Reset buffer
14213  args.resetDeser();
14214 
14215  // Deserialize argument channelId
14216  U8 channelId;
14217  _deserStatus = args.deserializeTo(channelId);
14218  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
14220  this->cmdResponse_out(
14221  _opCode,
14222  _cmdSeq,
14224  );
14225  }
14226  // Don't crash the task if bad arguments were passed from the ground
14227  break;
14228  }
14229 
14230  // Deserialize argument transactionSeq
14231  Svc::Ccsds::Cfdp::TransactionSeq transactionSeq;
14232  _deserStatus = args.deserializeTo(transactionSeq);
14233  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
14235  this->cmdResponse_out(
14236  _opCode,
14237  _cmdSeq,
14239  );
14240  }
14241  // Don't crash the task if bad arguments were passed from the ground
14242  break;
14243  }
14244 
14245  // Deserialize argument entityId
14246  Svc::Ccsds::Cfdp::EntityId entityId;
14247  _deserStatus = args.deserializeTo(entityId);
14248  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
14250  this->cmdResponse_out(
14251  _opCode,
14252  _cmdSeq,
14254  );
14255  }
14256  // Don't crash the task if bad arguments were passed from the ground
14257  break;
14258  }
14259 
14260  // Make sure there was no data left over.
14261  // That means the argument buffer size was incorrect.
14262 #if FW_CMD_CHECK_RESIDUAL
14263  if (args.getDeserializeSizeLeft() != 0) {
14265  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
14266  }
14267  // Don't crash the task if bad arguments were passed from the ground
14268  break;
14269  }
14270 #endif
14271 
14272  // Call handler function
14274  _opCode, _cmdSeq,
14275  channelId,
14276  transactionSeq,
14277  entityId
14278  );
14279 
14280  break;
14281  }
14282 
14283  // Handle command ResetCounters
14284  case CMD_RESETCOUNTERS: {
14285  // Deserialize opcode
14286  FwOpcodeType _opCode = 0;
14287  _deserStatus = _msg.deserializeTo(_opCode);
14288  FW_ASSERT (
14289  _deserStatus == Fw::FW_SERIALIZE_OK,
14290  static_cast<FwAssertArgType>(_deserStatus)
14291  );
14292 
14293  // Deserialize command sequence
14294  U32 _cmdSeq = 0;
14295  _deserStatus = _msg.deserializeTo(_cmdSeq);
14296  FW_ASSERT (
14297  _deserStatus == Fw::FW_SERIALIZE_OK,
14298  static_cast<FwAssertArgType>(_deserStatus)
14299  );
14300 
14301  // Deserialize command argument buffer
14302  Fw::CmdArgBuffer args;
14303  _deserStatus = _msg.deserializeTo(args);
14304  FW_ASSERT (
14305  _deserStatus == Fw::FW_SERIALIZE_OK,
14306  static_cast<FwAssertArgType>(_deserStatus)
14307  );
14308 
14309  // Reset buffer
14310  args.resetDeser();
14311 
14312  // Deserialize argument channelId
14313  U8 channelId;
14314  _deserStatus = args.deserializeTo(channelId);
14315  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
14317  this->cmdResponse_out(
14318  _opCode,
14319  _cmdSeq,
14321  );
14322  }
14323  // Don't crash the task if bad arguments were passed from the ground
14324  break;
14325  }
14326 
14327  // Make sure there was no data left over.
14328  // That means the argument buffer size was incorrect.
14329 #if FW_CMD_CHECK_RESIDUAL
14330  if (args.getDeserializeSizeLeft() != 0) {
14332  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
14333  }
14334  // Don't crash the task if bad arguments were passed from the ground
14335  break;
14336  }
14337 #endif
14338 
14339  // Call handler function
14341  _opCode, _cmdSeq,
14342  channelId
14343  );
14344 
14345  break;
14346  }
14347 
14348  default:
14349  return MSG_DISPATCH_ERROR;
14350  }
14351 
14352  return MSG_DISPATCH_OK;
14353  }
14354 
14355  // ----------------------------------------------------------------------
14356  // Calls for messages received on special input ports
14357  // ----------------------------------------------------------------------
14358 
14359  void CfdpManagerComponentBase ::
14360  m_p_cmdIn_in(
14361  Fw::PassiveComponentBase* callComp,
14362  FwIndexType portNum,
14363  FwOpcodeType opCode,
14364  U32 cmdSeq,
14365  Fw::CmdArgBuffer& args
14366  )
14367  {
14368  FW_ASSERT(callComp != nullptr);
14369  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
14370  compPtr->cmdIn_handlerBase(
14371  portNum,
14372  opCode,
14373  cmdSeq,
14374  args
14375  );
14376  }
14377 
14378  // ----------------------------------------------------------------------
14379  // Calls for messages received on typed input ports
14380  // ----------------------------------------------------------------------
14381 
14382  void CfdpManagerComponentBase ::
14383  m_p_dataIn_in(
14384  Fw::PassiveComponentBase* callComp,
14385  FwIndexType portNum,
14386  Fw::Buffer& fwBuffer
14387  )
14388  {
14389  FW_ASSERT(callComp != nullptr);
14390  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
14391  compPtr->dataIn_handlerBase(
14392  portNum,
14393  fwBuffer
14394  );
14395  }
14396 
14397  void CfdpManagerComponentBase ::
14398  m_p_dataReturnIn_in(
14399  Fw::PassiveComponentBase* callComp,
14400  FwIndexType portNum,
14401  Fw::Buffer& fwBuffer
14402  )
14403  {
14404  FW_ASSERT(callComp != nullptr);
14405  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
14406  compPtr->dataReturnIn_handlerBase(
14407  portNum,
14408  fwBuffer
14409  );
14410  }
14411 
14412  Svc::SendFileResponse CfdpManagerComponentBase ::
14413  m_p_fileIn_in(
14414  Fw::PassiveComponentBase* callComp,
14415  FwIndexType portNum,
14416  const Fw::StringBase& sourceFileName,
14417  const Fw::StringBase& destFileName,
14418  U32 offset,
14419  U32 length
14420  )
14421  {
14422  FW_ASSERT(callComp != nullptr);
14423  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
14424  return compPtr->fileIn_handlerBase(
14425  portNum,
14426  sourceFileName,
14427  destFileName,
14428  offset,
14429  length
14430  );
14431  }
14432 
14433  void CfdpManagerComponentBase ::
14434  m_p_pingIn_in(
14435  Fw::PassiveComponentBase* callComp,
14436  FwIndexType portNum,
14437  U32 key
14438  )
14439  {
14440  FW_ASSERT(callComp != nullptr);
14441  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
14442  compPtr->pingIn_handlerBase(
14443  portNum,
14444  key
14445  );
14446  }
14447 
14448  void CfdpManagerComponentBase ::
14449  m_p_run1Hz_in(
14450  Fw::PassiveComponentBase* callComp,
14451  FwIndexType portNum,
14452  U32 context
14453  )
14454  {
14455  FW_ASSERT(callComp != nullptr);
14456  CfdpManagerComponentBase* compPtr = static_cast<CfdpManagerComponentBase*>(callComp);
14457  compPtr->run1Hz_handlerBase(
14458  portNum,
14459  context
14460  );
14461  }
14462 
14463 #if !FW_DIRECT_PORT_CALLS
14464 
14465  // ----------------------------------------------------------------------
14466  // Invocation functions for special output ports
14467  // ----------------------------------------------------------------------
14468 
14469  void CfdpManagerComponentBase ::
14470  cmdRegOut_out(
14471  FwIndexType portNum,
14472  FwOpcodeType opCode
14473  ) const
14474  {
14475  FW_ASSERT(
14476  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
14477  static_cast<FwAssertArgType>(portNum)
14478  );
14479 
14480  FW_ASSERT(
14481  this->m_cmdRegOut_OutputPort[portNum].isConnected(),
14482  static_cast<FwAssertArgType>(portNum)
14483  );
14484  this->m_cmdRegOut_OutputPort[portNum].invoke(
14485  opCode
14486  );
14487  }
14488 
14489  void CfdpManagerComponentBase ::
14490  cmdResponseOut_out(
14491  FwIndexType portNum,
14492  FwOpcodeType opCode,
14493  U32 cmdSeq,
14494  const Fw::CmdResponse& response
14495  ) const
14496  {
14497  FW_ASSERT(
14498  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
14499  static_cast<FwAssertArgType>(portNum)
14500  );
14501 
14502  FW_ASSERT(
14503  this->m_cmdResponseOut_OutputPort[portNum].isConnected(),
14504  static_cast<FwAssertArgType>(portNum)
14505  );
14506  this->m_cmdResponseOut_OutputPort[portNum].invoke(
14507  opCode,
14508  cmdSeq,
14509  response
14510  );
14511  }
14512 
14513  void CfdpManagerComponentBase ::
14514  logOut_out(
14515  FwIndexType portNum,
14516  FwEventIdType id,
14517  Fw::Time& timeTag,
14518  const Fw::LogSeverity& severity,
14519  Fw::LogBuffer& args
14520  ) const
14521  {
14522  FW_ASSERT(
14523  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
14524  static_cast<FwAssertArgType>(portNum)
14525  );
14526 
14527  FW_ASSERT(
14528  this->m_logOut_OutputPort[portNum].isConnected(),
14529  static_cast<FwAssertArgType>(portNum)
14530  );
14531  this->m_logOut_OutputPort[portNum].invoke(
14532  id,
14533  timeTag,
14534  severity,
14535  args
14536  );
14537  }
14538 
14539 #if FW_ENABLE_TEXT_LOGGING
14540 
14541  void CfdpManagerComponentBase ::
14542  logTextOut_out(
14543  FwIndexType portNum,
14544  FwEventIdType id,
14545  Fw::Time& timeTag,
14546  const Fw::LogSeverity& severity,
14547  Fw::TextLogString& text
14548  ) const
14549  {
14550  FW_ASSERT(
14551  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
14552  static_cast<FwAssertArgType>(portNum)
14553  );
14554 
14555  FW_ASSERT(
14556  this->m_logTextOut_OutputPort[portNum].isConnected(),
14557  static_cast<FwAssertArgType>(portNum)
14558  );
14559  this->m_logTextOut_OutputPort[portNum].invoke(
14560  id,
14561  timeTag,
14562  severity,
14563  text
14564  );
14565  }
14566 
14567 #endif
14568 
14569  Fw::ParamValid CfdpManagerComponentBase ::
14570  prmGetOut_out(
14571  FwIndexType portNum,
14572  FwPrmIdType id,
14573  Fw::ParamBuffer& val
14574  ) const
14575  {
14576  FW_ASSERT(
14577  (0 <= portNum) && (portNum < this->getNum_prmGetOut_OutputPorts()),
14578  static_cast<FwAssertArgType>(portNum)
14579  );
14580 
14581  FW_ASSERT(
14582  this->m_prmGetOut_OutputPort[portNum].isConnected(),
14583  static_cast<FwAssertArgType>(portNum)
14584  );
14585  return this->m_prmGetOut_OutputPort[portNum].invoke(
14586  id,
14587  val
14588  );
14589  }
14590 
14591  void CfdpManagerComponentBase ::
14592  prmSetOut_out(
14593  FwIndexType portNum,
14594  FwPrmIdType id,
14595  Fw::ParamBuffer& val
14596  ) const
14597  {
14598  FW_ASSERT(
14599  (0 <= portNum) && (portNum < this->getNum_prmSetOut_OutputPorts()),
14600  static_cast<FwAssertArgType>(portNum)
14601  );
14602 
14603  FW_ASSERT(
14604  this->m_prmSetOut_OutputPort[portNum].isConnected(),
14605  static_cast<FwAssertArgType>(portNum)
14606  );
14607  this->m_prmSetOut_OutputPort[portNum].invoke(
14608  id,
14609  val
14610  );
14611  }
14612 
14613  void CfdpManagerComponentBase ::
14614  timeCaller_out(
14615  FwIndexType portNum,
14616  Fw::Time& time
14617  ) const
14618  {
14619  FW_ASSERT(
14620  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
14621  static_cast<FwAssertArgType>(portNum)
14622  );
14623 
14624  FW_ASSERT(
14625  this->m_timeCaller_OutputPort[portNum].isConnected(),
14626  static_cast<FwAssertArgType>(portNum)
14627  );
14628  this->m_timeCaller_OutputPort[portNum].invoke(
14629  time
14630  );
14631  }
14632 
14633  void CfdpManagerComponentBase ::
14634  tlmOut_out(
14635  FwIndexType portNum,
14636  FwChanIdType id,
14637  Fw::Time& timeTag,
14638  Fw::TlmBuffer& val
14639  ) const
14640  {
14641  FW_ASSERT(
14642  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
14643  static_cast<FwAssertArgType>(portNum)
14644  );
14645 
14646  FW_ASSERT(
14647  this->m_tlmOut_OutputPort[portNum].isConnected(),
14648  static_cast<FwAssertArgType>(portNum)
14649  );
14650  this->m_tlmOut_OutputPort[portNum].invoke(
14651  id,
14652  timeTag,
14653  val
14654  );
14655  }
14656 
14657 #endif
14658 
14659  // ----------------------------------------------------------------------
14660  // Parameter set functions
14661  // ----------------------------------------------------------------------
14662 
14663  Fw::CmdResponse CfdpManagerComponentBase ::
14664  paramSet_LocalEid(Fw::SerialBufferBase& val)
14665  {
14666  Svc::Ccsds::Cfdp::EntityId _localVal{};
14667  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
14668  if (_stat != Fw::FW_SERIALIZE_OK) {
14670  }
14671 
14672  // Assign value only if successfully deserialized
14673  this->m_paramLock.lock();
14674  this->m_LocalEid = _localVal;
14675  this->m_param_LocalEid_valid = Fw::ParamValid::VALID;
14676  this->m_paramLock.unlock();
14677 
14678  // Call notifier
14680  return Fw::CmdResponse::OK;
14681  }
14682 
14683  Fw::CmdResponse CfdpManagerComponentBase ::
14684  paramSet_OutgoingFileChunkSize(Fw::SerialBufferBase& val)
14685  {
14686  U32 _localVal{};
14687  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
14688  if (_stat != Fw::FW_SERIALIZE_OK) {
14690  }
14691 
14692  // Assign value only if successfully deserialized
14693  this->m_paramLock.lock();
14694  this->m_OutgoingFileChunkSize = _localVal;
14695  this->m_param_OutgoingFileChunkSize_valid = Fw::ParamValid::VALID;
14696  this->m_paramLock.unlock();
14697 
14698  // Call notifier
14700  return Fw::CmdResponse::OK;
14701  }
14702 
14703  Fw::CmdResponse CfdpManagerComponentBase ::
14704  paramSet_RxCrcCalcBytesPerCycle(Fw::SerialBufferBase& val)
14705  {
14706  U32 _localVal{};
14707  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
14708  if (_stat != Fw::FW_SERIALIZE_OK) {
14710  }
14711 
14712  // Assign value only if successfully deserialized
14713  this->m_paramLock.lock();
14714  this->m_RxCrcCalcBytesPerCycle = _localVal;
14715  this->m_param_RxCrcCalcBytesPerCycle_valid = Fw::ParamValid::VALID;
14716  this->m_paramLock.unlock();
14717 
14718  // Call notifier
14720  return Fw::CmdResponse::OK;
14721  }
14722 
14723  Fw::CmdResponse CfdpManagerComponentBase ::
14724  paramSet_PostInactivitySendRetries(Fw::SerialBufferBase& val)
14725  {
14726  U8 _localVal{};
14727  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
14728  if (_stat != Fw::FW_SERIALIZE_OK) {
14730  }
14731 
14732  // Assign value only if successfully deserialized
14733  this->m_paramLock.lock();
14734  this->m_PostInactivitySendRetries = _localVal;
14735  this->m_param_PostInactivitySendRetries_valid = Fw::ParamValid::VALID;
14736  this->m_paramLock.unlock();
14737 
14738  // Call notifier
14740  return Fw::CmdResponse::OK;
14741  }
14742 
14743  Fw::CmdResponse CfdpManagerComponentBase ::
14744  paramSet_FileInDefaultChannel(Fw::SerialBufferBase& val)
14745  {
14746  U8 _localVal{};
14747  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
14748  if (_stat != Fw::FW_SERIALIZE_OK) {
14750  }
14751 
14752  // Assign value only if successfully deserialized
14753  this->m_paramLock.lock();
14754  this->m_FileInDefaultChannel = _localVal;
14755  this->m_param_FileInDefaultChannel_valid = Fw::ParamValid::VALID;
14756  this->m_paramLock.unlock();
14757 
14758  // Call notifier
14760  return Fw::CmdResponse::OK;
14761  }
14762 
14763  Fw::CmdResponse CfdpManagerComponentBase ::
14764  paramSet_FileInDefaultDestEntityId(Fw::SerialBufferBase& val)
14765  {
14766  Svc::Ccsds::Cfdp::EntityId _localVal{};
14767  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
14768  if (_stat != Fw::FW_SERIALIZE_OK) {
14770  }
14771 
14772  // Assign value only if successfully deserialized
14773  this->m_paramLock.lock();
14774  this->m_FileInDefaultDestEntityId = _localVal;
14775  this->m_param_FileInDefaultDestEntityId_valid = Fw::ParamValid::VALID;
14776  this->m_paramLock.unlock();
14777 
14778  // Call notifier
14780  return Fw::CmdResponse::OK;
14781  }
14782 
14783  Fw::CmdResponse CfdpManagerComponentBase ::
14784  paramSet_FileInDefaultClass(Fw::SerialBufferBase& val)
14785  {
14786  Svc::Ccsds::Cfdp::Class _localVal{};
14787  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
14788  if (_stat != Fw::FW_SERIALIZE_OK) {
14790  }
14791 
14792  // Assign value only if successfully deserialized
14793  this->m_paramLock.lock();
14794  this->m_FileInDefaultClass = _localVal;
14795  this->m_param_FileInDefaultClass_valid = Fw::ParamValid::VALID;
14796  this->m_paramLock.unlock();
14797 
14798  // Call notifier
14800  return Fw::CmdResponse::OK;
14801  }
14802 
14803  Fw::CmdResponse CfdpManagerComponentBase ::
14804  paramSet_FileInDefaultKeep(Fw::SerialBufferBase& val)
14805  {
14806  Svc::Ccsds::Cfdp::Keep _localVal{};
14807  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
14808  if (_stat != Fw::FW_SERIALIZE_OK) {
14810  }
14811 
14812  // Assign value only if successfully deserialized
14813  this->m_paramLock.lock();
14814  this->m_FileInDefaultKeep = _localVal;
14815  this->m_param_FileInDefaultKeep_valid = Fw::ParamValid::VALID;
14816  this->m_paramLock.unlock();
14817 
14818  // Call notifier
14820  return Fw::CmdResponse::OK;
14821  }
14822 
14823  Fw::CmdResponse CfdpManagerComponentBase ::
14824  paramSet_FileInDefaultPriority(Fw::SerialBufferBase& val)
14825  {
14826  U8 _localVal{};
14827  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
14828  if (_stat != Fw::FW_SERIALIZE_OK) {
14830  }
14831 
14832  // Assign value only if successfully deserialized
14833  this->m_paramLock.lock();
14834  this->m_FileInDefaultPriority = _localVal;
14835  this->m_param_FileInDefaultPriority_valid = Fw::ParamValid::VALID;
14836  this->m_paramLock.unlock();
14837 
14838  // Call notifier
14840  return Fw::CmdResponse::OK;
14841  }
14842 
14843  Fw::CmdResponse CfdpManagerComponentBase ::
14844  paramSet_ChannelConfig(Fw::SerialBufferBase& val)
14845  {
14847  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
14848  if (_stat != Fw::FW_SERIALIZE_OK) {
14850  }
14851 
14852  // Assign value only if successfully deserialized
14853  this->m_paramLock.lock();
14854  this->m_ChannelConfig = _localVal;
14855  this->m_param_ChannelConfig_valid = Fw::ParamValid::VALID;
14856  this->m_paramLock.unlock();
14857 
14858  // Call notifier
14860  return Fw::CmdResponse::OK;
14861  }
14862 
14863  // ----------------------------------------------------------------------
14864  // Parameter save functions
14865  // ----------------------------------------------------------------------
14866 
14867  Fw::CmdResponse CfdpManagerComponentBase ::
14868  paramSave_LocalEid()
14869  {
14870  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14872  }
14873  Fw::ParamBuffer _paramBuffer;
14874  const FwIdType idBase = this->getIdBase();
14876  // Serialize the parameter
14877  this->m_paramLock.lock();
14878  if ((this->m_param_LocalEid_valid == Fw::ParamValid::VALID) || (this->m_param_LocalEid_valid == Fw::ParamValid::DEFAULT)) {
14879  _stat = _paramBuffer.serializeFrom(m_LocalEid);
14880  }
14881  this->m_paramLock.unlock();
14882  if (_stat != Fw::FW_SERIALIZE_OK) {
14884  }
14885  // Save the parameter
14886  this->prmSetOut_out(
14887  0,
14888  static_cast<FwPrmIdType>(idBase + PARAMID_LOCALEID),
14889  _paramBuffer
14890  );
14891  // Return the command response
14892  return Fw::CmdResponse::OK;
14893  }
14894 
14895  Fw::CmdResponse CfdpManagerComponentBase ::
14896  paramSave_OutgoingFileChunkSize()
14897  {
14898  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14900  }
14901  Fw::ParamBuffer _paramBuffer;
14902  const FwIdType idBase = this->getIdBase();
14904  // Serialize the parameter
14905  this->m_paramLock.lock();
14906  if ((this->m_param_OutgoingFileChunkSize_valid == Fw::ParamValid::VALID) || (this->m_param_OutgoingFileChunkSize_valid == Fw::ParamValid::DEFAULT)) {
14907  _stat = _paramBuffer.serializeFrom(m_OutgoingFileChunkSize);
14908  }
14909  this->m_paramLock.unlock();
14910  if (_stat != Fw::FW_SERIALIZE_OK) {
14912  }
14913  // Save the parameter
14914  this->prmSetOut_out(
14915  0,
14916  static_cast<FwPrmIdType>(idBase + PARAMID_OUTGOINGFILECHUNKSIZE),
14917  _paramBuffer
14918  );
14919  // Return the command response
14920  return Fw::CmdResponse::OK;
14921  }
14922 
14923  Fw::CmdResponse CfdpManagerComponentBase ::
14924  paramSave_RxCrcCalcBytesPerCycle()
14925  {
14926  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14928  }
14929  Fw::ParamBuffer _paramBuffer;
14930  const FwIdType idBase = this->getIdBase();
14932  // Serialize the parameter
14933  this->m_paramLock.lock();
14934  if ((this->m_param_RxCrcCalcBytesPerCycle_valid == Fw::ParamValid::VALID) || (this->m_param_RxCrcCalcBytesPerCycle_valid == Fw::ParamValid::DEFAULT)) {
14935  _stat = _paramBuffer.serializeFrom(m_RxCrcCalcBytesPerCycle);
14936  }
14937  this->m_paramLock.unlock();
14938  if (_stat != Fw::FW_SERIALIZE_OK) {
14940  }
14941  // Save the parameter
14942  this->prmSetOut_out(
14943  0,
14944  static_cast<FwPrmIdType>(idBase + PARAMID_RXCRCCALCBYTESPERCYCLE),
14945  _paramBuffer
14946  );
14947  // Return the command response
14948  return Fw::CmdResponse::OK;
14949  }
14950 
14951  Fw::CmdResponse CfdpManagerComponentBase ::
14952  paramSave_PostInactivitySendRetries()
14953  {
14954  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14956  }
14957  Fw::ParamBuffer _paramBuffer;
14958  const FwIdType idBase = this->getIdBase();
14960  // Serialize the parameter
14961  this->m_paramLock.lock();
14962  if ((this->m_param_PostInactivitySendRetries_valid == Fw::ParamValid::VALID) || (this->m_param_PostInactivitySendRetries_valid == Fw::ParamValid::DEFAULT)) {
14963  _stat = _paramBuffer.serializeFrom(m_PostInactivitySendRetries);
14964  }
14965  this->m_paramLock.unlock();
14966  if (_stat != Fw::FW_SERIALIZE_OK) {
14968  }
14969  // Save the parameter
14970  this->prmSetOut_out(
14971  0,
14972  static_cast<FwPrmIdType>(idBase + PARAMID_POSTINACTIVITYSENDRETRIES),
14973  _paramBuffer
14974  );
14975  // Return the command response
14976  return Fw::CmdResponse::OK;
14977  }
14978 
14979  Fw::CmdResponse CfdpManagerComponentBase ::
14980  paramSave_FileInDefaultChannel()
14981  {
14982  if (!this->isConnected_prmSetOut_OutputPort(0)) {
14984  }
14985  Fw::ParamBuffer _paramBuffer;
14986  const FwIdType idBase = this->getIdBase();
14988  // Serialize the parameter
14989  this->m_paramLock.lock();
14990  if ((this->m_param_FileInDefaultChannel_valid == Fw::ParamValid::VALID) || (this->m_param_FileInDefaultChannel_valid == Fw::ParamValid::DEFAULT)) {
14991  _stat = _paramBuffer.serializeFrom(m_FileInDefaultChannel);
14992  }
14993  this->m_paramLock.unlock();
14994  if (_stat != Fw::FW_SERIALIZE_OK) {
14996  }
14997  // Save the parameter
14998  this->prmSetOut_out(
14999  0,
15000  static_cast<FwPrmIdType>(idBase + PARAMID_FILEINDEFAULTCHANNEL),
15001  _paramBuffer
15002  );
15003  // Return the command response
15004  return Fw::CmdResponse::OK;
15005  }
15006 
15007  Fw::CmdResponse CfdpManagerComponentBase ::
15008  paramSave_FileInDefaultDestEntityId()
15009  {
15010  if (!this->isConnected_prmSetOut_OutputPort(0)) {
15012  }
15013  Fw::ParamBuffer _paramBuffer;
15014  const FwIdType idBase = this->getIdBase();
15016  // Serialize the parameter
15017  this->m_paramLock.lock();
15018  if ((this->m_param_FileInDefaultDestEntityId_valid == Fw::ParamValid::VALID) || (this->m_param_FileInDefaultDestEntityId_valid == Fw::ParamValid::DEFAULT)) {
15019  _stat = _paramBuffer.serializeFrom(m_FileInDefaultDestEntityId);
15020  }
15021  this->m_paramLock.unlock();
15022  if (_stat != Fw::FW_SERIALIZE_OK) {
15024  }
15025  // Save the parameter
15026  this->prmSetOut_out(
15027  0,
15028  static_cast<FwPrmIdType>(idBase + PARAMID_FILEINDEFAULTDESTENTITYID),
15029  _paramBuffer
15030  );
15031  // Return the command response
15032  return Fw::CmdResponse::OK;
15033  }
15034 
15035  Fw::CmdResponse CfdpManagerComponentBase ::
15036  paramSave_FileInDefaultClass()
15037  {
15038  if (!this->isConnected_prmSetOut_OutputPort(0)) {
15040  }
15041  Fw::ParamBuffer _paramBuffer;
15042  const FwIdType idBase = this->getIdBase();
15044  // Serialize the parameter
15045  this->m_paramLock.lock();
15046  if ((this->m_param_FileInDefaultClass_valid == Fw::ParamValid::VALID) || (this->m_param_FileInDefaultClass_valid == Fw::ParamValid::DEFAULT)) {
15047  _stat = _paramBuffer.serializeFrom(m_FileInDefaultClass);
15048  }
15049  this->m_paramLock.unlock();
15050  if (_stat != Fw::FW_SERIALIZE_OK) {
15052  }
15053  // Save the parameter
15054  this->prmSetOut_out(
15055  0,
15056  static_cast<FwPrmIdType>(idBase + PARAMID_FILEINDEFAULTCLASS),
15057  _paramBuffer
15058  );
15059  // Return the command response
15060  return Fw::CmdResponse::OK;
15061  }
15062 
15063  Fw::CmdResponse CfdpManagerComponentBase ::
15064  paramSave_FileInDefaultKeep()
15065  {
15066  if (!this->isConnected_prmSetOut_OutputPort(0)) {
15068  }
15069  Fw::ParamBuffer _paramBuffer;
15070  const FwIdType idBase = this->getIdBase();
15072  // Serialize the parameter
15073  this->m_paramLock.lock();
15074  if ((this->m_param_FileInDefaultKeep_valid == Fw::ParamValid::VALID) || (this->m_param_FileInDefaultKeep_valid == Fw::ParamValid::DEFAULT)) {
15075  _stat = _paramBuffer.serializeFrom(m_FileInDefaultKeep);
15076  }
15077  this->m_paramLock.unlock();
15078  if (_stat != Fw::FW_SERIALIZE_OK) {
15080  }
15081  // Save the parameter
15082  this->prmSetOut_out(
15083  0,
15084  static_cast<FwPrmIdType>(idBase + PARAMID_FILEINDEFAULTKEEP),
15085  _paramBuffer
15086  );
15087  // Return the command response
15088  return Fw::CmdResponse::OK;
15089  }
15090 
15091  Fw::CmdResponse CfdpManagerComponentBase ::
15092  paramSave_FileInDefaultPriority()
15093  {
15094  if (!this->isConnected_prmSetOut_OutputPort(0)) {
15096  }
15097  Fw::ParamBuffer _paramBuffer;
15098  const FwIdType idBase = this->getIdBase();
15100  // Serialize the parameter
15101  this->m_paramLock.lock();
15102  if ((this->m_param_FileInDefaultPriority_valid == Fw::ParamValid::VALID) || (this->m_param_FileInDefaultPriority_valid == Fw::ParamValid::DEFAULT)) {
15103  _stat = _paramBuffer.serializeFrom(m_FileInDefaultPriority);
15104  }
15105  this->m_paramLock.unlock();
15106  if (_stat != Fw::FW_SERIALIZE_OK) {
15108  }
15109  // Save the parameter
15110  this->prmSetOut_out(
15111  0,
15112  static_cast<FwPrmIdType>(idBase + PARAMID_FILEINDEFAULTPRIORITY),
15113  _paramBuffer
15114  );
15115  // Return the command response
15116  return Fw::CmdResponse::OK;
15117  }
15118 
15119  Fw::CmdResponse CfdpManagerComponentBase ::
15120  paramSave_ChannelConfig()
15121  {
15122  if (!this->isConnected_prmSetOut_OutputPort(0)) {
15124  }
15125  Fw::ParamBuffer _paramBuffer;
15126  const FwIdType idBase = this->getIdBase();
15128  // Serialize the parameter
15129  this->m_paramLock.lock();
15130  if ((this->m_param_ChannelConfig_valid == Fw::ParamValid::VALID) || (this->m_param_ChannelConfig_valid == Fw::ParamValid::DEFAULT)) {
15131  _stat = _paramBuffer.serializeFrom(m_ChannelConfig);
15132  }
15133  this->m_paramLock.unlock();
15134  if (_stat != Fw::FW_SERIALIZE_OK) {
15136  }
15137  // Save the parameter
15138  this->prmSetOut_out(
15139  0,
15140  static_cast<FwPrmIdType>(idBase + PARAMID_CHANNELCONFIG),
15141  _paramBuffer
15142  );
15143  // Return the command response
15144  return Fw::CmdResponse::OK;
15145  }
15146 
15147  }
15148 
15149  }
15150 
15151 }
Default CFDP channel for fileIn port-initiated file transfers.
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
Default CFDP class for fileIn port-initiated file transfers.
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
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
void log_WARNING_LO_PlaybackDestinationPathTooLong(FwSizeType length, FwSizeType maxLength, const Fw::StringBase &directory, const Fw::StringBase &entry) const
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.
CFDP ID to denote the current node when sending PDUs.
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.
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
Default destination entity ID for fileIn port-initiated file transfers.
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
Destination path in a received Metadata PDU was rejected by the channel&#39;s rx_dir sandbox.
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.
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
void log_WARNING_HI_RxDestPathRejected(U8 channelId, U32 srcEid, U32 seqNum, const Fw::StringBase &filename, const Fw::StringBase &rxDir, const Svc::Ccsds::Cfdp::RxDestPathRejectReason &reason) const
message to exit active component task
virtual void dataIn_handler(FwIndexType portNum, Fw::Buffer &fwBuffer)=0
Handler for input port dataIn.
static constexpr FwIndexType getNum_logOut_OutputPorts()
SerializeStatus
forward declaration for string
void log_WARNING_LO_SendFileInitiateFail(const Fw::StringBase &sourceFileName) const
Log event SendFileInitiateFail.
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.
void log_WARNING_LO_MaxTxTransactionsReached() const
Log event MaxTxTransactionsReached.
static constexpr FwIndexType getNum_prmGetOut_OutputPorts()
void invoke(FwOpcodeType opCode) const
Invoke a port connection.
static constexpr FwSizeType CAPACITY
Definition: PingPortAc.hpp:34
CfdpManagerComponentBase(const char *compName="")
Construct CfdpManagerComponentBase object.
bool isConnected_fileDoneOut_OutputPort(FwIndexType portNum) const
void log_ACTIVITY_LO_PlaybackInitiated(const Fw::StringBase &sourceDirectory) const
Log event PlaybackInitiated.
#define FW_OBJECT_NAMES
Indicates whether or not object names are stored (more memory, can be used for tracking objects) ...
Definition: FpConfig.h:40
static constexpr FwIndexType getNum_cmdRegOut_OutputPorts()
Svc::Ccsds::Cfdp::Class paramGet_FileInDefaultClass(Fw::ParamValid &valid)
void init()
Initialization function.
Definition: TimePortAc.cpp:151
virtual void AbandonTransaction_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command AbandonTransaction.
void PollDirectory_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Data was the wrong format (e.g. wrong packet type)
Fw::InputBufferSendPort * get_dataReturnIn_InputPort(FwIndexType portNum)
void set_cmdRegOut_OutputPort(FwIndexType portNum, Fw::InputCmdRegPort *port)
Connect port to cmdRegOut[portNum].
void 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.
Command to cancel a transaction with graceful close-out.
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
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
static constexpr FwIndexType getNum_prmSetOut_OutputPorts()
The size of the serial representation.
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.
A serious but recoverable event.
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)
The maximum number of received bytes to calculate a CRC for in a single scheduler cycle...
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.
bool isConnected_prmSetOut_OutputPort(FwIndexType portNum) const
void log_ACTIVITY_LO_SetFlowState(U8 channelId, const Svc::Ccsds::Cfdp::Flow &flowState) const
Log event SetFlowState.
Default file retention policy for fileIn port-initiated file transfers.
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.
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]
Default priority for fileIn port-initiated file transfers.
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()
Why a received Metadata PDU destination path was rejected by the channel rx_dir check.
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
The size of the serial representation.
Definition: ClassEnumAc.hpp:60
void init()
Initialization function.
void log_WARNING_LO_PollDirBusy(U8 channelId, U8 pollId) const
Log event PollDirBusy.
void init()
Initialization function.
The size of the serial representation.
Definition: FlowEnumAc.hpp:53
void StopPollDirectory_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void ResetCounters_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void log_WARNING_LO_PlaybackSourcePathTooLong(FwSizeType length, FwSizeType maxLength, const Fw::StringBase &directory, const Fw::StringBase &entry) const
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
Parameter configuration for an array CFDP channels.
#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
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]