Koşullu olarak derlenmiş kodu, buradan değerleri dinamik olarak okumak için yeniden düzenleyebilirsiniz. HAL arayüzü. Örnek:
#ifdef TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS // some code fragment #endif
Çerçeve kodu, daha sonra
<configstore/Utils.h>
kullanabilirsiniz.
ConfigStore örneği
Bu örnekte, okuma etkinlikleri gösterilmektedir
TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS
, ConfigStore HAL'de tanımlanmış
dönüş türüyle forceHwcForVirtualDisplays()
olarak
OptionalBool
:
#include <configstore/Utils.h> using namespace android::hardware::configstore; using namespace android::hardware::configstore::V1_0; static bool vsyncPhaseOffsetNs = getBool<ISurfaceFlingerConfigs, ISurfaceFlingerConfigs::forceHwcForVirtualDisplays>(false);
Yardımcı program işlevi (yukarıdaki örnekte getBool
)
configstore
hizmetini kullanarak istemcinizde
arayüz işleviyle daha sonra, herkese açık kullanıcı adını
HIDL/hwbinder.
Yardımcı işlevler
<configstore/Utils.h>
.
(configstore/1.0/include/configstore/Utils.h
) fayda sağlar
Aşağıdakiler dahil olmak üzere her temel dönüş türü için işlevler:
Optional[Bool|String|Int32|UInt32|Int64|UInt64]
, listelendiği şekliyle
aşağıda bulabilirsiniz:
Tür | İşlev (şablon parametreleri atlandı) |
---|---|
OptionalBool |
bool getBool(const bool defValue) |
OptionalInt32 |
int32_t getInt32(const int32_t defValue) |
OptionalUInt32 |
uint32_t getUInt32(const uint32_t defValue) |
OptionalInt64 |
int64_t getInt64(const int64_t defValue) |
OptionalUInt64 |
uint64_t getUInt64(const uint64_t defValue) |
OptionalString |
std::string getString(const std::string &defValue) |
defValue
, HAL uygulaması aşağıdaki durumlarda döndürülen varsayılan değerdir:
yapılandırma öğesi için bir değer belirtmez. Her fonksiyon iki
şablon parametreleri:
I
, arayüz sınıfının adıdır.Func
, şunun üye işlev işaretçisidir: yapılandırma öğesi alınıyor.
Yapılandırma değeri salt okunur olduğundan ve değişmediğinden yardımcı program işlevi, yapılandırma değerini dahili olarak önbelleğe alır. Sonraki çağrılar aynı bağlantı biriminde önbelleğe alınmış değer kullanılarak daha verimli bir şekilde hizmet verebildiğini varsayalım.
configstore-utils kullan
ConfigStore HAL, alt sürümler için ileriye dönük olarak uyumlu olacak şekilde tasarlanmıştır.
yani HAL revize edildiğinde ve bazı çerçeve kodları
yeni kullanıma sunulan öğeleri kullanır. ConfigStore hizmeti, yaşı daha büyük olan bir
/vendor
üzerindeki sürüm kullanılmaya devam edebilir.
İleriye dönük uyumluluk için uygulamanızın şu politikalara uyduğundan emin olun: şu yönergeleri izleyin:
- Yeni öğeler, yalnızca eski sürümün hizmeti kullanılırken varsayılan değeri kullanır
kullanılabilir. Örnek:
service = V1_1::IConfig::getService(); // null if V1_0 is installed value = DEFAULT_VALUE; if(service) { value = service->v1_1API(DEFAULT_VALUE); }
. - İstemci, ConfigStore öğesini içeren ilk arayüzü kullanır.
Örnek:
V1_1::IConfig::getService()->v1_0API(); // NOT ALLOWED V1_0::IConfig::getService()->v1_0API(); // OK
. - Yeni sürümün hizmeti, eski sürümün arayüzü için alınabilir. İçinde
aşağıdaki örnekte, yüklü sürüm v1_1 ise v1_1 hizmeti,
getService()
karşılığında iade edilecek:V1_0::IConfig::getService()->v1_0API();
configstore-utils
kitaplığındaki erişim işlevleri
ConfigStore öğesine erişmek için kullanılır. #1, uygulama tarafından garanti edilir
ve 2. uygulama, derleyici hatalarıyla garanti edilir. Bu nedenlerden dolayı,
Mümkün olduğunda configstore-utils
kullanmanızı öneririz.