[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 {