1 /* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include "drmmode.h" 18 #include "drmresources.h" 19 20 #include <stdint.h> 21 #include <string> 22 #include <xf86drmMode.h> 23 24 namespace android { 25 26 DrmMode::DrmMode(drmModeModeInfoPtr m) 27 : id_(0), 28 clock_(m->clock), 29 h_display_(m->hdisplay), 30 h_sync_start_(m->hsync_start), 31 h_sync_end_(m->hsync_end), 32 h_total_(m->htotal), 33 h_skew_(m->hskew), 34 v_display_(m->vdisplay), 35 v_sync_start_(m->vsync_start), 36 v_sync_end_(m->vsync_end), 37 v_total_(m->vtotal), 38 v_scan_(m->vscan), 39 v_refresh_(m->vrefresh), 40 flags_(m->flags), 41 type_(m->type), 42 name_(m->name) { 43 } 44 45 DrmMode::DrmMode() 46 : id_(0), 47 clock_(0), 48 h_display_(0), 49 h_sync_start_(0), 50 h_sync_end_(0), 51 h_total_(0), 52 h_skew_(0), 53 v_display_(0), 54 v_sync_start_(0), 55 v_sync_end_(0), 56 v_total_(0), 57 v_scan_(0), 58 v_refresh_(0), 59 flags_(0), 60 type_(0), 61 name_("") { 62 } 63 64 DrmMode::~DrmMode() { 65 } 66 67 bool DrmMode::operator==(const drmModeModeInfo &m) const { 68 return clock_ == m.clock && h_display_ == m.hdisplay && 69 h_sync_start_ == m.hsync_start && h_sync_end_ == m.hsync_end && 70 h_total_ == m.htotal && h_skew_ == m.hskew && 71 v_display_ == m.vdisplay && v_sync_start_ == m.vsync_start && 72 v_sync_end_ == m.vsync_end && v_total_ == m.vtotal && 73 v_scan_ == m.vscan && v_refresh_ == m.vrefresh && flags_ == m.flags && 74 type_ == m.type; 75 } 76 77 void DrmMode::ToDrmModeModeInfo(drm_mode_modeinfo *m) const { 78 m->clock = clock_; 79 m->hdisplay = h_display_; 80 m->hsync_start = h_sync_start_; 81 m->hsync_end = h_sync_end_; 82 m->htotal = h_total_; 83 m->hskew = h_skew_; 84 m->vdisplay = v_display_; 85 m->vsync_start = v_sync_start_; 86 m->vsync_end = v_sync_end_; 87 m->vtotal = v_total_; 88 m->vscan = v_scan_; 89 m->vrefresh = v_refresh_; 90 m->flags = flags_; 91 m->type = type_; 92 strncpy(m->name, name_.c_str(), DRM_DISPLAY_MODE_LEN); 93 } 94 95 uint32_t DrmMode::id() const { 96 return id_; 97 } 98 99 void DrmMode::set_id(uint32_t id) { 100 id_ = id; 101 } 102 103 uint32_t DrmMode::clock() const { 104 return clock_; 105 } 106 107 uint32_t DrmMode::h_display() const { 108 return h_display_; 109 } 110 111 uint32_t DrmMode::h_sync_start() const { 112 return h_sync_start_; 113 } 114 115 uint32_t DrmMode::h_sync_end() const { 116 return h_sync_end_; 117 } 118 119 uint32_t DrmMode::h_total() const { 120 return h_total_; 121 } 122 123 uint32_t DrmMode::h_skew() const { 124 return h_skew_; 125 } 126 127 uint32_t DrmMode::v_display() const { 128 return v_display_; 129 } 130 131 uint32_t DrmMode::v_sync_start() const { 132 return v_sync_start_; 133 } 134 135 uint32_t DrmMode::v_sync_end() const { 136 return v_sync_end_; 137 } 138 139 uint32_t DrmMode::v_total() const { 140 return v_total_; 141 } 142 143 uint32_t DrmMode::v_scan() const { 144 return v_scan_; 145 } 146 147 uint32_t DrmMode::v_refresh() const { 148 return v_refresh_; 149 } 150 151 uint32_t DrmMode::flags() const { 152 return flags_; 153 } 154 155 uint32_t DrmMode::type() const { 156 return type_; 157 } 158 159 std::string DrmMode::name() const { 160 return name_; 161 } 162 } 163