package ukhas; import java.util.ArrayList; import java.util.List; public class TelemetryConfig implements java.io.Serializable { private static final long serialVersionUID = 0x5901fa8c0e38abb5L; public enum GPSFormat {NMEA,DECIMAL,INT, UNKNOWN}; public enum DataType {INT, FLOAT, STRING, IGNORE}; public int GPSIntPowerOffset = 0; public GPSFormat gpsFormat = GPSFormat.UNKNOWN; private List<String> _fieldNames = new ArrayList<String>(); private List<DataType> _fieldTypes = new ArrayList<DataType>(); private List<Double> _fieldScale = new ArrayList<Double>(); private List<Double> _fieldOffset = new ArrayList<Double>(); private List<Integer> _fieldRound = new ArrayList<Integer>(); public int getIndex(String field) { return _fieldNames.indexOf(field); } public int getTotalFields() { return _fieldNames.size(); } public String getFieldName(int index) { return _fieldNames.get(index); } public DataType getFieldDataType(int index) { return _fieldTypes.get(index); } public double adjust(int index, double valuein) { double m = _fieldScale.get(index).doubleValue(); double c = _fieldOffset.get(index).doubleValue(); return m*valuein + c; } public double getFieldScale(int index) { return _fieldScale.get(index); } public double getFieldOffset(int index) { return _fieldOffset.get(index); } public int getFieldRound(int index) { return _fieldRound.get(index); } public int addField(String name, DataType datatype) { _fieldTypes.add(datatype); _fieldNames.add(name); _fieldScale.add(Double.valueOf(1)); _fieldOffset.add(Double.valueOf(0)); _fieldRound.add(Integer.valueOf(-1)); return _fieldNames.size()-1; } public void addFilter(String sourceField, String scale, String offset, String round) { int fieldindex = _fieldNames.indexOf(sourceField); if (fieldindex < 0) return; int iround; double doffset; double dscale; if (!scale.equals("")){ try{ dscale = Double.parseDouble(scale); _fieldScale.set(fieldindex, dscale); } catch(Exception e) { } } if (!offset.equals("")){ try{ doffset = Double.parseDouble(offset); _fieldOffset.set(fieldindex, doffset); } catch(Exception e) { } } if (!round.equals("")){ try{ iround = Integer.parseInt(round); _fieldRound.set(fieldindex, iround); } catch(Exception e) { } } } }