|  | @@ -0,0 +1,37 @@
 | 
	
		
			
				|  |  | +package Plugins::SqueezeESP32::Player;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +use strict;
 | 
	
		
			
				|  |  | +use base qw(Slim::Player::SqueezePlay);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +use Slim::Utils::Log;
 | 
	
		
			
				|  |  | +use Slim::Utils::Prefs;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +my $prefs = preferences('plugin.squeezeesp32');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +sub model { 'squeezeesp32' }
 | 
	
		
			
				|  |  | +sub modelName { 'SqueezeESP32' }
 | 
	
		
			
				|  |  | +sub hasIR { 0 }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# We need to implement this to allow us to receive SETD commands
 | 
	
		
			
				|  |  | +# and we need SETD to support custom display widths
 | 
	
		
			
				|  |  | +sub directBodyFrame { 1 }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Allow the player to define it's display width (and probably more)
 | 
	
		
			
				|  |  | +sub playerSettingsFrame {
 | 
	
		
			
				|  |  | +	my $client   = shift;
 | 
	
		
			
				|  |  | +	my $data_ref = shift;
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	my $value;
 | 
	
		
			
				|  |  | +	my $id = unpack('C', $$data_ref);
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +	# New SETD command 0xfe for display width
 | 
	
		
			
				|  |  | +	if ($id == 0xfe) { 
 | 
	
		
			
				|  |  | +		$value = (unpack('CC', $$data_ref))[1];
 | 
	
		
			
				|  |  | +		if ($value > 10 && $value < 200) {
 | 
	
		
			
				|  |  | +			$client->display->widthOverride(1, $value);
 | 
	
		
			
				|  |  | +			$client->update;
 | 
	
		
			
				|  |  | +		} 
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +1;
 |