F´ Flight Software - C/C++ Documentation  devel
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
StaticMemoryComponentAc.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title StaticMemoryComponentAc.cpp
3 // \author Generated by fpp-to-cpp
4 // \brief cpp file for StaticMemory component base class
5 // ======================================================================
6 
8 #include "Fw/Types/Assert.hpp"
10 #if FW_ENABLE_TEXT_LOGGING
11 #include "Fw/Types/String.hpp"
12 #endif
13 
14 namespace Svc {
15 
16  // ----------------------------------------------------------------------
17  // Component initialization
18  // ----------------------------------------------------------------------
19 
21  init(FwEnumStoreType instance)
22  {
23  // Initialize base class
25 
26  // Connect input port bufferAllocate
27  for (
28  FwIndexType port = 0;
29  port < static_cast<FwIndexType>(this->getNum_bufferAllocate_InputPorts());
30  port++
31  ) {
32  this->m_bufferAllocate_InputPort[port].init();
33  this->m_bufferAllocate_InputPort[port].addCallComp(
34  this,
35  m_p_bufferAllocate_in
36  );
37  this->m_bufferAllocate_InputPort[port].setPortNum(port);
38 
39 #if FW_OBJECT_NAMES == 1
40  Fw::ObjectName portName;
41  portName.format(
42  "%s_bufferAllocate_InputPort[%" PRI_PlatformIntType "]",
43  this->m_objName.toChar(),
44  port
45  );
46  this->m_bufferAllocate_InputPort[port].setObjName(portName.toChar());
47 #endif
48  }
49 
50  // Connect input port bufferDeallocate
51  for (
52  FwIndexType port = 0;
53  port < static_cast<FwIndexType>(this->getNum_bufferDeallocate_InputPorts());
54  port++
55  ) {
56  this->m_bufferDeallocate_InputPort[port].init();
57  this->m_bufferDeallocate_InputPort[port].addCallComp(
58  this,
59  m_p_bufferDeallocate_in
60  );
61  this->m_bufferDeallocate_InputPort[port].setPortNum(port);
62 
63 #if FW_OBJECT_NAMES == 1
64  Fw::ObjectName portName;
65  portName.format(
66  "%s_bufferDeallocate_InputPort[%" PRI_PlatformIntType "]",
67  this->m_objName.toChar(),
68  port
69  );
70  this->m_bufferDeallocate_InputPort[port].setObjName(portName.toChar());
71 #endif
72  }
73  }
74 
75  // ----------------------------------------------------------------------
76  // Getters for typed input ports
77  // ----------------------------------------------------------------------
78 
81  {
82  FW_ASSERT(
83  portNum < this->getNum_bufferAllocate_InputPorts(),
84  static_cast<FwAssertArgType>(portNum)
85  );
86 
87  return &this->m_bufferAllocate_InputPort[portNum];
88  }
89 
92  {
93  FW_ASSERT(
94  portNum < this->getNum_bufferDeallocate_InputPorts(),
95  static_cast<FwAssertArgType>(portNum)
96  );
97 
98  return &this->m_bufferDeallocate_InputPort[portNum];
99  }
100 
101  // ----------------------------------------------------------------------
102  // Component construction and destruction
103  // ----------------------------------------------------------------------
104 
106  StaticMemoryComponentBase(const char* compName) :
107  Fw::PassiveComponentBase(compName)
108  {
109 
110  }
111 
114  {
115 
116  }
117 
118  // ----------------------------------------------------------------------
119  // Getters for numbers of typed input ports
120  // ----------------------------------------------------------------------
121 
124  {
125  return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_bufferAllocate_InputPort));
126  }
127 
130  {
131  return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_bufferDeallocate_InputPort));
132  }
133 
134  // ----------------------------------------------------------------------
135  // Port handler base-class functions for typed input ports
136  //
137  // Call these functions directly to bypass the corresponding ports
138  // ----------------------------------------------------------------------
139 
142  FwIndexType portNum,
143  U32 size
144  )
145  {
146  // Make sure port number is valid
147  FW_ASSERT(
148  portNum < this->getNum_bufferAllocate_InputPorts(),
149  static_cast<FwAssertArgType>(portNum)
150  );
151 
152  Fw::Buffer retVal;
153 
154  // Lock guard mutex before calling
155  this->lock();
156 
157  // Call handler function
158  retVal = this->bufferAllocate_handler(
159  portNum,
160  size
161  );
162 
163  // Unlock guard mutex
164  this->unLock();
165 
166  return retVal;
167  }
168 
171  FwIndexType portNum,
172  Fw::Buffer& fwBuffer
173  )
174  {
175  // Make sure port number is valid
176  FW_ASSERT(
177  portNum < this->getNum_bufferDeallocate_InputPorts(),
178  static_cast<FwAssertArgType>(portNum)
179  );
180 
181  // Lock guard mutex before calling
182  this->lock();
183 
184  // Call handler function
186  portNum,
187  fwBuffer
188  );
189 
190  // Unlock guard mutex
191  this->unLock();
192  }
193 
194  // ----------------------------------------------------------------------
195  // Mutex operations for guarded ports
196  //
197  // You can override these operations to provide more sophisticated
198  // synchronization
199  // ----------------------------------------------------------------------
200 
202  lock()
203  {
204  this->m_guardedPortMutex.lock();
205  }
206 
208  unLock()
209  {
210  this->m_guardedPortMutex.unLock();
211  }
212 
213  // ----------------------------------------------------------------------
214  // Calls for messages received on typed input ports
215  // ----------------------------------------------------------------------
216 
217  Fw::Buffer StaticMemoryComponentBase ::
218  m_p_bufferAllocate_in(
219  Fw::PassiveComponentBase* callComp,
220  FwIndexType portNum,
221  U32 size
222  )
223  {
224  FW_ASSERT(callComp);
225  StaticMemoryComponentBase* compPtr = static_cast<StaticMemoryComponentBase*>(callComp);
226  return compPtr->bufferAllocate_handlerBase(
227  portNum,
228  size
229  );
230  }
231 
232  void StaticMemoryComponentBase ::
233  m_p_bufferDeallocate_in(
234  Fw::PassiveComponentBase* callComp,
235  FwIndexType portNum,
236  Fw::Buffer& fwBuffer
237  )
238  {
239  FW_ASSERT(callComp);
240  StaticMemoryComponentBase* compPtr = static_cast<StaticMemoryComponentBase*>(callComp);
241  compPtr->bufferDeallocate_handlerBase(
242  portNum,
243  fwBuffer
244  );
245  }
246 
247 }
#define FW_ASSERT(...)
Definition: Assert.hpp:14
#define FW_NUM_ARRAY_ELEMENTS(a)
number of elements in an array
Definition: BasicTypes.h:70
#define PRI_PlatformIntType
I32 FwEnumStoreType
Definition: FpConfig.h:64
PlatformAssertArgType FwAssertArgType
Definition: FpConfig.h:39
PlatformIndexType FwIndexType
Definition: FpConfig.h:25
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
void init()
Initialization function.
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
void init()
Initialization function.
void setPortNum(NATIVE_INT_TYPE portNum)
void init()
Object initializer.
Definition: ObjBase.cpp:27
const char * toChar() const
Definition: ObjectName.hpp:50
void format(const CHAR *formatString,...)
write formatted string to buffer
Definition: StringBase.cpp:56
void unLock()
unlock the mutex and assert success
Definition: Mutex.cpp:40
void lock()
lock the mutex and assert success
Definition: Mutex.cpp:34
Auto-generated base for StaticMemory component.
Fw::InputBufferGetPort * get_bufferAllocate_InputPort(FwIndexType portNum)
virtual void bufferDeallocate_handler(FwIndexType portNum, Fw::Buffer &fwBuffer)=0
Handler for input port bufferDeallocate.
FwIndexType getNum_bufferAllocate_InputPorts() const
StaticMemoryComponentBase(const char *compName="")
Construct StaticMemoryComponentBase object.
void bufferDeallocate_handlerBase(FwIndexType portNum, Fw::Buffer &fwBuffer)
Handler base-class function for input port bufferDeallocate.
Fw::Buffer bufferAllocate_handlerBase(FwIndexType portNum, U32 size)
Handler base-class function for input port bufferAllocate.
virtual ~StaticMemoryComponentBase()
Destroy StaticMemoryComponentBase object.
virtual Fw::Buffer bufferAllocate_handler(FwIndexType portNum, U32 size)=0
Handler for input port bufferAllocate.
Fw::InputBufferSendPort * get_bufferDeallocate_InputPort(FwIndexType portNum)
virtual void lock()
Lock the guarded mutex.
virtual void unLock()
Unlock the guarded mutex.
FwIndexType getNum_bufferDeallocate_InputPorts() const