Source code for bt_manager.headset

from __future__ import unicode_literals

from audio import BTAudio
from device import BTGenericDevice


[docs]class BTHeadset(BTAudio): """Wrapper around Dbus to encapsulate the BT headset entity""" SIGNAL_ANSWER_REQUESTED = 'AnswerRequested' SIGNAL_SPEAKER_GAIN_CHANGED = 'SpeakerGainChanged' SIGNAL_MICROPHONE_GAIN_CHANGED = 'MicrophoneGainChanged' def __init__(self, *args, **kwargs): BTGenericDevice.__init__(self, addr='org.bluez.Headset', *args, **kwargs) self._register_signal_name(BTHeadset.SIGNAL_ANSWER_REQUESTED) self._register_signal_name(BTHeadset.SIGNAL_SPEAKER_GAIN_CHANGED) self._register_signal_name(BTHeadset.SIGNAL_MICROPHONE_GAIN_CHANGED) def is_connected(self): return self._interface.IsConnected()
[docs] def indicate_call(self): """Indicate an incoming call on the headset connected to the stream. Will continue to ring the headset about every 3 seconds.""" return self._interface.IndicateCall()
[docs] def cancel_call(self): """Cancel the incoming call indication""" return self._interface.CancelCall()
[docs] def play(self): """Open the audio connection to the headset""" return self._interface.Play()
[docs] def stop(self): """Close the audio connection""" return self._interface.Stop()
[docs]class BTHeadsetGateway(BTAudio): """Wrapper around Dbus to encapsulate the BT headset gateway entity""" SIGNAL_RING = 'Ring' SIGNAL_CALL_TERMINATED = 'CallTerminated' SIGNAL_CALL_STARTED = 'CallStarted' SIGNAL_CALL_ENDED = 'CallEnded' def __init__(self, *args, **kwargs): BTGenericDevice.__init__(self, addr='org.bluez.Headset', *args, **kwargs) self._register_signal_name(BTHeadsetGateway.SIGNAL_RING) self._register_signal_name(BTHeadsetGateway.SIGNAL_CALL_TERMINATED) self._register_signal_name(BTHeadsetGateway.SIGNAL_CALL_STARTED) self._register_signal_name(BTHeadsetGateway.SIGNAL_CALL_ENDED)
[docs] def answer_call(self): """It has to called only after Ring signal received.""" return self._interface.AnswerCall()
[docs] def terminate_call(self): """Terminate call which is running or reject an incoming call. This has nothing with any 3-way situation incl. RaH. Just plain old PDH.""" return self._interface.TerminateCall()
[docs] def call(self, dial_number): """Dial a number. No number processing is done thus if AG would reject to dial it don't blame me""" return self._interface.Call(dial_number)
[docs] def get_operator_name(self): """Find out the name of the currently selected network operator by AG.""" return self._interface.GetOperatorName()
[docs] def send_dtmf(self, digits): """Will send each digit in the 'digits' sequentially. Would send nothing if there is non-DTMF digit.""" return self._interface.SendDTMF(digits)
[docs] def get_subscriber_number(self): """Get the voicecall subscriber number of AG""" return self._interface.GetSubscriberNumber()