diff --git a/light/2.0/default/Light.cpp b/light/2.0/default/Light.cpp index cde1536633..5484d2db43 100644 --- a/light/2.0/default/Light.cpp +++ b/light/2.0/default/Light.cpp @@ -18,6 +18,8 @@ #include +#include + #include "Light.h" namespace android { @@ -107,6 +109,28 @@ const static std::map kLogicalLights = { {Type::WIFI, LIGHT_ID_WIFI} }; +Return Light::debug(const hidl_handle& handle, const hidl_vec& /* options */) { + if (handle == nullptr || handle->numFds < 1) { + ALOGE("debug called with no handle\n"); + return Void(); + } + + int fd = handle->data[0]; + if (fd < 0) { + ALOGE("invalid FD: %d\n", handle->data[0]); + return Void(); + } + + dprintf(fd, "The following lights are registered: "); + for (auto const& pair : mLights) { + const Type type = pair.first; + dprintf(fd, "%s,", kLogicalLights.at(type)); + } + dprintf(fd, ".\n"); + fsync(fd); + return Void(); +} + light_device_t* getLightDevice(const char* name) { light_device_t* lightDevice; const hw_module_t* hwModule = NULL; diff --git a/light/2.0/default/Light.h b/light/2.0/default/Light.h index 8987036f99..8851461de1 100644 --- a/light/2.0/default/Light.h +++ b/light/2.0/default/Light.h @@ -42,11 +42,12 @@ using ::android::sp; struct Light : public ILight { Light(std::map &&lights); - // Methods from ::android::hardware::light::V2_0::ILight follow. Return setLight(Type type, const LightState& state) override; Return getSupportedTypes(getSupportedTypes_cb _hidl_cb) override; -private: + Return debug(const hidl_handle& handle, const hidl_vec& options) override; + + private: std::map mLights; };