[Slim-Checkins] r33901 - in /7.8/trunk/server/Slim: Control/Commands.pm Player/Client.pm Player/Squeezebox2.pm

[email protected] Sun, 25 Mar 2012 10:18:04 -0000
Newsgroups gmane.music.equipment.slimdevices.cvs
Message-ID <[email protected]>
Author: ayoung
Date: Sun Mar 25 03:18:04 2012
New Revision: 33901

URL: http://svn.slimdevices.com/slim?rev=33901&view=rev
Log:
Task  B0020: Player control over UDP

Extend mixer command to take optional controllerSequenceId and controllerSequenceNumber tagged parameters. Stash these in the client object for the duration of the command.
Extend Slimproto audg to carry controller-id in addition to sequence number if controllerSequenceId is defined.

Modified:
    7.8/trunk/server/Slim/Control/Commands.pm
    7.8/trunk/server/Slim/Player/Client.pm
    7.8/trunk/server/Slim/Player/Squeezebox2.pm

Modified: 7.8/trunk/server/Slim/Control/Commands.pm
URL: http://svn.slimdevices.com/slim/7.8/trunk/server/Slim/Control/Commands.pm?rev=33901&r1=33900&r2=33901&view=diff
==============================================================================
--- 7.8/trunk/server/Slim/Control/Commands.pm (original)
+++ 7.8/trunk/server/Slim/Control/Commands.pm Sun Mar 25 03:18:04 2012
@@ -557,6 +557,12 @@
 	if (defined $sequenceNumber) {
 		$client->sequenceNumber($sequenceNumber)
 	}
+	
+	my $controllerSequenceId = $request->getParam('controllerSequenceId');
+	if (defined $controllerSequenceId) {
+		$client->controllerSequenceId($controllerSequenceId)
+		$client->controllerSequenceNumber($request->getParam('controllerSequenceNumber'))
+	}
 
 	my @buddies;
 
@@ -640,6 +646,11 @@
 		}
 	}
 		
+	if (defined $controllerSequenceId) {
+		$client->controllerSequenceId(undef)
+		$client->controllerSequenceNumber(undef)
+	}
+
 	$request->setStatusDone();
 }
 

Modified: 7.8/trunk/server/Slim/Player/Client.pm
URL: http://svn.slimdevices.com/slim/7.8/trunk/server/Slim/Player/Client.pm?rev=33901&r1=33900&r2=33901&view=diff
==============================================================================
--- 7.8/trunk/server/Slim/Player/Client.pm (original)
+++ 7.8/trunk/server/Slim/Player/Client.pm Sun Mar 25 03:18:04 2012
@@ -208,6 +208,12 @@
 		#It is used to allow the player to act as the master for the locally maintained parameter.
 		sequenceNumber          => 0,
 
+		# The (controllerSequenceId, controllerSequenceNumber) tuple is used to enable synchronization of commands 
+		# sent to the player via the server and via an additional, out-of-band mechanism (currently UDAP).
+		# It is used to enable the player to discard duplicate commands received via both channels.
+		controllerSequenceId    => undef,
+		controllerSequenceNumber=> undef,
+
 		# streaming control
 		controller              => undef,
 		bufferReady             => 0,

Modified: 7.8/trunk/server/Slim/Player/Squeezebox2.pm
URL: http://svn.slimdevices.com/slim/7.8/trunk/server/Slim/Player/Squeezebox2.pm?rev=33901&r1=33900&r2=33901&view=diff
==============================================================================
--- 7.8/trunk/server/Slim/Player/Squeezebox2.pm (original)
+++ 7.8/trunk/server/Slim/Player/Squeezebox2.pm Sun Mar 25 03:18:04 2012
@@ -294,7 +294,10 @@
 		my $preamp = 255 - int( 2 * ( $prefs->client($client)->get('preampVolumeControl') || 0 ) );
 
 		my $data;
-		if (defined($client->sequenceNumber())) {
+		if (defined($client->controllerSequenceId())) {
+			$data = pack('NNCCNNNa6', $oldGain, $oldGain, $dvc, $preamp, $newGain, $newGain,
+				($client->controllerSequenceNumber() || 0), $client->controllerSequenceId());
+		elsif (defined($client->sequenceNumber())) {
 			$data = pack('NNCCNNN', $oldGain, $oldGain, $dvc, $preamp, $newGain, $newGain, $client->sequenceNumber());
 		}
 		else {