package org.societies.css.devicemgmt.DeviceDriverExample.impl; import java.util.Dictionary; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.societies.api.css.devicemgmt.IAction; import org.societies.api.css.devicemgmt.IDeviceService; import org.societies.api.css.devicemgmt.IDeviceStateVariable; import org.societies.comm.xmpp.event.EventStream; import org.societies.css.devicemgmt.DeviceDriverExample.actions.GetLightLevelAction; import org.societies.css.devicemgmt.DeviceDriverExample.statevariables.LightLevelStateVariable; public class LightSensor implements IDeviceService{ private Map<String, IDeviceStateVariable> stateVariables = new HashMap<String, IDeviceStateVariable>(); private Map<String, IAction> actions = new HashMap<String, IAction>(); private BundleContext bundleContext; private ServiceRegistration registration; private Dictionary<String, String> properties; private DeviceDriverExample deviceDriverExample; private String deviceMacAddress; private static Logger LOG = LoggerFactory.getLogger(LightSensor.class); private String serviceId; public LightSensor(BundleContext bc, DeviceDriverExample deviceDriverExample, String serviceId, String deviceMacAddress) { this.bundleContext = bc; this.deviceDriverExample = deviceDriverExample; this.deviceMacAddress = deviceMacAddress; this.serviceId = serviceId; IDeviceStateVariable stateVariable; IAction action; stateVariable = new LightLevelStateVariable(); stateVariables.put(stateVariable.getName(), stateVariable); action = new GetLightLevelAction(deviceDriverExample, (LightLevelStateVariable) stateVariable, deviceMacAddress); actions.put(action.getName(), action); properties = new Hashtable<String, String>(); properties.put("serviceId", serviceId); properties.put("deviceMacAddress", deviceMacAddress); Object lock = new Object(); synchronized(lock) { registration = bundleContext.registerService(IDeviceService.class.getName(), this, properties); LOG.info(" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LightSensor info: lightSensor service registred "); } } @Override public IAction getAction(String actionName) { return (IAction)actions.get(actionName); } @Override public IAction[] getActions() { return (IAction[])(actions.values()).toArray(new IAction[]{}); } @Override public IDeviceStateVariable getStateVariable(String stateVariableName) { return (IDeviceStateVariable)stateVariables.get(stateVariableName); } @Override public IDeviceStateVariable[] getStateVariables() { return (IDeviceStateVariable[])(stateVariables.values()).toArray(new IDeviceStateVariable[]{}); } @Override public String getId() { return serviceId; } }