base_station_interface.py revision a31bfb233915b16aa9cb0f85cc41b3926055dd64
1# Copyright (c) 2011 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"""Base class interface for base station emulators."""
6
7# This is essentially all documentation; no code (other than raise
8# NotImplementedError()) should go here."""
9
10import air_state_verifier
11import cellular
12
13
14class BaseStationInterface(object):
15    """A generic base station emulator."""
16    def Start(self):
17        raise NotImplementedError()
18
19    def Stop(self):
20        raise NotImplementedError()
21
22    def GetAirStateVerifier(self):
23        return air_state_verifier.AirStateVerifierPermissive(self)
24
25    def SetBsIpV4(self, ip1, ip2):
26        """Sets base station IPv4 addresses."""
27        raise NotImplementedError()
28
29    def SetBsNetmaskV4(self, netmask):
30        """Sets base station netmask."""
31        raise NotImplementedError()
32
33    def SetFrequencyBand(self, band):
34        """Sets the frequency used by the BS.  BS must be stopped.
35
36        Arguments:
37            band: A band number, from the UMTS bands summarized at
38                  http://en.wikipedia.org/wiki/UMTS_frequency_bands
39                  Use band 5 for 800MHz C2k/EV-DO,  2 for 1900MHz C2k/EV-DO
40        """
41        raise NotImplementedError()
42
43    def SetPlmn(self, mcc, mnc):
44        """Sets the mobile country and network codes.  BS must be stopped."""
45        raise NotImplementedError()
46
47    def SetPower(self, dbm):
48        """Sets the output power of the base station.
49
50        Arguments:
51            dbm: Power, in dBm.  See class Power for useful constants.
52        """
53        raise NotImplementedError()
54
55    def SetUeDnsV4(self, dns1, dns2):
56        """Set the DNS values provided to the UE.  Emulator must be stopped.
57        """
58        raise NotImplementedError()
59
60    def SetUeIpV4(self, ip1, ip2=None):
61        """Set the IP addresses provided to the UE.  Emulator must be stopped.
62
63        Arguments:
64            ip1: IP address, as a dotted-quad string.
65            ip2: Secondary IP address.  Not set if not supplied.
66        """
67        raise NotImplementedError()
68
69    def GetUeDataStatus(self):
70        """Gets the data call status of the UE."""
71        raise NotImplementedError()
72
73    def PrepareForStatusChange(self):
74        """Prepare for a future call to WaitForStatusChange.
75
76        There's a race in WaitForStatusChange; if we tell the modem to
77        connect, it might connect before we get around to calling
78        PrepareForStatusChange.
79
80        As a special case for 8960, this tells the instrument to make the
81        next GetUeStatus call block on a status change.
82        """
83        raise NotImplementedError()
84
85    def WaitForStatusChange(self,
86                            interested=None,
87                            timeout=cellular.DEFAULT_TIMEOUT):
88        """When UE status changes (to a value in interested), return the value.
89
90        Arguments:
91            interested: if non-None, only transitions to these states will
92                        cause a return
93            timeout: in seconds.
94        """
95        raise NotImplementedError()
96
97    def WaitForSmsReceive(self,
98                          timeout=cellular.DEFAULT_TIMEOUT):
99        """Return received SMS is received from the UE.
100
101        Arguments:
102            timeout: in seconds.
103        """
104        raise NotImplementedError()
105
106    def SendSms(self,
107                message,
108                o_address=cellular.SmsAddress('8960'),
109                dcs=0xf0):
110        """Sends the supplied SMS message."""
111        raise NotImplementedError()
112
113