diff --git a/app.js b/app.js index 4a86b546a..d03821af2 100644 --- a/app.js +++ b/app.js @@ -15,6 +15,7 @@ var APP = this.keyboardshortcut = require("./modules/keyboardshortcut/keyboardshortcut"); this.translation = require("./modules/translation/translation"); this.settings = require("./modules/settings/Settings"); + this.DTMF = require("./modules/DTMF/DTMF"); } }; diff --git a/modules/DTMF/DTMF.js b/modules/DTMF/DTMF.js new file mode 100644 index 000000000..4ec40c076 --- /dev/null +++ b/modules/DTMF/DTMF.js @@ -0,0 +1,44 @@ +/* global APP */ + +/** + * A module for sending DTMF tones. + */ +var DTMFSender; +var initDtmfSender = function() { + // TODO: This needs to reset this if the peerconnection changes + // (e.g. the call is re-made) + if (DTMFSender) + return; + + var localAudio = APP.RTC.localAudio; + if (localAudio && localAudio.getTracks().length > 0) + { + var peerconnection = + APP.xmpp.getConnection().jingle.activecall.peerconnection.peerconnection; + if (peerconnection) { + DTMFSender = + peerconnection.createDTMFSender(localAudio.getTracks()[0]); + console.log("Initialized DTMFSender"); + } + else { + console.log("Failed to initialize DTMFSender: no PeerConnection."); + } + } + else { + console.log("Failed to initialize DTMFSender: no audio track."); + } +}; + +var DTMF = { + sendTones: function (tones) { + if (!DTMFSender) + initDtmfSender(); + + if (DTMFSender){ + DTMFSender.insertDTMF(tones); + } + } +}; + +module.exports = DTMF; + diff --git a/modules/xmpp/xmpp.js b/modules/xmpp/xmpp.js index b051fa92b..af6bbbf56 100644 --- a/modules/xmpp/xmpp.js +++ b/modules/xmpp/xmpp.js @@ -142,6 +142,7 @@ function setupEvents() { } var XMPP = { + getConnection: function(){ return connection; }, sessionTerminated: false, /**