package de.tu.darmstadt.seemoo.ansian.model.demodulation.morse; import java.util.BitSet; import de.tu.darmstadt.seemoo.ansian.model.FFTSample; public class MorseBitSet extends java.util.BitSet { /** * */ private static final long serialVersionUID = -5572966622427907284L; private BitSet bits; private int index; private MorseStats stats; public MorseBitSet(FFTSample[] fftSamples, MorseStats morseStats) { stats = morseStats; index = 0; bits = new BitSet(); for (int i = 0; i < fftSamples.length; i++) { setBit(stats.estimateValue(fftSamples[i])); } } private int getLowBits(int i) { int nextHigh = bits.nextSetBit(i); int bitsLow = 0; if (nextHigh != -1) ; { bitsLow = nextHigh - i; } return bitsLow; } private int getHighBits(int i) { int nextLow = bits.nextClearBit(i); int bitsHigh = 0; if (nextLow != -1) ; { bitsHigh = nextLow - i; } return bitsHigh; } void setBit(boolean b) { if (b) bits.set(index); index++; } public int getLength() { return index - 1; } public int getNextBits(int i) { int num; if (bits.get(i)) { num = getHighBits(i); } else { num = -getLowBits(i); } return num; } }