Home | History | Annotate | Download | only in host
      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 PASSTHROUGH_MODE_KEY = "passthrough_mode"
     26 
     27 
     28 class NfcHidlBasicTest(hal_hidl_host_test.HalHidlHostTest):
     29     """A simple testcase for the NFC HIDL HAL."""
     30 
     31     TEST_HAL_SERVICES = {"android.hardware.nfc (at] 1.0::INfc"}
     32     def setUpClass(self):
     33         """Creates a mirror and turns on the framework-layer VIBRATOR service."""
     34         super(NfcHidlBasicTest, self).setUpClass()
     35 
     36         self.shell.Execute("svc nfc disable")  # Turn off
     37         time.sleep(5)
     38 
     39         self.getUserParams(opt_param_names=[PASSTHROUGH_MODE_KEY])
     40         if getattr(self, PASSTHROUGH_MODE_KEY, True):
     41             self.shell.Execute(
     42                 "setprop vts.hal.vts.hidl.get_stub true")
     43         else:
     44             self.shell.Execute(
     45                 "setprop vts.hal.vts.hidl.get_stub false")
     46 
     47         self.dut.hal.InitHidlHal(
     48             target_type="nfc",
     49             target_basepaths=self.dut.libPaths,
     50             target_version=1.0,
     51             target_package="android.hardware.nfc",
     52             target_component_name="INfc",
     53             bits=int(self.abi_bitness))
     54 
     55     def tearDownClass(self):
     56         """Turns off the framework-layer NFC service."""
     57         # Ideally, we would want to store the nfc service's state before
     58         # turning that off in setUpClass and restore the original state.
     59         if not self.isSkipAllTests():
     60             self.shell.Execute("svc nfc disable")  # make sure it's off
     61         super(NfcHidlBasicTest, self).tearDownClass()
     62 
     63     def testBase(self):
     64         """A simple test case which just calls each registered function."""
     65         # TODO: extend to make realistic testcases
     66         # For example, call after CORE_INIT_RSP is received.
     67         # result = self.dut.hal.nfc.coreInitialized([1])
     68         # logging.info("coreInitialized result: %s", result)
     69 
     70         def send_event(NfcEvent, NfcStatus):
     71             logging.info("callback send_event")
     72             logging.info("arg0 %s", NfcEvent)
     73             logging.info("arg1 %s", NfcStatus)
     74 
     75         def send_data(NfcData):
     76             logging.info("callback send_data")
     77             logging.info("arg0 %s", NfcData)
     78 
     79         client_callback = self.dut.hal.nfc.GetHidlCallbackInterface(
     80             "INfcClientCallback",
     81             sendEvent=send_event,
     82             sendData=send_data)
     83 
     84         result = self.dut.hal.nfc.open(client_callback)
     85         logging.info("open result: %s", result)
     86 
     87         result = self.dut.hal.nfc.prediscover()
     88         logging.info("prediscover result: %s", result)
     89 
     90         result = self.dut.hal.nfc.controlGranted()
     91         logging.info("controlGranted result: %s", result)
     92 
     93         result = self.dut.hal.nfc.powerCycle()
     94         logging.info("powerCycle result: %s", result)
     95 
     96         nfc_types = self.dut.hal.nfc.GetHidlTypeInterface("types")
     97         logging.info("nfc_types: %s", nfc_types)
     98 
     99         result = self.dut.hal.nfc.write([0, 1, 2, 3, 4, 5])
    100         logging.info("write result: %s", result)
    101 
    102         result = self.dut.hal.nfc.close()
    103         logging.info("close result: %s", result)
    104 
    105         if self.coverage.enabled:
    106             self.coverage.SetCoverageData(dut=self.dut, isGlobal=True)
    107 
    108 if __name__ == "__main__":
    109     test_runner.main()
    110