diff --git a/src/js/.jshintrc b/src/js/.jshintrc new file mode 100644 index 0000000000000000000000000000000000000000..d5c913b41016e6f0e908057425263200e894b9e2 --- /dev/null +++ b/src/js/.jshintrc @@ -0,0 +1,22 @@ +{ + "browser": true, + + "indent": 4, + "eqeqeq": true, + "undef": true, + "curly": true, + "eqnull": true, + "noarg": true, + "bitwise": true, + "forin": true, + "newcap": true, + + "unused": "vars", + "quotmark": "double", + + "globals": { + "Pebble": false, + "toString": false, + "console": false + } +} diff --git a/src/js/pebble-js-app.js b/src/js/pebble-js-app.js index 95048b00852297c3e6775a6d80d487a61492d04f..49fc184b34d3efb2ef5bb93d0f46d79b2f3ba03d 100644 --- a/src/js/pebble-js-app.js +++ b/src/js/pebble-js-app.js @@ -21,13 +21,135 @@ // MessageQueue implementation is copyright (c) 2014 by Matthew Tole, https://github.com/smallstoneapps/js-message-queue // Distributed under the MIT license, see above. Many thanks Matthew! // -var MessageQueue=function(){var RETRY_MAX=5;var queue=[];var sending=false;var timer=null;return{reset:reset,sendAppMessage:sendAppMessage,size:size};function reset(){queue=[];sending=false}function sendAppMessage(message,ack,nack){if(!isValidMessage(message)){return false}queue.push({message:message,ack:ack||null,nack:nack||null,attempts:0});setTimeout(function(){sendNextMessage()},1);return true}function size(){return queue.length}function isValidMessage(message){if(message!==Object(message)){return false}var keys=Object.keys(message);if(!keys.length){return false}for(var k=0;k<keys.length;k+=1){var validKey=/^[0-9a-zA-Z-_]*$/.test(keys[k]);if(!validKey){return false}var value=message[keys[k]];if(!validValue(value)){return false}}return true;function validValue(value){switch(typeof value){case"string":return true;case"number":return true;case"object":if(toString.call(value)=="[object Array]"){return true}}return false}}function sendNextMessage(){if(sending){return}var message=queue.shift();if(!message){return}message.attempts+=1;sending=true;Pebble.sendAppMessage(message.message,ack,nack);timer=setTimeout(function(){timeout()},1e3);function ack(){clearTimeout(timer);setTimeout(function(){sending=false;sendNextMessage()},200);if(message.ack){message.ack.apply(null,arguments)}}function nack(){clearTimeout(timer);if(message.attempts<RETRY_MAX){queue.unshift(message);setTimeout(function(){sending=false;sendNextMessage()},200*message.attempts)}else{if(message.nack){message.nack.apply(null,arguments)}}}function timeout(){setTimeout(function(){sending=false;sendNextMessage()},1e3);if(message.ack){message.ack.apply(null,arguments)}}}}(); +var MessageQueue = function () { + var RETRY_MAX = 5; + var queue = []; + var sending = false; + var timer = null; + return { + reset: reset, + sendAppMessage: sendAppMessage, + size: size + }; + + function reset() { + queue = []; + sending = false; + } + + function sendAppMessage(message, ack, nack) { + if (!isValidMessage(message)) { + return false; + } + queue.push({ + message: message, + ack: ack || null, + nack: nack || null, + attempts: 0 + }); + setTimeout(function () { + sendNextMessage(); + }, 1); + return true; + } + + function size() { + return queue.length; + } + + function isValidMessage(message) { + if (message !== Object(message)) { + return false; + } + var keys = Object.keys(message); + if (!keys.length) { + return false; + } + for (var k = 0; k < keys.length; k += 1) { + var validKey = /^[0-9a-zA-Z-_]*$/.test(keys[k]); + if (!validKey) { + return false; + } + var value = message[keys[k]]; + if (!validValue(value)) { + return false; + } + } + return true; + + function validValue(value) { + switch (typeof value) { + case "string": + return true; + case "number": + return true; + case "object": + if (toString.call(value) === "[object Array]") { + return true; + } + } + return false; + } + } + + function sendNextMessage() { + if (sending) { + return; + } + var message = queue.shift(); + if (!message) { + return; + } + message.attempts += 1; + sending = true; + Pebble.sendAppMessage(message.message, ack, nack); + timer = setTimeout(function () { + timeout(); + }, 1e3); + + function ack() { + clearTimeout(timer); + setTimeout(function () { + sending = false; + sendNextMessage(); + }, 200); + if (message.ack) { + message.ack.apply(null, arguments); + } + } + + function nack() { + clearTimeout(timer); + if (message.attempts < RETRY_MAX) { + queue.unshift(message); + setTimeout(function () { + sending = false; + sendNextMessage(); + }, 200 * message.attempts); + } else { + if (message.nack) { + message.nack.apply(null, arguments); + } + } + } + + function timeout() { + setTimeout(function () { + sending = false; + sendNextMessage(); + }, 1e3); + if (message.ack) { + message.ack.apply(null, arguments); + } + } + } +}(); // global variables var storage_keys = { - "IP_ADDRESS": 0, - "USERNAME": 1, - "PASSWORD": 2 + "IP_ADDRESS": 0, + "USERNAME": 1, + "PASSWORD": 2 }; var ISDEBUG = false; var g_ip_address = ""; @@ -40,311 +162,481 @@ var g_muted; var g_play_state; var JsonRpcRequest = function (method, params) { - this.jsonrpc = "2.0"; - this.id = 1; - this.method = method; - this.params = params; + this.jsonrpc = "2.0"; + this.id = 1; + this.method = method; + this.params = params; }; function sendJsonRequest(requests, callback) { - var username = null; - var password = null; - var response = null; - - var req = new XMLHttpRequest(); - req.onreadystatechange = function(e) { - if (req.readyState == 4) { - if (req.status == 200) { - if (ISDEBUG) console.log("Response text: "+req.responseText); - response = JSON.parse(req.responseText); - if (response.result == null) { - handleJsonRpcError(response); - } else if (callback != null) { - callback(response.result); + var username = null; + var password = null; + var response = null; + + var req = new XMLHttpRequest(); + req.onreadystatechange = function (e) { + if (req.readyState === 4) { + if (req.status === 200) { + if (ISDEBUG) { + console.log("Response text: " + req.responseText); + } + response = JSON.parse(req.responseText); + if (response.result === null) { + handleJsonRpcError(response); + } else if (callback !== null) { + callback(response.result); + } + } else { + if (req.status !== 0) { + console.log("Error connecting [" + req.status + "]: " + req.statusText); + Pebble.showSimpleNotificationOnPebble("Could not connect [" + req.status + "]", "Please check your Rockodi settings in the Pebble app."); + } + } } - } else { - if (req.status !== 0) { - console.log("Error connecting ["+req.status+"]: "+req.statusText); - Pebble.showSimpleNotificationOnPebble("Could not connect ["+req.status+"]", "Please check your Rockodi settings in the Pebble app."); + }; + if (g_username !== "") { + username = g_username; + if (g_password !== "") { + password = g_password; } - } } - }; - if (g_username !== "") { - username = g_username; - if (g_password !== "") { - password = g_password; + var url_string = "http://" + g_ip_address + "/jsonrpc?request="; + req.open("GET", url_string + encodeURI(JSON.stringify(requests)), true, username, password); + req.timeout = 4000; + req.send(null); + if (ISDEBUG) { + console.log("Sent request: " + url_string + encodeURI(JSON.stringify(requests))); } - } - var url_string = "http://"+g_ip_address+"/jsonrpc?request="; - req.open('GET', url_string+encodeURI(JSON.stringify(requests)), true, username, password); - req.timeout = 4000; - req.send(null); - if (ISDEBUG) console.log("Sent request: "+url_string+encodeURI(JSON.stringify(requests))); } function handleJsonRpcError(response) { - var err_msg = "Unknown error"; - if (response.constructor === Array) { - for (var i=0;i<response.length;i++) { - if (response[i].result == null) { - if (response[i].error!= null) {err_msg = response[i].error.message;} - console.log("Kodi responded with an error: "+err_msg); - } - } - } else { - if (response.result == null) { - if (response.error!= null) {err_msg = response.error.message;} - console.log("Kodi responded with an error: "+err_msg); + var err_msg = "Unknown error"; + if (response.constructor === Array) { + for (var i = 0; i < response.length; i++) { + if (response[i].result === null) { + if (response[i].error !== null) { + err_msg = response[i].error.message; + } + console.log("Kodi responded with an error: " + err_msg); + } + } + } else { + if (response.result === null) { + if (response.error !== null) { + err_msg = response.error.message; + } + console.log("Kodi responded with an error: " + err_msg); + } } - } } // player methods function getStatus() { - g_player_id = -1; - sendJsonRequest(new JsonRpcRequest("Application.GetProperties", {"properties":["volume", "muted"]}), getAppPropertiesCb); - sendJsonRequest(new JsonRpcRequest("Player.GetActivePlayers", {}), getActivePlayersCb); + g_player_id = -1; + sendJsonRequest(new JsonRpcRequest("Application.GetProperties", { + "properties": ["volume", "muted"] + }), getAppPropertiesCb); + sendJsonRequest(new JsonRpcRequest("Player.GetActivePlayers", {}), getActivePlayersCb); } + function getAppPropertiesCb(result) { - g_volume = result.volume; - g_muted = (result.muted) ? 1 : 0; - MessageQueue.sendAppMessage({"MSG_KEY_VOLUME": g_volume, "MSG_KEY_MUTED": g_muted}); + g_volume = result.volume; + g_muted = (result.muted) ? 1 : 0; + MessageQueue.sendAppMessage({ + "MSG_KEY_VOLUME": g_volume, + "MSG_KEY_MUTED": g_muted + }); } + function getActivePlayersCb(result) { - g_player_id = -1; - for (var i=0; i<result.length; i++) { - var player = result[i]; - g_player_type = player.type; - if (g_player_type == "audio" || g_player_type == "video") { - g_player_id = player.playerid; - break; + g_player_id = -1; + for (var i = 0; i < result.length; i++) { + var player = result[i]; + g_player_type = player.type; + if (g_player_type === "audio" || g_player_type === "video") { + g_player_id = player.playerid; + break; + } + } + if (g_player_id >= 0) { + sendJsonRequest(new JsonRpcRequest("Player.GetProperties", { + "playerid": g_player_id, + "properties": ["speed"] + }), getPlayerPropertiesCb); + sendJsonRequest(new JsonRpcRequest("Player.GetItem", { + "playerid": g_player_id, + "properties": ["title", "album", "artist", "director", "duration"] + }), getItemCb); + } else { + MessageQueue.sendAppMessage({ + "MSG_KEY_TITLE": "No player available", + "MSG_KEY_ARTIST": "" + }); } - } - if (g_player_id >= 0) { - sendJsonRequest(new JsonRpcRequest("Player.GetProperties", {"playerid": g_player_id, "properties": ["speed"]}), getPlayerPropertiesCb); - sendJsonRequest(new JsonRpcRequest("Player.GetItem", {"playerid": g_player_id, "properties": ["title","album","artist","director","duration"]}), getItemCb); - } else { - MessageQueue.sendAppMessage({"MSG_KEY_TITLE": "No player available", "MSG_KEY_ARTIST": ""}); - } } + function getPlayerPropertiesCb(result) { - g_play_state = (result.speed > 0) ? 1 : 0; - MessageQueue.sendAppMessage({"MSG_KEY_PLAY_STATE": g_play_state}); + g_play_state = (result.speed > 0) ? 1 : 0; + MessageQueue.sendAppMessage({ + "MSG_KEY_PLAY_STATE": g_play_state + }); } + function getItemCb(result) { - var title = (result.item.title === "") ? result.item.label : result.item.title; - var artist = ""; - if (result.item.type == "movie") { - artist = (result.item.director.length < 1) ? "" : result.item.director[0]; - } else { - artist = (result.item.artist.length < 1) ? "" : result.item.artist[0]; - } - MessageQueue.sendAppMessage({"MSG_KEY_TITLE":title,"MSG_KEY_ARTIST":artist}); + var title = (result.item.title === "") ? result.item.label : result.item.title; + var artist = ""; + if (result.item.type === "movie") { + artist = (result.item.director.length < 1) ? "" : result.item.director[0]; + } else { + artist = (result.item.artist.length < 1) ? "" : result.item.artist[0]; + } + MessageQueue.sendAppMessage({ + "MSG_KEY_TITLE": title, + "MSG_KEY_ARTIST": artist + }); } + function playPause() { - if (g_player_id >= 0) { - sendJsonRequest(new JsonRpcRequest("Player.PlayPause", {"playerid": g_player_id}), playPauseCb); - } + if (g_player_id >= 0) { + sendJsonRequest(new JsonRpcRequest("Player.PlayPause", { + "playerid": g_player_id + }), playPauseCb); + } } + function playPauseCb(result) { g_play_state = result.speed; - MessageQueue.sendAppMessage({"MSG_KEY_PLAY_STATE": g_play_state}); + MessageQueue.sendAppMessage({ + "MSG_KEY_PLAY_STATE": g_play_state + }); } + function raiseVolume() { - g_volume = (g_volume > 95) ? 100 : g_volume + 5; - sendJsonRequest(new JsonRpcRequest("Application.SetVolume", {"volume": g_volume}), setVolumeCb); + g_volume = (g_volume > 95) ? 100 : g_volume + 5; + sendJsonRequest(new JsonRpcRequest("Application.SetVolume", { + "volume": g_volume + }), setVolumeCb); } + function lowerVolume() { - g_volume = (g_volume < 5) ? 0 : g_volume - 5; - sendJsonRequest(new JsonRpcRequest("Application.SetVolume", {"volume": g_volume}), setVolumeCb); + g_volume = (g_volume < 5) ? 0 : g_volume - 5; + sendJsonRequest(new JsonRpcRequest("Application.SetVolume", { + "volume": g_volume + }), setVolumeCb); } -function setVolumeCb (result) { - g_volume = result; - MessageQueue.sendAppMessage({"MSG_KEY_VOLUME": g_volume}); + +function setVolumeCb(result) { + g_volume = result; + MessageQueue.sendAppMessage({ + "MSG_KEY_VOLUME": g_volume + }); } + function previous() { - if (g_player_id >= 0) { - sendJsonRequest(new JsonRpcRequest("Player.GoTo", {"playerid": g_player_id, "to": "previous"}), changeTransportCb); - } + if (g_player_id >= 0) { + sendJsonRequest(new JsonRpcRequest("Player.GoTo", { + "playerid": g_player_id, + "to": "previous" + }), changeTransportCb); + } } + function next() { - if (g_player_id >= 0) { - sendJsonRequest(new JsonRpcRequest("Player.GoTo", {"playerid": g_player_id, "to": "next"}), changeTransportCb); - } + if (g_player_id >= 0) { + sendJsonRequest(new JsonRpcRequest("Player.GoTo", { + "playerid": g_player_id, + "to": "next" + }), changeTransportCb); + } } + function stop() { - if (g_player_id >= 0) { - sendJsonRequest(new JsonRpcRequest("Player.Stop", {"playerid": g_player_id}), changeTransportCb); - } + if (g_player_id >= 0) { + sendJsonRequest(new JsonRpcRequest("Player.Stop", { + "playerid": g_player_id + }), changeTransportCb); + } } + function changeTransportCb(result) { - getStatus(); + getStatus(); } // Remote methods function sendKey(input_key) { - switch(input_key) { + switch (input_key) { case "KEY_UP": - sendJsonRequest(new JsonRpcRequest("Input.Up")); - break; + sendJsonRequest(new JsonRpcRequest("Input.Up")); + break; case "KEY_DOWN": - sendJsonRequest(new JsonRpcRequest("Input.Down")); - break; + sendJsonRequest(new JsonRpcRequest("Input.Down")); + break; case "KEY_SELECT": - sendJsonRequest(new JsonRpcRequest("Input.Select")); - break; + sendJsonRequest(new JsonRpcRequest("Input.Select")); + break; case "KEY_BACK": - sendJsonRequest(new JsonRpcRequest("Input.Back")); - break; + sendJsonRequest(new JsonRpcRequest("Input.Back")); + break; case "KEY_LEFT": - sendJsonRequest(new JsonRpcRequest("Input.Left")); - break; + sendJsonRequest(new JsonRpcRequest("Input.Left")); + break; case "KEY_RIGHT": - sendJsonRequest(new JsonRpcRequest("Input.Right")); - break; - } + sendJsonRequest(new JsonRpcRequest("Input.Right")); + break; + } } // Goto methods function gotoFullscreen() { - sendJsonRequest(new JsonRpcRequest("GUI.setFullScreen",{"fullscreen":true})); + sendJsonRequest(new JsonRpcRequest("GUI.setFullScreen", { + "fullscreen": true + })); } + function gotoInfo() { - sendJsonRequest(new JsonRpcRequest("Input.Info")); + sendJsonRequest(new JsonRpcRequest("Input.Info")); } + function gotoHome() { - sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow",{"window":"home"})); + sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow", { + "window": "home" + })); } + function gotoMusic() { - sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow",{"window":"music"})); + sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow", { + "window": "music" + })); } + function gotoVideo() { - sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow",{"window":"video"})); + sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow", { + "window": "video" + })); } + function gotoPictures() { - sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow",{"window":"pictures"})); + sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow", { + "window": "pictures" + })); } + function gotoWeather() { - sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow",{"window":"weather"})); + sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow", { + "window": "weather" + })); } // Playlist methods function getMusicPlaylists() { - sendJsonRequest(new JsonRpcRequest("Files.GetDirectory", {"directory":"special://musicplaylists","media":"files","properties":["title"],"limits":{"start":0,"end":10}}), getMusicPlaylistsCb); + sendJsonRequest(new JsonRpcRequest("Files.GetDirectory", { + "directory": "special://musicplaylists", + "media": "files", + "properties": ["title"], + "limits": { + "start": 0, + "end": 10 + } + }), getMusicPlaylistsCb); } + function getMusicPlaylistsCb(result) { - var dict = {}; - var key = 0; - var files = result.files; - for (var i=0;i<files.length;i++) { - var filename = files[i].file; - var label = files[i].label; - dict[key++] = filename + "|" + label; - } - MessageQueue.sendAppMessage(dict); + var dict = {}; + var key = 0; + var files = result.files; + for (var i = 0; i < files.length; i++) { + var filename = files[i].file; + var label = files[i].label; + dict[key++] = filename + "|" + label; + } + MessageQueue.sendAppMessage(dict); } + function playMusicPlaylist(payload) { - var filename = payload.MSG_KEY_CMD_DATA; - var requests = []; - requests.push(new JsonRpcRequest("PlayList.Clear", {"playlistid": 0})); - requests.push(new JsonRpcRequest("PlayList.Add", {"playlistid":0, "item":{"directory":filename,"recursive":true}})); - requests.push(new JsonRpcRequest("Player.Open", {"item":{"playlistid":0,"position":0}})); - sendJsonRequest(requests); + var filename = payload.MSG_KEY_CMD_DATA; + var requests = []; + requests.push(new JsonRpcRequest("PlayList.Clear", { + "playlistid": 0 + })); + requests.push(new JsonRpcRequest("PlayList.Add", { + "playlistid": 0, + "item": { + "directory": filename, + "recursive": true + } + })); + requests.push(new JsonRpcRequest("Player.Open", { + "item": { + "playlistid": 0, + "position": 0 + } + })); + sendJsonRequest(requests); } // Addon methods function getAddons() { - sendJsonRequest(new JsonRpcRequest("Addons.GetAddons", {"type": "xbmc.python.script", "properties": ["name"],"limits":{"start":0,"end":10}}), getAddonsCb); + sendJsonRequest(new JsonRpcRequest("Addons.GetAddons", { + "type": "xbmc.python.script", + "properties": ["name"], + "limits": { + "start": 0, + "end": 10 + } + }), getAddonsCb); } + function getAddonsCb(result) { - var dict = {}; - var key = 0; - var addons = result.addons; - for (var i=0;i<addons.length;i++) { - var id = addons[i].addonid; - var name = addons[i].name; - dict[key++] = id + "|" + name; - } - MessageQueue.sendAppMessage(dict); + var dict = {}; + var key = 0; + var addons = result.addons; + for (var i = 0; i < addons.length; i++) { + var id = addons[i].addonid; + var name = addons[i].name; + dict[key++] = id + "|" + name; + } + MessageQueue.sendAppMessage(dict); } + function executeAddon(payload) { - var addonid = payload.MSG_KEY_CMD_DATA; - sendJsonRequest(new JsonRpcRequest("Addons.ExecuteAddon", {"addonid": addonid})); + var addonid = payload.MSG_KEY_CMD_DATA; + sendJsonRequest(new JsonRpcRequest("Addons.ExecuteAddon", { + "addonid": addonid + })); } // Power methods function systemShutdown() { - sendJsonRequest(new JsonRpcRequest("System.Shutdown")); + sendJsonRequest(new JsonRpcRequest("System.Shutdown")); } + function systemReboot() { - sendJsonRequest(new JsonRpcRequest("System.Reboot")); + sendJsonRequest(new JsonRpcRequest("System.Reboot")); } + function systemHibernate() { - sendJsonRequest(new JsonRpcRequest("System.Hibernate")); + sendJsonRequest(new JsonRpcRequest("System.Hibernate")); } + function systemSuspend() { - sendJsonRequest(new JsonRpcRequest("System.Suspend")); + sendJsonRequest(new JsonRpcRequest("System.Suspend")); } // Event listeners -Pebble.addEventListener('ready', - function(e) { - console.log('Rockodi copyright (c) 2015, Douglas Otwell'); - g_ip_address = localStorage.getItem(storage_keys.IP_ADDRESS); - g_username = localStorage.getItem(storage_keys.USERNAME); - g_password = localStorage.getItem(storage_keys.PASSWORD); - } +Pebble.addEventListener("ready", + function (e) { + console.log("Rockodi copyright (c) 2015, Douglas Otwell"); + g_ip_address = localStorage.getItem(storage_keys.IP_ADDRESS); + g_username = localStorage.getItem(storage_keys.USERNAME); + g_password = localStorage.getItem(storage_keys.PASSWORD); + } ); -Pebble.addEventListener('showConfiguration', function(e) { - var query_string = encodeURI("?ip_address="+g_ip_address+"&username="+g_username+"&password="+g_password); - Pebble.openURL('http://www.dkographicdetails.com/rockodi/config/config-page.html'+query_string); +Pebble.addEventListener("showConfiguration", function (e) { + var query_string = encodeURI("?ip_address=" + g_ip_address + "&username=" + g_username + "&password=" + g_password); + Pebble.openURL("http://www.dkographicdetails.com/rockodi/config/config-page.html" + query_string); }); -Pebble.addEventListener('webviewclosed', - function(e) { - var configuration = JSON.parse(decodeURIComponent(e.response)); - if (typeof configuration.ip_address !== "undefined") { - localStorage.setItem(storage_keys.IP_ADDRESS, configuration.ip_address); - localStorage.setItem(storage_keys.USERNAME, configuration.username); - localStorage.setItem(storage_keys.PASSWORD, configuration.password); - g_ip_address = localStorage.getItem(storage_keys.IP_ADDRESS); - g_username = localStorage.getItem(storage_keys.USERNAME); - g_password = localStorage.getItem(storage_keys.PASSWORD); +Pebble.addEventListener("webviewclosed", + function (e) { + var configuration = JSON.parse(decodeURIComponent(e.response)); + if (typeof configuration.ip_address !== "undefined") { + localStorage.setItem(storage_keys.IP_ADDRESS, configuration.ip_address); + localStorage.setItem(storage_keys.USERNAME, configuration.username); + localStorage.setItem(storage_keys.PASSWORD, configuration.password); + g_ip_address = localStorage.getItem(storage_keys.IP_ADDRESS); + g_username = localStorage.getItem(storage_keys.USERNAME); + g_password = localStorage.getItem(storage_keys.PASSWORD); + } } - } ); Pebble.addEventListener("appmessage", - function(e) { - var cmd = e.payload.MSG_KEY_CMD; - switch(cmd) { - // Player messages - case "GET_STATUS": getStatus(); break; - case "PLAY_PAUSE": playPause(); break; - case "VOLUME_UP": raiseVolume(); break; - case "VOLUME_DOWN": lowerVolume(); break; - case "NEXT": next(); break; - case "STOP": stop(); break; - case "PREVIOUS": previous(); break; - // Remote messages - case "KEY_SELECT": sendKey(cmd); break; - case "KEY_UP": sendKey(cmd); break; - case "KEY_DOWN": sendKey(cmd); break; - case "KEY_BACK": sendKey(cmd); break; - case "KEY_LEFT": sendKey(cmd); break; - case "KEY_RIGHT": sendKey(cmd); break; - // Goto messages - case "GO_FULL": gotoFullscreen(); break; - case "GO_INFO": gotoInfo(); break; - case "GO_HOME": gotoHome(); break; - case "GO_MUSIC": gotoMusic(); break; - case "GO_VIDEO": gotoVideo(); break; - case "GO_PICS": gotoPictures(); break; - case "GO_WEATHER": gotoWeather(); break; - // Playlist messages - case "GET_MUSIC_PLAYLISTS": getMusicPlaylists(); break; - case "PLAY_MUSIC_PLAYLIST": playMusicPlaylist(e.payload); break; - // Addons messages - case "GET_ADDONS": getAddons(); break; - case "EXE_ADDON": executeAddon(e.payload); break; - // Power messages - case "PWR_SHUTDOWN": systemShutdown(); break; - case "PWR_REBOOT": systemReboot(); break; - case "PWR_SUSPEND": systemSuspend(); break; - case "PWR_HIBERNATE": systemHibernate(); break; - default: console.log("Command is not defined: "+cmd+"; payload: "+e.payload); + function (e) { + var cmd = e.payload.MSG_KEY_CMD; + switch (cmd) { + // Player messages + case "GET_STATUS": + getStatus(); + break; + case "PLAY_PAUSE": + playPause(); + break; + case "VOLUME_UP": + raiseVolume(); + break; + case "VOLUME_DOWN": + lowerVolume(); + break; + case "NEXT": + next(); + break; + case "STOP": + stop(); + break; + case "PREVIOUS": + previous(); + break; + // Remote messages + case "KEY_SELECT": + sendKey(cmd); + break; + case "KEY_UP": + sendKey(cmd); + break; + case "KEY_DOWN": + sendKey(cmd); + break; + case "KEY_BACK": + sendKey(cmd); + break; + case "KEY_LEFT": + sendKey(cmd); + break; + case "KEY_RIGHT": + sendKey(cmd); + break; + // Goto messages + case "GO_FULL": + gotoFullscreen(); + break; + case "GO_INFO": + gotoInfo(); + break; + case "GO_HOME": + gotoHome(); + break; + case "GO_MUSIC": + gotoMusic(); + break; + case "GO_VIDEO": + gotoVideo(); + break; + case "GO_PICS": + gotoPictures(); + break; + case "GO_WEATHER": + gotoWeather(); + break; + // Playlist messages + case "GET_MUSIC_PLAYLISTS": + getMusicPlaylists(); + break; + case "PLAY_MUSIC_PLAYLIST": + playMusicPlaylist(e.payload); + break; + // Addons messages + case "GET_ADDONS": + getAddons(); + break; + case "EXE_ADDON": + executeAddon(e.payload); + break; + // Power messages + case "PWR_SHUTDOWN": + systemShutdown(); + break; + case "PWR_REBOOT": + systemReboot(); + break; + case "PWR_SUSPEND": + systemSuspend(); + break; + case "PWR_HIBERNATE": + systemHibernate(); + break; + default: + console.log("Command is not defined: " + cmd + "; payload: " + e.payload); + } } - } -); \ No newline at end of file +);