4#ifndef EXT_FEATURES_REGISTRY_H
5#define EXT_FEATURES_REGISTRY_H
9#include <unordered_map>
12#include "SignalExtFeatureMapper.h"
17#define INITIALIZE_FEATURE_ROUTINE "initFeature"
18#define TEARDOWN_FEATURE_ROUTINE "tearFeature"
19#define RELAY_FEATURE_ROUTINE "relayFeature"
23 std::string mFeatureLib;
24 std::string mFeatureName;
25 std::vector<uint32_t>* mSignalsSubscribedTo;
28typedef void (*ExtFeature)(void);
29typedef void (*RelayFeature)(uint32_t,
const std::string&,
const std::string&, int32_t, std::vector<uint32_t>*);
38 static std::shared_ptr<ExtFeaturesRegistry> extFeaturesRegistryInstance;
39 int32_t mTotalExtFeatures;
40 std::vector<ExtFeatureInfo*> mExtFeaturesConfigs;
42 std::unordered_map<uint32_t, int32_t> mSystemIndependentLayerMappings;
78 int32_t getExtFeaturesConfigCount();
79 std::vector<ExtFeatureInfo*> getExtFeaturesConfigs();
81 void registerExtFeature(ExtFeatureInfo* extFeatureInfo);
82 void displayExtFeatures();
84 static std::shared_ptr<ExtFeaturesRegistry> getInstance() {
85 if(extFeaturesRegistryInstance ==
nullptr) {
86 extFeaturesRegistryInstance = std::shared_ptr<ExtFeaturesRegistry> (
new ExtFeaturesRegistry());
88 return extFeaturesRegistryInstance;
92class ExtFeatureInfoBuilder {
94 ExtFeatureInfo* mFeatureInfo;
97 ExtFeatureInfoBuilder();
99 ErrCode setId(
const std::string& featureIdString);
100 ErrCode setName(
const std::string& featureName);
101 ErrCode setLib(
const std::string& featureLib);
102 ErrCode addSignalSubscribedTo(
const std::string& sigCodeString);
104 ExtFeatureInfo* build();
ErrCode
Custom Error Codes used by Resource Tuner APIs and Internal Functions.
void initializeFeatures()
Used to initialize all the registered features.
ErrCode relayToFeature(uint32_t featureId, Signal *signal)
Relay a request to a registered feature.
void teardownFeatures()
Used to cleanup all the registered features.
ExtFeatureInfo * getExtFeatureConfigById(uint32_t extFeatureId)
Fetch a Feature Config with the given ID.
Encapsulation type for a Signal Tuning Request.