View Javadoc

1   package org.rpi.providers;
2   
3   import java.util.Observable;
4   import java.util.Observer;
5   
6   import org.apache.log4j.Logger;
7   import org.openhome.net.device.DvDevice;
8   import org.openhome.net.device.IDvInvocation;
9   import org.openhome.net.device.providers.DvProviderAvOpenhomeOrgVolume1;
10  import org.rpi.player.PlayManager;
11  import org.rpi.player.events.EventBase;
12  import org.rpi.player.events.EventMuteChanged;
13  import org.rpi.player.events.EventVolumeChanged;
14  import org.rpi.utils.Utils;
15  
16  public class PrvVolume extends DvProviderAvOpenhomeOrgVolume1 implements Observer {
17  
18  	private Logger log = Logger.getLogger(PrvVolume.class);
19  
20  	private PlayManager iPlayer = PlayManager.getInstance();
21  
22  	public PrvVolume(DvDevice iDevice) {
23  		super(iDevice);
24  		log.debug("Creating CustomVolume");
25  
26  		enablePropertyVolume();
27  		enablePropertyMute();
28  		enablePropertyBalance();
29  		enablePropertyFade();
30  		enablePropertyVolumeLimit();
31  		enablePropertyVolumeMax();
32  		enablePropertyVolumeUnity();
33  		enablePropertyVolumeSteps();
34  		enablePropertyVolumeMilliDbPerStep();
35  		enablePropertyBalanceMax();
36  		enablePropertyFadeMax();
37  
38  		propertiesLock();
39  		long v = iPlayer.getVolume();
40  		if(v<0)
41  			v=0;
42  		setPropertyVolume(v);
43  		setPropertyMute(false);
44  		setPropertyBalance(0);
45  		setPropertyFade(0);
46  		setPropertyVolumeLimit(100);
47  		setPropertyVolumeMax(100);
48  		setPropertyVolumeUnity(80);
49  		setPropertyVolumeSteps(100);
50  		setPropertyVolumeMilliDbPerStep(1024);
51  		setPropertyBalanceMax(0);
52  		setPropertyFadeMax(0);
53  		propertiesUnlock();
54  
55  		enableActionCharacteristics();
56  		enableActionSetVolume();
57  		enableActionVolumeInc();
58  		enableActionVolumeDec();
59  		enableActionVolume();
60  		enableActionSetMute();
61  		enableActionMute();
62  		enableActionVolumeLimit();
63  		PlayManager.getInstance().observVolumeEvents(this);
64  	}
65  	
66  	@Override
67  	protected Characteristics characteristics(IDvInvocation paramIDvInvocation) {
68  		log.debug("characteristics" + Utils.getLogText(paramIDvInvocation));
69  		Characteristics charistics = new Characteristics(100, 0, 0, 0, 0, 0);
70  		return charistics;
71  	}
72  	
73  	@Override
74  	protected boolean mute(IDvInvocation paramIDvInvocation) {
75  		log.debug("mute" + Utils.getLogText(paramIDvInvocation));
76  		return PlayManager.getInstance().getMute();
77  	}
78  	
79  	private void updateVolume(long volume)
80  	{
81  		if(volume < 0)
82  			volume = 0;
83  		setPropertyVolume(volume);
84  	}
85  
86  	protected void setVolume(IDvInvocation paramIDvInvocation, long volume) {
87  
88  		log.debug("setVolume: " + volume +Utils.getLogText(paramIDvInvocation));
89  		iPlayer.setVolume(volume);
90  
91  	}
92  
93  	protected void volumeInc(IDvInvocation paramIDvInvocation) {
94  		log.debug("volumeInc: "  +Utils.getLogText(paramIDvInvocation));
95  		long volume = iPlayer.incVolume();
96  		//propertiesLock();
97  		//setPropertyVolume(volume);
98  		//propertiesUnlock();
99  		//iPlayer.setVolume(volume);
100 		//log.debug("VolumeInc: " + volume);
101 	}
102 
103 	protected void volumeDec(IDvInvocation paramIDvInvocation) {
104 		log.debug("volumeDec: "  +Utils.getLogText(paramIDvInvocation));
105 		long volume = iPlayer.decVolume();
106 		//propertiesLock();
107 		//setPropertyVolume(volume);
108 		//propertiesUnlock();
109 		//iPlayer.setVolume(volume);
110 		//log.debug("VolumeDec: " + volume);
111 	}
112 
113 	protected void setMute(IDvInvocation paramIDvInvocation, boolean mute) {
114 		log.debug("vsetMute: "  + mute  +Utils.getLogText(paramIDvInvocation));
115 		iPlayer.setMute(mute);
116 	}
117 	
118 	private void updateMute(boolean mute)
119 	{
120 		//propertiesLock();
121 		setPropertyMute(mute);
122 		//propertiesUnlock();
123 	}
124 
125 	protected long volume(IDvInvocation paramIDvInvocation) {
126 		log.debug("volume: "  +Utils.getLogText(paramIDvInvocation));
127 		long volume = iPlayer.getVolume();
128 		log.debug("GetVolume: " + volume);
129 		if(volume < 0)
130 			volume = 0;
131 		return volume;
132 	}
133 	
134 	@Override
135 	protected long volumeLimit(IDvInvocation paramIDvInvocation) {
136 		log.debug("volumeLimit: "  +Utils.getLogText(paramIDvInvocation));
137 		return 100;
138 	}
139 
140 	@Override
141 	public void update(Observable paramObservable, Object obj) {
142 		EventBase e = (EventBase) obj;
143 		switch(e.getType())
144 		{
145 		case EVENTVOLUMECHANGED:
146 			EventVolumeChanged ev = (EventVolumeChanged)e;
147 			updateVolume(ev.getVolume());
148 			break;
149 		case EVENTMUTECHANGED:
150 			EventMuteChanged em = (EventMuteChanged)e;
151 			updateMute(em.isMute());
152 			break;
153 		}
154 	}
155 }