Support native API to report sysfs nodes changes
When a sysfs node change is reported, check if any new
perpherals are added and if added, recreate input device.
Test: atest inputfliger_tests
Bug: 265057712
Change-Id: Ic6c0c00de9ae963f0651859bdbc57e45af7ccd07
diff --git a/services/inputflinger/reader/include/EventHub.h b/services/inputflinger/reader/include/EventHub.h
index 0b15efe..20612c7 100644
--- a/services/inputflinger/reader/include/EventHub.h
+++ b/services/inputflinger/reader/include/EventHub.h
@@ -388,6 +388,10 @@
/* Disable an input device. Closes file descriptor to that device. */
virtual status_t disableDevice(int32_t deviceId) = 0;
+
+ /* Sysfs node changed. Reopen the Eventhub device if any new Peripheral like Light, Battery,
+ * etc. is detected. */
+ virtual void sysfsNodeChanged(const std::string& sysfsNodePath) = 0;
};
template <std::size_t BITS>
@@ -567,6 +571,8 @@
status_t disableDevice(int32_t deviceId) override final;
+ void sysfsNodeChanged(const std::string& sysfsNodePath) override final;
+
~EventHub() override;
private:
@@ -578,6 +584,7 @@
std::unordered_map<int32_t /*lightId*/, RawLightInfo> lightInfos;
std::optional<RawLayoutInfo> layoutInfo;
+ bool isChanged() const;
bool operator==(const AssociatedDevice&) const = default;
bool operator!=(const AssociatedDevice&) const = default;
std::string dump() const;