ParameterMgr.h revision 326a31df0dd401283de6170ed09bcf605f61ef7d
17d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org/* 27d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * INTEL CONFIDENTIAL 37d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * Copyright © 2011 Intel 47d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * Corporation All Rights Reserved. 57d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * 67d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * The source code contained or described herein and all documents related to 77d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * the source code ("Material") are owned by Intel Corporation or its suppliers 87d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * or licensors. Title to the Material remains with Intel Corporation or its 97d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * suppliers and licensors. The Material contains trade secrets and proprietary 107d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * and confidential information of Intel or its suppliers and licensors. The 117d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * Material is protected by worldwide copyright and trade secret laws and 127d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * treaty provisions. No part of the Material may be used, copied, reproduced, 137d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * modified, published, uploaded, posted, transmitted, distributed, or 147d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * disclosed in any way without Intel’s prior express written permission. 157d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * 167d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * No license under any patent, copyright, trade secret or other intellectual 177d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * property right is granted to or conferred upon you by disclosure or delivery 187d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * of the Materials, either expressly, by implication, inducement, estoppel or 197d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * otherwise. Any license under such intellectual property rights must be 207d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * express and approved by Intel in writing. 217d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * 227d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * CREATED: 2011-06-01 237d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org * UPDATED: 2011-07-27 247d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org */ 257d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org#pragma once 267d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org 277d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org#include <pthread.h> 287d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org#include "RemoteCommandHandlerTemplate.h" 297d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org#include "PathNavigator.h" 307d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org#include "SelectionCriterionType.h" 317d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org#include "SelectionCriterion.h" 327d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org#include "Element.h" 337d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org#include <map> 347d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org#include <vector> 357d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org#include "XmlDocSink.h" 367d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org#include "XmlDocSource.h" 377d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org 387d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org 397d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CElementLibrarySet; 407d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CSubsystemLibrary; 417d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CSystemClass; 427d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CSelectionCriteria; 437d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CParameterFrameworkConfiguration; 447d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CSystemClassConfiguration; 457d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CParameterBlackboard; 467d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CConfigurableDomains; 477d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass IRemoteProcessorServerInterface; 487d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CBackSynchronizer; 497d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CParameterHandle; 507d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CSubsystemPlugins; 517d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org 527d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.orgclass CParameterMgr : private CElement 537d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org{ 547d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org enum ChildElement { 557d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org EFrameworkConfiguration, 567d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org ESelectionCriteria, 577d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org ESystemClass, 587d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org EConfigurableDomains 597d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org }; 607d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org enum ElementLibrary { 617d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org EFrameworkConfigurationLibrary, 627d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org EParameterCreationLibrary, 637d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org EParameterConfigurationLibrary 647d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org }; 657d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org 667d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org // Remote command parsers 677d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org typedef TRemoteCommandHandlerTemplate<CParameterMgr> CCommandHandler; 687d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org 697d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org typedef CCommandHandler::CommandStatus (CParameterMgr::*RemoteCommandParser)(const IRemoteCommand& remoteCommand, string& strResult); 707d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org 717d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org // Parser descriptions 727d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org struct SRemoteCommandParserItem 737d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org { 747d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org const char* _pcCommandName; 757d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org CParameterMgr::RemoteCommandParser _pfnParser; 767d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org uint32_t _uiMinArgumentCount; 777d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org const char* _pcHelp; 787d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org const char* _pcDescription; 797d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org }; 807d7f08957c335438ff8898ee74d27dfdac7a1789kjellander@webrtc.org // Version 81 static const uint32_t guiEditionMajor = 0x2; 82 static const uint32_t guiEditionMinor = 0x1; 83 static const uint32_t guiRevision = 0x0; 84 85 // Parameter handle friendship 86 friend class CParameterHandle; 87public: 88 // Logger interface 89 class ILogger 90 { 91 public: 92 virtual void log(const std::string& strLog) = 0; 93 }; 94 95 // Construction 96 CParameterMgr(const string& strConfigurationFilePath); 97 virtual ~CParameterMgr(); 98 99 // Logging 100 void setLogger(ILogger* pLogger); 101 102 // Init 103 bool load(string& strError); 104 virtual bool init(string& strError); 105 106 // Selection Criteria 107 CSelectionCriterionType* createSelectionCriterionType(bool bIsInclusive); 108 CSelectionCriterion* createSelectionCriterion(const string& strName, const CSelectionCriterionType* pSelectionCriterionType); 109 // Selection criterion retrieval 110 CSelectionCriterion* getSelectionCriterion(const string& strName); 111 112 // Configuration application 113 bool applyConfigurations(string& strError); 114 115 // Dynamic parameter handling 116 CParameterHandle* createParameterHandle(const string& strPath, string& strError); 117 118 //////////// Tuning ///////////// 119 // Tuning mode 120 bool setTuningMode(bool bOn, string& strError); 121 bool tuningModeOn() const; 122 123 // Current value space for user set/get value interpretation 124 void setValueSpace(bool bIsRaw); 125 bool valueSpaceIsRaw(); 126 127 // Current Output Raw Format for user get value interpretation 128 void setOutputRawFormat(bool bIsHex); 129 bool outputRawFormatIsHex(); 130 131 // Automatic hardware synchronization control (during tuning session) 132 bool setAutoSync(bool bAutoSyncOn, string& strError); 133 bool autoSyncOn() const; 134 bool sync(string& strError); 135 136 // User set/get parameters 137 bool accessValue(const string& strPath, string& strValue, bool bSet, string& strError); 138 139 ////////// Configuration/Domains handling ////////////// 140 // Creation/Deletion 141 bool createDomain(const string& strName, string& strError); 142 bool deleteDomain(const string& strName, string& strError); 143 bool deleteAllDomains(string& strError); 144 bool createConfiguration(const string& strDomain, const string& strConfiguration, string& strError); 145 bool deleteConfiguration(const string& strDomain, const string& strConfiguration, string& strError); 146 147 // Save/Restore 148 bool restoreConfiguration(const string& strDomain, const string& strConfiguration, string& strError); 149 bool saveConfiguration(const string& strDomain, const string& strConfiguration, string& strError); 150 151 // Configurable element - domain association 152 bool addConfigurableElementToDomain(const string& strDomain, const string& strConfigurableElementPath, string& strError); 153 bool removeConfigurableElementFromDomain(const string& strDomain, const string& strConfigurableElementPath, string& strError); 154 bool split(const string& strDomain, const string& strConfigurableElementPath, string& strError); 155 156 // XML Import/Export 157 bool importDomainsXml(const string& strFileName, bool bWithSettings, string& strError); 158 bool exportDomainsXml(const string& strFileName, bool bWithSettings, string& strError) const; 159 160 // Binary Import/Export 161 bool importDomainsBinary(const string& strFileName, string& strError); 162 bool exportDomainsBinary(const string& strFileName, string& strError); 163 164 // GUI command XML send 165 bool getDomainsXMLString(string& strResult, bool bWithSettings); 166 bool getSystemClassXMLString(string& strResult); 167 168 // Introspect 169 void logStructureContent(string& strContent) const; 170 171 // CElement 172 virtual string getKind() const; 173private: 174 CParameterMgr(const CParameterMgr&); 175 CParameterMgr& operator=(const CParameterMgr&); 176 177 // Logging (done by root) 178 virtual void doLog(const string& strLog) const; 179 virtual void nestLog() const; 180 virtual void unnestLog() const; 181 182 // Version 183 string getVersion() const; 184 185 ////////////////:: Remote command parsers 186 /// Version 187 CCommandHandler::CommandStatus versionCommandProcess(const IRemoteCommand& remoteCommand, string& strResult); 188 /// Status 189 CCommandHandler::CommandStatus statusCommandProcess(const IRemoteCommand& remoteCommand, string& strResult); 190 /// Tuning Mode 191 CCommandHandler::CommandStatus setTuningModeCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 192 CCommandHandler::CommandStatus getTuningModeCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 193 /// Value Space 194 CCommandHandler::CommandStatus setValueSpaceCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 195 CCommandHandler::CommandStatus getValueSpaceCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 196 /// Output Raw Format 197 CCommandHandler::CommandStatus setOutputRawFormatCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 198 CCommandHandler::CommandStatus getOutputRawFormatCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 199 /// Sync 200 CCommandHandler::CommandStatus setAutoSyncCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 201 CCommandHandler::CommandStatus getAutoSyncCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 202 CCommandHandler::CommandStatus syncCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 203 /// Criteria 204 CCommandHandler::CommandStatus listCriteriaCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 205 /// Domains 206 CCommandHandler::CommandStatus listDomainsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 207 CCommandHandler::CommandStatus createDomainCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 208 CCommandHandler::CommandStatus deleteDomainCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 209 CCommandHandler::CommandStatus deleteAllDomainsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 210 CCommandHandler::CommandStatus renameDomainCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 211 CCommandHandler::CommandStatus setSequenceAwarenessCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 212 CCommandHandler::CommandStatus getSequenceAwarenessCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 213 CCommandHandler::CommandStatus listDomainElementsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 214 CCommandHandler::CommandStatus addElementCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 215 CCommandHandler::CommandStatus removeElementCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 216 CCommandHandler::CommandStatus splitDomainCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 217 /// Configurations 218 CCommandHandler::CommandStatus listConfigurationsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 219 CCommandHandler::CommandStatus dumpDomainsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 220 CCommandHandler::CommandStatus createConfigurationCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 221 CCommandHandler::CommandStatus deleteConfigurationCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 222 CCommandHandler::CommandStatus renameConfigurationCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 223 CCommandHandler::CommandStatus saveConfigurationCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 224 CCommandHandler::CommandStatus restoreConfigurationCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 225 CCommandHandler::CommandStatus setElementSequenceCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 226 CCommandHandler::CommandStatus getElementSequenceCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 227 CCommandHandler::CommandStatus setRuleCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 228 CCommandHandler::CommandStatus clearRuleCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 229 CCommandHandler::CommandStatus getRuleCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 230 /// Elements/Parameters 231 CCommandHandler::CommandStatus listElementsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 232 CCommandHandler::CommandStatus listParametersCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 233 CCommandHandler::CommandStatus dumpElementCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 234 CCommandHandler::CommandStatus getElementSizeCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 235 CCommandHandler::CommandStatus showPropertiesCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 236 CCommandHandler::CommandStatus getParameterCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 237 CCommandHandler::CommandStatus setParameterCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 238 CCommandHandler::CommandStatus listBelongingDomainsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 239 CCommandHandler::CommandStatus listAssociatedDomainsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 240 /// Browse 241 CCommandHandler::CommandStatus listAssociatedElementsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 242 CCommandHandler::CommandStatus listConflictingElementsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 243 CCommandHandler::CommandStatus listRogueElementsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 244 /// Settings Import/Export 245 CCommandHandler::CommandStatus exportConfigurableDomainsToXMLCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 246 CCommandHandler::CommandStatus importConfigurableDomainsFromXMLCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 247 CCommandHandler::CommandStatus exportConfigurableDomainsWithSettingsToXMLCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 248 CCommandHandler::CommandStatus importConfigurableDomainsWithSettingsFromXMLCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 249 CCommandHandler::CommandStatus exportSettingsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 250 CCommandHandler::CommandStatus importSettingsCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 251 /// GUI commands 252 CCommandHandler::CommandStatus getSystemClassXMLCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 253 CCommandHandler::CommandStatus getDomainsXMLCommmandProcess(const IRemoteCommand& remoteCommand, string& strResult); 254 255 // Max command usage length, use for formatting 256 void setMaxCommandUsageLength(); 257 258 // For tuning, check we're in tuning mode 259 bool checkTuningModeOn(string& strError) const; 260 261 // Blackboard (dynamic parameter handling) 262 pthread_mutex_t* getBlackboardMutex(); 263 264 // Blackboard reference (dynamic parameter handling) 265 CParameterBlackboard* getParameterBlackboard(); 266 267 // Parameter access 268 bool doSetValue(const string& strPath, const string& strValue, bool bRawValueSpace, bool bDynamicAccess, string& strError) const; 269 bool doGetValue(const string& strPath, string& strValue, bool bRawValueSpace, bool bHexOutputRawFormat, bool bDynamicAccess, string& strError) const; 270 271 // Framework global configuration loading 272 bool loadFrameworkConfiguration(string& strError); 273 274 // System class Structure loading 275 bool loadStructure(string& strError); 276 277 // System class Structure loading 278 bool loadSettings(string& strError); 279 280 // Parse XML file into Root element 281 bool xmlParse(CXmlElementSerializingContext& elementSerializingContext, CElement* pRootElement, const string& strXmlFilePath, const string& strXmlFolder, ElementLibrary eElementLibrary, const string& strNameAttrituteName = "Name"); 282 283 // Framework Configuration 284 CParameterFrameworkConfiguration* getFrameworkConfiguration(); 285 const CParameterFrameworkConfiguration* getConstFrameworkConfiguration(); 286 287 // Selection Criteria 288 CSelectionCriteria* getSelectionCriteria(); 289 const CSelectionCriteria* getConstSelectionCriteria(); 290 291 // System Class 292 CSystemClass* getSystemClass(); 293 const CSystemClass* getConstSystemClass() const; 294 295 // Configurable Domains 296 CConfigurableDomains* getConfigurableDomains(); 297 const CConfigurableDomains* getConstConfigurableDomains(); 298 const CConfigurableDomains* getConstConfigurableDomains() const; 299 300 // Dynamic object creation libraries feeding 301 void feedElementLibraries(); 302 303 // Remote Processor Server connection handling 304 bool handleRemoteProcessingInterface(string& strError); 305 306 // Back synchronization 307 CBackSynchronizer* createBackSynchronizer(string& strError) const; 308 309 // Tuning 310 bool _bTuningModeIsOn; 311 312 // Value Space 313 bool _bValueSpaceIsRaw; 314 315 // Output Raw Format 316 bool _bOutputRawFormatIsHex; 317 318 // Automatic synchronization to HW during Tuning session 319 bool _bAutoSyncOn; 320 321 // Current Parameter Settings 322 CParameterBlackboard* _pMainParameterBlackboard; 323 324 // Dynamic object creation 325 CElementLibrarySet* _pElementLibrarySet; 326 327 // XML parsing, object creation handling 328 string _strXmlConfigurationFilePath; // Configuration file path 329 string _strXmlConfigurationFolderPath; // Root folder for configuration file 330 string _strSchemaFolderLocation; // Place where schemas stand 331 332 // Subsystem plugin location 333 const CSubsystemPlugins* _pSubsystemPlugins; 334 335 // Whole system structure checksum 336 uint8_t _uiStructureChecksum; 337 338 // Command Handler 339 CCommandHandler* _pCommandHandler; 340 341 // Remote Processor Server 342 IRemoteProcessorServerInterface* _pRemoteProcessorServer; 343 344 // Parser description array 345 static const SRemoteCommandParserItem gastRemoteCommandParserItems[]; 346 347 // Parser description array size 348 static const uint32_t guiNbRemoteCommandParserItems; 349 350 // Maximum command usage length 351 uint32_t _uiMaxCommandUsageLength; 352 353 // Blackboard access mutex 354 pthread_mutex_t _blackboardMutex; 355 356 // Logging 357 ILogger* _pLogger; 358 mutable uint32_t _uiLogDepth; 359}; 360 361