/* | |
* Copyright 2006 The Apache Software Foundation | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
* | |
*/ | |
package org.apache.felix.upnp.tester.discovery; | |
import org.apache.felix.upnp.extra.controller.*; | |
import org.apache.felix.upnp.tester.*; | |
import org.osgi.framework.*; | |
/** | |
* @author Stefano "Kismet" Lenzi | |
* @author Francesco Furfari | |
* | |
*/ | |
public class DriverProxy implements ServiceListener { | |
private DevicesInfo devicesInfo; | |
private DriverController drvController; | |
public DriverProxy(){ | |
ServiceReference sr = Activator.context.getServiceReference(DevicesInfo.class.getName()); | |
if (sr != null){ | |
devicesInfo = (DevicesInfo)Activator.context.getService(sr); | |
drvController = (DriverController) devicesInfo; | |
Mediator.getControlPoint().enableMenus(true,getLogLevel(),getCyberDebug()); | |
Mediator.getTreeViewer().setPopupMenuEnabled(true); | |
} | |
String filter = "(" + Constants.OBJECTCLASS + "=" + DevicesInfo.class.getName() + ")" ; | |
try { | |
Activator.context.addServiceListener(this,filter); | |
} catch (Exception ignored){}; | |
} | |
public boolean isDriverAvailable(){ | |
return (drvController != null); | |
} | |
public String getDeviceDescriptionURI(String udn){ | |
if (devicesInfo != null) | |
return devicesInfo.getLocationURL(udn); | |
return ""; | |
} | |
public String getServiceDescriptionURI(String udn,String serviceId){ | |
if (devicesInfo != null) | |
return devicesInfo.getSCPDURL(udn,serviceId); | |
return null; | |
} | |
public String resolveRelativeUrl(String udn,String link){ | |
if (devicesInfo != null) | |
return devicesInfo.resolveRelativeUrl(udn,link); | |
return null; | |
} | |
public boolean getCyberDebug(){ | |
if (drvController != null) | |
return drvController.getCyberDebug(); | |
return false; | |
} | |
public void setCyberDebug(boolean b){ | |
if (drvController != null) | |
drvController.setCyberDebug(b); | |
} | |
public int getLogLevel(){ | |
if (drvController != null) | |
return drvController.getLogLevel(); | |
return 0; | |
} | |
public void setLogLevel(int value){ | |
if (drvController != null) | |
drvController.setLogLevel(value); | |
} | |
public void doSearch(String target){ | |
if (drvController != null) | |
drvController.search(target); | |
} | |
public void serviceChanged(ServiceEvent e) { | |
switch(e.getType()){ | |
case ServiceEvent.REGISTERED:{ | |
Object service = Activator.context.getService(e.getServiceReference()); | |
if (service != null){ | |
devicesInfo = (DevicesInfo) service; | |
drvController = (DriverController) devicesInfo; | |
Mediator.getControlPoint().enableMenus(true,getLogLevel(),getCyberDebug()); | |
Mediator.getTreeViewer().setPopupMenuEnabled(true); | |
} | |
};break; | |
case ServiceEvent.UNREGISTERING:{ | |
devicesInfo = null; | |
drvController =null; | |
Mediator.getControlPoint().enableMenus(false,0,false); | |
Mediator.getTreeViewer().setPopupMenuEnabled(false); | |
};break; | |
} | |
} | |
public void close(){ | |
Activator.context.removeServiceListener(this); | |
} | |
} |