usb-detector: Add UsbPortDbus property Add UsbPortDbus property which is a normalized version of UsbPort (replacing non-alphanumeric/underscore characters with underscores). This is used for D-Bus path construction in Entity-Manager to avoid path mismatches, while keeping UsbPort in its original format for sysfs lookup. Tested: Built and verified. Google-Bug-Id: 536095010 Change-Id: Ic9ba8193c962448231989f7de3adb8fc80358755 Signed-off-by: Guangzong Chen <guangzong@google.com> TAG=agy CONV=73f88cc8-43e3-450d-b174-1a11d58204ba
diff --git a/main.cpp b/main.cpp index 6f4dee2..6aed930 100644 --- a/main.cpp +++ b/main.cpp
@@ -52,6 +52,8 @@ sdbusplus::asio::PropertyPermission::readOnly); iface->register_property("UsbPort", usbInfInfo.port, sdbusplus::asio::PropertyPermission::readOnly); + iface->register_property("PortDbus", usbInfInfo.portDbus, + sdbusplus::asio::PropertyPermission::readOnly); iface->register_property("Configuration", usbInfInfo.configuration, sdbusplus::asio::PropertyPermission::readOnly); iface->register_property("InterfaceString", usbInfInfo.interfaceString,
diff --git a/usb_monitor.cpp b/usb_monitor.cpp index 3080e50..ba4c196 100644 --- a/usb_monitor.cpp +++ b/usb_monitor.cpp
@@ -2,6 +2,7 @@ #include <stdplus/print.hpp> +#include <regex> #include <sstream> #include <string_view> @@ -230,6 +231,8 @@ device.interfacePath = infPath; device.busNum = busNum; device.port = portPathOnly; + device.portDbus = + "u" + std::regex_replace(portPathOnly, std::regex("\\."), "u"); device.interfaceString = GetSysAttrValue(usbInf, "iInterface"); device.interfaceNum = GetSysAttrValue(usbInf, "bInterfaceNumber"); device.interfaceClass = GetSysAttrValue(usbInf, "bInterfaceClass");
diff --git a/usb_monitor.hpp b/usb_monitor.hpp index ba28697..c95e47e 100644 --- a/usb_monitor.hpp +++ b/usb_monitor.hpp
@@ -23,6 +23,7 @@ std::string rootHubPath; std::string busNum; std::string port; + std::string portDbus; std::string vendorId; std::string productId; std::string manufacturer;