F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
SimpleObjRegistry.cpp
Go to the documentation of this file.
2 #include <Fw/Logger/Logger.hpp>
4 #include <Fw/Types/Assert.hpp>
5 #include <cstdio>
6 #include <cstring>
7 
8 #if FW_OBJECT_REGISTRATION == 1
9 
10 namespace Fw {
11 
12 SimpleObjRegistry::SimpleObjRegistry() {
13  ObjBase::setObjRegistry(this);
14  this->m_numEntries = 0;
15  // Initialize pointer array
16  for (FwSizeType entry = 0; entry < FW_OBJ_SIMPLE_REG_ENTRIES; entry++) {
17  this->m_objPtrArray[entry] = nullptr;
18  }
19 }
20 
21 SimpleObjRegistry::~SimpleObjRegistry() {
22  ObjBase::setObjRegistry(nullptr);
23 }
24 
25 void SimpleObjRegistry::dump() {
26  for (FwSizeType obj = 0; obj < this->m_numEntries; obj++) {
27 #if FW_OBJECT_NAMES == 1
28 #if FW_OBJECT_TO_STRING == 1
29  char objDump[FW_OBJ_SIMPLE_REG_BUFF_SIZE];
30  this->m_objPtrArray[obj]->toString(objDump, sizeof(objDump));
31  Fw::Logger::log("Entry: %" PRI_FwSizeType " Ptr: %p Str: %s\n", obj, this->m_objPtrArray[obj], objDump);
32 #else
33  Fw::Logger::log("Entry: %" PRI_FwSizeType " Ptr: %p Name: %s\n", obj, this->m_objPtrArray[obj],
34  this->m_objPtrArray[obj]->getObjName());
35 #endif // FW_OBJECT_TO_STRING
36 #else
37  Fw::Logger::log("Entry: %" PRI_FwSizeType " Ptr: %p\n", obj, this->m_objPtrArray[obj]);
38 #endif
39  }
40 }
41 
42 #if FW_OBJECT_NAMES == 1
43 void SimpleObjRegistry::dump(const char* objName) {
44  for (FwSizeType obj = 0; obj < this->m_numEntries; obj++) {
45  char objDump[FW_OBJ_SIMPLE_REG_BUFF_SIZE];
46  if (strncmp(objName, this->m_objPtrArray[obj]->getObjName(), sizeof(objDump)) == 0) {
47 #if FW_OBJECT_TO_STRING == 1
48  this->m_objPtrArray[obj]->toString(objDump, sizeof(objDump));
49  Fw::Logger::log("Entry: %" PRI_FwSizeType " Ptr: %p Str: %s\n", obj, this->m_objPtrArray[obj], objDump);
50 #else
51  Fw::Logger::log("Entry: %" PRI_FwSizeType " Ptr: %p Name: %s\n", obj, this->m_objPtrArray[obj],
52  this->m_objPtrArray[obj]->getObjName());
53 #endif
54  }
55  }
56 }
57 #endif
58 void SimpleObjRegistry::regObject(ObjBase* obj) {
59  FW_ASSERT(this->m_numEntries < FW_OBJ_SIMPLE_REG_ENTRIES);
60  this->m_objPtrArray[this->m_numEntries++] = obj;
61 }
62 
63 void SimpleObjRegistry::clear() {
64  this->m_numEntries = 0;
65 }
66 
67 } // namespace Fw
68 
69 #endif
#define FW_OBJ_SIMPLE_REG_BUFF_SIZE
Size of object registry dump string.
Definition: FpConfig.h:147
PlatformSizeType FwSizeType
#define PRI_FwSizeType
static void log(const char *format,...)
log a formated string with supplied arguments
Definition: Logger.cpp:21
#define FW_OBJ_SIMPLE_REG_ENTRIES
Number of objects stored in simple object registry.
Definition: FpConfig.h:142
Class declaration for a simple object registry.
#define FW_ASSERT(...)
Definition: Assert.hpp:14