# 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()