Resource Tuner
Loading...
Searching...
No Matches
SignalRegistry.h
1// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
2// SPDX-License-Identifier: BSD-3-Clause-Clear
3
4#ifndef SIGNAL_REGISTRY_H
5#define SIGNAL_REGISTRY_H
6
7#include <vector>
8#include <memory>
9#include <unordered_map>
10#include <unordered_set>
11#include <algorithm>
12
13#include "Utils.h"
14#include "Logger.h"
15#include "Resource.h"
16#include "MemoryPool.h"
17
24typedef struct {
28 uint16_t mSignalID;
29
34
38 std::string mSignalName;
39
43 int8_t mIsEnabled;
44
49 int32_t mTimeout;
50
55 std::unordered_set<std::string>* mTargetsEnabled;
56
61 std::unordered_set<std::string>* mTargetsDisabled;
62
67 std::vector<enum Permissions>* mPermissions;
68
69 std::vector<std::string>* mDerivatives;
70
75 std::vector<Resource*>* mSignalResources;
76
78
85private:
86 static std::shared_ptr<SignalRegistry> signalRegistryInstance;
87 int32_t mTotalSignals;
88 std::vector<SignalInfo*> mSignalsConfigs;
89
90 std::unordered_map<uint32_t, int32_t> mSystemIndependentLayerMappings;
91
93
94public:
96
103 void registerSignal(SignalInfo* signalInfo, int8_t isBuSpecified=false);
104
105 int8_t isSignalConfigMalformed(SignalInfo* sConf);
106
107 std::vector<SignalInfo*> getSignalConfigs();
108
116 SignalInfo* getSignalConfigById(uint32_t signalCode);
117
118 int32_t getSignalsConfigCount();
119 int32_t getSignalTableIndex(uint32_t signalCode);
120 void displaySignals();
121
122 static std::shared_ptr<SignalRegistry> getInstance() {
123 if(signalRegistryInstance == nullptr) {
124 try {
125 signalRegistryInstance = std::shared_ptr<SignalRegistry>(new SignalRegistry());
126 } catch(const std::bad_alloc& e) {
127 LOGE("RESTUNE_SIGNAL_REGISTRY",
128 "Failed to allocate memory for SignalRegistry instance: " + std::string(e.what()));
129 return nullptr;
130 }
131 }
132 return signalRegistryInstance;
133 }
134};
135
136class SignalInfoBuilder {
137private:
138 SignalInfo* mSignalInfo;
139
140public:
141 SignalInfoBuilder();
142 ~SignalInfoBuilder();
143
144 ErrCode setSignalID(const std::string& signalOpIdString);
145 ErrCode setSignalCategory(const std::string& categoryString);
146 ErrCode setName(const std::string& signalName);
147 ErrCode setTimeout(const std::string& timeoutString);
148 ErrCode setIsEnabled(const std::string& isEnabledString);
149 ErrCode addTargetEnabled(const std::string& target);
150 ErrCode addTargetDisabled(const std::string& target);
151 ErrCode addPermission(const std::string& permissionString);
152 ErrCode addDerivative(const std::string& derivative);
153 ErrCode addResource(Resource* resource);
154
155 SignalInfo* build();
156};
157
158class ResourceBuilder {
159private:
160 Resource* mResource;
161
162public:
163 ResourceBuilder();
164
165 ErrCode setResCode(const std::string& resCodeString);
166 ErrCode setResInfo(const std::string& resInfoString);
167 ErrCode setNumValues(int32_t valuesCount);
168 ErrCode addValue(const std::string& value);
169
170 Resource* build();
171};
172
173#endif
ErrCode
Custom Error Codes used by Resource Tuner APIs and Internal Functions.
Definition ErrCodes.h:17
Used to store information regarding Resources / Tunables which need to be Provisioned as part of the ...
Definition Resource.h:16
SignalRegistry.
SignalInfo * getSignalConfigById(uint32_t signalCode)
Get the SignalInfo object corresponding to the given Resource ID.
void registerSignal(SignalInfo *signalInfo, int8_t isBuSpecified=false)
Used to register a Config specified (through YAML) Signal with Resource Tuner.
Representation of a single Signal Configuration.
int8_t mIsEnabled
Boolean flag which is set if Signal is available for Provisioning.
uint16_t mSignalID
16-bit Signal ID
std::unordered_set< std::string > * mTargetsEnabled
Pointer to a vector, storing the list of targets for which the signal is enabled.
uint8_t mSignalCategory
Category of the Signal.
std::string mSignalName
Signal Name, for ex: EARLY_WAKEUP.
int32_t mTimeout
Default Signal Timeout, to be used if Client specifies a duration of 0 in the tuneSignal API call.
std::vector< enum Permissions > * mPermissions
Pointer to a list of Permissions, i.e. only Clients with one of these permissions can provision the s...
std::vector< Resource * > * mSignalResources
List of Actual Resource which will be Provisioned and the Values to be configured for the Resources.
std::unordered_set< std::string > * mTargetsDisabled
Pointer to a vector, storing the list of targets for which the signal is not eligible for Provisionin...