mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-13 09:07:27 -05:00
[WIP] Updates the AM decoder module.
Removes a number of unused classes in an effort to remove RealBuffer usage across the codebase (has been replaced by ReusableBuffers).
This commit is contained in:
@@ -1,40 +0,0 @@
|
||||
/*******************************************************************************
|
||||
* SDR Trunk
|
||||
* Copyright (C) 2015 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.audio.squelch;
|
||||
|
||||
|
||||
/**
|
||||
* Provides squelch control based on presense of decoded audio samples.
|
||||
*
|
||||
* NOTE: this class is not yet fully implemented with audio sample processing
|
||||
* and currently only provides user driven squelch control
|
||||
*/
|
||||
public class ManualSquelchController extends SquelchController
|
||||
{
|
||||
public ManualSquelchController()
|
||||
{
|
||||
mSquelchMode = SquelchMode.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSquelchMode( SquelchMode mode )
|
||||
{
|
||||
//TODO: add functionality
|
||||
}
|
||||
}
|
||||
@@ -1,122 +0,0 @@
|
||||
/*******************************************************************************
|
||||
* SDR Trunk
|
||||
* Copyright (C) 2015 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.audio.squelch;
|
||||
|
||||
import io.github.dsheirer.sample.Broadcaster;
|
||||
import io.github.dsheirer.sample.Listener;
|
||||
import io.github.dsheirer.sample.real.RealBuffer;
|
||||
import io.github.dsheirer.sample.real.RealSampleListener;
|
||||
import io.github.dsheirer.sample.real.RealToRealBufferAssembler;
|
||||
|
||||
/**
|
||||
* Squelch control - receives single audio samples or real audio buffers and
|
||||
* adjusts squelch state either based on the audio samples or based on external
|
||||
* control inputs.
|
||||
*
|
||||
* Assembles received single audio samples into real sample buffers for
|
||||
* consumption by an external audio processor, like the AudioPacketProcessor
|
||||
* class.
|
||||
*/
|
||||
public abstract class SquelchController
|
||||
implements Listener<RealBuffer>, RealSampleListener
|
||||
{
|
||||
private Broadcaster<SquelchState> mSquelchStateBroadcaster = new Broadcaster<>();
|
||||
private Listener<RealBuffer> mAudioListener;
|
||||
protected SquelchState mSquelchState = SquelchState.UNSQUELCH;
|
||||
protected SquelchMode mSquelchMode = SquelchMode.MANUAL;
|
||||
|
||||
private RealToRealBufferAssembler mSampleAssembler = new RealToRealBufferAssembler( 512 );
|
||||
|
||||
public SquelchController()
|
||||
{
|
||||
mSampleAssembler.setListener( this );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receive( float sample )
|
||||
{
|
||||
mSampleAssembler.receive( sample );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receive( RealBuffer buffer )
|
||||
{
|
||||
if( mAudioListener != null )
|
||||
{
|
||||
mAudioListener.receive( buffer );
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void setSquelchMode( SquelchMode mode );
|
||||
|
||||
public SquelchMode getSquelchMode()
|
||||
{
|
||||
return mSquelchMode;
|
||||
}
|
||||
|
||||
public void setSquelchState( SquelchState state )
|
||||
{
|
||||
mSquelchState = state;
|
||||
}
|
||||
|
||||
public SquelchState getSquelchState()
|
||||
{
|
||||
return mSquelchState;
|
||||
}
|
||||
|
||||
public boolean isSquelched()
|
||||
{
|
||||
switch( mSquelchMode )
|
||||
{
|
||||
case AUTOMATIC:
|
||||
case MANUAL:
|
||||
return mSquelchState == SquelchState.SQUELCH;
|
||||
case NONE:
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void addSquelchStateListener( Listener<SquelchState> listener )
|
||||
{
|
||||
if( listener != null )
|
||||
{
|
||||
mSquelchStateBroadcaster.addListener( listener );
|
||||
|
||||
/* Send current squelch state to the listener */
|
||||
listener.receive( mSquelchState );
|
||||
}
|
||||
}
|
||||
|
||||
public void removeSquelchStateListener( Listener<SquelchState> listener )
|
||||
{
|
||||
mSquelchStateBroadcaster.removeListener( listener );
|
||||
}
|
||||
|
||||
public void setAudioListener( Listener<RealBuffer> listener )
|
||||
{
|
||||
mAudioListener = listener;
|
||||
}
|
||||
|
||||
public void removeAudioListener( Listener<RealBuffer> listener )
|
||||
{
|
||||
mAudioListener = null;
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
/*******************************************************************************
|
||||
* SDR Trunk
|
||||
* Copyright (C) 2015 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.audio.squelch;
|
||||
|
||||
public class TrunkingSquelchController extends SquelchController
|
||||
{
|
||||
private boolean mAllowSquelchOverride = true;
|
||||
|
||||
public TrunkingSquelchController()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides control over audio stream as directed by an external trunking
|
||||
* channel state.
|
||||
*
|
||||
* Override automatic squelch control by setting the squelch mode to none.
|
||||
*
|
||||
* Disable automatic control override by setting allowManualOverride to false;
|
||||
*
|
||||
* Note: this control does not respond to squelch mode manual.
|
||||
*/
|
||||
public TrunkingSquelchController( boolean allowSquelchOverride )
|
||||
{
|
||||
mAllowSquelchOverride = allowSquelchOverride;
|
||||
|
||||
mSquelchMode = SquelchMode.AUTOMATIC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSquelchMode( SquelchMode mode )
|
||||
{
|
||||
if( mode == SquelchMode.AUTOMATIC ||
|
||||
( mode == SquelchMode.NONE && mAllowSquelchOverride ) )
|
||||
{
|
||||
mSquelchMode = mode;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user