Dawn Framework 1.0
Universal data acquisition framework for embedded systems
inspector.hxx
1// dawn/include/dawn/dev/inspector.hxx
2//
3// SPDX-License-Identifier: Apache-2.0
4//
5
6#pragma once
7
8#include <cstddef>
9
10#include "dawn/porting/config.hxx"
11
12#ifdef CONFIG_DAWN_INSPECT
13
14namespace dawn
15{
16// Forward declarations
17
18class CObject;
19class CIOCommon;
20class CIOHandler;
21class CProgHandler;
22class CProtoHandler;
23
38{
39public:
49
60 {
61 if (CDevInspector::singleton == nullptr)
62 {
63 CDevInspector::singleton = new CDevInspector();
64 }
65
66 return CDevInspector::singleton;
67 }
68
76 static void destroy()
77 {
78 delete CDevInspector::singleton;
79 CDevInspector::singleton = nullptr;
80 }
81
92 void registerIOHandler(const CIOHandler *handler);
93
104 void registerProgHandler(const CProgHandler *handler);
105
116 void registerProtoHandler(const CProtoHandler *handler);
117
124 size_t getIOCount() const;
125
132 size_t getProgCount() const;
133
140 size_t getProtoCount() const;
141
149 const CIOCommon *getIO(size_t index) const;
150
158 const CObject *getProg(size_t index) const;
159
167 const CObject *getProto(size_t index) const;
168
178 const CObject *findObject(uint32_t objid) const;
179
191 size_t getProgIOBindings(size_t prog_index, const CIOCommon **io_list, size_t max_size) const;
192
204 size_t getProtoBindings(size_t proto_index, const CObject **obj_list, size_t max_size) const;
205
206private:
209 static CDevInspector *singleton;
210
218 const CIOHandler *io_handler;
219 const CProgHandler *prog_handler;
220 const CProtoHandler *proto_handler;
221
230 : io_handler(nullptr)
231 , prog_handler(nullptr)
232 , proto_handler(nullptr)
233 {
234 }
235};
236
237} // Namespace dawn
238
239#endif // CONFIG_DAWN_INSPECT
Global registry for object inspection.
Definition inspector.hxx:38
EHandlerType
Handler types that can be registered.
Definition inspector.hxx:43
@ HANDLER_TYPE_IO
I/O handler.
Definition inspector.hxx:44
@ HANDLER_TYPE_PROG
Program handler.
Definition inspector.hxx:45
@ HANDLER_TYPE_MAX
Maximum handler count.
Definition inspector.hxx:47
@ HANDLER_TYPE_PROTO
Protocol handler.
Definition inspector.hxx:46
size_t getProtoBindings(size_t proto_index, const CObject **obj_list, size_t max_size) const
Get object bindings for PROTO object.
size_t getProtoCount() const
Get number of PROTO objects.
Definition inspector.cxx:65
static void destroy()
Destroy singleton.
Definition inspector.hxx:76
size_t getProgCount() const
Get number of PROG objects.
Definition inspector.cxx:55
void registerProgHandler(const CProgHandler *handler)
Register PROG handler.
Definition inspector.cxx:35
const CObject * getProg(size_t index) const
Get PROG object by index.
Definition inspector.cxx:92
static CDevInspector * getInst()
Get singleton instance.
Definition inspector.hxx:59
const CObject * findObject(uint32_t objid) const
Find object by ID.
const CIOCommon * getIO(size_t index) const
Get IO object by index.
Definition inspector.cxx:75
void registerIOHandler(const CIOHandler *handler)
Register IO handler.
Definition inspector.cxx:30
size_t getProgIOBindings(size_t prog_index, const CIOCommon **io_list, size_t max_size) const
Get IO bindings for PROG object.
void registerProtoHandler(const CProtoHandler *handler)
Register PROTO handler.
Definition inspector.cxx:40
size_t getIOCount() const
Get number of IO objects.
Definition inspector.cxx:45
const CObject * getProto(size_t index) const
Get PROTO object by index.
Base class for all I/O objects.
Definition common.hxx:27
Manages I/O object lifecycle and dispatch.
Definition handler.hxx:37
Base class for all Dawn objects (IOs, Programs, Protocols).
Definition object.hxx:28
Manages Programs object lifecycle and dispatch.
Definition handler.hxx:28
Manages PROTO object lifecycle and dispatch.
Definition handler.hxx:28
Out-of-tree user-extension hooks for Dawn.
Definition bindable.hxx:13