Home | History | Annotate | Download | only in pseudomodem
      1 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import dbus
      6 import dbus.service
      7 
      8 import dbus_std_ifaces
      9 import pm_constants
     10 import utils
     11 
     12 from autotest_lib.client.cros.cellular import mm1_constants
     13 
     14 class Testing(dbus_std_ifaces.DBusProperties):
     15     """
     16     The testing object allows the pseudomodem to be configured on the fly
     17     over D-Bus. It exposes a basic set of commands that can be used to
     18     simulate network events (such as SMS) or various other modem configurations
     19     that are needed for testing/debugging.
     20 
     21     """
     22 
     23     def __init__(self, modem, bus):
     24         self._modem = modem
     25         dbus_std_ifaces.DBusProperties.__init__(self,
     26                                                 pm_constants.TESTING_PATH,
     27                                                 bus)
     28 
     29 
     30     @utils.log_dbus_method()
     31     @dbus.service.method(pm_constants.I_TESTING, out_signature='b')
     32     def IsAlive(self):
     33         """
     34         A heartbeat method.
     35 
     36         This method can be called by clients to check that pseudomodem is alive.
     37 
     38         @returns: True, always.
     39 
     40         """
     41         return True
     42 
     43 
     44     def _InitializeProperties(self):
     45         return { pm_constants.I_TESTING: { 'Modem': self._modem.path } }
     46 
     47 
     48     @utils.log_dbus_method()
     49     @dbus.service.method(pm_constants.I_TESTING, in_signature='ss')
     50     def ReceiveSms(self, sender, text):
     51         """
     52         Simulates a fake SMS.
     53 
     54         @param sender: String containing the phone number of the sender.
     55         @param text: String containing the SMS message contents.
     56 
     57         """
     58         self._modem.sms_handler.receive_sms(text, sender)
     59 
     60 
     61     @utils.log_dbus_method()
     62     @dbus.service.method(pm_constants.I_TESTING, in_signature='s')
     63     def UpdatePcoInfo(self, pco_value):
     64         """
     65         Sets the VendorPcoInfo to the specified value. If the Modem.Modem3gpp
     66         properties are currently not exposed (e.g. due to a locked or absent
     67         SIM), this method will do nothing.
     68 
     69         @param pco_value: The PCO string.
     70 
     71         """
     72         if mm1_constants.I_MODEM_3GPP in self._modem.properties:
     73             self._modem.AssignPcoValue(pco_value)
     74 
     75     @utils.log_dbus_method()
     76     @dbus.service.method(pm_constants.I_TESTING, in_signature='uu')
     77     def SetSubscriptionState(self,
     78                              unregistered_subscription_state,
     79                              registered_subscription_state):
     80         """
     81         Sets the SubscriptionState to the specified value. If the
     82         Modem.Modem3gpp properties are currently not exposed (e.g. due to a
     83         locked or absent SIM), this method will do nothing.
     84 
     85         @param unregistered_subscription_state: This value is returned as the
     86                 subscription state when the modem is not registered on the
     87                 network. See mm1_constants.MM_MODEM_3GPP_SUBSCRIPTION_STATE_*.
     88         @param registered_subscription_state: This value is returned as the
     89                 subscription state when the modem is registered on the network.
     90                 See mm1_constants.MM_MODEM_3GPP_SUBSCRIPTION_STATE_*.
     91 
     92         """
     93         if mm1_constants.I_MODEM_3GPP in self._modem.properties:
     94             self._modem.AssignSubscriptionState(unregistered_subscription_state,
     95                                                 registered_subscription_state)
     96