jam-cloud/app/assets/javascripts/fakeJamClient.js

101 lines
6.6 KiB
JavaScript
Raw Normal View History

(function(context,$) {
"use strict";
context.JK = context.JK || {};
context.JK.FakeJamClient = function(app) {
var logger = context.JK.logger;
logger.info("*** Fake JamClient instance initialized. ***");
var ftue = false;
function dbg(msg) { logger.debug('FakeJamClient: ' + msg); }
// Bummer that javascript doesn't have much in the way of reflection.
// arguments.callee.name would probably do what we want, but it's deprecated
// and not allowed when using "strict"
// (Wishing I could write a single function which debug logs the name of the
// current function and a JSON stringify of the arguments).
function GetFTUE() { return ftue; }
function SetFTUE(b) { ftue = b; }
function GetOS() { return 100000000; }
function LatencyUpdated(map) { dbg('LatencyUpdated:' + JSON.stringify(map)); }
function LeaveSession(map) { dbg('LeaveSession:' + JSON.stringify(map)); }
function P2PMessageReceived(s1,s2) { dbg('P2PMessageReceived:' + s1 + ',' + s2); }
function JoinSession(sessionId) {dbg('JoinSession:' + sessionId);}
function ParticipantLeft(session, participant) {
dbg('ParticipantLeft:' + JSON.stringify(session) + ',' +
JSON.stringify(participant));
}
function ParticipantJoined(session, participant) {
dbg('ParticipantJoined:' + JSON.stringify(session) + ',' +
JSON.stringify(participant));
}
function RecordTestBegin() { dbg('RecordTestBegin'); }
function RecordTestEnd() { dbg('RecordTestBegin'); }
function RecordTestPlayback() { dbg('RecordTestBegin'); }
function SendP2PMessage(s1,s2) { dbg('SendP2PMessage:' + s1 + ',' + s2); }
function SetASIOEnabled(i1, i2, i3, i4, i5, i6) {
dbg('SetASIOEnabled(' + i1 + ',' + i2 + ',' + i3 + ',' + i4 + ',' + i5 + ',' + i6 + ')');
}
function SignalLatencyUpdated(client) {
dbg('SignalLatencyUpdated:' + JSON.stringify(client));
}
function SignalSendP2PMessage(s1,ba) {
dbg('SignalSendP2PMessage:' + JSON.stringify(arguments));
}
function StartPlayTest(s) { dbg('StartPlayTest' + JSON.stringify(arguments)); }
function StartRecordTest(s) { dbg('StartRecordTest' + JSON.stringify(arguments)); }
function StartRecording(map) { dbg('StartRecording' + JSON.stringify(arguments)); }
function StopPlayTest() { dbg('StopPlayTest'); }
function StopRecording(map) { dbg('StopRecording' + JSON.stringify(arguments)); }
function TestASIOLatency(s) { dbg('TestASIOLatency' + JSON.stringify(arguments)); }
function TestLatency(clientID, callbackFunctionName) {
logger.debug("Fake JamClient: TestLatency called with client, " + clientID + " and callback function name: " + callbackFunctionName);
var response = {
clientID: clientID,
latency: 50
};
var js = callbackFunctionName + "(" + JSON.stringify(response) + ");";
eval(js);
}
function GetASIODevices() {
var response =[{"device_id":0,"device_name":"Realtek High Definition Audio","interfaces":[{"interface_id":0,"interface_name":"Realtek HDA SPDIF Out","pins":[{"is_input":false,"pin_id":0,"pin_name":"PC Speaker"}]},{"interface_id":1,"interface_name":"Realtek HD Audio rear output","pins":[{"is_input":false,"pin_id":0,"pin_name":"PC Speaker"}]},{"interface_id":2,"interface_name":"Realtek HD Audio Mic input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]},{"interface_id":3,"interface_name":"Realtek HD Audio Line input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]},{"interface_id":4,"interface_name":"Realtek HD Digital input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"}]},{"interface_id":5,"interface_name":"Realtek HD Audio Stereo input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]}],"wavert_supported":false},{"device_id":1,"device_name":"M-Audio FW Audiophile","interfaces":[{"interface_id":0,"interface_name":"FW AP Multi","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":1,"interface_name":"FW AP 1/2","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":2,"interface_name":"FW AP SPDIF","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":3,"interface_name":"FW AP 3/4","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"}]}],"wavert_supported":false},{"device_id":2,"device_name":"Virtual Audio Cable","interfaces":[{"interface_id":0,"interface_name":"Virtual Cable 2","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"},{"is_input":false,"pin_id":1,"pin_name":"Output"}]},{"interface_id":1,"interface_name":"Virtual Cable 1","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"},{"is_input":false,"pin_id":1,"pin_name":"Output"}]}],"wavert_supported":false},{"device_id":3,"device_name":"WebCamDV WDM Audio Capture","interfaces":[{"interface_id":0,"interface_name":"WebCamDV Audio","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"},{"is_input":false,"pin_id":1,"pin_name":"Volume Control"}]}],"wavert_supported":false}];
return response;
}
// Javascript Bridge seems to camel-case
// Set the instance functions:
this.GetASIODevices = GetASIODevices;
this.GetFTUE = GetFTUE;
this.GetOS = GetOS;
this.JoinSession = JoinSession;
this.LatencyUpdated = LatencyUpdated;
this.LeaveSession = LeaveSession;
this.P2PMessageReceived = P2PMessageReceived;
this.ParticipantJoined = ParticipantJoined;
this.ParticipantLeft = ParticipantLeft;
this.RecordTestBegin = RecordTestBegin;
this.RecordTestEnd = RecordTestEnd;
this.RecordTestPlayback = RecordTestPlayback;
this.SendP2PMessage = SendP2PMessage;
this.SetASIOEnabled = SetASIOEnabled;
this.SetFTUE = SetFTUE;
this.SignalLatencyUpdated = SignalLatencyUpdated;
this.SignalSendP2PMessage = SignalSendP2PMessage;
this.StartPlayTest = StartPlayTest;
this.StartRecordTest = StartRecordTest;
this.StartRecording = StartRecording;
this.StopPlayTest = StopPlayTest;
this.StopRecording = StopRecording;
this.TestASIOLatency = TestASIOLatency;
this.TestLatency = TestLatency;
this.connected = true;
};
})(window,jQuery);