Guiliani  Version 2.6 revision 7293 (documentation build 12)
GUIPerfMon.h
1/*
2* Copyright (C) TES Electronic Solutions GmbH,
3* All Rights Reserved.
4* Contact: info@guiliani.de
5*
6* This file is part of the Guiliani HMI framework
7* for the development of graphical user interfaces on embedded systems.
8*/
9
10#ifndef GUIPERFMON__H_
11#define GUIPERFMON__H_
12
13#include "eC_Types.h"
14#include "eC_String.h"
15
16#include "GUIConfigDebug.h"
17
18#include "GUIComponentManager.h"
19
20// Exclude this class from the doxygen documentation
21#ifndef DOXYGEN
22
24
27#ifndef GUILIANI_USE_PERFMON
28#define CONTROLPOINTSTART(cp);
29#define CONTROLPOINTEND(cp);
30#define CONTROLPOINTPERFMEASURE();
31#else
32
34#define GETPERFMON CGUIComponentManager::GetPerfMon()
35
38#define CONTROLPOINTSTART(cp) GETPERFMON.ControlPointStart(cp);
39
42#define CONTROLPOINTEND(cp) GETPERFMON.ControlPointEnd(cp);
43
45#define CONTROLPOINTPERFMEASURE() GETPERFMON.CalcPerfMeasures();
46
140class CGUIPerfMon
141{
142 friend class CGUIComponentManager;
143
144public:
146 enum PerfMonControlPoint_t
147 {
148 eFrameDuration,
149 eInputWrapper,
150 eGuiInit,
151 eHandleEvent,
152 eCmdHdlProcess,
153 eGetTimerProcess,
154 eRedrawGUI,
155 eText,
156 eLoadImg,
157 eLoadFont,
158 eRequiredSpace,
159 eUser00,
160 eUser01,
161 eUser02,
162 eUser03,
163 eUser04,
164 eUser05,
165 eUser06,
166 eUser07,
167 eUser08,
168 eUser09,
169 eNumOfElements
170 };
171
173 static const eC_UInt kNumOfAvailableUserEntries = eRequiredSpace;
174
175 enum LogMode_t
176 {
177 eModeFile,
178 eModeCallback
179 };
180
183 typedef void(*PerfMonCallback_t)(eC_UInt*, eC_Int);
184
185public:
188 static void CreateInstance();
189
192 static void DeleteInstance();
193
195
199 void ControlPointStart(PerfMonControlPoint_t eCP)
200 {
201 m_StartCP[eCP] = eC_GetTicks64();
202 }
203
205
209 void ControlPointEnd(PerfMonControlPoint_t eCP)
210 {
211 m_SumCP[eCP] = m_SumCP[eCP] + (eC_GetTicks64() - m_StartCP[eCP]);
212 ++m_CountCP[eCP];
213 }
214
217 void CalcPerfMeasures();
218
220
224 void SetNumOfUserEntries(eC_UInt uiNumOfUserEntries);
225
229 eC_UInt GetNumOfUserEntries() { return m_uiNumOfUsedUserEntries; }
230
232
237 void SetCountLog(eC_Bool bCountLog) { m_bCountLog = bCountLog; }
238
244 void SetCyclesPerLog(eC_UInt uiCyclesPerLog) { m_uiCyclesPerLog = uiCyclesPerLog; }
245
247 void Reset();
248
250 void Enable() { m_bActive = true; }
251
253 void Disable() { m_bActive = false; }
254
258 void SetLogMode(const LogMode_t eLogMode) { m_eLogMode = eLogMode; }
259
264 void SetCallback(PerfMonCallback_t pCallback) { m_pCallback = pCallback; }
265
270 void SetFileHandle(FILE* pFileHandle) { m_pFileHandle = pFileHandle; }
271
272private:
274 CGUIPerfMon();
275
278 virtual ~CGUIPerfMon();
279
282 CGUIPerfMon(const CGUIPerfMon& kSource);
283
286 CGUIPerfMon& operator=(const CGUIPerfMon& kSource);
287
289 eC_UInt GetNumOfEntries();
290
292 void WriteToFile(const eC_String& rkTraceString);
293
294private:
295 static CGUIPerfMon* ms_pkInstance;
296
297 eC_Time64 m_StartCP[eNumOfElements];
298 eC_Time64 m_EndCP[eNumOfElements];
299 eC_Time64 m_SumCP[eNumOfElements];
300 eC_UInt m_CountCP[eNumOfElements];
301
302 eC_UInt m_uiNumOfUsedUserEntries;
303
304 eC_Bool m_bCountLog;
305 eC_Bool m_bWriteLogFile;
306
307 eC_UInt m_uiCyclesPerLog;
308 eC_UInt m_uiCycleCount;
309
310 eC_Bool m_bActive;
311
312 LogMode_t m_eLogMode;
313
314 FILE* m_pFileHandle;
315
316 PerfMonCallback_t m_pCallback;
317 eC_UInt* m_pCallbackValues;
318};
319#endif //GUIPERFMON
320#endif /* DOXYGEN */
321#endif
central component-manager
Definition: GUIComponentManager.h:62