Browse Source

Switched to sox to generate phone sounds

pull/1/head
klonfish 10 years ago
parent
commit
ccf39f69f5
  1. 50
      phoneinterface.py

50
phoneinterface.py

@ -1,12 +1,7 @@ @@ -1,12 +1,7 @@
import linphone
import time
import threading
DIAL_TONE_FILE = 'freizeichen.wav'
DIAL_TONE_LEN = 5
BUSY_TONE_FILE = 'besetztzeichen.wav'
BUSY_TONE_LEN = 0.96
RINGBACK_TONE = 'weckzeichen.wav'
import subprocess
class PhoneEvent(object):
RegInProgress,\
@ -37,9 +32,11 @@ class PhoneInterface(object): @@ -37,9 +32,11 @@ class PhoneInterface(object):
self.__core = linphone.Core.new(cbs, config, roconfig)
self.__audioproc = None
# Set default parameters overriding the ones from the given config file
self.__core.set_user_agent('FeTAp 615', '0.1')
self.__core.ringback = RINGBACK_TONE
self.__core.ringback = ''
self.__core.max_calls = 1
self.__core.set_call_error_tone(linphone.Reason.Busy, '')
self.__core.disable_chat(linphone.Reason.None)
@ -122,34 +119,27 @@ class PhoneInterface(object): @@ -122,34 +119,27 @@ class PhoneInterface(object):
def end_call(self):
self.__core.terminate_call(self.__core.current_call)
def __play_loop_thread(self, filename, length, continous):
self.__core.play_local(filename)
# Start replay of file 500ms before the old playing will end
# to get more or less continous play
i = 50 if continous else 0
while self.__playing and self.__running:
# TODO: Schoener?
if i == length * 100:
self.__core.play_local(filename)
i = 0
time.sleep(0.01)
i += 1
self.__core.stop_ringing()
def __play_file(self, filename, length, continous=False):
print 'Playing file:', filename
self.__playing = True
t = threading.Thread(target=self.__play_loop_thread, args=(filename, length, continous))
t.start()
def play_dial_tone(self):
self.__play_file(DIAL_TONE_FILE, DIAL_TONE_LEN, True)
self.stop_playing()
self.__audioproc = subprocess.Popen(['play', '-nq', 'synth', 'sine', '425'],
env = {'AUDIODRIVER': 'alsa',
'AUDIODEV': 'default:CARD=Device'})
def play_ringback_tone(self):
self.stop_playing()
self.__audioproc = subprocess.Popen(['play', '-nq', 'synth', '1', 'sine', '425', 'pad', '4@1', 'repeat', '1000'],
env = {'AUDIODRIVER': 'alsa',
'AUDIODEV': 'default:CARD=Device'})
def play_busy_tone(self):
self.__play_file(BUSY_TONE_FILE, BUSY_TONE_LEN)
self.stop_playing()
self.__audioproc = subprocess.Popen(['play', '-nq', 'synth', '0.48', 'sine', '425', 'pad', '0.48@0.48', 'repeat', '1000'],
env = {'AUDIODRIVER': 'alsa',
'AUDIODEV': 'default:CARD=Device'})
def stop_playing(self):
self.__playing = False
if self.__audioproc is not None:
self.__audioproc.terminate()
if __name__ == '__main__':
def event_cb(evt):

Loading…
Cancel
Save