/* ================================================================== * DataCollectorSerialPortBeanParameters.java - Mar 24, 2012 9:07:09 PM * * Copyright 2007-2012 SolarNetwork.net Dev Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA * ================================================================== */ package net.solarnetwork.node.support; import java.util.List; import net.solarnetwork.node.DataCollector; import net.solarnetwork.node.settings.SettingSpecifier; import net.solarnetwork.node.settings.support.BasicTextFieldSettingSpecifier; import net.solarnetwork.node.settings.support.BasicToggleSettingSpecifier; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; /** * Configuration bean for {@link DataCollector}. * * @author matt * @version 1.0 */ public class DataCollectorSerialPortBeanParameters extends SerialPortBeanParameters { private static final DataCollectorSerialPortBeanParameters DEFAULTS = new DataCollectorSerialPortBeanParameters(); private int bufferSize = 4096; private byte[] magic = new byte[] { 0x13 }; private byte[] magicEOF = null; private int readSize = 8; private boolean toggleDtr = true; private boolean toggleRts = true; /** * Get a list of setting specifiers for this bean. * * @param prefix * the bean prefix to use * @return setting specifiers */ public static List<SettingSpecifier> getDefaultSettingSpecifiers(String prefix) { return getDefaultSettingSpecifiers(DEFAULTS, prefix); } /** * Get a list of setting specifiers for this bean, with fixed size message * support. * * @param defaults * the default values to use * @param prefix * the bean prefix to use * @return setting specifiers */ public static List<SettingSpecifier> getDefaultSettingSpecifiers( DataCollectorSerialPortBeanParameters defaults, String prefix) { List<SettingSpecifier> results = SerialPortBeanParameters.getDefaultSettingSpecifiers(defaults, prefix); results.add(new BasicTextFieldSettingSpecifier(prefix + "bufferSize", String.valueOf(defaults .getBufferSize()))); results.add(new BasicTextFieldSettingSpecifier(prefix + "magicHex", defaults.getMagicHex())); results.add(new BasicTextFieldSettingSpecifier(prefix + "readSize", String.valueOf(defaults .getReadSize()))); results.add(new BasicToggleSettingSpecifier(prefix + "toggleDtr", defaults.isToggleDtr())); results.add(new BasicToggleSettingSpecifier(prefix + "toggleRts", defaults.isToggleRts())); return results; } /** * Get a list of setting specifiers for this bean, with variable message * size support. * * @param defaults * the default values to use * @param prefix * the bean prefix to use * @return setting specifiers */ public static List<SettingSpecifier> getDefaultVariableSettingSpecifiers( DataCollectorSerialPortBeanParameters defaults, String prefix) { List<SettingSpecifier> results = SerialPortBeanParameters.getDefaultSettingSpecifiers(defaults, prefix); results.add(new BasicTextFieldSettingSpecifier(prefix + "bufferSize", String.valueOf(defaults .getBufferSize()))); results.add(new BasicTextFieldSettingSpecifier(prefix + "magicHex", defaults.getMagicHex())); results.add(new BasicTextFieldSettingSpecifier(prefix + "magicEOFHex", defaults.getMagicEOFHex())); results.add(new BasicToggleSettingSpecifier(prefix + "toggleDtr", defaults.isToggleDtr())); results.add(new BasicToggleSettingSpecifier(prefix + "toggleRts", defaults.isToggleRts())); return results; } public int getBufferSize() { return bufferSize; } public void setBufferSize(int bufferSize) { this.bufferSize = bufferSize; } public String getMagicHex() { if ( getMagic() == null ) { return null; } return Hex.encodeHexString(getMagic()); } public void setMagicHex(String hex) { if ( hex == null || (hex.length() % 2) == 1 ) { setMagic(null); } try { setMagic(Hex.decodeHex(hex.toCharArray())); } catch ( DecoderException e ) { // fail silently, sorry } } public byte[] getMagic() { return magic; } public void setMagic(byte[] magic) { this.magic = magic; } public String getMagicEOFHex() { if ( getMagicEOF() == null ) { return null; } return Hex.encodeHexString(getMagicEOF()); } public void setMagicEOFHex(String hex) { if ( hex == null || (hex.length() % 2) == 1 ) { setMagicEOF(null); } try { setMagicEOF(Hex.decodeHex(hex.toCharArray())); } catch ( DecoderException e ) { // fail silently, sorry } } public byte[] getMagicEOF() { return magicEOF; } public void setMagicEOF(byte[] magicEOF) { this.magicEOF = magicEOF; } public int getReadSize() { return readSize; } public void setReadSize(int readSize) { this.readSize = readSize; } public boolean isToggleDtr() { return toggleDtr; } public void setToggleDtr(boolean toggleDtr) { this.toggleDtr = toggleDtr; } public boolean isToggleRts() { return toggleRts; } public void setToggleRts(boolean toggleRts) { this.toggleRts = toggleRts; } }