You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.5 KiB
113 lines
3.5 KiB
# Copyright (c) 2011 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.
|
|
|
|
"""Base class interface for base station emulators."""
|
|
|
|
# This is essentially all documentation; no code (other than raise
|
|
# NotImplementedError()) should go here."""
|
|
|
|
import air_state_verifier
|
|
import cellular
|
|
|
|
|
|
class BaseStationInterface(object):
|
|
"""A generic base station emulator."""
|
|
def Start(self):
|
|
raise NotImplementedError()
|
|
|
|
def Stop(self):
|
|
raise NotImplementedError()
|
|
|
|
def GetAirStateVerifier(self):
|
|
return air_state_verifier.AirStateVerifierPermissive(self)
|
|
|
|
def SetBsIpV4(self, ip1, ip2):
|
|
"""Sets base station IPv4 addresses."""
|
|
raise NotImplementedError()
|
|
|
|
def SetBsNetmaskV4(self, netmask):
|
|
"""Sets base station netmask."""
|
|
raise NotImplementedError()
|
|
|
|
def SetFrequencyBand(self, band):
|
|
"""Sets the frequency used by the BS. BS must be stopped.
|
|
|
|
Arguments:
|
|
band: A band number, from the UMTS bands summarized at
|
|
http://en.wikipedia.org/wiki/UMTS_frequency_bands
|
|
Use band 5 for 800MHz C2k/EV-DO, 2 for 1900MHz C2k/EV-DO
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
def SetPlmn(self, mcc, mnc):
|
|
"""Sets the mobile country and network codes. BS must be stopped."""
|
|
raise NotImplementedError()
|
|
|
|
def SetPower(self, dbm):
|
|
"""Sets the output power of the base station.
|
|
|
|
Arguments:
|
|
dbm: Power, in dBm. See class Power for useful constants.
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
def SetUeDnsV4(self, dns1, dns2):
|
|
"""Set the DNS values provided to the UE. Emulator must be stopped.
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
def SetUeIpV4(self, ip1, ip2=None):
|
|
"""Set the IP addresses provided to the UE. Emulator must be stopped.
|
|
|
|
Arguments:
|
|
ip1: IP address, as a dotted-quad string.
|
|
ip2: Secondary IP address. Not set if not supplied.
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
def GetUeDataStatus(self):
|
|
"""Gets the data call status of the UE."""
|
|
raise NotImplementedError()
|
|
|
|
def PrepareForStatusChange(self):
|
|
"""Prepare for a future call to WaitForStatusChange.
|
|
|
|
There's a race in WaitForStatusChange; if we tell the modem to
|
|
connect, it might connect before we get around to calling
|
|
PrepareForStatusChange.
|
|
|
|
As a special case for 8960, this tells the instrument to make the
|
|
next GetUeStatus call block on a status change.
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
def WaitForStatusChange(self,
|
|
interested=None,
|
|
timeout=cellular.DEFAULT_TIMEOUT):
|
|
"""When UE status changes (to a value in interested), return the value.
|
|
|
|
Arguments:
|
|
interested: if non-None, only transitions to these states will
|
|
cause a return
|
|
timeout: in seconds.
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
def WaitForSmsReceive(self,
|
|
timeout=cellular.DEFAULT_TIMEOUT):
|
|
"""Return received SMS is received from the UE.
|
|
|
|
Arguments:
|
|
timeout: in seconds.
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
def SendSms(self,
|
|
message,
|
|
o_address=cellular.SmsAddress('8960'),
|
|
dcs=0xf0):
|
|
"""Sends the supplied SMS message."""
|
|
raise NotImplementedError()
|
|
|