OSDN Git Service

drm_hwcomposer: Add DrmConnector::name function
authorRoman Kovalivskyi <roman.kovalivskyi@globallogic.com>
Mon, 4 Nov 2019 15:43:40 +0000 (17:43 +0200)
committerRoman Kovalivskyi <roman.kovalivskyi@globallogic.com>
Thu, 21 Nov 2019 23:18:07 +0000 (23:18 +0000)
Connectors usually are referred by names, but libdrm stores type and
id only as a numbers so for more convenience conversion function from
integerst to string should be added.

Signed-off-by: Roman Kovalivskyi <roman.kovalivskyi@globallogic.com>
drm/drmconnector.cpp
include/drmconnector.h

index 543827d..bca7575 100644 (file)
@@ -22,6 +22,9 @@
 #include <errno.h>
 #include <stdint.h>
 
+#include <array>
+#include <sstream>
+
 #include <log/log.h>
 #include <xf86drmMode.h>
 
@@ -35,6 +38,7 @@ DrmConnector::DrmConnector(DrmDevice *drm, drmModeConnectorPtr c,
       encoder_(current_encoder),
       display_(-1),
       type_(c->connector_type),
+      type_id_(c->connector_type_id),
       state_(c->connection),
       mm_width_(c->mmWidth),
       mm_height_(c->mmHeight),
@@ -112,6 +116,18 @@ bool DrmConnector::valid_type() const {
   return internal() || external() || writeback();
 }
 
+std::string DrmConnector::name() const {
+  constexpr std::array names = {"None",      "VGA",       "DVI-I",  "DVI-D",
+                                "DVI-A",     "Composite", "SVIDEO", "LVDS",
+                                "Component", "DIN",       "DP",     "HDMI-A",
+                                "HDMI-B",    "TV",        "eDP",    "Virtual",
+                                "DSI"};
+
+  std::ostringstream name_buf;
+  name_buf << names[type_] << "-" << type_id_;
+  return name_buf.str();
+}
+
 int DrmConnector::UpdateModes() {
   int fd = drm_->fd();
 
index 9c526c8..c9fd7ab 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <stdint.h>
 #include <xf86drmMode.h>
+#include <string>
 #include <vector>
 
 namespace android {
@@ -49,6 +50,8 @@ class DrmConnector {
   bool writeback() const;
   bool valid_type() const;
 
+  std::string name() const;
+
   int UpdateModes();
 
   const std::vector<DrmMode> &modes() const {
@@ -86,6 +89,7 @@ class DrmConnector {
   int display_;
 
   uint32_t type_;
+  uint32_t type_id_;
   drmModeConnection state_;
 
   uint32_t mm_width_;