/**
* Copyright (c) 2010-2016 by the respective copyright holders.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.openhab.binding.dmx.internal;
import org.openhab.binding.dmx.DmxBindingProvider;
import org.openhab.binding.dmx.DmxService;
import org.openhab.binding.dmx.internal.config.DmxItem;
import org.openhab.core.binding.AbstractBinding;
import org.openhab.core.types.Command;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* DMX event binding class. Processes all the command events and forwards them
* if required.
*
* @author Davy Vanherbergen
* @since 1.2.0
*/
public class DmxBinding extends AbstractBinding<DmxBindingProvider> {
private static final Logger logger = LoggerFactory.getLogger(DmxBinding.class);
private DmxService dmxService;
protected void addBindingProvider(DmxBindingProvider bindingProvider) {
super.addBindingProvider(bindingProvider);
}
protected void removeBindingProvider(DmxBindingProvider bindingProvider) {
super.removeBindingProvider(bindingProvider);
}
/**
* {@inheritDoc}
*/
@Override
public void receiveCommand(String itemName, Command command) {
if (dmxService == null) {
logger.warn("No DMX Service available.");
return;
}
// get the item's corresponding dmx binding
DmxItem itemBinding = null;
for (DmxBindingProvider provider : providers) {
if (provider.providesBindingFor(itemName)) {
itemBinding = provider.getBindingConfig(itemName);
break;
}
}
if (itemBinding == null) {
return;
}
dmxService.suspend(true);
itemBinding.processCommand(dmxService, command);
dmxService.suspend(false);
}
/**
* DmxService loaded via DS.
*/
public void setDmxService(DmxService dmxService) {
this.dmxService = dmxService;
}
/**
* DmxService unloaded via DS.
*/
public void unsetDmxService(DmxService dmxService) {
this.dmxService = null;
}
}