Browse Source

set volume

isundil 6 years ago
parent
commit
d441b293dd
3 changed files with 20 additions and 1 deletions
  1. 9 0
      main.js
  2. 6 0
      outputs.js
  3. 5 1
      remoteOutput.js

+ 9 - 0
main.js

@@ -39,6 +39,15 @@ function serveApi(method, url, res) {
 				res.end(JSON.stringify(outputApi.listOutputs()));
 			}
 			break;
+		case "setVol":
+			if (argObj.output === undefined || argObj.volume === undefined) {
+				notFound(res);
+			} else {
+				outputApi.setOutputVolume(argObj.output, argObj.volume);
+				//FIXME wait for completion
+				res.end(JSON.stringify(outputApi.listOutputs()));
+			}
+			break;
 		default:
 			notFound(res);
 			break;

+ 6 - 0
outputs.js

@@ -21,8 +21,14 @@ function setOutputState(outputId, inputId, state) {
 	return output ? output.setState(inputId, state) : false;
 }
 
+function setOutputVolume(outputId, volume) {
+	var output = outputs[outputId];
+	return output && output.volumeControl ? output.setVolume(volume) : false;
+}
+
 module.exports.listOutputs = listOutputs;
 module.exports.setOutputState = setOutputState;
+module.exports.setOutputVolume = setOutputVolume;
 module.exports.registerOutput = function(id, output) { console.log("Registered new client " +id); outputs[id] = output; }
 module.exports.unregisterOutput = function(id) { console.log("Unregistered client " +id); delete outputs[id]; }
 

+ 5 - 1
remoteOutput.js

@@ -49,7 +49,7 @@ Client.prototype.onData = function(data) {
 	else if (data.startsWith("STATUS")) {
 		data = JSON.parse(data.substr("STATUS".length));
 		if (data) {
-			this.status.battery = data.battery || this.status.battery;
+			this.status.battery = data.battery !== undefined ? data.battery :this.status.battery;
 			this.status.plugged = data.plugged !== undefined ? data.plugged :this.status.plugged;
 			this.status.volume = data.volume !== undefined ? data.volume :this.status.volume;
 			this.status.lastUpdate = Date.now();
@@ -115,6 +115,10 @@ Client.prototype.getStatus = function() {
 	};
 }
 
+Client.prototype.setVolume = function(volume) {
+	this.sock.write("SETVOL" +volume +"\n");
+}
+
 function onClientConnection(sock) {
 	var cli = new Client(sock);
 	if (clients[cli.id])