[WIP]Updates the MDC1200 decoder to use the new AFSK1200 decoder

class.

Adds Demodulator Viewer FX pane for MDC1200 decoder.
This commit is contained in:
Denny
2018-06-15 07:11:07 -04:00
parent 18f50485d3
commit 2cd3b73633
5 changed files with 218 additions and 236 deletions

View File

@@ -1,77 +1,76 @@
/*******************************************************************************
* SDR Trunk
* Copyright (C) 2014 Dennis Sheirer
*
* 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 3 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, see <http://www.gnu.org/licenses/>
* sdr-trunk
* Copyright (C) 2014-2018 Dennis Sheirer
*
* 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 3 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, see <http://www.gnu.org/licenses/>
*
******************************************************************************/
package io.github.dsheirer.dsp;
import io.github.dsheirer.bits.IBinarySymbolProcessor;
import io.github.dsheirer.sample.Listener;
public class NRZDecoder implements Listener<Boolean>
public class NRZDecoder implements IBinarySymbolProcessor
{
public final static boolean MODE_NORMAL = true;
public final static boolean MODE_INVERTED = false;
private Listener<Boolean> mListener;
private boolean mMode = MODE_NORMAL;
private boolean mPrevious;
public final static boolean MODE_NORMAL = true;
public final static boolean MODE_INVERTED = false;
/**
* Non Return To Zero (NRZ) and NRZ Inverted (NRZ-I) Decoder.
*
* Use default constructor for NRZ output. Use the alternate constructor
* with the MODE_INVERTED argument for NRZ-I output.
*
* Performs XOR of incoming bit with previous output and sends the result
* to the registered listener.
*/
public NRZDecoder( boolean mode )
{
mMode = mode;
}
public NRZDecoder()
{
this( MODE_NORMAL );
}
public void dispose()
{
mListener = null;
}
private IBinarySymbolProcessor mListener;
private boolean mMode = MODE_NORMAL;
private boolean mPrevious;
@Override
public void receive( Boolean bit )
/**
* Non Return To Zero (NRZ) and NRZ Inverted (NRZ-I) Decoder.
*
* Use default constructor for NRZ output. Use the alternate constructor
* with the MODE_INVERTED argument for NRZ-I output.
*
* Performs XOR of incoming bit with previous output and sends the result
* to the registered listener.
*/
public NRZDecoder(boolean mode)
{
boolean result = mPrevious ^ bit;
if( mListener != null )
{
mListener.receive( mMode ? result : !result );
}
mPrevious = result;
mMode = mode;
}
public void setListener( Listener<Boolean> listener )
{
mListener = listener;
}
public void removeListener( Listener<Boolean> listener )
{
mListener = null;
}
public NRZDecoder()
{
this(MODE_NORMAL);
}
public void dispose()
{
mListener = null;
}
@Override
public void receive(boolean symbol)
{
boolean result = mPrevious ^ symbol;
if(mListener != null)
{
mListener.receive(mMode ? result : !result);
}
mPrevious = result;
}
public void setListener(IBinarySymbolProcessor listener)
{
mListener = listener;
}
public void removeListener(Listener<Boolean> listener)
{
mListener = null;
}
}