• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #!/usr/bin/env python
2 #
3 # Copyright (C) 2016 The Android Open Source Project
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #      http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #
17 
18 import logging
19 import time
20 
21 from vts.runners.host import asserts
22 from vts.runners.host import test_runner
23 from vts.testcases.template.hal_hidl_host_test import hal_hidl_host_test
24 
25 TVCEC_V1_0_HAL = "android.hardware.tv.cec@1.0::IHdmiCec"
26 
27 class TvCecHidlTest(hal_hidl_host_test.HalHidlHostTest):
28     """Host testcase class for the TV HDMI_CEC HIDL HAL."""
29 
30     TEST_HAL_SERVICES = {TVCEC_V1_0_HAL}
31     def setUpClass(self):
32         """Creates a mirror and init tv hdmi cec hal service."""
33         super(TvCecHidlTest, self).setUpClass()
34 
35         self.dut.hal.InitHidlHal(
36             target_type="tv_cec",
37             target_basepaths=self.dut.libPaths,
38             target_version=1.0,
39             target_package="android.hardware.tv.cec",
40             target_component_name="IHdmiCec",
41             hw_binder_service_name=self.getHalServiceName(TVCEC_V1_0_HAL),
42             bits=int(self.abi_bitness))
43 
44         time.sleep(1) # Wait for hal to be ready
45 
46         self.vtypes = self.dut.hal.tv_cec.GetHidlTypeInterface("types")
47         logging.info("tv_cec types: %s", self.vtypes)
48 
49     def testClearAndAddLogicalAddress(self):
50         """A simple test case which sets logical address and clears it."""
51         self.dut.hal.tv_cec.clearLogicalAddress()
52         result = self.dut.hal.tv_cec.addLogicalAddress(
53                 self.vtypes.CecLogicalAddress.PLAYBACK_3)
54         asserts.assertEqual(self.vtypes.Result.SUCCESS, result)
55         logging.info("addLogicalAddress result: %s", result)
56 
57     def testGetPhysicalAddress(self):
58         """A simple test case which queries the physical address."""
59         status, paddr = self.dut.hal.tv_cec.getPhysicalAddress()
60         asserts.assertEqual(self.vtypes.Result.SUCCESS, status)
61         logging.info("getPhysicalAddress status: %s, paddr: %s", status, paddr)
62 
63     def testSendRandomMessage(self):
64         """A test case which sends a random message."""
65         cec_message = {
66             "initiator": self.vtypes.CecLogicalAddress.TV,
67             "destination": self.vtypes.CecLogicalAddress.PLAYBACK_1,
68             "body": [1, 2, 3]
69         }
70         message = self.vtypes.Py2Pb("CecMessage", cec_message)
71         logging.info("message: %s", message)
72         result = self.dut.hal.tv_cec.sendMessage(message)
73         logging.info("sendMessage result: %s", result)
74 
75     def testGetCecVersion1(self):
76         """A simple test case which queries the cec version."""
77         version = self.dut.hal.tv_cec.getCecVersion()
78         logging.info("getCecVersion version: %s", version)
79 
80     def testGetVendorId(self):
81         """A simple test case which queries vendor id."""
82         vendor_id = self.dut.hal.tv_cec.getVendorId()
83         asserts.assertEqual(0, 0xff000000 & vendor_id)
84         logging.info("getVendorId vendor_id: %s", vendor_id)
85 
86     def testGetPortInfo(self):
87         """A simple test case which queries port information."""
88         port_infos = self.dut.hal.tv_cec.getPortInfo()
89         logging.info("getPortInfo port_infos: %s", port_infos)
90 
91     def testSetOption(self):
92         """A simple test case which changes CEC options."""
93         self.dut.hal.tv_cec.setOption(self.vtypes.OptionKey.WAKEUP, True)
94         self.dut.hal.tv_cec.setOption(self.vtypes.OptionKey.ENABLE_CEC, True)
95         self.dut.hal.tv_cec.setOption(
96                 self.vtypes.OptionKey.SYSTEM_CEC_CONTROL, True)
97 
98     def testSetLanguage(self):
99         """A simple test case which updates language information."""
100         self.dut.hal.tv_cec.setLanguage("eng")
101 
102     def testEnableAudioReturnChannel(self):
103         """Checks whether Audio Return Channel can be enabled."""
104         port_infos = self.dut.hal.tv_cec.getPortInfo()
105         for port_info in port_infos:
106             if "portId" in port_info and port_info.get("arcSupported"):
107                 self.dut.hal.tv_cec.enableAudioReturnChannel(
108                         port_info["portId"], True)
109 
110     def testIsConnected(self):
111         """A simple test case which queries the connected status."""
112         status = self.dut.hal.tv_cec.isConnected()
113         logging.info("isConnected status: %s", status)
114 
115 if __name__ == "__main__":
116     test_runner.main()
117