/**
* 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.zwave.internal.protocol;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/**
* This class provides a storage class for zwave configuration parameters
* within the configuration command class. This is then serialized to XML.
*
* @author Chris Jackson
* @since 1.4.0
*
*/
@XStreamAlias("configurationParameter")
public class ConfigurationParameter {
private final Integer index;
private final Integer size;
private Integer value;
private boolean readOnly;
private boolean writeOnly;
/***
* Constructor. Creates a new instance of the {@link ConfigurationParameter} class.
*
* @param index. The parameter index.
* @param value. The parameter value;
* @throws IllegalArgumentException thrown when the index or size arguments are out of range.
*/
public ConfigurationParameter(Integer index, Integer value, Integer size) throws IllegalArgumentException {
if (size < 1 || size > 4) {
throw new IllegalArgumentException("illegal parameter size");
}
if (index < 0 || index > 0xFF) {
throw new IllegalArgumentException("illegal parameter index");
}
this.index = index;
this.size = size;
this.setValue(value);
}
/**
* Gets the configuration parameter value
*
* @return the value
*/
public Integer getValue() {
return value;
}
/**
* Sets the configuration parameter value.
*
* @param value the value to set
*/
public void setValue(Integer value) throws IllegalArgumentException {
this.value = value;
}
/**
* Returns the parameter index.
*
* @return the index
*/
public Integer getIndex() {
return index;
}
/**
* Returns the parameter size.
*
* @return the size
*/
public Integer getSize() {
return size;
}
/**
* Sets the parameter as a WriteOnly parameter
*
* @param write true if the parameter should not be read
*/
public void setWriteOnly(boolean write) {
writeOnly = write;
}
/**
* Returns true if this parameter is write only
*
* @return true if the parameter should not be read back
*/
public boolean getWriteOnly() {
return writeOnly;
}
/**
* Sets the parameter as a ReadOnly parameter
*
* @param read true if the parameters is readonly
*/
public void setReadOnly(boolean read) {
readOnly = read;
}
/**
* Returns true if this parameter is read only
*
* @return true if the parameter should not be written to
*/
public boolean getReadOnly() {
return readOnly;
}
}