Rev 1953 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed
var Xbmc_Socket_Id = null;var Xbmc_Susbscribers = [];var Xbmc_Sessions = {};function Xbmc_SendCommand(command_name, params, callback){var new_id = 1;if (!Xbmc_IsConnected()){return false;}while (Xbmc_Sessions[new_id]){new_id++;}Xbmc_Sessions[new_id] = callback;var command = { "jsonrpc" : "2.0", "method": command_name, "params" : params, "id" : new_id };Socket_Send(Xbmc_Socket_Id, JSON.stringify(command));return new_id;}function Xbmc_SubscribeToConnectionStatus(callback){Xbmc_Susbscribers.push(callback);}function Xbmc_IsConnected(){return Xbmc_Socket_Id != null;}function Xbmc_Connect(host, port){if (Xbmc_IsConnected()){Xbmc_Disconnect();}Log("Connecting to XBMC at " + host + ":" + port + "...");Xbmc_Socket_Id = Socket_Connect(host, port, function(socket_id, data){var json_data_list = parse_json_rpc(data)for (var n = 0; n < json_data_list.length; n++){var json_data = json_data_list[n];if (json_data.id){if (Xbmc_Sessions[json_data.id]){if (json_data.result){Xbmc_Sessions[json_data.id]("command_success", socket_id, null, json_data.result);}else{Xbmc_Sessions[json_data.id]("command_error", socket_id, null, json_data.error);}delete Xbmc_Sessions[json_data.id];}}else{for (var n = 0; n < Xbmc_Susbscribers.length; n++){Xbmc_Susbscribers[n]("notification", socket_id, json_data.method, json_data.params);}}}}, function(socket_id, state){if (state == 0) // Connected{Log("Got connect on socket id " + socket_id);for (var n = 0; n < Xbmc_Susbscribers.length; n++){Xbmc_Susbscribers[n]("connected", socket_id);}}else if (state == 1) // Disconnected{Log("Got disconnect on socket id " + socket_id);if (socket_id == Xbmc_Socket_Id){Xbmc_Socket_Id = null;}for (var n = 0; n < Mbb_Susbscribers.length; n++){Xbmc_Susbscribers[n]("disconnected", socket_id);}}});if (Xbmc_Socket_Id != 0){Log("Connected to XBMC at " + host + ":" + port + " successfully!");return true;}Log("Failed to connect to XBMC at " + host + ":" + port + "!");Xbmc_Socket_Id = null;return false;}Console_RegisterCommand(Xbmc_Connect);function Xbmc_Disconnect(){if (Xbmc_IsConnected()){Socket_Disconnect(Xbmc_Socket_Id);}return true;}Console_RegisterCommand(Xbmc_Disconnect);function Xbmc_Right(){return Xbmc_SendCommand("Input.Right", {});}Console_RegisterCommand(Xbmc_Right);function Xbmc_Left(){return Xbmc_SendCommand("Input.Left", {});}Console_RegisterCommand(Xbmc_Left);function Xbmc_Up(){return Xbmc_SendCommand("Input.Up", {});}Console_RegisterCommand(Xbmc_Up);function Xbmc_Down(){return Xbmc_SendCommand("Input.Down", {});}Console_RegisterCommand(Xbmc_Down);function Xbmc_Select(){return Xbmc_SendCommand("Input.Select", {});}Console_RegisterCommand(Xbmc_Select);function Xbmc_Back(){return Xbmc_SendCommand("Input.Back", {});}Console_RegisterCommand(Xbmc_Back);function Xbmc_PlayPause(){//Xbmc_SendCommand("Player.GetActivePlayers", {});return Xbmc_SendCommand("Player.PlayPause", { "playerid" : 1 });}Console_RegisterCommand(Xbmc_PlayPause);function Xbmc_Stop(){return Xbmc_SendCommand("Player.Stop", { "playerid" : 1 });}Console_RegisterCommand(Xbmc_Stop);