Resource Tuner
Loading...
Searching...
No Matches
ExtFeaturesRegistry.h
1// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
2// SPDX-License-Identifier: BSD-3-Clause-Clear
3
4#ifndef EXT_FEATURES_REGISTRY_H
5#define EXT_FEATURES_REGISTRY_H
6
7#include <vector>
8#include <memory>
9#include <unordered_map>
10#include <dlfcn.h>
11
12#include "SignalExtFeatureMapper.h"
13#include "Utils.h"
14#include "Signal.h"
15#include "Logger.h"
16
17#define INITIALIZE_FEATURE_ROUTINE "initFeature"
18#define TEARDOWN_FEATURE_ROUTINE "tearFeature"
19#define RELAY_FEATURE_ROUTINE "relayFeature"
20
21typedef struct {
22 uint32_t mFeatureId;
23 std::string mFeatureLib;
24 std::string mFeatureName;
25 std::vector<uint32_t>* mSignalsSubscribedTo;
26} ExtFeatureInfo;
27
28typedef void (*ExtFeature)(void);
29typedef void (*RelayFeature)(uint32_t, const std::string&, const std::string&, int32_t, std::vector<uint32_t>*);
30
37private:
38 static std::shared_ptr<ExtFeaturesRegistry> extFeaturesRegistryInstance;
39 int32_t mTotalExtFeatures;
40 std::vector<ExtFeatureInfo*> mExtFeaturesConfigs;
41
42 std::unordered_map<uint32_t, int32_t> mSystemIndependentLayerMappings;
43
45
46public:
48
56 ExtFeatureInfo* getExtFeatureConfigById(uint32_t extFeatureId);
57
64
71
76 ErrCode relayToFeature(uint32_t featureId, Signal* signal);
77
78 int32_t getExtFeaturesConfigCount();
79 std::vector<ExtFeatureInfo*> getExtFeaturesConfigs();
80
81 void registerExtFeature(ExtFeatureInfo* extFeatureInfo);
82 void displayExtFeatures();
83
84 static std::shared_ptr<ExtFeaturesRegistry> getInstance() {
85 if(extFeaturesRegistryInstance == nullptr) {
86 extFeaturesRegistryInstance = std::shared_ptr<ExtFeaturesRegistry> (new ExtFeaturesRegistry());
87 }
88 return extFeaturesRegistryInstance;
89 }
90};
91
92class ExtFeatureInfoBuilder {
93private:
94 ExtFeatureInfo* mFeatureInfo;
95
96public:
97 ExtFeatureInfoBuilder();
98
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);
103
104 ExtFeatureInfo* build();
105};
106
107#endif
ErrCode
Custom Error Codes used by Resource Tuner APIs and Internal Functions.
Definition ErrCodes.h:17
ExtFeaturesRegistry.
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.
Definition Signal.h:18