public void Receive(float floatSample) { /* Square the sample. Greater than zero is a 1 (true) and less than * zero is a 0 (false) */ bool bitSample = (floatSample >= 0.0f); /* Feed the delay buffer and fetch the one-baud delayed sample */ bool delayedBitSample = mDelayBuffer.get(bitSample); /* Correlation: xor current bit with delayed bit */ bool softBit = bitSample ^ delayedBitSample; /* Low pass filter to smooth the correlated values */ bool filteredSoftBit = mLowPassFilter.getAverage(softBit); /* Send the filtered correlated bit to the slicer */ mSlicer.Receive(filteredSoftBit); }