16a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul/* 26a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * Copyright (C) 2015 The Android Open Source Project 36a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * 46a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * Licensed under the Apache License, Version 2.0 (the "License"); 56a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * you may not use this file except in compliance with the License. 66a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * You may obtain a copy of the License at 76a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * 86a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * http://www.apache.org/licenses/LICENSE-2.0 96a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * 106a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * Unless required by applicable law or agreed to in writing, software 116a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * distributed under the License is distributed on an "AS IS" BASIS, 126a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * See the License for the specific language governing permissions and 146a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * limitations under the License. 156a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul */ 166a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 176a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#ifndef ANDROID_DRM_PROPERTY_H_ 186a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#define ANDROID_DRM_PROPERTY_H_ 196a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 206a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#include <stdint.h> 216a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#include <string> 226a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#include <xf86drmMode.h> 236a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#include <vector> 246a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 256a55e9fb8e16c63c2e42bde31814f963205f722dSean Paulnamespace android { 266a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 276a55e9fb8e16c63c2e42bde31814f963205f722dSean Paulenum DrmPropertyType { 286a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DRM_PROPERTY_TYPE_INT, 296a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DRM_PROPERTY_TYPE_ENUM, 30877be974a2d4fc518700be8ffe803a50cb716eadSean Paul DRM_PROPERTY_TYPE_OBJECT, 3185c58c63ff707874d62e7b088e5ed439b8724d6fSean Paul DRM_PROPERTY_TYPE_BLOB, 321eb6006fb7d950c5aefb202459234c96f8bf2895Sean Paul DRM_PROPERTY_TYPE_INVALID, 336a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul}; 346a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 356a55e9fb8e16c63c2e42bde31814f963205f722dSean Paulclass DrmProperty { 366a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul public: 376a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmProperty(drmModePropertyPtr p, uint64_t value); 386a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmProperty(); 396a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul ~DrmProperty(); 406a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 416a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul void Init(drmModePropertyPtr p, uint64_t value); 426a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 436a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint32_t id() const; 446a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul std::string name() const; 456a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 466a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul int value(uint64_t *value) const; 476a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 486a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul private: 496a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul class DrmPropertyEnum { 506a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul public: 516a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmPropertyEnum(drm_mode_property_enum *e); 526a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul ~DrmPropertyEnum(); 536a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 546a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint64_t value_; 556a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul std::string name_; 566a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul }; 576a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 586a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmProperty(const DrmProperty &); 596a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 606a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint32_t id_; 616a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 626a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmPropertyType type_; 636a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint32_t flags_; 646a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul std::string name_; 656a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint64_t value_; 666a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 676a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul std::vector<uint64_t> values_; 686a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul std::vector<DrmPropertyEnum> enums_; 696a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul std::vector<uint32_t> blob_ids_; 706a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul}; 716a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul} 726a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 736a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#endif // ANDROID_DRM_PROPERTY_H_ 74