HidlService.h revision d544cf6502ff3a9958887b683f0500edcebd8cb8
12173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland#ifndef ANDROID_HARDWARE_MANAGER_V1_0_HIDLSERVICE_H 22173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland#define ANDROID_HARDWARE_MANAGER_V1_0_HIDLSERVICE_H 32173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 42173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland#include <android/hidl/manager/1.0/IServiceManager.h> 52173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland#include <hidl/Status.h> 62173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland#include <hidl/MQDescriptor.h> 72173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland#include <map> 82173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland#include <unordered_map> 92173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 102173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandnamespace android { 112173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandnamespace hidl { 122173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandnamespace manager { 132173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandnamespace V1_0 { 142173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandnamespace implementation { 152173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 162173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandusing ::android::hardware::hidl_vec; 172173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandusing ::android::hardware::hidl_string; 182173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandusing ::android::hardware::Return; 192173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandusing ::android::hardware::Void; 20b3a90f0de29292ec4288484c3e66b225d86bdc15Yifan Hongusing ::android::hidl::base::V1_0::IBase; 212173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandusing ::android::hidl::manager::V1_0::IServiceManager; 222173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandusing ::android::sp; 232173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 242173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandstruct HidlService { 25d544cf6502ff3a9958887b683f0500edcebd8cb8Steven Moreland HidlService(const std::string &interfaceName, 26d544cf6502ff3a9958887b683f0500edcebd8cb8Steven Moreland const std::string &instanceName, 27b3a90f0de29292ec4288484c3e66b225d86bdc15Yifan Hong const sp<IBase> &service); 282173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 292173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland /** 302173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland * Note, getService() can be nullptr. This is because you can have a HidlService 312173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland * with registered IServiceNotification objects but no service registered yet. 322173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland */ 33b3a90f0de29292ec4288484c3e66b225d86bdc15Yifan Hong sp<IBase> getService() const; 34b3a90f0de29292ec4288484c3e66b225d86bdc15Yifan Hong void setService(sp<IBase> service); 35d544cf6502ff3a9958887b683f0500edcebd8cb8Steven Moreland const std::string &getInterfaceName() const; 36d544cf6502ff3a9958887b683f0500edcebd8cb8Steven Moreland const std::string &getInstanceName() const; 372173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 382173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland void addListener(const sp<IServiceNotification> &listener); 392173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 402173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland std::string string() const; // e.x. "android.hidl.manager@1.0::IServiceManager/manager" 412173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 422173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Morelandprivate: 432173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland void sendRegistrationNotifications() const; 442173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 45d544cf6502ff3a9958887b683f0500edcebd8cb8Steven Moreland const std::string mInterfaceName; // e.x. "android.hardware.manager@1.0::IServiceManager" 46d544cf6502ff3a9958887b683f0500edcebd8cb8Steven Moreland const std::string mInstanceName; // e.x. "manager" 47b3a90f0de29292ec4288484c3e66b225d86bdc15Yifan Hong sp<IBase> mService; 482173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 492173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland std::vector<sp<IServiceNotification>> mListeners{}; 502173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland}; 512173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 522173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland} // namespace implementation 532173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland} // namespace V1_0 542173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland} // namespace manager 552173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland} // namespace hidl 562173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland} // namespace android 572173d3c8d6f5a5a78bd145063ac177d7f0657d33Steven Moreland 58b3a90f0de29292ec4288484c3e66b225d86bdc15Yifan Hong#endif // ANDROID_HARDWARE_MANAGER_V1_0_HIDLSERVICE_H 59