| # Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import dbus |
| |
| from autotest_lib.client.cros.cellular import mm1_constants |
| |
| class ModemSimple(dbus.service.Interface): |
| """ |
| Python binding for the org.freedesktop.ModemManager1.Modem.Simple |
| interface. All subclasses of Modem must implement this interface. |
| The Simple interface allows controlling and querying the status of |
| modems. |
| |
| """ |
| |
| # Remember to decorate your concrete implementation with |
| # @utils.log_dbus_method(return_cb_arg='return_cb', raise_cb_arg='raise_cb') |
| @dbus.service.method(mm1_constants.I_MODEM_SIMPLE, |
| in_signature='a{sv}', out_signature='o', |
| async_callbacks=('return_cb', 'raise_cb')) |
| def Connect(self, properties, return_cb, raise_cb): |
| """ |
| Do everything needed to connect the modem using the given properties. |
| |
| This method will attempt to find a matching packet data bearer and |
| activate it if necessary, returning the bearer's IP details. If no |
| matching bearer is found, a new bearer will be created and activated, |
| but this operation may fail if no resources are available to complete |
| this connection attempt (i.e., if a conflicting bearer is already |
| active). |
| |
| This call may make a large number of changes to modem configuration |
| based on properties passed in. For example, given a PIN-locked, |
| disabled GSM/UMTS modem, this call may unlock the SIM PIN, alter the |
| access technology preference, wait for network registration (or force |
| registration to a specific provider), create a new packet data bearer |
| using the given "apn", and connect that bearer. |
| |
| @param properties: See the ModemManager Reference Manual for the allowed |
| key/value pairs in properties. |
| @param return_cb: The callback to execute to send an asynchronous |
| response for the initial Connect request. |
| @param raise_cb: The callback to execute to send an asynchronous error |
| in response to the initial Connect request. |
| @returns: On successfult connect, returns the object path of the connected |
| packet data bearer used for the connection attempt. The value |
| is returned asynchronously via return_cb. |
| |
| """ |
| raise NotImplementedError() |
| |
| |
| # Remember to decorate your concrete implementation with |
| # @utils.log_dbus_method(return_cb_arg='return_cb', raise_cb_arg='raise_cb') |
| @dbus.service.method(mm1_constants.I_MODEM_SIMPLE, in_signature='o', |
| async_callbacks=('return_cb', 'raise_cb')) |
| def Disconnect(self, bearer, return_cb, raise_cb, *return_cb_args): |
| """ |
| Disconnect an active packet data connection. |
| |
| @param bearer: The object path of the data bearer to disconnect. If the |
| path is "/" (i.e. no object given) this method will disconnect |
| all active packet data bearers. |
| @param return_cb: The callback to execute to send an asynchronous |
| response for the initial Disconnect request. |
| @param raise_cb: The callback to execute to send an asynchronous error |
| in response to the initial Disconnect request. |
| @param return_cb_args: Optional arguments which will be supplied to |
| return_cb. This allows control flow to be set when this method |
| is called from within the pseudo modem manager. |
| |
| """ |
| raise NotImplementedError() |
| |
| |
| # Remember to decorate your concrete implementation with |
| # @utils.log_dbus_method() |
| @dbus.service.method(mm1_constants.I_MODEM_SIMPLE, out_signature='a{sv}') |
| def GetStatus(self): |
| """ |
| Gets the general modem status. |
| |
| @returns: Dictionary of properties. See the ModemManager Reference Manual |
| for the predefined common properties. |
| |
| """ |
| raise NotImplementedError() |