VTS driver and profiler module for tv cec hdmi hal
Test: local
Change-Id: I39af03e2cefb2f04b833b864bcf0a8e05e57166e
diff --git a/tv/cec/1.0/vts/Android.mk b/tv/cec/1.0/vts/Android.mk
new file mode 100644
index 0000000..2666ca6
--- /dev/null
+++ b/tv/cec/1.0/vts/Android.mk
@@ -0,0 +1,118 @@
+#
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+# build VTS driver for TvCec v1.0.
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_driver_hidl_tv_hdmi_cec@1.0
+
+LOCAL_SRC_FILES := \
+ HdmiCec.vts \
+ HdmiCecCallback.vts \
+ types.vts \
+
+LOCAL_SHARED_LIBRARIES += \
+ android.hardware.tv.cec@1.0 \
+ libbase \
+ libutils \
+ libcutils \
+ liblog \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ libprotobuf-cpp-full \
+ libvts_common \
+ libvts_datatype \
+ libvts_measurement \
+ libvts_multidevice_proto \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
+
+
+# build VTS profiler for HdmiCec
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_profiler_hidl_tv_hdmi_cec@1.0
+
+LOCAL_SRC_FILES := \
+ HdmiCec.vts \
+ types.vts \
+
+LOCAL_C_INCLUDES += \
+ test/vts/drivers/libprofiling \
+
+LOCAL_VTS_MODE := PROFILER
+
+LOCAL_SHARED_LIBRARIES += \
+ android.hardware.tv.cec@1.0 \
+ libbase \
+ libcutils \
+ liblog \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ libprotobuf-cpp-full \
+ libvts_common \
+ libvts_multidevice_proto \
+ libvts_profiling \
+ libutils \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
+
+
+# build VTS profiler for HdmiCecCallback
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_profiler_hidl_tv_hdmi_cec_callback_@1.0
+
+LOCAL_SRC_FILES := \
+ HdmiCecCallback.vts \
+ types.vts \
+
+LOCAL_C_INCLUDES += \
+ test/vts/drivers/libprofiling \
+
+LOCAL_VTS_MODE := PROFILER
+
+LOCAL_SHARED_LIBRARIES += \
+ android.hardware.tv.cec@1.0 \
+ libbase \
+ libcutils \
+ liblog \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ libprotobuf-cpp-full \
+ libvts_common \
+ libvts_multidevice_proto \
+ libvts_profiling \
+ libutils \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
\ No newline at end of file
diff --git a/tv/cec/1.0/vts/HdmiCec.vts b/tv/cec/1.0/vts/HdmiCec.vts
new file mode 100644
index 0000000..d7d09de
--- /dev/null
+++ b/tv/cec/1.0/vts/HdmiCec.vts
@@ -0,0 +1,172 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IHdmiCec"
+
+package: "android.hardware.tv.cec"
+
+import: "android.hardware.tv.cec@1.0::IHdmiCecCallback"
+import: "android.hardware.tv.cec@1.0::types"
+
+interface: {
+ api: {
+ name: "addLogicalAddress"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::tv::cec::V1_0::Result"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+ api: {
+ name: "clearLogicalAddress"
+ callflow: {
+ next: "addLogicalAddress"
+ }
+ callflow: {
+ exit: true
+ }
+ }
+
+ api: {
+ name: "getPhysicalAddress"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::tv::cec::V1_0::Result"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+ api: {
+ name: "sendMessage"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::tv::cec::V1_0::SendMessageResult"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::tv::cec::V1_0::CecMessage"
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+ api: {
+ name: "setCallback"
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "IHdmiCecCallback"
+ is_callback: true
+ }
+ callflow: {
+ next: "addLogicalAddress"
+ }
+ callflow: {
+ entry: true
+ }
+ }
+
+ api: {
+ name: "getCecVersion"
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+ api: {
+ name: "getVendorId"
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+ api: {
+ name: "getPortInfo"
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::tv::cec::V1_0::HdmiPortInfo"
+ }
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+ api: {
+ name: "setOption"
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::tv::cec::V1_0::OptionKey"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+ api: {
+ name: "setLanguage"
+ arg: {
+ type: TYPE_STRING
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+ api: {
+ name: "enableAudioReturnChannel"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+ api: {
+ name: "isConnected"
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+}
diff --git a/tv/cec/1.0/vts/HdmiCecCallback.vts b/tv/cec/1.0/vts/HdmiCecCallback.vts
new file mode 100644
index 0000000..864e6f5
--- /dev/null
+++ b/tv/cec/1.0/vts/HdmiCecCallback.vts
@@ -0,0 +1,26 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IHdmiCecCallback"
+
+package: "android.hardware.tv.cec"
+
+import: "android.hardware.tv.cec@1.0::types"
+
+interface: {
+ api: {
+ name: "onCecMessage"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::tv::cec::V1_0::CecMessage"
+ }
+ }
+
+ api: {
+ name: "onHotplugEvent"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::tv::cec::V1_0::HotplugEvent"
+ }
+ }
+
+}
diff --git a/tv/cec/1.0/vts/types.vts b/tv/cec/1.0/vts/types.vts
new file mode 100644
index 0000000..ae972a5
--- /dev/null
+++ b/tv/cec/1.0/vts/types.vts
@@ -0,0 +1,604 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "types"
+
+package: "android.hardware.tv.cec"
+
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::MaxLength"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "MESSAGE_BODY"
+ scalar_value: {
+ int32_t: 15
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::CecDeviceType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "INACTIVE"
+ scalar_value: {
+ int32_t: -1
+ }
+ enumerator: "TV"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "RECORDER"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "TUNER"
+ scalar_value: {
+ int32_t: 3
+ }
+ enumerator: "PLAYBACK"
+ scalar_value: {
+ int32_t: 4
+ }
+ enumerator: "AUDIO_SYSTEM"
+ scalar_value: {
+ int32_t: 5
+ }
+ enumerator: "MAX"
+ scalar_value: {
+ int32_t: 5
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "TV"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "RECORDER_1"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "RECORDER_2"
+ scalar_value: {
+ int32_t: 2
+ }
+ enumerator: "TUNER_1"
+ scalar_value: {
+ int32_t: 3
+ }
+ enumerator: "PLAYBACK_1"
+ scalar_value: {
+ int32_t: 4
+ }
+ enumerator: "AUDIO_SYSTEM"
+ scalar_value: {
+ int32_t: 5
+ }
+ enumerator: "TUNER_2"
+ scalar_value: {
+ int32_t: 6
+ }
+ enumerator: "TUNER_3"
+ scalar_value: {
+ int32_t: 7
+ }
+ enumerator: "PLAYBACK_2"
+ scalar_value: {
+ int32_t: 8
+ }
+ enumerator: "RECORDER_3"
+ scalar_value: {
+ int32_t: 9
+ }
+ enumerator: "TUNER_4"
+ scalar_value: {
+ int32_t: 10
+ }
+ enumerator: "PLAYBACK_3"
+ scalar_value: {
+ int32_t: 11
+ }
+ enumerator: "FREE_USE"
+ scalar_value: {
+ int32_t: 14
+ }
+ enumerator: "UNREGISTERED"
+ scalar_value: {
+ int32_t: 15
+ }
+ enumerator: "BROADCAST"
+ scalar_value: {
+ int32_t: 15
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::CecMessageType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "FEATURE_ABORT"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "IMAGE_VIEW_ON"
+ scalar_value: {
+ int32_t: 4
+ }
+ enumerator: "TUNER_STEP_INCREMENT"
+ scalar_value: {
+ int32_t: 5
+ }
+ enumerator: "TUNER_STEP_DECREMENT"
+ scalar_value: {
+ int32_t: 6
+ }
+ enumerator: "TUNER_DEVICE_STATUS"
+ scalar_value: {
+ int32_t: 7
+ }
+ enumerator: "GIVE_TUNER_DEVICE_STATUS"
+ scalar_value: {
+ int32_t: 8
+ }
+ enumerator: "RECORD_ON"
+ scalar_value: {
+ int32_t: 9
+ }
+ enumerator: "RECORD_STATUS"
+ scalar_value: {
+ int32_t: 10
+ }
+ enumerator: "RECORD_OFF"
+ scalar_value: {
+ int32_t: 11
+ }
+ enumerator: "TEXT_VIEW_ON"
+ scalar_value: {
+ int32_t: 13
+ }
+ enumerator: "RECORD_TV_SCREEN"
+ scalar_value: {
+ int32_t: 15
+ }
+ enumerator: "GIVE_DECK_STATUS"
+ scalar_value: {
+ int32_t: 26
+ }
+ enumerator: "DECK_STATUS"
+ scalar_value: {
+ int32_t: 27
+ }
+ enumerator: "SET_MENU_LANGUAGE"
+ scalar_value: {
+ int32_t: 50
+ }
+ enumerator: "CLEAR_ANALOG_TIMER"
+ scalar_value: {
+ int32_t: 51
+ }
+ enumerator: "SET_ANALOG_TIMER"
+ scalar_value: {
+ int32_t: 52
+ }
+ enumerator: "TIMER_STATUS"
+ scalar_value: {
+ int32_t: 53
+ }
+ enumerator: "STANDBY"
+ scalar_value: {
+ int32_t: 54
+ }
+ enumerator: "PLAY"
+ scalar_value: {
+ int32_t: 65
+ }
+ enumerator: "DECK_CONTROL"
+ scalar_value: {
+ int32_t: 66
+ }
+ enumerator: "TIMER_CLEARED_STATUS"
+ scalar_value: {
+ int32_t: 67
+ }
+ enumerator: "USER_CONTROL_PRESSED"
+ scalar_value: {
+ int32_t: 68
+ }
+ enumerator: "USER_CONTROL_RELEASED"
+ scalar_value: {
+ int32_t: 69
+ }
+ enumerator: "GIVE_OSD_NAME"
+ scalar_value: {
+ int32_t: 70
+ }
+ enumerator: "SET_OSD_NAME"
+ scalar_value: {
+ int32_t: 71
+ }
+ enumerator: "SET_OSD_STRING"
+ scalar_value: {
+ int32_t: 100
+ }
+ enumerator: "SET_TIMER_PROGRAM_TITLE"
+ scalar_value: {
+ int32_t: 103
+ }
+ enumerator: "SYSTEM_AUDIO_MODE_REQUEST"
+ scalar_value: {
+ int32_t: 112
+ }
+ enumerator: "GIVE_AUDIO_STATUS"
+ scalar_value: {
+ int32_t: 113
+ }
+ enumerator: "SET_SYSTEM_AUDIO_MODE"
+ scalar_value: {
+ int32_t: 114
+ }
+ enumerator: "REPORT_AUDIO_STATUS"
+ scalar_value: {
+ int32_t: 122
+ }
+ enumerator: "GIVE_SYSTEM_AUDIO_MODE_STATUS"
+ scalar_value: {
+ int32_t: 125
+ }
+ enumerator: "SYSTEM_AUDIO_MODE_STATUS"
+ scalar_value: {
+ int32_t: 126
+ }
+ enumerator: "ROUTING_CHANGE"
+ scalar_value: {
+ int32_t: 128
+ }
+ enumerator: "ROUTING_INFORMATION"
+ scalar_value: {
+ int32_t: 129
+ }
+ enumerator: "ACTIVE_SOURCE"
+ scalar_value: {
+ int32_t: 130
+ }
+ enumerator: "GIVE_PHYSICAL_ADDRESS"
+ scalar_value: {
+ int32_t: 131
+ }
+ enumerator: "REPORT_PHYSICAL_ADDRESS"
+ scalar_value: {
+ int32_t: 132
+ }
+ enumerator: "REQUEST_ACTIVE_SOURCE"
+ scalar_value: {
+ int32_t: 133
+ }
+ enumerator: "SET_STREAM_PATH"
+ scalar_value: {
+ int32_t: 134
+ }
+ enumerator: "DEVICE_VENDOR_ID"
+ scalar_value: {
+ int32_t: 135
+ }
+ enumerator: "VENDOR_COMMAND"
+ scalar_value: {
+ int32_t: 137
+ }
+ enumerator: "VENDOR_REMOTE_BUTTON_DOWN"
+ scalar_value: {
+ int32_t: 138
+ }
+ enumerator: "VENDOR_REMOTE_BUTTON_UP"
+ scalar_value: {
+ int32_t: 139
+ }
+ enumerator: "GIVE_DEVICE_VENDOR_ID"
+ scalar_value: {
+ int32_t: 140
+ }
+ enumerator: "MENU_REQUEST"
+ scalar_value: {
+ int32_t: 141
+ }
+ enumerator: "MENU_STATUS"
+ scalar_value: {
+ int32_t: 142
+ }
+ enumerator: "GIVE_DEVICE_POWER_STATUS"
+ scalar_value: {
+ int32_t: 143
+ }
+ enumerator: "REPORT_POWER_STATUS"
+ scalar_value: {
+ int32_t: 144
+ }
+ enumerator: "GET_MENU_LANGUAGE"
+ scalar_value: {
+ int32_t: 145
+ }
+ enumerator: "SELECT_ANALOG_SERVICE"
+ scalar_value: {
+ int32_t: 146
+ }
+ enumerator: "SELECT_DIGITAL_SERVICE"
+ scalar_value: {
+ int32_t: 147
+ }
+ enumerator: "SET_DIGITAL_TIMER"
+ scalar_value: {
+ int32_t: 151
+ }
+ enumerator: "CLEAR_DIGITAL_TIMER"
+ scalar_value: {
+ int32_t: 153
+ }
+ enumerator: "SET_AUDIO_RATE"
+ scalar_value: {
+ int32_t: 154
+ }
+ enumerator: "INACTIVE_SOURCE"
+ scalar_value: {
+ int32_t: 157
+ }
+ enumerator: "CEC_VERSION"
+ scalar_value: {
+ int32_t: 158
+ }
+ enumerator: "GET_CEC_VERSION"
+ scalar_value: {
+ int32_t: 159
+ }
+ enumerator: "VENDOR_COMMAND_WITH_ID"
+ scalar_value: {
+ int32_t: 160
+ }
+ enumerator: "CLEAR_EXTERNAL_TIMER"
+ scalar_value: {
+ int32_t: 161
+ }
+ enumerator: "SET_EXTERNAL_TIMER"
+ scalar_value: {
+ int32_t: 162
+ }
+ enumerator: "INITIATE_ARC"
+ scalar_value: {
+ int32_t: 192
+ }
+ enumerator: "REPORT_ARC_INITIATED"
+ scalar_value: {
+ int32_t: 193
+ }
+ enumerator: "REPORT_ARC_TERMINATED"
+ scalar_value: {
+ int32_t: 194
+ }
+ enumerator: "REQUEST_ARC_INITIATION"
+ scalar_value: {
+ int32_t: 195
+ }
+ enumerator: "REQUEST_ARC_TERMINATION"
+ scalar_value: {
+ int32_t: 196
+ }
+ enumerator: "TERMINATE_ARC"
+ scalar_value: {
+ int32_t: 197
+ }
+ enumerator: "ABORT"
+ scalar_value: {
+ int32_t: 255
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::AbortReason"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "UNRECOGNIZED_MODE"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "NOT_IN_CORRECT_MODE"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "CANNOT_PROVIDE_SOURCE"
+ scalar_value: {
+ int32_t: 2
+ }
+ enumerator: "INVALID_OPERAND"
+ scalar_value: {
+ int32_t: 3
+ }
+ enumerator: "REFUSED"
+ scalar_value: {
+ int32_t: 4
+ }
+ enumerator: "UNABLE_TO_DETERMINE"
+ scalar_value: {
+ int32_t: 5
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::Result"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "SUCCESS"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "FAILURE_UNKNOWN"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "FAILURE_INVALID_ARGS"
+ scalar_value: {
+ int32_t: 2
+ }
+ enumerator: "FAILURE_INVALID_STATE"
+ scalar_value: {
+ int32_t: 3
+ }
+ enumerator: "FAILURE_NOT_SUPPORTED"
+ scalar_value: {
+ int32_t: 4
+ }
+ enumerator: "FAILURE_BUSY"
+ scalar_value: {
+ int32_t: 5
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::SendMessageResult"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "SUCCESS"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "NACK"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "BUSY"
+ scalar_value: {
+ int32_t: 2
+ }
+ enumerator: "FAIL"
+ scalar_value: {
+ int32_t: 3
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::HdmiPortType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "INPUT"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "OUTPUT"
+ scalar_value: {
+ int32_t: 1
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::OptionKey"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "WAKEUP"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "ENABLE_CEC"
+ scalar_value: {
+ int32_t: 2
+ }
+ enumerator: "SYSTEM_CEC_CONTROL"
+ scalar_value: {
+ int32_t: 3
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::CecMessage"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "initiator"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
+ }
+ struct_value: {
+ name: "destination"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
+ }
+ struct_value: {
+ name: "body"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::HotplugEvent"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "connected"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "portId"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::tv::cec::V1_0::HdmiPortInfo"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "type"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::tv::cec::V1_0::HdmiPortType"
+ }
+ struct_value: {
+ name: "portId"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "cecSupported"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "arcSupported"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "physicalAddress"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+}
+