├── .github
├── ISSUE_TEMPLATE
│ ├── bug-report.md
│ ├── config.yml
│ └── feature_request.md
└── workflows
│ ├── gradle.yml
│ └── nightly.yml
├── .gitignore
├── .idea
├── dictionaries
│ └── denny.xml
├── misc.xml
└── vcs.xml
├── CHANGELOG
├── LICENSE
├── README.md
├── artifacts
└── sdrplay-api-headers
│ ├── v3_07
│ ├── sdrplay_api.h
│ ├── sdrplay_api_callback.h
│ ├── sdrplay_api_control.h
│ ├── sdrplay_api_dev.h
│ ├── sdrplay_api_rsp1a.h
│ ├── sdrplay_api_rsp2.h
│ ├── sdrplay_api_rspDuo.h
│ ├── sdrplay_api_rspDx.h
│ ├── sdrplay_api_rx_channel.h
│ └── sdrplay_api_tuner.h
│ ├── v3_08
│ ├── sdrplay_api.h
│ ├── sdrplay_api_callback.h
│ ├── sdrplay_api_control.h
│ ├── sdrplay_api_dev.h
│ ├── sdrplay_api_rsp1a.h
│ ├── sdrplay_api_rsp2.h
│ ├── sdrplay_api_rspDuo.h
│ ├── sdrplay_api_rspDx.h
│ ├── sdrplay_api_rx_channel.h
│ └── sdrplay_api_tuner.h
│ └── v3_15
│ ├── sdrplay_api.h
│ ├── sdrplay_api_callback.h
│ ├── sdrplay_api_control.h
│ ├── sdrplay_api_dev.h
│ ├── sdrplay_api_rsp1a.h
│ ├── sdrplay_api_rsp2.h
│ ├── sdrplay_api_rspDuo.h
│ ├── sdrplay_api_rspDx.h
│ ├── sdrplay_api_rx_channel.h
│ └── sdrplay_api_tuner.h
├── build.gradle
├── copyright.template
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── sdr-trunk.ipr
├── settings.gradle
└── src
├── main
├── java
│ ├── io
│ │ └── github
│ │ │ └── dsheirer
│ │ │ ├── alias
│ │ │ ├── Alias.java
│ │ │ ├── AliasFactory.java
│ │ │ ├── AliasList.java
│ │ │ ├── AliasModel.java
│ │ │ ├── action
│ │ │ │ ├── AliasAction.java
│ │ │ │ ├── AliasActionManager.java
│ │ │ │ ├── AliasActionType.java
│ │ │ │ ├── RecurringAction.java
│ │ │ │ ├── beep
│ │ │ │ │ └── BeepAction.java
│ │ │ │ ├── clip
│ │ │ │ │ └── ClipAction.java
│ │ │ │ └── script
│ │ │ │ │ └── ScriptAction.java
│ │ │ └── id
│ │ │ │ ├── AliasID.java
│ │ │ │ ├── AliasIDType.java
│ │ │ │ ├── broadcast
│ │ │ │ └── BroadcastChannel.java
│ │ │ │ ├── dcs
│ │ │ │ └── Dcs.java
│ │ │ │ ├── esn
│ │ │ │ └── Esn.java
│ │ │ │ ├── legacy
│ │ │ │ ├── fleetsync
│ │ │ │ │ └── FleetsyncID.java
│ │ │ │ ├── mdc
│ │ │ │ │ └── MDC1200ID.java
│ │ │ │ ├── mobileID
│ │ │ │ │ └── Min.java
│ │ │ │ ├── mpt1327
│ │ │ │ │ └── MPT1327ID.java
│ │ │ │ ├── nonrecordable
│ │ │ │ │ └── NonRecordable.java
│ │ │ │ ├── siteID
│ │ │ │ │ └── SiteID.java
│ │ │ │ ├── talkgroup
│ │ │ │ │ └── LegacyTalkgroupID.java
│ │ │ │ └── uniqueID
│ │ │ │ │ └── UniqueID.java
│ │ │ │ ├── lojack
│ │ │ │ └── LoJackFunctionAndID.java
│ │ │ │ ├── priority
│ │ │ │ └── Priority.java
│ │ │ │ ├── radio
│ │ │ │ ├── P25FullyQualifiedRadio.java
│ │ │ │ ├── Radio.java
│ │ │ │ ├── RadioFormat.java
│ │ │ │ ├── RadioFormatter.java
│ │ │ │ └── RadioRange.java
│ │ │ │ ├── record
│ │ │ │ └── Record.java
│ │ │ │ ├── status
│ │ │ │ ├── UnitStatusID.java
│ │ │ │ └── UserStatusID.java
│ │ │ │ ├── talkgroup
│ │ │ │ ├── P25FullyQualifiedTalkgroup.java
│ │ │ │ ├── Talkgroup.java
│ │ │ │ ├── TalkgroupFormat.java
│ │ │ │ ├── TalkgroupFormatter.java
│ │ │ │ └── TalkgroupRange.java
│ │ │ │ └── tone
│ │ │ │ └── TonesID.java
│ │ │ ├── audio
│ │ │ ├── AbstractAudioModule.java
│ │ │ ├── AudioEvent.java
│ │ │ ├── AudioException.java
│ │ │ ├── AudioFormats.java
│ │ │ ├── AudioModule.java
│ │ │ ├── AudioSegment.java
│ │ │ ├── AudioSegmentBroadcaster.java
│ │ │ ├── AudioUtils.java
│ │ │ ├── DuplicateCallDetector.java
│ │ │ ├── IAudioController.java
│ │ │ ├── IAudioSegmentListener.java
│ │ │ ├── IAudioSegmentProvider.java
│ │ │ ├── broadcast
│ │ │ │ ├── AbstractAudioBroadcaster.java
│ │ │ │ ├── AudioRecording.java
│ │ │ │ ├── AudioStreamingBroadcaster.java
│ │ │ │ ├── AudioStreamingManager.java
│ │ │ │ ├── BroadcastConfiguration.java
│ │ │ │ ├── BroadcastEvent.java
│ │ │ │ ├── BroadcastFactory.java
│ │ │ │ ├── BroadcastFormat.java
│ │ │ │ ├── BroadcastModel.java
│ │ │ │ ├── BroadcastServerType.java
│ │ │ │ ├── BroadcastState.java
│ │ │ │ ├── BroadcastStatusPanel.java
│ │ │ │ ├── ConfiguredBroadcast.java
│ │ │ │ ├── IBroadcastMetadataUpdater.java
│ │ │ │ ├── PatchGroupStreamingOption.java
│ │ │ │ ├── broadcastify
│ │ │ │ │ ├── BroadcastifyCallBroadcaster.java
│ │ │ │ │ ├── BroadcastifyCallBuilder.java
│ │ │ │ │ ├── BroadcastifyCallConfiguration.java
│ │ │ │ │ ├── BroadcastifyFeedConfiguration.java
│ │ │ │ │ └── FormField.java
│ │ │ │ ├── icecast
│ │ │ │ │ ├── IcecastAudioBroadcaster.java
│ │ │ │ │ ├── IcecastBroadcastMetadataUpdater.java
│ │ │ │ │ ├── IcecastConfiguration.java
│ │ │ │ │ ├── IcecastHTTPAudioBroadcaster.java
│ │ │ │ │ ├── IcecastHTTPConfiguration.java
│ │ │ │ │ ├── IcecastHeader.java
│ │ │ │ │ ├── IcecastMetadata.java
│ │ │ │ │ ├── IcecastTCPAudioBroadcaster.java
│ │ │ │ │ ├── IcecastTCPConfiguration.java
│ │ │ │ │ └── codec
│ │ │ │ │ │ ├── IcecastCodecFactory.java
│ │ │ │ │ │ └── IcecastEncoder.java
│ │ │ │ ├── openmhz
│ │ │ │ │ ├── FormField.java
│ │ │ │ │ ├── OpenMHzBroadcaster.java
│ │ │ │ │ ├── OpenMHzBuilder.java
│ │ │ │ │ ├── OpenMHzConfiguration.java
│ │ │ │ │ ├── OpenMHzEditor.java
│ │ │ │ │ └── OpenMHzFeedConfiguration.java
│ │ │ │ ├── rdioscanner
│ │ │ │ │ ├── FormField.java
│ │ │ │ │ ├── RdioScannerBroadcaster.java
│ │ │ │ │ ├── RdioScannerBuilder.java
│ │ │ │ │ ├── RdioScannerConfiguration.java
│ │ │ │ │ └── RdioScannerFeedConfiguration.java
│ │ │ │ └── shoutcast
│ │ │ │ │ ├── v1
│ │ │ │ │ ├── ShoutcastMetadata.java
│ │ │ │ │ ├── ShoutcastV1AudioBroadcaster.java
│ │ │ │ │ ├── ShoutcastV1BroadcastMetadataUpdater.java
│ │ │ │ │ └── ShoutcastV1Configuration.java
│ │ │ │ │ └── v2
│ │ │ │ │ ├── ShoutcastV2AudioStreamingBroadcaster.java
│ │ │ │ │ ├── ShoutcastV2Configuration.java
│ │ │ │ │ └── ultravox
│ │ │ │ │ ├── AuthenticateBroadcast.java
│ │ │ │ │ ├── CacheableXMLMetadata.java
│ │ │ │ │ ├── ConfigureIcyGenre.java
│ │ │ │ │ ├── ConfigureIcyName.java
│ │ │ │ │ ├── ConfigureIcyPublic.java
│ │ │ │ │ ├── ConfigureIcyURL.java
│ │ │ │ │ ├── FlushCachedMetadata.java
│ │ │ │ │ ├── MP3Audio.java
│ │ │ │ │ ├── NegotiateBufferSize.java
│ │ │ │ │ ├── NegotiateMaxPayloadSize.java
│ │ │ │ │ ├── PassThroughXMLMetadata.java
│ │ │ │ │ ├── RequestCipher.java
│ │ │ │ │ ├── SetupBroadcast.java
│ │ │ │ │ ├── Standby.java
│ │ │ │ │ ├── StreamMimeType.java
│ │ │ │ │ ├── TerminateBroadcast.java
│ │ │ │ │ ├── UltravoxDecoder.java
│ │ │ │ │ ├── UltravoxEncoder.java
│ │ │ │ │ ├── UltravoxMessage.java
│ │ │ │ │ ├── UltravoxMessageClass.java
│ │ │ │ │ ├── UltravoxMessageFactory.java
│ │ │ │ │ ├── UltravoxMessageType.java
│ │ │ │ │ ├── UltravoxMetadata.java
│ │ │ │ │ └── UltravoxProtocolFactory.java
│ │ │ ├── codec
│ │ │ │ └── mbe
│ │ │ │ │ ├── AmbeAudioModule.java
│ │ │ │ │ ├── IEncryptionSyncParameters.java
│ │ │ │ │ ├── ImbeAudioModule.java
│ │ │ │ │ ├── JmbeAudioModule.java
│ │ │ │ │ ├── MBECallSequence.java
│ │ │ │ │ ├── MBECallSequenceConverter.java
│ │ │ │ │ ├── MBECallSequenceReader.java
│ │ │ │ │ └── MBECallSequenceRecorder.java
│ │ │ ├── convert
│ │ │ │ ├── AudioFrames.java
│ │ │ │ ├── ChannelMode.java
│ │ │ │ ├── IAudioConverter.java
│ │ │ │ ├── ISilenceGenerator.java
│ │ │ │ ├── InputAudioFormat.java
│ │ │ │ ├── LameFactory.java
│ │ │ │ ├── MP3AudioConverter.java
│ │ │ │ ├── MP3AudioFrames.java
│ │ │ │ ├── MP3BitRate.java
│ │ │ │ ├── MP3FrameInspector.java
│ │ │ │ ├── MP3FrameTools.java
│ │ │ │ ├── MP3Header.java
│ │ │ │ ├── MP3SampleRate.java
│ │ │ │ ├── MP3Setting.java
│ │ │ │ ├── MP3SilenceGenerator.java
│ │ │ │ ├── MPEGLayer.java
│ │ │ │ ├── MPEGVersion.java
│ │ │ │ └── thumbdv
│ │ │ │ │ ├── ThumbDv.java
│ │ │ │ │ └── message
│ │ │ │ │ ├── AmbeMessage.java
│ │ │ │ │ ├── AmbeMessageFactory.java
│ │ │ │ │ ├── InitializeOption.java
│ │ │ │ │ ├── PacketField.java
│ │ │ │ │ ├── VocoderRate.java
│ │ │ │ │ ├── request
│ │ │ │ │ ├── AmbeRequest.java
│ │ │ │ │ ├── DecodeSpeechRequest.java
│ │ │ │ │ ├── EncodeSpeechRequest.java
│ │ │ │ │ ├── GetConfigRequest.java
│ │ │ │ │ ├── InitializeCodecRequest.java
│ │ │ │ │ ├── ProductIdRequest.java
│ │ │ │ │ ├── ResetRequest.java
│ │ │ │ │ ├── SetChannelFormatRequest.java
│ │ │ │ │ ├── SetChannelRequest.java
│ │ │ │ │ ├── SetPacketModeRequest.java
│ │ │ │ │ ├── SetSpeechFormatRequest.java
│ │ │ │ │ ├── SetVocoderParametersRequest.java
│ │ │ │ │ ├── SetVocoderRequest.java
│ │ │ │ │ └── VersionRequest.java
│ │ │ │ │ └── response
│ │ │ │ │ ├── AmbeResponse.java
│ │ │ │ │ ├── DecodeSpeechResponse.java
│ │ │ │ │ ├── EncodeSpeechResponse.java
│ │ │ │ │ ├── GetConfigResponse.java
│ │ │ │ │ ├── InitializeCodecResponse.java
│ │ │ │ │ ├── ProductIdResponse.java
│ │ │ │ │ ├── ReadyResponse.java
│ │ │ │ │ ├── ResetResponse.java
│ │ │ │ │ ├── SetChannelFormatResponse.java
│ │ │ │ │ ├── SetChannelResponse.java
│ │ │ │ │ ├── SetPacketModeResponse.java
│ │ │ │ │ ├── SetSpeechFormatResponse.java
│ │ │ │ │ ├── SetVocoderParameterResponse.java
│ │ │ │ │ ├── SetVocoderResponse.java
│ │ │ │ │ ├── UnknownResponse.java
│ │ │ │ │ └── VersionResponse.java
│ │ │ ├── invert
│ │ │ │ ├── AudioAdapter.java
│ │ │ │ ├── AudioInverter.java
│ │ │ │ ├── AudioType.java
│ │ │ │ ├── IAudioTypeListener.java
│ │ │ │ └── InversionFrequency.java
│ │ │ ├── playback
│ │ │ │ ├── AudioChannelPanel.java
│ │ │ │ ├── AudioChannelsPanel.java
│ │ │ │ ├── AudioOutput.java
│ │ │ │ ├── AudioPanel.java
│ │ │ │ ├── AudioPlaybackManager.java
│ │ │ │ ├── MonoAudioOutput.java
│ │ │ │ └── StereoAudioOutput.java
│ │ │ └── squelch
│ │ │ │ ├── ISquelchStateListener.java
│ │ │ │ ├── ISquelchStateProvider.java
│ │ │ │ ├── SquelchMode.java
│ │ │ │ ├── SquelchState.java
│ │ │ │ └── SquelchStateEvent.java
│ │ │ ├── bits
│ │ │ ├── BinaryMessage.java
│ │ │ ├── BitSetFullException.java
│ │ │ ├── CorrectedBinaryMessage.java
│ │ │ ├── FragmentedIntField.java
│ │ │ ├── IBinarySymbolProcessor.java
│ │ │ ├── ISyncProcessor.java
│ │ │ ├── IntField.java
│ │ │ ├── LongField.java
│ │ │ ├── MessageFramer.java
│ │ │ ├── MultiSyncPatternMatcher.java
│ │ │ ├── SoftSyncDetector.java
│ │ │ ├── SyncDetector.java
│ │ │ ├── SyncPattern.java
│ │ │ └── SyncPatternMatcher.java
│ │ │ ├── buffer
│ │ │ ├── AbstractNativeBuffer.java
│ │ │ ├── AbstractNativeBufferFactory.java
│ │ │ ├── BooleanAveragingBuffer.java
│ │ │ ├── ByteNativeBuffer.java
│ │ │ ├── ByteNativeBufferFactory.java
│ │ │ ├── CircularBuffer.java
│ │ │ ├── ComplexCircularBuffer.java
│ │ │ ├── ComplexTappedCircularBuffer.java
│ │ │ ├── DcCorrectionManager.java
│ │ │ ├── DoubleCircularBuffer.java
│ │ │ ├── FloatAveragingBuffer.java
│ │ │ ├── FloatCircularBuffer.java
│ │ │ ├── FloatNativeBuffer.java
│ │ │ ├── INativeBuffer.java
│ │ │ ├── INativeBufferFactory.java
│ │ │ ├── INativeBufferProvider.java
│ │ │ ├── NativeBufferPoisonPill.java
│ │ │ ├── NativeSampleDelayBuffer.java
│ │ │ ├── SignedByteNativeBuffer.java
│ │ │ ├── SignedByteNativeBufferFactory.java
│ │ │ └── airspy
│ │ │ │ ├── AirspyBufferIterator.java
│ │ │ │ ├── AirspyBufferIteratorScalar.java
│ │ │ │ ├── AirspyBufferIteratorVector128Bits.java
│ │ │ │ ├── AirspyBufferIteratorVector256Bits.java
│ │ │ │ ├── AirspyBufferIteratorVector512Bits.java
│ │ │ │ ├── AirspyBufferIteratorVector64Bits.java
│ │ │ │ ├── AirspyInterleavedBufferIteratorScalar.java
│ │ │ │ ├── AirspyInterleavedBufferIteratorVector128Bits.java
│ │ │ │ ├── AirspyInterleavedBufferIteratorVector256Bits.java
│ │ │ │ ├── AirspyInterleavedBufferIteratorVector512Bits.java
│ │ │ │ ├── AirspyInterleavedBufferIteratorVector64Bits.java
│ │ │ │ ├── AirspyNativeBuffer.java
│ │ │ │ ├── AirspyNativeBufferFactory.java
│ │ │ │ ├── IAirspySampleConverter.java
│ │ │ │ ├── ScalarPackedSampleConverter.java
│ │ │ │ ├── ScalarUnpackedSampleConverter.java
│ │ │ │ ├── VectorUnpackedSampleConverter.java
│ │ │ │ └── hf
│ │ │ │ ├── AirspyHfNativeBuffer.java
│ │ │ │ └── AirspyHfNativeBufferFactory.java
│ │ │ ├── channel
│ │ │ ├── IChannelDescriptor.java
│ │ │ ├── details
│ │ │ │ └── ChannelDetailPanel.java
│ │ │ ├── metadata
│ │ │ │ ├── Attribute.java
│ │ │ │ ├── AttributeChangeRequest.java
│ │ │ │ ├── ChannelAndMetadata.java
│ │ │ │ ├── ChannelMetadata.java
│ │ │ │ ├── ChannelMetadataField.java
│ │ │ │ ├── ChannelMetadataModel.java
│ │ │ │ ├── ChannelMetadataPanel.java
│ │ │ │ ├── IAttributeChangeRequestListener.java
│ │ │ │ ├── IAttributeChangeRequestProvider.java
│ │ │ │ ├── IChannelMetadataUpdateListener.java
│ │ │ │ └── NowPlayingPanel.java
│ │ │ └── state
│ │ │ │ ├── AbstractChannelState.java
│ │ │ │ ├── AbstractDecoderState.java
│ │ │ │ ├── ChangeChannelTimeoutEvent.java
│ │ │ │ ├── DecoderState.java
│ │ │ │ ├── DecoderStateEvent.java
│ │ │ │ ├── DecoderStateNotificationEventCache.java
│ │ │ │ ├── IDecoderStateEventListener.java
│ │ │ │ ├── IDecoderStateEventProvider.java
│ │ │ │ ├── IStateMachineListener.java
│ │ │ │ ├── MultiChannelState.java
│ │ │ │ ├── SingleChannelState.java
│ │ │ │ ├── State.java
│ │ │ │ ├── StateMachine.java
│ │ │ │ ├── StateMonitoringSquelchController.java
│ │ │ │ └── TimeslotDecoderState.java
│ │ │ ├── controller
│ │ │ ├── ControllerPanel.java
│ │ │ ├── NamingThreadFactory.java
│ │ │ ├── channel
│ │ │ │ ├── AutoStartChannelModel.java
│ │ │ │ ├── Channel.java
│ │ │ │ ├── ChannelAutoStartFrame.java
│ │ │ │ ├── ChannelConfigurationChangeNotification.java
│ │ │ │ ├── ChannelConversionRequest.java
│ │ │ │ ├── ChannelEvent.java
│ │ │ │ ├── ChannelEventListener.java
│ │ │ │ ├── ChannelException.java
│ │ │ │ ├── ChannelModel.java
│ │ │ │ ├── ChannelProcessingManager.java
│ │ │ │ ├── ChannelSelectionManager.java
│ │ │ │ ├── ConfigurationValidationException.java
│ │ │ │ ├── IChannelEventListener.java
│ │ │ │ ├── IChannelEventProvider.java
│ │ │ │ ├── event
│ │ │ │ │ ├── ChannelStartProcessingRequest.java
│ │ │ │ │ ├── ChannelStopProcessingRequest.java
│ │ │ │ │ └── PreloadDataContent.java
│ │ │ │ └── map
│ │ │ │ │ ├── ChannelMap.java
│ │ │ │ │ ├── ChannelMapEvent.java
│ │ │ │ │ ├── ChannelMapModel.java
│ │ │ │ │ ├── ChannelRange.java
│ │ │ │ │ └── ChannelRangeModel.java
│ │ │ └── config
│ │ │ │ └── Configuration.java
│ │ │ ├── dsp
│ │ │ ├── NRZDecoder.java
│ │ │ ├── afsk
│ │ │ │ ├── AFSK1200Decoder.java
│ │ │ │ ├── AFSK1200DecoderInstrumented.java
│ │ │ │ ├── AFSKSampleBuffer.java
│ │ │ │ ├── AFSKSampleBufferInstrumented.java
│ │ │ │ ├── AFSKTimingErrorDetector.java
│ │ │ │ └── AFSKTimingErrorDetectorInstrumented.java
│ │ │ ├── am
│ │ │ │ ├── AmDemodulatorCalibration.java
│ │ │ │ ├── AmDemodulatorFactory.java
│ │ │ │ ├── IAmDemodulator.java
│ │ │ │ ├── ScalarAMDemodulator.java
│ │ │ │ ├── SquelchingAMDemodulator.java
│ │ │ │ ├── VectorAMDemodulator128.java
│ │ │ │ ├── VectorAMDemodulator256.java
│ │ │ │ ├── VectorAMDemodulator512.java
│ │ │ │ └── VectorAMDemodulator64.java
│ │ │ ├── filter
│ │ │ │ ├── BooleanAveragingFilter.java
│ │ │ │ ├── FilterFactory.java
│ │ │ │ ├── FloatFIRFilter.java
│ │ │ │ ├── GoertzelFilter.java
│ │ │ │ ├── IIRBiQuadraticFilter.java
│ │ │ │ ├── LTRPulseShapingFilter.java
│ │ │ │ ├── SquaringFilter.java
│ │ │ │ ├── channelizer
│ │ │ │ │ ├── AbstractComplexPolyphaseChannelizer.java
│ │ │ │ │ ├── ChannelCalculator.java
│ │ │ │ │ ├── ComplexPolyphaseChannelizerM2.java
│ │ │ │ │ ├── PolyphaseChannelManager.java
│ │ │ │ │ ├── PolyphaseChannelSource.java
│ │ │ │ │ ├── SampleTimestampManager.java
│ │ │ │ │ ├── SynthesisFilterManager.java
│ │ │ │ │ ├── TwoChannelSynthesizerM2.java
│ │ │ │ │ └── output
│ │ │ │ │ │ ├── ChannelOutputProcessor.java
│ │ │ │ │ │ ├── IPolyphaseChannelOutputProcessor.java
│ │ │ │ │ │ ├── MixerAssembler.java
│ │ │ │ │ │ ├── OneChannelMixerAssembler.java
│ │ │ │ │ │ ├── OneChannelOutputProcessor.java
│ │ │ │ │ │ ├── SampleAssembler.java
│ │ │ │ │ │ ├── TwoChannelMixerAssembler.java
│ │ │ │ │ │ └── TwoChannelOutputProcessor.java
│ │ │ │ ├── cic
│ │ │ │ │ └── PrimeCicDecimationFilter.java
│ │ │ │ ├── dc
│ │ │ │ │ ├── DCRemovalFilterLyons.java
│ │ │ │ │ ├── DcRemovalFilterFactory.java
│ │ │ │ │ ├── IDcRemovalFilter.java
│ │ │ │ │ ├── IIRSinglePoleDCRemovalFilter.java
│ │ │ │ │ ├── ScalarDcRemovalFilter.java
│ │ │ │ │ └── VectorDcRemovalFilter.java
│ │ │ │ ├── decimate
│ │ │ │ │ ├── DecimationFilterFactory.java
│ │ │ │ │ ├── IRealDecimationFilter.java
│ │ │ │ │ ├── RealDecimateX0Filter.java
│ │ │ │ │ ├── RealDecimateX1024Filter.java
│ │ │ │ │ ├── RealDecimateX128Filter.java
│ │ │ │ │ ├── RealDecimateX16Filter.java
│ │ │ │ │ ├── RealDecimateX256Filter.java
│ │ │ │ │ ├── RealDecimateX2Filter.java
│ │ │ │ │ ├── RealDecimateX32Filter.java
│ │ │ │ │ ├── RealDecimateX4Filter.java
│ │ │ │ │ ├── RealDecimateX512Filter.java
│ │ │ │ │ ├── RealDecimateX64Filter.java
│ │ │ │ │ └── RealDecimateX8Filter.java
│ │ │ │ ├── design
│ │ │ │ │ ├── FilterDesignException.java
│ │ │ │ │ ├── FilterView.css
│ │ │ │ │ ├── FilterView.java
│ │ │ │ │ ├── FilterViewer.java
│ │ │ │ │ ├── FilterViewerLauncher.java
│ │ │ │ │ └── HalfBandDecimationFilterAnalysis.java
│ │ │ │ ├── equalizer
│ │ │ │ │ └── CMAEqualizer.java
│ │ │ │ ├── fir
│ │ │ │ │ ├── FIRFilter.java
│ │ │ │ │ ├── FIRFilterSpecification.java
│ │ │ │ │ ├── complex
│ │ │ │ │ │ ├── IComplexFilter.java
│ │ │ │ │ │ ├── ScalarComplexFIRFilter.java
│ │ │ │ │ │ ├── VectorComplexFIRFilter128Bit.java
│ │ │ │ │ │ ├── VectorComplexFIRFilter64Bit.java
│ │ │ │ │ │ └── VectorComplexFIRFilterDefaultBit.java
│ │ │ │ │ ├── real
│ │ │ │ │ │ ├── IRealFilter.java
│ │ │ │ │ │ ├── RealFIRFilter.java
│ │ │ │ │ │ ├── VectorRealFIRFilter128Bit.java
│ │ │ │ │ │ ├── VectorRealFIRFilter256Bit.java
│ │ │ │ │ │ ├── VectorRealFIRFilter512Bit.java
│ │ │ │ │ │ ├── VectorRealFIRFilter64Bit.java
│ │ │ │ │ │ └── VectorRealFIRFilterDefaultBit.java
│ │ │ │ │ └── remez
│ │ │ │ │ │ ├── FIRLinearPhaseFilterType.java
│ │ │ │ │ │ ├── Grid.java
│ │ │ │ │ │ ├── PolyphaseChannelizerDesigner.java
│ │ │ │ │ │ ├── PolyphaseChannelizerFilterFactory.java
│ │ │ │ │ │ ├── RemezFIRFilterDesigner.java
│ │ │ │ │ │ ├── RemezFIRFilterDesigner2.java
│ │ │ │ │ │ └── RemezFIRFilterDesignerWithLagrange.java
│ │ │ │ ├── halfband
│ │ │ │ │ ├── RealHalfBandDecimationFilter.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter11Tap128Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter11Tap256Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter11Tap512Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter11Tap64Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter128Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter15Tap128Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter15Tap256Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter15Tap512Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter15Tap64Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter23Tap128Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter23Tap256Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter23Tap512Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter23Tap64Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter256Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter512Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter63Tap128Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter63Tap256Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter63Tap512Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter63Tap64Bit.java
│ │ │ │ │ ├── VectorRealHalfBandDecimationFilter64Bit.java
│ │ │ │ │ └── VectorRealHalfBandDecimationFilterDefaultBit.java
│ │ │ │ ├── hilbert
│ │ │ │ │ ├── HilbertTransform.java
│ │ │ │ │ ├── HilbertTransformFactory.java
│ │ │ │ │ ├── ScalarHilbertTransform.java
│ │ │ │ │ ├── VectorHilbertTransform128Bits.java
│ │ │ │ │ ├── VectorHilbertTransform256Bits.java
│ │ │ │ │ ├── VectorHilbertTransform512Bits.java
│ │ │ │ │ ├── VectorHilbertTransform64Bits.java
│ │ │ │ │ └── VectorHilbertTransformDefaultBits.java
│ │ │ │ ├── iir
│ │ │ │ │ ├── DeemphasisFilter.java
│ │ │ │ │ └── SinglePoleIirFilter.java
│ │ │ │ ├── interpolator
│ │ │ │ │ ├── Interpolator.java
│ │ │ │ │ ├── InterpolatorFactory.java
│ │ │ │ │ ├── InterpolatorScalar.java
│ │ │ │ │ ├── InterpolatorVector128.java
│ │ │ │ │ ├── InterpolatorVector256.java
│ │ │ │ │ ├── InterpolatorVector64.java
│ │ │ │ │ ├── PhaseAwareLinearInterpolator.java
│ │ │ │ │ └── VectorInterpolator.java
│ │ │ │ ├── resample
│ │ │ │ │ └── RealResampler.java
│ │ │ │ └── smoothing
│ │ │ │ │ ├── GaussianSmoothingFilter.java
│ │ │ │ │ ├── NoSmoothingFilter.java
│ │ │ │ │ ├── RectangularSmoothingFilter.java
│ │ │ │ │ ├── SmoothingFilter.java
│ │ │ │ │ └── TriangularSmoothingFilter.java
│ │ │ ├── fm
│ │ │ │ ├── FmDemodulatorFactory.java
│ │ │ │ ├── IDemodulator.java
│ │ │ │ ├── ISquelchingDemodulator.java
│ │ │ │ ├── ScalarFMDemodulator.java
│ │ │ │ ├── SquelchingFMDemodulator.java
│ │ │ │ ├── VectorFMDemodulator.java
│ │ │ │ ├── VectorFMDemodulator128.java
│ │ │ │ ├── VectorFMDemodulator256.java
│ │ │ │ ├── VectorFMDemodulator512.java
│ │ │ │ └── VectorFMDemodulator64.java
│ │ │ ├── fsk
│ │ │ │ ├── ISyncStateListener.java
│ │ │ │ ├── LTRDecoder.java
│ │ │ │ ├── LTRDecoderInstrumented.java
│ │ │ │ ├── SampleBuffer.java
│ │ │ │ ├── SampleBufferInstrumented.java
│ │ │ │ ├── SyncState.java
│ │ │ │ ├── SynchronizationMonitor.java
│ │ │ │ ├── ZeroCrossingErrorDetector.java
│ │ │ │ └── ZeroCrossingErrorDetectorInstrumented.java
│ │ │ ├── gain
│ │ │ │ ├── AudioGainAndDcFilter.java
│ │ │ │ ├── AutomaticGainControl.java
│ │ │ │ ├── DirectGainControl.java
│ │ │ │ ├── GainController.java
│ │ │ │ ├── LegacyComplexGain.java
│ │ │ │ ├── NonClippingGain.java
│ │ │ │ └── complex
│ │ │ │ │ ├── ComplexGain.java
│ │ │ │ │ ├── ComplexGainControl.java
│ │ │ │ │ ├── ComplexGainFactory.java
│ │ │ │ │ ├── IComplexGainControl.java
│ │ │ │ │ ├── ScalarComplexGain.java
│ │ │ │ │ ├── VectorComplexGain.java
│ │ │ │ │ └── VectorComplexGainControl.java
│ │ │ ├── magnitude
│ │ │ │ ├── IMagnitudeCalculator.java
│ │ │ │ ├── MagnitudeFactory.java
│ │ │ │ ├── ScalarMagnitudeCalculator.java
│ │ │ │ ├── VectorMagnitudeCalculator128.java
│ │ │ │ ├── VectorMagnitudeCalculator256.java
│ │ │ │ ├── VectorMagnitudeCalculator512.java
│ │ │ │ └── VectorMagnitudeCalculator64.java
│ │ │ ├── mixer
│ │ │ │ ├── ComplexMixer.java
│ │ │ │ ├── ComplexMixerFactory.java
│ │ │ │ ├── ScalarComplexMixer.java
│ │ │ │ └── VectorComplexMixer.java
│ │ │ ├── oscillator
│ │ │ │ ├── AWGNOscillator.java
│ │ │ │ ├── AbstractOscillator.java
│ │ │ │ ├── FS4DownConverter.java
│ │ │ │ ├── FS4UpConverter.java
│ │ │ │ ├── IComplexOscillator.java
│ │ │ │ ├── IOscillator.java
│ │ │ │ ├── IRealOscillator.java
│ │ │ │ ├── OscillatorFactory.java
│ │ │ │ ├── ScalarComplexOscillator.java
│ │ │ │ ├── ScalarRealOscillator.java
│ │ │ │ ├── VectorComplexOscillator.java
│ │ │ │ └── VectorRealOscillator.java
│ │ │ ├── psk
│ │ │ │ ├── DQPSKDecisionDirectedDemodulator.java
│ │ │ │ ├── DQPSKDecisionDirectedDemodulatorInstrumented.java
│ │ │ │ ├── DQPSKDecisionDirectedSymbolEvaluator.java
│ │ │ │ ├── DQPSKGardnerDemodulator.java
│ │ │ │ ├── DQPSKGardnerDemodulatorInstrumented.java
│ │ │ │ ├── DQPSKGardnerSymbolEvaluator.java
│ │ │ │ ├── GardnerDetector.java
│ │ │ │ ├── IPSKSymbolEvaluator.java
│ │ │ │ ├── IQPSKSymbolDecoder.java
│ │ │ │ ├── ISymbolPhaseErrorCalculator.java
│ │ │ │ ├── InterpolatingSampleBuffer.java
│ │ │ │ ├── InterpolatingSampleBufferInstrumented.java
│ │ │ │ ├── LSMConstellationDecoder.java
│ │ │ │ ├── PSKDemodulator.java
│ │ │ │ ├── QPSKStarSlicer.java
│ │ │ │ ├── QPSKSymbolDecoder.java
│ │ │ │ ├── QPSKSymbolPhaseErrorCalculator.java
│ │ │ │ ├── SymbolDecisionData.java
│ │ │ │ ├── SymbolInversion.java
│ │ │ │ ├── dqpsk
│ │ │ │ │ ├── DQPSKDemodulator.java
│ │ │ │ │ ├── DQPSKDemodulatorFactory.java
│ │ │ │ │ ├── DQPSKDemodulatorScalar.java
│ │ │ │ │ ├── DQPSKDemodulatorVector128.java
│ │ │ │ │ ├── DQPSKDemodulatorVector256.java
│ │ │ │ │ ├── DQPSKDemodulatorVector512.java
│ │ │ │ │ └── DQPSKDemodulatorVector64.java
│ │ │ │ └── pll
│ │ │ │ │ ├── AdaptivePLLBandwidthMonitor.java
│ │ │ │ │ ├── CostasLoop.java
│ │ │ │ │ ├── FrequencyCorrectionSyncMonitor.java
│ │ │ │ │ ├── IFrequencyErrorProcessor.java
│ │ │ │ │ ├── IPhaseLockedLoop.java
│ │ │ │ │ ├── PLLBandwidth.java
│ │ │ │ │ └── QPSKPhaseInversionCalculator.java
│ │ │ ├── squelch
│ │ │ │ ├── AdaptiveSquelch.java
│ │ │ │ ├── ISquelchConfiguration.java
│ │ │ │ ├── PowerMonitor.java
│ │ │ │ └── PowerSquelch.java
│ │ │ ├── symbol
│ │ │ │ ├── BinaryToByteBufferAssembler.java
│ │ │ │ ├── Dibit.java
│ │ │ │ ├── DibitDelayBuffer.java
│ │ │ │ ├── DibitToByteBufferAssembler.java
│ │ │ │ ├── FrameSync.java
│ │ │ │ ├── ISyncDetectListener.java
│ │ │ │ ├── QPSKCarrierLock.java
│ │ │ │ ├── SymbolEvent.java
│ │ │ │ └── SyncDetectProvider.java
│ │ │ └── window
│ │ │ │ ├── ScalarWindow.java
│ │ │ │ ├── VectorWindow.java
│ │ │ │ ├── Window.java
│ │ │ │ ├── WindowFactory.java
│ │ │ │ └── WindowType.java
│ │ │ ├── edac
│ │ │ ├── BCH_63_16_11.java
│ │ │ ├── BerlekempMassey.java
│ │ │ ├── Binary40_9_16.java
│ │ │ ├── CRC.java
│ │ │ ├── CRC16.java
│ │ │ ├── CRCDMR.java
│ │ │ ├── CRCFleetsync.java
│ │ │ ├── CRCLJ.java
│ │ │ ├── CRCLTR.java
│ │ │ ├── CRCP25.java
│ │ │ ├── CRCPassport.java
│ │ │ ├── CRCUtil.java
│ │ │ ├── Checksum.java
│ │ │ ├── ChecksumTest.java
│ │ │ ├── ChecksumType.java
│ │ │ ├── Checksum_5_DMR.java
│ │ │ ├── Golay18.java
│ │ │ ├── Golay23.java
│ │ │ ├── Golay24.java
│ │ │ ├── Hamming10.java
│ │ │ ├── Hamming13.java
│ │ │ ├── Hamming15.java
│ │ │ ├── Hamming16.java
│ │ │ ├── Hamming17.java
│ │ │ ├── IHamming.java
│ │ │ ├── RS_12_9_DMR.java
│ │ │ ├── ReedSolomon_24_12_13_P25.java
│ │ │ ├── ReedSolomon_24_16_9_P25.java
│ │ │ ├── ReedSolomon_44_16_29_P25.java
│ │ │ ├── ReedSolomon_63_35_29_P25.java
│ │ │ ├── ReedSolomon_63_47_17_P25.java
│ │ │ ├── ReedSolomon_63_P25.java
│ │ │ ├── bch
│ │ │ │ ├── BCH.java
│ │ │ │ ├── BCH_255.java
│ │ │ │ ├── BCH_63.java
│ │ │ │ ├── BCH_63_16_23_P25.java
│ │ │ │ └── GaloisFieldPrimitiveFinder.java
│ │ │ └── trellis
│ │ │ │ ├── DMR_3_4_Node.java
│ │ │ │ ├── Node.java
│ │ │ │ ├── P25_1_2_Node.java
│ │ │ │ ├── P25_3_4_Node.java
│ │ │ │ ├── Path.java
│ │ │ │ ├── ViterbiDecoder.java
│ │ │ │ ├── ViterbiDecoder_1_2_P25.java
│ │ │ │ ├── ViterbiDecoder_3_4_DMR.java
│ │ │ │ └── ViterbiDecoder_3_4_P25.java
│ │ │ ├── eventbus
│ │ │ └── MyEventBus.java
│ │ │ ├── filter
│ │ │ ├── AllPassFilter.java
│ │ │ ├── Filter.java
│ │ │ ├── FilterEditor.java
│ │ │ ├── FilterEditorPanel.java
│ │ │ ├── FilterElement.java
│ │ │ ├── FilterSet.java
│ │ │ ├── IFilter.java
│ │ │ ├── IFilterChangeListener.java
│ │ │ └── SyncLossMessageFilter.java
│ │ │ ├── gui
│ │ │ ├── ChannelMemoryLogger.java
│ │ │ ├── JavaFxWindowManager.java
│ │ │ ├── JavaFxWindowRequest.java
│ │ │ ├── SDRTrunk.java
│ │ │ ├── channelizer
│ │ │ │ ├── ChannelizerViewer.java
│ │ │ │ ├── ChannelizerViewer2.java
│ │ │ │ ├── HeterodyneChannelizerViewer.java
│ │ │ │ └── SynthesizerViewer.java
│ │ │ ├── control
│ │ │ │ ├── ConstellationViewer.java
│ │ │ │ ├── CurveFittedAreaChart.java
│ │ │ │ ├── DbPowerMeter.java
│ │ │ │ ├── FrequencyTextField.java
│ │ │ │ ├── HexFormatter.java
│ │ │ │ ├── IntegerFormatter.java
│ │ │ │ ├── IntegerTextField.java
│ │ │ │ ├── JFrequencyControl.java
│ │ │ │ ├── LongFormatter.java
│ │ │ │ ├── LtrFormatter.java
│ │ │ │ ├── MaxLengthUnaryOperator.java
│ │ │ │ └── PrefixIdentFormatter.java
│ │ │ ├── editor
│ │ │ │ └── Editor.java
│ │ │ ├── icon
│ │ │ │ ├── IconManager.java
│ │ │ │ └── ViewIconManagerRequest.java
│ │ │ ├── instrument
│ │ │ │ ├── DemodulatorViewerFX.java
│ │ │ │ ├── PlaybackController.java
│ │ │ │ ├── RecentFilesMenu.java
│ │ │ │ ├── ViewerDesktop.java
│ │ │ │ ├── chart
│ │ │ │ │ ├── AFSK1200SampleBufferChart.java
│ │ │ │ │ ├── AFSK1200ZeroCrossingErrorDetectorChart.java
│ │ │ │ │ ├── ComplexSampleLineChart.java
│ │ │ │ │ ├── DecodedSymbolChart.java
│ │ │ │ │ ├── DoubleLineChart.java
│ │ │ │ │ ├── EyeDiagramChart.java
│ │ │ │ │ ├── IInstrumentedAFSK1200Decoder.java
│ │ │ │ │ ├── LTRNetSampleBufferChart.java
│ │ │ │ │ ├── PhaseLineChart.java
│ │ │ │ │ ├── RealSampleLineChart.java
│ │ │ │ │ ├── SampleXYChart.java
│ │ │ │ │ ├── SamplesPerSymbolChart.java
│ │ │ │ │ ├── SymbolChart.java
│ │ │ │ │ └── ZeroCrossingErrorDetectorChart.java
│ │ │ │ └── decoder
│ │ │ │ │ ├── AbstractAFSK1200Pane.java
│ │ │ │ │ ├── AbstractDecoderPane.java
│ │ │ │ │ ├── ComplexDecoderPane.java
│ │ │ │ │ ├── DecoderPaneFactory.java
│ │ │ │ │ ├── Fleetsync2Pane.java
│ │ │ │ │ ├── LJ1200Pane.java
│ │ │ │ │ ├── LTRNetPane.java
│ │ │ │ │ ├── MDC1200Pane.java
│ │ │ │ │ ├── MPT1327Pane.java
│ │ │ │ │ ├── P25Phase1C4FMPane.java
│ │ │ │ │ ├── P25Phase1LSMPane.java
│ │ │ │ │ ├── P25Phase2HDQPSKPane.java
│ │ │ │ │ ├── RealDecoderPane.java
│ │ │ │ │ └── Tait1200Pane.java
│ │ │ ├── playlist
│ │ │ │ ├── Editor.java
│ │ │ │ ├── IAliasListRefreshListener.java
│ │ │ │ ├── PlaylistEditor.java
│ │ │ │ ├── PlaylistEditorApplication.java
│ │ │ │ ├── PlaylistEditorRequest.java
│ │ │ │ ├── ViewPlaylistRequest.java
│ │ │ │ ├── alias
│ │ │ │ │ ├── AliasBulkEditor.java
│ │ │ │ │ ├── AliasConfigurationEditor.java
│ │ │ │ │ ├── AliasEditor.java
│ │ │ │ │ ├── AliasItemEditor.java
│ │ │ │ │ ├── AliasTabRequest.java
│ │ │ │ │ ├── AliasViewByIdentifierEditor.java
│ │ │ │ │ ├── AliasViewByRecordingEditor.java
│ │ │ │ │ ├── ColorUtil.java
│ │ │ │ │ ├── ViewAliasIdentifierRequest.java
│ │ │ │ │ ├── ViewAliasRequest.java
│ │ │ │ │ ├── action
│ │ │ │ │ │ ├── ActionEditor.java
│ │ │ │ │ │ ├── ActionEditorFactory.java
│ │ │ │ │ │ ├── BeepEditor.java
│ │ │ │ │ │ ├── ClipEditor.java
│ │ │ │ │ │ ├── EmptyActionEditor.java
│ │ │ │ │ │ ├── ScriptEditor.java
│ │ │ │ │ │ ├── TestMessage.java
│ │ │ │ │ │ └── UnrecognizedActionEditor.java
│ │ │ │ │ └── identifier
│ │ │ │ │ │ ├── DcsEditor.java
│ │ │ │ │ │ ├── EmptyIdentifierEditor.java
│ │ │ │ │ │ ├── EsnEditor.java
│ │ │ │ │ │ ├── IdentifierEditor.java
│ │ │ │ │ │ ├── IdentifierEditorFactory.java
│ │ │ │ │ │ ├── LojackEditor.java
│ │ │ │ │ │ ├── P25FullyQualifiedRadioIdEditor.java
│ │ │ │ │ │ ├── P25FullyQualifiedTalkgroupEditor.java
│ │ │ │ │ │ ├── RadioIdEditor.java
│ │ │ │ │ │ ├── RadioIdRangeEditor.java
│ │ │ │ │ │ ├── TalkgroupEditor.java
│ │ │ │ │ │ ├── TalkgroupRangeEditor.java
│ │ │ │ │ │ ├── TonesEditor.java
│ │ │ │ │ │ ├── UnitStatusEditor.java
│ │ │ │ │ │ ├── UnrecognizedIdentifierEditor.java
│ │ │ │ │ │ └── UserStatusEditor.java
│ │ │ │ ├── channel
│ │ │ │ │ ├── AMConfigurationEditor.java
│ │ │ │ │ ├── ChannelConfigurationEditor.java
│ │ │ │ │ ├── ChannelConfigurationEditorFactory.java
│ │ │ │ │ ├── ChannelEditor.java
│ │ │ │ │ ├── ChannelTabRequest.java
│ │ │ │ │ ├── DMRConfigurationEditor.java
│ │ │ │ │ ├── IFilterProcessor.java
│ │ │ │ │ ├── LTRConfigurationEditor.java
│ │ │ │ │ ├── LTRNetConfigurationEditor.java
│ │ │ │ │ ├── MPT1327ConfigurationEditor.java
│ │ │ │ │ ├── NBFMConfigurationEditor.java
│ │ │ │ │ ├── P25P1ConfigurationEditor.java
│ │ │ │ │ ├── P25P2ConfigurationEditor.java
│ │ │ │ │ ├── PassportConfigurationEditor.java
│ │ │ │ │ ├── UnknownConfigurationEditor.java
│ │ │ │ │ └── ViewChannelRequest.java
│ │ │ │ ├── channelMap
│ │ │ │ │ ├── ChannelMapEditor.java
│ │ │ │ │ └── ViewChannelMapEditorRequest.java
│ │ │ │ ├── decoder
│ │ │ │ │ └── AuxDecoderConfigurationEditor.java
│ │ │ │ ├── eventlog
│ │ │ │ │ └── EventLogConfigurationEditor.java
│ │ │ │ ├── manager
│ │ │ │ │ └── PlaylistManagerEditor.java
│ │ │ │ ├── radioreference
│ │ │ │ │ ├── AgencyEditor.java
│ │ │ │ │ ├── AgencyFrequencyEditor.java
│ │ │ │ │ ├── CountyAgency.java
│ │ │ │ │ ├── EnrichedSite.java
│ │ │ │ │ ├── FlashAliasListComboBoxRequest.java
│ │ │ │ │ ├── FrequencyEditor.java
│ │ │ │ │ ├── Level.java
│ │ │ │ │ ├── LoginDialog.java
│ │ │ │ │ ├── ModeDecoderType.java
│ │ │ │ │ ├── RadioReferenceDecoder.java
│ │ │ │ │ ├── RadioReferenceEditor.java
│ │ │ │ │ ├── RadioReferenceUnavailableAlert.java
│ │ │ │ │ ├── SiteEditor.java
│ │ │ │ │ ├── SystemEditor.java
│ │ │ │ │ ├── SystemSiteSelectionEditor.java
│ │ │ │ │ ├── SystemTalkgroupSelectionEditor.java
│ │ │ │ │ ├── TalkgroupEditor.java
│ │ │ │ │ ├── TalkgroupEncryption.java
│ │ │ │ │ └── TalkgroupMode.java
│ │ │ │ ├── record
│ │ │ │ │ └── RecordConfigurationEditor.java
│ │ │ │ ├── source
│ │ │ │ │ ├── FrequencyEditor.java
│ │ │ │ │ ├── FrequencyField.java
│ │ │ │ │ └── SourceConfigurationEditor.java
│ │ │ │ └── streaming
│ │ │ │ │ ├── AbstractBroadcastEditor.java
│ │ │ │ │ ├── AbstractStreamEditor.java
│ │ │ │ │ ├── BroadcastifyCallEditor.java
│ │ │ │ │ ├── BroadcastifyStreamEditor.java
│ │ │ │ │ ├── IcecastHTTPStreamEditor.java
│ │ │ │ │ ├── IcecastStreamEditor.java
│ │ │ │ │ ├── IcecastTCPStreamEditor.java
│ │ │ │ │ ├── RdioScannerEditor.java
│ │ │ │ │ ├── ShoutcastV1StreamEditor.java
│ │ │ │ │ ├── ShoutcastV2StreamEditor.java
│ │ │ │ │ ├── StreamAliasSelectionEditor.java
│ │ │ │ │ ├── StreamEditorFactory.java
│ │ │ │ │ ├── StreamingEditor.java
│ │ │ │ │ └── UnknownStreamEditor.java
│ │ │ ├── power
│ │ │ │ ├── ChannelPowerPanel.java
│ │ │ │ └── PeakMonitor.java
│ │ │ ├── preference
│ │ │ │ ├── CalibrateRequest.java
│ │ │ │ ├── DecodeEventViewPreferenceEditor.java
│ │ │ │ ├── PreferenceEditorFactory.java
│ │ │ │ ├── PreferenceEditorType.java
│ │ │ │ ├── TalkgroupFormatPreferenceEditor.java
│ │ │ │ ├── UserPreferencesEditor.java
│ │ │ │ ├── ViewUserPreferenceEditorRequest.java
│ │ │ │ ├── application
│ │ │ │ │ └── ApplicationPreferenceEditor.java
│ │ │ │ ├── calibration
│ │ │ │ │ ├── CalibrationDialog.java
│ │ │ │ │ └── VectorCalibrationPreferenceEditor.java
│ │ │ │ ├── call
│ │ │ │ │ └── CallManagementPreferenceEditor.java
│ │ │ │ ├── decoder
│ │ │ │ │ └── JmbeLibraryPreferenceEditor.java
│ │ │ │ ├── directory
│ │ │ │ │ └── DirectoryPreferenceEditor.java
│ │ │ │ ├── mp3
│ │ │ │ │ └── MP3PreferenceEditor.java
│ │ │ │ ├── playback
│ │ │ │ │ ├── PlaybackPreferenceEditor.java
│ │ │ │ │ ├── ToneFrequency.java
│ │ │ │ │ ├── ToneUtil.java
│ │ │ │ │ └── ToneVolume.java
│ │ │ │ ├── record
│ │ │ │ │ └── RecordPreferenceEditor.java
│ │ │ │ └── tuner
│ │ │ │ │ ├── RspDuoSelectionMode.java
│ │ │ │ │ └── TunerPreferenceEditor.java
│ │ │ └── viewer
│ │ │ │ ├── ChannelStartProcessingRequestViewer.java
│ │ │ │ ├── DmrViewer.java
│ │ │ │ ├── IdentifierCollectionViewer.java
│ │ │ │ ├── MessagePackage.java
│ │ │ │ ├── MessagePackageViewer.java
│ │ │ │ ├── MessagePackager.java
│ │ │ │ ├── MessageRecordingViewer.java
│ │ │ │ ├── P25P1Viewer.java
│ │ │ │ ├── P25P2Viewer.java
│ │ │ │ └── ViewRecordingViewerRequest.java
│ │ │ ├── icon
│ │ │ ├── Icon.java
│ │ │ ├── IconModel.java
│ │ │ └── IconSet.java
│ │ │ ├── identifier
│ │ │ ├── Form.java
│ │ │ ├── Identifier.java
│ │ │ ├── IdentifierClass.java
│ │ │ ├── IdentifierCollection.java
│ │ │ ├── IdentifierUpdateListener.java
│ │ │ ├── IdentifierUpdateNotification.java
│ │ │ ├── IdentifierUpdateProvider.java
│ │ │ ├── MutableIdentifierCollection.java
│ │ │ ├── Role.java
│ │ │ ├── alias
│ │ │ │ ├── DmrTalkerAliasIdentifier.java
│ │ │ │ ├── P25TalkerAliasIdentifier.java
│ │ │ │ ├── TalkerAliasIdentifier.java
│ │ │ │ └── TalkerAliasManager.java
│ │ │ ├── configuration
│ │ │ │ ├── AliasListConfigurationIdentifier.java
│ │ │ │ ├── ChannelDescriptorConfigurationIdentifier.java
│ │ │ │ ├── ChannelNameConfigurationIdentifier.java
│ │ │ │ ├── ConfigurationLongIdentifier.java
│ │ │ │ ├── ConfigurationStringIdentifier.java
│ │ │ │ ├── DecoderTypeConfigurationIdentifier.java
│ │ │ │ ├── FrequencyConfigurationIdentifier.java
│ │ │ │ ├── SiteConfigurationIdentifier.java
│ │ │ │ └── SystemConfigurationIdentifier.java
│ │ │ ├── dcs
│ │ │ │ └── DCSIdentifier.java
│ │ │ ├── decoder
│ │ │ │ ├── ChannelStateIdentifier.java
│ │ │ │ └── DecoderLogicalChannelNameIdentifier.java
│ │ │ ├── encryption
│ │ │ │ ├── EncryptionKey.java
│ │ │ │ └── EncryptionKeyIdentifier.java
│ │ │ ├── esn
│ │ │ │ └── ESNIdentifier.java
│ │ │ ├── integer
│ │ │ │ └── IntegerIdentifier.java
│ │ │ ├── ipv4
│ │ │ │ ├── IPV4Address.java
│ │ │ │ └── IPV4Identifier.java
│ │ │ ├── location
│ │ │ │ ├── LocationIdentifier.java
│ │ │ │ └── Point.java
│ │ │ ├── longnumber
│ │ │ │ └── LongIdentifier.java
│ │ │ ├── patch
│ │ │ │ ├── PatchGroup.java
│ │ │ │ ├── PatchGroupIdentifier.java
│ │ │ │ ├── PatchGroupManager.java
│ │ │ │ └── PatchGroupPreLoadDataContent.java
│ │ │ ├── radio
│ │ │ │ ├── FullyQualifiedRadioIdentifier.java
│ │ │ │ └── RadioIdentifier.java
│ │ │ ├── scramble
│ │ │ │ └── ScrambleParameterIdentifier.java
│ │ │ ├── site
│ │ │ │ └── SiteIdentifier.java
│ │ │ ├── status
│ │ │ │ ├── UnitStatusIdentifier.java
│ │ │ │ └── UserStatusIdentifier.java
│ │ │ ├── string
│ │ │ │ ├── SimpleStringIdentifier.java
│ │ │ │ ├── StringIdentifier.java
│ │ │ │ └── StringListIdentifier.java
│ │ │ ├── talkgroup
│ │ │ │ ├── FullyQualifiedTalkgroupIdentifier.java
│ │ │ │ ├── LTRTalkgroup.java
│ │ │ │ ├── TalkgroupIdentifier.java
│ │ │ │ └── UnknownTalkgroupIdentifier.java
│ │ │ └── tone
│ │ │ │ ├── AmbeTone.java
│ │ │ │ ├── P25ToneIdentifier.java
│ │ │ │ ├── Tone.java
│ │ │ │ ├── ToneIdentifier.java
│ │ │ │ ├── ToneIdentifierMessage.java
│ │ │ │ └── ToneSequence.java
│ │ │ ├── jmbe
│ │ │ ├── JmbeCreator.java
│ │ │ ├── JmbeEditor.java
│ │ │ ├── JmbeEditorRequest.java
│ │ │ └── github
│ │ │ │ ├── Asset.java
│ │ │ │ ├── GitHub.java
│ │ │ │ ├── Release.java
│ │ │ │ └── Version.java
│ │ │ ├── log
│ │ │ ├── ApplicationLog.java
│ │ │ ├── LoggingSuppressor.java
│ │ │ └── TextAreaLogAppender.java
│ │ │ ├── map
│ │ │ ├── DefaultIcon.java
│ │ │ ├── IPlottableUpdateListener.java
│ │ │ ├── MapIcon.java
│ │ │ ├── MapMouseListener.java
│ │ │ ├── MapPanel.java
│ │ │ ├── MapService.java
│ │ │ ├── PlottableEntityHistory.java
│ │ │ ├── PlottableEntityModel.java
│ │ │ ├── PlottableEntityPainter.java
│ │ │ ├── PlottableEntityRenderer.java
│ │ │ ├── SelectionAdapter.java
│ │ │ ├── SelectionPainter.java
│ │ │ ├── TimestampedGeoPosition.java
│ │ │ ├── TrackGenerator.java
│ │ │ └── TrackHistoryModel.java
│ │ │ ├── message
│ │ │ ├── AbstractMessage.java
│ │ │ ├── EmptyTimeslotPlaceholderMessage.java
│ │ │ ├── IBitErrorProvider.java
│ │ │ ├── IMessage.java
│ │ │ ├── IMessageListener.java
│ │ │ ├── IMessageProvider.java
│ │ │ ├── Message.java
│ │ │ ├── MessageDirection.java
│ │ │ ├── MessageHistory.java
│ │ │ ├── MessageHistoryPreloadData.java
│ │ │ ├── MessageHistoryRequest.java
│ │ │ ├── MessageHistoryResponse.java
│ │ │ ├── MessageProviderModule.java
│ │ │ ├── MessageType.java
│ │ │ ├── StuffBitsMessage.java
│ │ │ ├── SyncLossMessage.java
│ │ │ └── TimeslotMessage.java
│ │ │ ├── module
│ │ │ ├── HistoryModule.java
│ │ │ ├── Module.java
│ │ │ ├── ModuleEventBusMessage.java
│ │ │ ├── ProcessingChain.java
│ │ │ ├── carrier
│ │ │ │ └── CarrierOffsetProcessor.java
│ │ │ ├── decode
│ │ │ │ ├── Decoder.java
│ │ │ │ ├── DecoderFactory.java
│ │ │ │ ├── DecoderType.java
│ │ │ │ ├── FeedbackDecoder.java
│ │ │ │ ├── PrimaryDecoder.java
│ │ │ │ ├── afsk
│ │ │ │ │ └── AbstractAFSKDecoder.java
│ │ │ │ ├── am
│ │ │ │ │ ├── AMDecoder.java
│ │ │ │ │ ├── AMDecoderState.java
│ │ │ │ │ ├── AMTalkgroup.java
│ │ │ │ │ └── DecodeConfigAM.java
│ │ │ │ ├── analog
│ │ │ │ │ ├── AnalogDecoderState.java
│ │ │ │ │ ├── DecodeConfigAnalog.java
│ │ │ │ │ └── SquelchingAnalogDecoder.java
│ │ │ │ ├── config
│ │ │ │ │ ├── AuxDecodeConfiguration.java
│ │ │ │ │ ├── DecodeConfiguration.java
│ │ │ │ │ └── WithCallTimeout.java
│ │ │ │ ├── dcs
│ │ │ │ │ ├── DCSCode.java
│ │ │ │ │ ├── DCSDecoder.java
│ │ │ │ │ ├── DCSDecoderState.java
│ │ │ │ │ ├── DCSMessage.java
│ │ │ │ │ └── DCSMessageFilter.java
│ │ │ │ ├── dmr
│ │ │ │ │ ├── DMRCrcMaskManager.java
│ │ │ │ │ ├── DMRDecoder.java
│ │ │ │ │ ├── DMRDecoderState.java
│ │ │ │ │ ├── DMRHardSymbolProcessor.java
│ │ │ │ │ ├── DMRMessageFramer.java
│ │ │ │ │ ├── DMRMessageProcessor.java
│ │ │ │ │ ├── DMRNetworkConfigurationMonitor.java
│ │ │ │ │ ├── DMRNetworkConfigurationPreloadData.java
│ │ │ │ │ ├── DMRSoftSymbolProcessor.java
│ │ │ │ │ ├── DMRTrafficChannelManager.java
│ │ │ │ │ ├── DecodeConfigDMR.java
│ │ │ │ │ ├── DibitDelayLine.java
│ │ │ │ │ ├── audio
│ │ │ │ │ │ ├── DMRAudioModule.java
│ │ │ │ │ │ └── DMRCallSequenceRecorder.java
│ │ │ │ │ ├── bptc
│ │ │ │ │ │ ├── BPTCBase.java
│ │ │ │ │ │ ├── BPTC_128_77.java
│ │ │ │ │ │ ├── BPTC_16_2.java
│ │ │ │ │ │ ├── BPTC_196_96.java
│ │ │ │ │ │ └── BPTC_68_36.java
│ │ │ │ │ ├── channel
│ │ │ │ │ │ ├── DMRAbsoluteChannel.java
│ │ │ │ │ │ ├── DMRChannel.java
│ │ │ │ │ │ ├── DMRLsn.java
│ │ │ │ │ │ ├── DMRTier3Channel.java
│ │ │ │ │ │ ├── DmrRestLsn.java
│ │ │ │ │ │ ├── ITimeslotFrequencyReceiver.java
│ │ │ │ │ │ └── TimeslotFrequency.java
│ │ │ │ │ ├── event
│ │ │ │ │ │ └── DMRDecodeEvent.java
│ │ │ │ │ ├── identifier
│ │ │ │ │ │ ├── DMRLocation.java
│ │ │ │ │ │ ├── DMRNetwork.java
│ │ │ │ │ │ ├── DMRRadio.java
│ │ │ │ │ │ ├── DMRSite.java
│ │ │ │ │ │ ├── DMRTalkgroup.java
│ │ │ │ │ │ ├── DMRToneIdentifier.java
│ │ │ │ │ │ ├── DMRUnitStatus.java
│ │ │ │ │ │ ├── DmrTier3Radio.java
│ │ │ │ │ │ └── P25Location.java
│ │ │ │ │ ├── message
│ │ │ │ │ │ ├── CACH.java
│ │ │ │ │ │ ├── DMRBurst.java
│ │ │ │ │ │ ├── DMRMessage.java
│ │ │ │ │ │ ├── DMRMessageFactory.java
│ │ │ │ │ │ ├── IServiceOptionsProvider.java
│ │ │ │ │ │ ├── UnknownDMRMessage.java
│ │ │ │ │ │ ├── data
│ │ │ │ │ │ │ ├── DMRDataMessageFactory.java
│ │ │ │ │ │ │ ├── DataMessage.java
│ │ │ │ │ │ │ ├── DataMessageWithLinkControl.java
│ │ │ │ │ │ │ ├── IDLEMessage.java
│ │ │ │ │ │ │ ├── SlotType.java
│ │ │ │ │ │ │ ├── UnknownDataMessage.java
│ │ │ │ │ │ │ ├── block
│ │ │ │ │ │ │ │ ├── DataBlock.java
│ │ │ │ │ │ │ │ ├── DataBlock1Rate.java
│ │ │ │ │ │ │ │ ├── DataBlock1_2Rate.java
│ │ │ │ │ │ │ │ ├── DataBlock3_4Rate.java
│ │ │ │ │ │ │ │ └── UnknownDataBlock.java
│ │ │ │ │ │ │ ├── csbk
│ │ │ │ │ │ │ │ ├── CSBKMessage.java
│ │ │ │ │ │ │ │ ├── CSBKMessageFactory.java
│ │ │ │ │ │ │ │ ├── Opcode.java
│ │ │ │ │ │ │ │ ├── UnknownCSBKMessage.java
│ │ │ │ │ │ │ │ ├── hytera
│ │ │ │ │ │ │ │ │ ├── Hytera08Acknowledge.java
│ │ │ │ │ │ │ │ │ ├── Hytera68Acknowledge.java
│ │ │ │ │ │ │ │ │ ├── HyteraAdjacentSiteInformation.java
│ │ │ │ │ │ │ │ │ ├── HyteraAloha.java
│ │ │ │ │ │ │ │ │ ├── HyteraAnnouncement.java
│ │ │ │ │ │ │ │ │ ├── HyteraCsbko44.java
│ │ │ │ │ │ │ │ │ ├── HyteraSmsAvailableNotification.java
│ │ │ │ │ │ │ │ │ ├── HyteraTrafficChannelTalkerStatus.java
│ │ │ │ │ │ │ │ │ ├── HyteraXPTAdjacentSites.java
│ │ │ │ │ │ │ │ │ ├── HyteraXPTPreamble.java
│ │ │ │ │ │ │ │ │ └── HyteraXPTSiteState.java
│ │ │ │ │ │ │ │ ├── motorola
│ │ │ │ │ │ │ │ │ ├── CapacityMaxAdvantageModeVoiceChannelUpdate.java
│ │ │ │ │ │ │ │ │ ├── CapacityMaxAloha.java
│ │ │ │ │ │ │ │ │ ├── CapacityMaxOpenModeVoiceChannelUpdate.java
│ │ │ │ │ │ │ │ │ ├── CapacityPlusCSBKO_60.java
│ │ │ │ │ │ │ │ │ ├── CapacityPlusDataRevertWindowAnnouncement.java
│ │ │ │ │ │ │ │ │ ├── CapacityPlusDataRevertWindowGrant.java
│ │ │ │ │ │ │ │ │ ├── CapacityPlusNeighbors.java
│ │ │ │ │ │ │ │ │ ├── CapacityPlusPreamble.java
│ │ │ │ │ │ │ │ │ ├── CapacityPlusSiteStatus.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusCSBKO_16.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusDataChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusDataRevertWindowAnnouncement.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusDataRevertWindowGrant.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusNeighborReport.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusOTAAnnouncement.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusRegistrationRequest.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusRegistrationResponse.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusTalkgroupAffiliation.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusTerminateChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusVoiceChannelUser.java
│ │ │ │ │ │ │ │ │ └── SegmentIndicator.java
│ │ │ │ │ │ │ │ └── standard
│ │ │ │ │ │ │ │ │ ├── Aloha.java
│ │ │ │ │ │ │ │ │ ├── Clear.java
│ │ │ │ │ │ │ │ │ ├── MoveTSCC.java
│ │ │ │ │ │ │ │ │ ├── Preamble.java
│ │ │ │ │ │ │ │ │ ├── Protect.java
│ │ │ │ │ │ │ │ │ ├── acknowledge
│ │ │ │ │ │ │ │ │ ├── Acknowledge.java
│ │ │ │ │ │ │ │ │ ├── AcknowledgeStatus.java
│ │ │ │ │ │ │ │ │ └── RegistrationAccepted.java
│ │ │ │ │ │ │ │ │ ├── ahoy
│ │ │ │ │ │ │ │ │ ├── Ahoy.java
│ │ │ │ │ │ │ │ │ ├── AuthenticateRegisterRadioCheck.java
│ │ │ │ │ │ │ │ │ ├── CancelCall.java
│ │ │ │ │ │ │ │ │ ├── ServiceRadioCheck.java
│ │ │ │ │ │ │ │ │ ├── StunReviveKill.java
│ │ │ │ │ │ │ │ │ └── UnknownAhoy.java
│ │ │ │ │ │ │ │ │ ├── announcement
│ │ │ │ │ │ │ │ │ ├── AdjacentSiteInformation.java
│ │ │ │ │ │ │ │ │ ├── AnnounceChannelFrequency.java
│ │ │ │ │ │ │ │ │ ├── AnnounceWithdrawTSCC.java
│ │ │ │ │ │ │ │ │ ├── Announcement.java
│ │ │ │ │ │ │ │ │ ├── CallTimerParameters.java
│ │ │ │ │ │ │ │ │ ├── LocalTime.java
│ │ │ │ │ │ │ │ │ ├── MassRegistration.java
│ │ │ │ │ │ │ │ │ └── VoteNowAdvice.java
│ │ │ │ │ │ │ │ │ └── grant
│ │ │ │ │ │ │ │ │ ├── BroadcastTalkgroupVoiceChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── ChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── DuplexPrivateDataChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── DuplexPrivateVoiceChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── PrivateDataChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── PrivateVoiceChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── TalkgroupDataChannelGrant.java
│ │ │ │ │ │ │ │ │ └── TalkgroupVoiceChannelGrant.java
│ │ │ │ │ │ │ ├── header
│ │ │ │ │ │ │ │ ├── ConfirmedDataHeader.java
│ │ │ │ │ │ │ │ ├── DataHeader.java
│ │ │ │ │ │ │ │ ├── DefinedShortDataHeader.java
│ │ │ │ │ │ │ │ ├── HeaderMessage.java
│ │ │ │ │ │ │ │ ├── MBCHeader.java
│ │ │ │ │ │ │ │ ├── OctetDataHeader.java
│ │ │ │ │ │ │ │ ├── PacketSequenceHeader.java
│ │ │ │ │ │ │ │ ├── PiHeader.java
│ │ │ │ │ │ │ │ ├── ProprietaryDataHeader.java
│ │ │ │ │ │ │ │ ├── RawShortDataHeader.java
│ │ │ │ │ │ │ │ ├── ResponseDataHeader.java
│ │ │ │ │ │ │ │ ├── ShortDataHeader.java
│ │ │ │ │ │ │ │ ├── StatusDataHeader.java
│ │ │ │ │ │ │ │ ├── UDTHeader.java
│ │ │ │ │ │ │ │ ├── UnconfirmedDataHeader.java
│ │ │ │ │ │ │ │ ├── VoiceHeader.java
│ │ │ │ │ │ │ │ ├── hytera
│ │ │ │ │ │ │ │ │ └── HyteraDataEncryptionHeader.java
│ │ │ │ │ │ │ │ └── motorola
│ │ │ │ │ │ │ │ │ ├── MNISProprietaryDataHeader.java
│ │ │ │ │ │ │ │ │ └── MotorolaDataEncryptionHeader.java
│ │ │ │ │ │ │ ├── lc
│ │ │ │ │ │ │ │ ├── LCMessage.java
│ │ │ │ │ │ │ │ ├── LCMessageFactory.java
│ │ │ │ │ │ │ │ ├── LCOpcode.java
│ │ │ │ │ │ │ │ ├── full
│ │ │ │ │ │ │ │ │ ├── AbstractVoiceChannelUser.java
│ │ │ │ │ │ │ │ │ ├── EncryptionParameters.java
│ │ │ │ │ │ │ │ │ ├── FLCAssembler.java
│ │ │ │ │ │ │ │ │ ├── FullLCMessage.java
│ │ │ │ │ │ │ │ │ ├── GPSInformation.java
│ │ │ │ │ │ │ │ │ ├── GroupVoiceChannelUser.java
│ │ │ │ │ │ │ │ │ ├── TalkerAliasAssembler.java
│ │ │ │ │ │ │ │ │ ├── TalkerAliasBlock1.java
│ │ │ │ │ │ │ │ │ ├── TalkerAliasBlock2.java
│ │ │ │ │ │ │ │ │ ├── TalkerAliasBlock3.java
│ │ │ │ │ │ │ │ │ ├── TalkerAliasComplete.java
│ │ │ │ │ │ │ │ │ ├── TalkerAliasHeader.java
│ │ │ │ │ │ │ │ │ ├── TerminatorData.java
│ │ │ │ │ │ │ │ │ ├── UnitToUnitVoiceChannelUser.java
│ │ │ │ │ │ │ │ │ ├── UnknownFullLCMessage.java
│ │ │ │ │ │ │ │ │ ├── hytera
│ │ │ │ │ │ │ │ │ │ ├── HyteraFullLC.java
│ │ │ │ │ │ │ │ │ │ ├── HyteraGroupVoiceChannelUser.java
│ │ │ │ │ │ │ │ │ │ ├── HyteraTerminator.java
│ │ │ │ │ │ │ │ │ │ ├── HyteraUnitToUnitVoiceChannelUser.java
│ │ │ │ │ │ │ │ │ │ └── HyteraXptChannelGrant.java
│ │ │ │ │ │ │ │ │ └── motorola
│ │ │ │ │ │ │ │ │ │ ├── CapacityMaxTalkerAlias.java
│ │ │ │ │ │ │ │ │ │ ├── CapacityMaxTalkerAliasContinuation.java
│ │ │ │ │ │ │ │ │ │ ├── CapacityMaxVoiceChannelUser.java
│ │ │ │ │ │ │ │ │ │ ├── CapacityPlusEncryptedVoiceChannelUser.java
│ │ │ │ │ │ │ │ │ │ ├── CapacityPlusVoiceChannelUser.java
│ │ │ │ │ │ │ │ │ │ ├── CapacityPlusWideAreaVoiceChannelUser.java
│ │ │ │ │ │ │ │ │ │ └── MotorolaGroupVoiceChannelUser.java
│ │ │ │ │ │ │ │ └── shorty
│ │ │ │ │ │ │ │ │ ├── ActivityUpdateMessage.java
│ │ │ │ │ │ │ │ │ ├── CapacityPlusRestChannel.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusControlChannel.java
│ │ │ │ │ │ │ │ │ ├── ConnectPlusTrafficChannel.java
│ │ │ │ │ │ │ │ │ ├── ControlChannelSystemParameters.java
│ │ │ │ │ │ │ │ │ ├── HyteraXPTChannel.java
│ │ │ │ │ │ │ │ │ ├── NullMessage.java
│ │ │ │ │ │ │ │ │ ├── SLCAssembler.java
│ │ │ │ │ │ │ │ │ ├── ShortLCMessage.java
│ │ │ │ │ │ │ │ │ ├── TrafficChannelSystemParameters.java
│ │ │ │ │ │ │ │ │ └── UnknownShortLCMessage.java
│ │ │ │ │ │ │ ├── mbc
│ │ │ │ │ │ │ │ ├── MBCAssembler.java
│ │ │ │ │ │ │ │ ├── MBCContinuationBlock.java
│ │ │ │ │ │ │ │ ├── MultiCSBK.java
│ │ │ │ │ │ │ │ └── UnknownMultiCSBK.java
│ │ │ │ │ │ │ ├── packet
│ │ │ │ │ │ │ │ ├── DMRPacketMessage.java
│ │ │ │ │ │ │ │ ├── PacketSequence.java
│ │ │ │ │ │ │ │ ├── PacketSequenceAssembler.java
│ │ │ │ │ │ │ │ ├── PacketSequenceMessageFactory.java
│ │ │ │ │ │ │ │ └── UDTShortMessageService.java
│ │ │ │ │ │ │ ├── terminator
│ │ │ │ │ │ │ │ └── Terminator.java
│ │ │ │ │ │ │ └── usb
│ │ │ │ │ │ │ │ └── USBData.java
│ │ │ │ │ │ ├── filter
│ │ │ │ │ │ │ ├── ControlMessageFilter.java
│ │ │ │ │ │ │ ├── ControlMessageFilterSet.java
│ │ │ │ │ │ │ ├── DataMessageFilter.java
│ │ │ │ │ │ │ ├── DmrMessageFilterSet.java
│ │ │ │ │ │ │ ├── DmrOtherMessageFilter.java
│ │ │ │ │ │ │ ├── DmrPacketSequenceFilter.java
│ │ │ │ │ │ │ ├── LinkControlMessageFilter.java
│ │ │ │ │ │ │ ├── LinkControlMessageFilterSet.java
│ │ │ │ │ │ │ └── VoiceMessageFilter.java
│ │ │ │ │ │ ├── type
│ │ │ │ │ │ │ ├── AbsoluteChannelParameters.java
│ │ │ │ │ │ │ ├── AbstractStructure.java
│ │ │ │ │ │ │ ├── AcknowledgeType.java
│ │ │ │ │ │ │ ├── Activity.java
│ │ │ │ │ │ │ ├── AnnouncementType.java
│ │ │ │ │ │ │ ├── ApplicationType.java
│ │ │ │ │ │ │ ├── CapacityPlusServiceOptions.java
│ │ │ │ │ │ │ ├── DataPacketFormat.java
│ │ │ │ │ │ │ ├── DataType.java
│ │ │ │ │ │ │ ├── DefinedDataFormat.java
│ │ │ │ │ │ │ ├── EncryptionAlgorithm.java
│ │ │ │ │ │ │ ├── HyteraEncodeFormat.java
│ │ │ │ │ │ │ ├── LCSS.java
│ │ │ │ │ │ │ ├── Model.java
│ │ │ │ │ │ │ ├── PAR.java
│ │ │ │ │ │ │ ├── PositionError.java
│ │ │ │ │ │ │ ├── ProtectKind.java
│ │ │ │ │ │ │ ├── Reason.java
│ │ │ │ │ │ │ ├── ResponseStatus.java
│ │ │ │ │ │ │ ├── ServiceAccessPoint.java
│ │ │ │ │ │ │ ├── ServiceFunction.java
│ │ │ │ │ │ │ ├── ServiceKind.java
│ │ │ │ │ │ │ ├── ServiceOptions.java
│ │ │ │ │ │ │ ├── ServiceType.java
│ │ │ │ │ │ │ ├── SystemIdentityCode.java
│ │ │ │ │ │ │ ├── TalkerAliasDataFormat.java
│ │ │ │ │ │ │ ├── Tier3Gateway.java
│ │ │ │ │ │ │ ├── UnifiedDataTransportFormat.java
│ │ │ │ │ │ │ ├── Vendor.java
│ │ │ │ │ │ │ └── Version.java
│ │ │ │ │ │ └── voice
│ │ │ │ │ │ │ ├── EMB.java
│ │ │ │ │ │ │ ├── VoiceAMessage.java
│ │ │ │ │ │ │ ├── VoiceEMBMessage.java
│ │ │ │ │ │ │ ├── VoiceMessage.java
│ │ │ │ │ │ │ ├── VoiceSuperFrameProcessor.java
│ │ │ │ │ │ │ └── embedded
│ │ │ │ │ │ │ ├── EmbeddedEncryptionParameters.java
│ │ │ │ │ │ │ ├── EmbeddedParameters.java
│ │ │ │ │ │ │ ├── NonStandardShortBurst.java
│ │ │ │ │ │ │ ├── NullShortBurst.java
│ │ │ │ │ │ │ ├── ShortBurst.java
│ │ │ │ │ │ │ ├── ShortBurstOpcode.java
│ │ │ │ │ │ │ ├── TransmitInterrupt.java
│ │ │ │ │ │ │ └── UnknownShortBurst.java
│ │ │ │ │ └── sync
│ │ │ │ │ │ ├── DMRHardSyncDetector.java
│ │ │ │ │ │ ├── DMRSoftSyncDetector.java
│ │ │ │ │ │ ├── DMRSoftSyncDetectorFactory.java
│ │ │ │ │ │ ├── DMRSoftSyncDetectorScalar.java
│ │ │ │ │ │ ├── DMRSoftSyncDetectorVector128.java
│ │ │ │ │ │ ├── DMRSoftSyncDetectorVector256.java
│ │ │ │ │ │ ├── DMRSoftSyncDetectorVector512.java
│ │ │ │ │ │ ├── DMRSoftSyncDetectorVector64.java
│ │ │ │ │ │ ├── DMRSyncDetectMode.java
│ │ │ │ │ │ ├── DMRSyncDetector.java
│ │ │ │ │ │ ├── DMRSyncModeMonitor.java
│ │ │ │ │ │ └── DMRSyncPattern.java
│ │ │ │ ├── event
│ │ │ │ │ ├── ActivitySummaryFrame.java
│ │ │ │ │ ├── ActivitySummaryProvider.java
│ │ │ │ │ ├── ClearableHistoryModel.java
│ │ │ │ │ ├── DecodeEvent.java
│ │ │ │ │ ├── DecodeEventDuplicateDetector.java
│ │ │ │ │ ├── DecodeEventHistory.java
│ │ │ │ │ ├── DecodeEventHistoryPreloadData.java
│ │ │ │ │ ├── DecodeEventHistoryRequest.java
│ │ │ │ │ ├── DecodeEventHistoryResponse.java
│ │ │ │ │ ├── DecodeEventModel.java
│ │ │ │ │ ├── DecodeEventPanel.java
│ │ │ │ │ ├── DecodeEventSnapshot.java
│ │ │ │ │ ├── DecodeEventType.java
│ │ │ │ │ ├── HistoryManagementPanel.java
│ │ │ │ │ ├── IDecodeEvent.java
│ │ │ │ │ ├── IDecodeEventListener.java
│ │ │ │ │ ├── IDecodeEventProvider.java
│ │ │ │ │ ├── MessageActivityModel.java
│ │ │ │ │ ├── MessageActivityPanel.java
│ │ │ │ │ ├── MessageItem.java
│ │ │ │ │ ├── PlottableDecodeEvent.java
│ │ │ │ │ └── filter
│ │ │ │ │ │ ├── AllOtherEventFilter.java
│ │ │ │ │ │ ├── DecodeEventFilterSet.java
│ │ │ │ │ │ ├── DecodedCallEncryptedEventFilter.java
│ │ │ │ │ │ ├── DecodedCallEventFilter.java
│ │ │ │ │ │ ├── DecodedCommandEventFilter.java
│ │ │ │ │ │ ├── DecodedDataEventFilter.java
│ │ │ │ │ │ ├── DecodedRegistrationEventFilter.java
│ │ │ │ │ │ ├── EventClearButton.java
│ │ │ │ │ │ ├── EventClearHandler.java
│ │ │ │ │ │ ├── EventFilter.java
│ │ │ │ │ │ └── EventFilterButton.java
│ │ │ │ ├── fleetsync2
│ │ │ │ │ ├── Fleetsync2Decoder.java
│ │ │ │ │ ├── Fleetsync2DecoderInstrumented.java
│ │ │ │ │ ├── Fleetsync2DecoderState.java
│ │ │ │ │ ├── Fleetsync2MessageProcessor.java
│ │ │ │ │ ├── FleetsyncMessageFilter.java
│ │ │ │ │ ├── FleetsyncMessageType.java
│ │ │ │ │ ├── identifier
│ │ │ │ │ │ ├── FleetsyncIdentifier.java
│ │ │ │ │ │ └── FleetsyncStatus.java
│ │ │ │ │ └── message
│ │ │ │ │ │ ├── AutomaticNumberIdentification.java
│ │ │ │ │ │ ├── Fleetsync2Message.java
│ │ │ │ │ │ ├── LocationReport.java
│ │ │ │ │ │ └── Status.java
│ │ │ │ ├── ip
│ │ │ │ │ ├── DefinedShortDataPacket.java
│ │ │ │ │ ├── Header.java
│ │ │ │ │ ├── IHeader.java
│ │ │ │ │ ├── IPProtocol.java
│ │ │ │ │ ├── IPacket.java
│ │ │ │ │ ├── Packet.java
│ │ │ │ │ ├── PacketMessageFactory.java
│ │ │ │ │ ├── UnknownCompressedHeaderPacket.java
│ │ │ │ │ ├── UnknownPacket.java
│ │ │ │ │ ├── cellocator
│ │ │ │ │ │ ├── AcknowledgeMessage.java
│ │ │ │ │ │ ├── CellocatorRadioIdentifier.java
│ │ │ │ │ │ ├── Command.java
│ │ │ │ │ │ ├── CommunicationControl.java
│ │ │ │ │ │ ├── ForwardedDataMessage.java
│ │ │ │ │ │ ├── FragmentControl.java
│ │ │ │ │ │ ├── GenericCommandMessage.java
│ │ │ │ │ │ ├── LocationStatusMessage.java
│ │ │ │ │ │ ├── MCGPHeader.java
│ │ │ │ │ │ ├── MCGPMessageFactory.java
│ │ │ │ │ │ ├── MCGPMessageType.java
│ │ │ │ │ │ ├── MCGPPacket.java
│ │ │ │ │ │ ├── ModularDataType.java
│ │ │ │ │ │ ├── ModularRequestMessage.java
│ │ │ │ │ │ ├── ModularResponseMessage.java
│ │ │ │ │ │ ├── PacketControl.java
│ │ │ │ │ │ ├── ProgrammingCommandMessage.java
│ │ │ │ │ │ ├── ProgrammingStatusMessage.java
│ │ │ │ │ │ └── UnknownMCGPMessage.java
│ │ │ │ │ ├── hytera
│ │ │ │ │ │ ├── rrs
│ │ │ │ │ │ │ └── HyteraRrsPacket.java
│ │ │ │ │ │ ├── sds
│ │ │ │ │ │ │ ├── DestinationId.java
│ │ │ │ │ │ │ ├── Encoding.java
│ │ │ │ │ │ │ ├── HyteraToken.java
│ │ │ │ │ │ │ ├── HyteraTokenFactory.java
│ │ │ │ │ │ │ ├── HyteraTokenHeader.java
│ │ │ │ │ │ │ ├── HyteraTokenType.java
│ │ │ │ │ │ │ ├── HyteraUnknownPacket.java
│ │ │ │ │ │ │ ├── MessageId.java
│ │ │ │ │ │ │ ├── Payload.java
│ │ │ │ │ │ │ ├── RrsMessageHeader.java
│ │ │ │ │ │ │ ├── RrsUnknown.java
│ │ │ │ │ │ │ ├── SourceId.java
│ │ │ │ │ │ │ ├── TmsMessageHeader.java
│ │ │ │ │ │ │ └── Unknown.java
│ │ │ │ │ │ ├── shortdata
│ │ │ │ │ │ │ └── HyteraShortDataPacket.java
│ │ │ │ │ │ └── sms
│ │ │ │ │ │ │ └── HyteraSmsPacket.java
│ │ │ │ │ ├── icmp
│ │ │ │ │ │ ├── ICMPHeader.java
│ │ │ │ │ │ ├── ICMPPacket.java
│ │ │ │ │ │ └── ICMPTypeCode.java
│ │ │ │ │ ├── ipv4
│ │ │ │ │ │ ├── IPV4Header.java
│ │ │ │ │ │ └── IPV4Packet.java
│ │ │ │ │ ├── mototrbo
│ │ │ │ │ │ ├── ars
│ │ │ │ │ │ │ ├── ARSHeader.java
│ │ │ │ │ │ │ ├── ARSHeaderFactory.java
│ │ │ │ │ │ │ ├── ARSPDUType.java
│ │ │ │ │ │ │ ├── ARSPacket.java
│ │ │ │ │ │ │ ├── DeviceDeRegistration.java
│ │ │ │ │ │ │ ├── DeviceRegistration.java
│ │ │ │ │ │ │ ├── QueryMessage.java
│ │ │ │ │ │ │ ├── RegistrationAcknowledgement.java
│ │ │ │ │ │ │ ├── UnknownARSHeader.java
│ │ │ │ │ │ │ ├── UserDeRegistration.java
│ │ │ │ │ │ │ ├── UserDeRegistrationAcknowledge.java
│ │ │ │ │ │ │ ├── UserRegistration.java
│ │ │ │ │ │ │ ├── UserRegistrationAcknowledge.java
│ │ │ │ │ │ │ └── identifier
│ │ │ │ │ │ │ │ ├── ARSDevice.java
│ │ │ │ │ │ │ │ ├── ARSPassword.java
│ │ │ │ │ │ │ │ └── ARSUser.java
│ │ │ │ │ │ ├── lrrp
│ │ │ │ │ │ │ ├── LRRPHeader.java
│ │ │ │ │ │ │ ├── LRRPPacket.java
│ │ │ │ │ │ │ ├── LRRPPacketType.java
│ │ │ │ │ │ │ └── token
│ │ │ │ │ │ │ │ ├── Circle2d.java
│ │ │ │ │ │ │ │ ├── Circle3d.java
│ │ │ │ │ │ │ │ ├── Heading.java
│ │ │ │ │ │ │ │ ├── Identity.java
│ │ │ │ │ │ │ │ ├── LRRPPosition.java
│ │ │ │ │ │ │ │ ├── Point2d.java
│ │ │ │ │ │ │ │ ├── Point3d.java
│ │ │ │ │ │ │ │ ├── Request61.java
│ │ │ │ │ │ │ │ ├── Request73.java
│ │ │ │ │ │ │ │ ├── RequestedTokens.java
│ │ │ │ │ │ │ │ ├── Response.java
│ │ │ │ │ │ │ │ ├── ResponseCode.java
│ │ │ │ │ │ │ │ ├── Speed.java
│ │ │ │ │ │ │ │ ├── Success.java
│ │ │ │ │ │ │ │ ├── Timestamp.java
│ │ │ │ │ │ │ │ ├── Token.java
│ │ │ │ │ │ │ │ ├── TokenFactory.java
│ │ │ │ │ │ │ │ ├── TokenType.java
│ │ │ │ │ │ │ │ ├── TriggerDistance.java
│ │ │ │ │ │ │ │ ├── TriggerGpio.java
│ │ │ │ │ │ │ │ ├── TriggerOnMove.java
│ │ │ │ │ │ │ │ ├── TriggerPeriodic.java
│ │ │ │ │ │ │ │ ├── Unknown23.java
│ │ │ │ │ │ │ │ ├── UnknownToken.java
│ │ │ │ │ │ │ │ └── Version.java
│ │ │ │ │ │ ├── tms
│ │ │ │ │ │ │ ├── TMSHeader.java
│ │ │ │ │ │ │ └── TMSPacket.java
│ │ │ │ │ │ └── xcmp
│ │ │ │ │ │ │ ├── NetworkFrequencyFile.java
│ │ │ │ │ │ │ ├── Repeater.java
│ │ │ │ │ │ │ ├── XCMPHeader.java
│ │ │ │ │ │ │ ├── XCMPMessageType.java
│ │ │ │ │ │ │ ├── XCMPPacket.java
│ │ │ │ │ │ │ └── XCMPPacketFactory.java
│ │ │ │ │ └── udp
│ │ │ │ │ │ ├── UDPHeader.java
│ │ │ │ │ │ ├── UDPPacket.java
│ │ │ │ │ │ └── UDPPort.java
│ │ │ │ ├── lj1200
│ │ │ │ │ ├── FunctionAndReplyCode.java
│ │ │ │ │ ├── FunctionAndReplyCodeIdentifier.java
│ │ │ │ │ ├── LJ1200Decoder.java
│ │ │ │ │ ├── LJ1200DecoderInstrumented.java
│ │ │ │ │ ├── LJ1200DecoderState.java
│ │ │ │ │ ├── LJ1200Message.java
│ │ │ │ │ ├── LJ1200MessageFilter.java
│ │ │ │ │ ├── LJ1200MessageProcessor.java
│ │ │ │ │ └── LJ1200TransponderMessage.java
│ │ │ │ ├── ltrnet
│ │ │ │ │ ├── DecodeConfigLTRNet.java
│ │ │ │ │ ├── LTRNetDecodeEvent.java
│ │ │ │ │ ├── LTRNetDecoder.java
│ │ │ │ │ ├── LTRNetDecoderInstrumented.java
│ │ │ │ │ ├── LTRNetDecoderState.java
│ │ │ │ │ ├── LTRNetMessageFilter.java
│ │ │ │ │ ├── LTRNetMessageProcessor.java
│ │ │ │ │ ├── LtrNetMessageType.java
│ │ │ │ │ ├── channel
│ │ │ │ │ │ └── LtrNetChannel.java
│ │ │ │ │ ├── identifier
│ │ │ │ │ │ ├── LtrNetRadioIdentifier.java
│ │ │ │ │ │ ├── LtrSiteIdentifier.java
│ │ │ │ │ │ └── NeighborIdentifier.java
│ │ │ │ │ └── message
│ │ │ │ │ │ ├── LtrNetMessage.java
│ │ │ │ │ │ ├── LtrNetMessageFactory.java
│ │ │ │ │ │ ├── isw
│ │ │ │ │ │ ├── IswCallEnd.java
│ │ │ │ │ │ ├── IswCallStart.java
│ │ │ │ │ │ ├── IswUniqueId.java
│ │ │ │ │ │ ├── IswUnknown.java
│ │ │ │ │ │ ├── LtrNetIswMessage.java
│ │ │ │ │ │ ├── RegistrationRequestEsnHigh.java
│ │ │ │ │ │ ├── RegistrationRequestEsnLow.java
│ │ │ │ │ │ └── RequestAccess.java
│ │ │ │ │ │ └── osw
│ │ │ │ │ │ ├── ChannelMapHigh.java
│ │ │ │ │ │ ├── ChannelMapLow.java
│ │ │ │ │ │ ├── Frequency.java
│ │ │ │ │ │ ├── FrequencyHigh.java
│ │ │ │ │ │ ├── FrequencyLow.java
│ │ │ │ │ │ ├── LtrNetOswMessage.java
│ │ │ │ │ │ ├── NeighborId.java
│ │ │ │ │ │ ├── OswCallEnd.java
│ │ │ │ │ │ ├── OswCallStart.java
│ │ │ │ │ │ ├── OswUnknown.java
│ │ │ │ │ │ ├── ReceiveFrequencyHigh.java
│ │ │ │ │ │ ├── ReceiveFrequencyLow.java
│ │ │ │ │ │ ├── RegistrationAccept.java
│ │ │ │ │ │ ├── SiteId.java
│ │ │ │ │ │ ├── SystemIdle.java
│ │ │ │ │ │ ├── TransmitFrequencyHigh.java
│ │ │ │ │ │ └── TransmitFrequencyLow.java
│ │ │ │ ├── ltrstandard
│ │ │ │ │ ├── DecodeConfigLTRStandard.java
│ │ │ │ │ ├── LTRStandardDecodeEvent.java
│ │ │ │ │ ├── LTRStandardDecoder.java
│ │ │ │ │ ├── LTRStandardDecoderState.java
│ │ │ │ │ ├── LTRStandardMessageFilter.java
│ │ │ │ │ ├── LTRStandardMessageProcessor.java
│ │ │ │ │ ├── LtrStandardMessageType.java
│ │ │ │ │ ├── channel
│ │ │ │ │ │ └── LtrChannel.java
│ │ │ │ │ └── message
│ │ │ │ │ │ ├── Call.java
│ │ │ │ │ │ ├── CallEnd.java
│ │ │ │ │ │ ├── Idle.java
│ │ │ │ │ │ ├── LTRMessage.java
│ │ │ │ │ │ └── UnknownMessage.java
│ │ │ │ ├── mdc1200
│ │ │ │ │ ├── MDCDecodeEvent.java
│ │ │ │ │ ├── MDCDecoder.java
│ │ │ │ │ ├── MDCDecoderInstrumented.java
│ │ │ │ │ ├── MDCDecoderState.java
│ │ │ │ │ ├── MDCMessage.java
│ │ │ │ │ ├── MDCMessageFilter.java
│ │ │ │ │ ├── MDCMessageProcessor.java
│ │ │ │ │ ├── MDCMessageType.java
│ │ │ │ │ └── identifier
│ │ │ │ │ │ └── MDC1200Identifier.java
│ │ │ │ ├── mpt1327
│ │ │ │ │ ├── DecodeConfigMPT1327.java
│ │ │ │ │ ├── MPT1327ChannelGrantEvent.java
│ │ │ │ │ ├── MPT1327DecodeEvent.java
│ │ │ │ │ ├── MPT1327Decoder.java
│ │ │ │ │ ├── MPT1327DecoderInstrumented.java
│ │ │ │ │ ├── MPT1327DecoderState.java
│ │ │ │ │ ├── MPT1327Message.java
│ │ │ │ │ ├── MPT1327MessageFilter.java
│ │ │ │ │ ├── MPT1327MessageProcessor.java
│ │ │ │ │ ├── MPT1327TrafficChannelManager.java
│ │ │ │ │ ├── Sync.java
│ │ │ │ │ ├── channel
│ │ │ │ │ │ └── MPT1327Channel.java
│ │ │ │ │ └── identifier
│ │ │ │ │ │ ├── IdentType.java
│ │ │ │ │ │ ├── MPT1327SiteIdentifier.java
│ │ │ │ │ │ └── MPT1327Talkgroup.java
│ │ │ │ ├── nbfm
│ │ │ │ │ ├── DecodeConfigNBFM.java
│ │ │ │ │ ├── NBFMDecoder.java
│ │ │ │ │ ├── NBFMDecoderState.java
│ │ │ │ │ └── NBFMTalkgroup.java
│ │ │ │ ├── p25
│ │ │ │ │ ├── IServiceOptionsProvider.java
│ │ │ │ │ ├── P25ChannelGrantEvent.java
│ │ │ │ │ ├── P25DecodeEvent.java
│ │ │ │ │ ├── P25FrequencyBandPreloadDataContent.java
│ │ │ │ │ ├── P25TrafficChannelEventTracker.java
│ │ │ │ │ ├── P25TrafficChannelManager.java
│ │ │ │ │ ├── P25Utils.java
│ │ │ │ │ ├── audio
│ │ │ │ │ │ ├── P25P1AudioModule.java
│ │ │ │ │ │ ├── P25P1CallSequenceRecorder.java
│ │ │ │ │ │ ├── P25P2AudioModule.java
│ │ │ │ │ │ ├── P25P2CallSequenceRecorder.java
│ │ │ │ │ │ ├── Phase2EncryptionSyncParameters.java
│ │ │ │ │ │ └── VoiceFrame.java
│ │ │ │ │ ├── identifier
│ │ │ │ │ │ ├── APCO25Lra.java
│ │ │ │ │ │ ├── APCO25Nac.java
│ │ │ │ │ │ ├── APCO25Rfss.java
│ │ │ │ │ │ ├── APCO25Site.java
│ │ │ │ │ │ ├── APCO25System.java
│ │ │ │ │ │ ├── APCO25Wacn.java
│ │ │ │ │ │ ├── channel
│ │ │ │ │ │ │ ├── APCO25Channel.java
│ │ │ │ │ │ │ ├── APCO25ExplicitChannel.java
│ │ │ │ │ │ │ ├── P25Channel.java
│ │ │ │ │ │ │ ├── P25ExplicitChannel.java
│ │ │ │ │ │ │ ├── P25P2Channel.java
│ │ │ │ │ │ │ ├── P25P2ExplicitChannel.java
│ │ │ │ │ │ │ └── StandardChannel.java
│ │ │ │ │ │ ├── encryption
│ │ │ │ │ │ │ └── APCO25EncryptionKey.java
│ │ │ │ │ │ ├── ipv4
│ │ │ │ │ │ │ ├── APCO25IpAddress.java
│ │ │ │ │ │ │ └── DMRIpAddress.java
│ │ │ │ │ │ ├── message
│ │ │ │ │ │ │ └── APCO25ShortDataMessage.java
│ │ │ │ │ │ ├── patch
│ │ │ │ │ │ │ └── APCO25PatchGroup.java
│ │ │ │ │ │ ├── radio
│ │ │ │ │ │ │ ├── APCO25FullyQualifiedRadioIdentifier.java
│ │ │ │ │ │ │ └── APCO25RadioIdentifier.java
│ │ │ │ │ │ ├── status
│ │ │ │ │ │ │ ├── APCO25UnitStatus.java
│ │ │ │ │ │ │ └── APCO25UserStatus.java
│ │ │ │ │ │ ├── talkgroup
│ │ │ │ │ │ │ ├── APCO25AnnouncementTalkgroup.java
│ │ │ │ │ │ │ ├── APCO25FullyQualifiedTalkgroupIdentifier.java
│ │ │ │ │ │ │ └── APCO25Talkgroup.java
│ │ │ │ │ │ └── telephone
│ │ │ │ │ │ │ └── APCO25TelephoneNumber.java
│ │ │ │ │ ├── phase1
│ │ │ │ │ │ ├── C4FMFrameListener.java
│ │ │ │ │ │ ├── C4FMSlicer.java
│ │ │ │ │ │ ├── DecodeConfigP25.java
│ │ │ │ │ │ ├── DecodeConfigP25Phase1.java
│ │ │ │ │ │ ├── IP25P1DataUnitDetectListener.java
│ │ │ │ │ │ ├── P25P1ChannelStatusProcessor.java
│ │ │ │ │ │ ├── P25P1DataUnitDetector.java
│ │ │ │ │ │ ├── P25P1DataUnitID.java
│ │ │ │ │ │ ├── P25P1Decoder.java
│ │ │ │ │ │ ├── P25P1DecoderC4FM.java
│ │ │ │ │ │ ├── P25P1DecoderC4FMInstrumented.java
│ │ │ │ │ │ ├── P25P1DecoderLSM.java
│ │ │ │ │ │ ├── P25P1DecoderLSMInstrumented.java
│ │ │ │ │ │ ├── P25P1DecoderState.java
│ │ │ │ │ │ ├── P25P1Interleave.java
│ │ │ │ │ │ ├── P25P1MessageFramer.java
│ │ │ │ │ │ ├── P25P1MessageProcessor.java
│ │ │ │ │ │ ├── P25P1NetworkConfigurationMonitor.java
│ │ │ │ │ │ ├── P25P1SyncDetector.java
│ │ │ │ │ │ └── message
│ │ │ │ │ │ │ ├── IAdjacentSite.java
│ │ │ │ │ │ │ ├── IFrequencyBand.java
│ │ │ │ │ │ │ ├── IFrequencyBandReceiver.java
│ │ │ │ │ │ │ ├── P25FrequencyBand.java
│ │ │ │ │ │ │ ├── P25MessageFactory.java
│ │ │ │ │ │ │ ├── P25P1Message.java
│ │ │ │ │ │ │ ├── UnknownP25Message.java
│ │ │ │ │ │ │ ├── filter
│ │ │ │ │ │ │ ├── HeaderMessageFilter.java
│ │ │ │ │ │ │ ├── P25OtherMessageFilter.java
│ │ │ │ │ │ │ ├── P25P1MessageFilterSet.java
│ │ │ │ │ │ │ ├── PDUMessageFilter.java
│ │ │ │ │ │ │ ├── PacketMessageFilter.java
│ │ │ │ │ │ │ ├── SNDCPMessageFilter.java
│ │ │ │ │ │ │ ├── TDUMessageFilter.java
│ │ │ │ │ │ │ ├── TerminatorMessageFilter.java
│ │ │ │ │ │ │ ├── TerminatorMessageFilterSet.java
│ │ │ │ │ │ │ ├── TrunkingOpcodeMessageFilter.java
│ │ │ │ │ │ │ ├── TrunkingOpcodeMessageFilterSet.java
│ │ │ │ │ │ │ └── VoiceMessageFilter.java
│ │ │ │ │ │ │ ├── hdu
│ │ │ │ │ │ │ ├── HDUMessage.java
│ │ │ │ │ │ │ └── HeaderData.java
│ │ │ │ │ │ │ ├── lc
│ │ │ │ │ │ │ ├── ExtendedSourceLinkControlWord.java
│ │ │ │ │ │ │ ├── IExtendedSourceMessage.java
│ │ │ │ │ │ │ ├── LinkControlOpcode.java
│ │ │ │ │ │ │ ├── LinkControlWord.java
│ │ │ │ │ │ │ ├── LinkControlWordFactory.java
│ │ │ │ │ │ │ ├── UnknownLinkControlWord.java
│ │ │ │ │ │ │ ├── VoiceLinkControlMessage.java
│ │ │ │ │ │ │ ├── l3harris
│ │ │ │ │ │ │ │ ├── HarrisTalkerAliasAssembler.java
│ │ │ │ │ │ │ │ ├── LCHarrisReturnToControlChannel.java
│ │ │ │ │ │ │ │ ├── LCHarrisTalkerAliasBase.java
│ │ │ │ │ │ │ │ ├── LCHarrisTalkerAliasBlock1.java
│ │ │ │ │ │ │ │ ├── LCHarrisTalkerAliasBlock2.java
│ │ │ │ │ │ │ │ ├── LCHarrisTalkerAliasBlock3.java
│ │ │ │ │ │ │ │ ├── LCHarrisTalkerAliasBlock4.java
│ │ │ │ │ │ │ │ ├── LCHarrisTalkerAliasComplete.java
│ │ │ │ │ │ │ │ ├── LCHarrisTalkerGPSBlock1.java
│ │ │ │ │ │ │ │ ├── LCHarrisTalkerGPSBlock2.java
│ │ │ │ │ │ │ │ └── LCHarrisTalkerGPSComplete.java
│ │ │ │ │ │ │ ├── motorola
│ │ │ │ │ │ │ │ ├── LCMotorolaEmergencyAlarmActivation.java
│ │ │ │ │ │ │ │ ├── LCMotorolaFailsoft.java
│ │ │ │ │ │ │ │ ├── LCMotorolaGroupGroupDelete.java
│ │ │ │ │ │ │ │ ├── LCMotorolaGroupRegroupAdd.java
│ │ │ │ │ │ │ │ ├── LCMotorolaGroupRegroupVoiceChannelUpdate.java
│ │ │ │ │ │ │ │ ├── LCMotorolaGroupRegroupVoiceChannelUser.java
│ │ │ │ │ │ │ │ ├── LCMotorolaTalkComplete.java
│ │ │ │ │ │ │ │ ├── LCMotorolaTalkerAliasAssembler.java
│ │ │ │ │ │ │ │ ├── LCMotorolaTalkerAliasDataBlock.java
│ │ │ │ │ │ │ │ ├── LCMotorolaTalkerAliasHeader.java
│ │ │ │ │ │ │ │ ├── LCMotorolaUnitGPS.java
│ │ │ │ │ │ │ │ ├── LCMotorolaUnknownOpcode.java
│ │ │ │ │ │ │ │ └── MotorolaTalkerAliasComplete.java
│ │ │ │ │ │ │ └── standard
│ │ │ │ │ │ │ │ ├── LCAdjacentSiteStatusBroadcast.java
│ │ │ │ │ │ │ │ ├── LCAdjacentSiteStatusBroadcastExplicit.java
│ │ │ │ │ │ │ │ ├── LCCallAlert.java
│ │ │ │ │ │ │ │ ├── LCCallTermination.java
│ │ │ │ │ │ │ │ ├── LCChannelIdentifierUpdate.java
│ │ │ │ │ │ │ │ ├── LCChannelIdentifierUpdateVU.java
│ │ │ │ │ │ │ │ ├── LCConventionalFallback.java
│ │ │ │ │ │ │ │ ├── LCExtendedFunctionCommand.java
│ │ │ │ │ │ │ │ ├── LCExtendedFunctionCommandExtended.java
│ │ │ │ │ │ │ │ ├── LCGroupAffiliationQuery.java
│ │ │ │ │ │ │ │ ├── LCGroupVoiceChannelUpdate.java
│ │ │ │ │ │ │ │ ├── LCGroupVoiceChannelUpdateExplicit.java
│ │ │ │ │ │ │ │ ├── LCGroupVoiceChannelUser.java
│ │ │ │ │ │ │ │ ├── LCMessageUpdate.java
│ │ │ │ │ │ │ │ ├── LCMessageUpdateExtended.java
│ │ │ │ │ │ │ │ ├── LCNetworkStatusBroadcast.java
│ │ │ │ │ │ │ │ ├── LCNetworkStatusBroadcastExplicit.java
│ │ │ │ │ │ │ │ ├── LCProtectionParameterBroadcast.java
│ │ │ │ │ │ │ │ ├── LCRFSSStatusBroadcast.java
│ │ │ │ │ │ │ │ ├── LCRFSSStatusBroadcastExplicit.java
│ │ │ │ │ │ │ │ ├── LCSecondaryControlChannelBroadcast.java
│ │ │ │ │ │ │ │ ├── LCSecondaryControlChannelBroadcastExplicit.java
│ │ │ │ │ │ │ │ ├── LCSourceIDExtension.java
│ │ │ │ │ │ │ │ ├── LCStatusQuery.java
│ │ │ │ │ │ │ │ ├── LCStatusUpdate.java
│ │ │ │ │ │ │ │ ├── LCStatusUpdateExtended.java
│ │ │ │ │ │ │ │ ├── LCSystemServiceBroadcast.java
│ │ │ │ │ │ │ │ ├── LCTelephoneInterconnectAnswerRequest.java
│ │ │ │ │ │ │ │ ├── LCTelephoneInterconnectVoiceChannelUser.java
│ │ │ │ │ │ │ │ ├── LCUnitAuthenticationCommand.java
│ │ │ │ │ │ │ │ ├── LCUnitRegistrationCommand.java
│ │ │ │ │ │ │ │ ├── LCUnitToUnitAnswerRequest.java
│ │ │ │ │ │ │ │ ├── LCUnitToUnitVoiceChannelUser.java
│ │ │ │ │ │ │ │ └── LCUnitToUnitVoiceChannelUserExtended.java
│ │ │ │ │ │ │ ├── ldu
│ │ │ │ │ │ │ ├── EncryptionSyncParameters.java
│ │ │ │ │ │ │ ├── LDU1Message.java
│ │ │ │ │ │ │ ├── LDU2Message.java
│ │ │ │ │ │ │ └── LDUMessage.java
│ │ │ │ │ │ │ ├── pdu
│ │ │ │ │ │ │ ├── PDUHeader.java
│ │ │ │ │ │ │ ├── PDUHeaderFactory.java
│ │ │ │ │ │ │ ├── PDUMessage.java
│ │ │ │ │ │ │ ├── PDUMessageFactory.java
│ │ │ │ │ │ │ ├── PDUSequence.java
│ │ │ │ │ │ │ ├── PDUSequenceMessage.java
│ │ │ │ │ │ │ ├── ambtc
│ │ │ │ │ │ │ │ ├── AMBTCHeader.java
│ │ │ │ │ │ │ │ ├── AMBTCMessage.java
│ │ │ │ │ │ │ │ ├── isp
│ │ │ │ │ │ │ │ │ ├── AMBTCAuthenticationQuery.java
│ │ │ │ │ │ │ │ │ ├── AMBTCAuthenticationResponse.java
│ │ │ │ │ │ │ │ │ ├── AMBTCCallAlertRequest.java
│ │ │ │ │ │ │ │ │ ├── AMBTCGroupAffiliationRequest.java
│ │ │ │ │ │ │ │ │ ├── AMBTCIndividualDataServiceRequest.java
│ │ │ │ │ │ │ │ │ ├── AMBTCLocationRegistrationRequest.java
│ │ │ │ │ │ │ │ │ ├── AMBTCMessageUpdateRequest.java
│ │ │ │ │ │ │ │ │ ├── AMBTCRoamingAddressRequest.java
│ │ │ │ │ │ │ │ │ ├── AMBTCStatusQueryRequest.java
│ │ │ │ │ │ │ │ │ ├── AMBTCStatusQueryResponse.java
│ │ │ │ │ │ │ │ │ ├── AMBTCStatusUpdateRequest.java
│ │ │ │ │ │ │ │ │ ├── AMBTCUnitAcknowledgeResponse.java
│ │ │ │ │ │ │ │ │ ├── AMBTCUnitToUnitAnswerResponse.java
│ │ │ │ │ │ │ │ │ └── AMBTCUnitToUnitVoiceServiceRequest.java
│ │ │ │ │ │ │ │ └── osp
│ │ │ │ │ │ │ │ │ ├── AMBTCAdjacentStatusBroadcast.java
│ │ │ │ │ │ │ │ │ ├── AMBTCCallAlert.java
│ │ │ │ │ │ │ │ │ ├── AMBTCFrequencyBandUpdateTDMA.java
│ │ │ │ │ │ │ │ │ ├── AMBTCGroupAffiliationQuery.java
│ │ │ │ │ │ │ │ │ ├── AMBTCGroupAffiliationResponse.java
│ │ │ │ │ │ │ │ │ ├── AMBTCGroupDataChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── AMBTCGroupVoiceChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── AMBTCIndividualDataChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── AMBTCMessageUpdate.java
│ │ │ │ │ │ │ │ │ ├── AMBTCMotorolaGroupRegroupChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── AMBTCNetworkStatusBroadcast.java
│ │ │ │ │ │ │ │ │ ├── AMBTCProtectionParameterBroadcast.java
│ │ │ │ │ │ │ │ │ ├── AMBTCRFSSStatusBroadcast.java
│ │ │ │ │ │ │ │ │ ├── AMBTCRoamingAddressResponse.java
│ │ │ │ │ │ │ │ │ ├── AMBTCRoamingAddressUpdate.java
│ │ │ │ │ │ │ │ │ ├── AMBTCStatusQuery.java
│ │ │ │ │ │ │ │ │ ├── AMBTCStatusUpdate.java
│ │ │ │ │ │ │ │ │ ├── AMBTCTelephoneInterconnectChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── AMBTCTelephoneInterconnectChannelGrantUpdate.java
│ │ │ │ │ │ │ │ │ ├── AMBTCUnitRegistrationResponse.java
│ │ │ │ │ │ │ │ │ ├── AMBTCUnitToUnitAnswerRequest.java
│ │ │ │ │ │ │ │ │ ├── AMBTCUnitToUnitVoiceServiceChannelGrant.java
│ │ │ │ │ │ │ │ │ └── AMBTCUnitToUnitVoiceServiceChannelGrantUpdate.java
│ │ │ │ │ │ │ ├── block
│ │ │ │ │ │ │ │ ├── ConfirmedDataBlock.java
│ │ │ │ │ │ │ │ ├── DataBlock.java
│ │ │ │ │ │ │ │ └── UnconfirmedDataBlock.java
│ │ │ │ │ │ │ ├── packet
│ │ │ │ │ │ │ │ ├── PacketHeader.java
│ │ │ │ │ │ │ │ ├── PacketMessage.java
│ │ │ │ │ │ │ │ └── sndcp
│ │ │ │ │ │ │ │ │ ├── ActivateTdsContextAccept.java
│ │ │ │ │ │ │ │ │ ├── ActivateTdsContextReject.java
│ │ │ │ │ │ │ │ │ ├── ActivateTdsContextRequest.java
│ │ │ │ │ │ │ │ │ ├── DeActivateTdsContextRequest.java
│ │ │ │ │ │ │ │ │ ├── SNDCPMessage.java
│ │ │ │ │ │ │ │ │ ├── SNDCPMessageFactory.java
│ │ │ │ │ │ │ │ │ ├── SNDCPPacketHeader.java
│ │ │ │ │ │ │ │ │ └── SNDCPPacketMessage.java
│ │ │ │ │ │ │ ├── response
│ │ │ │ │ │ │ │ ├── ResponseHeader.java
│ │ │ │ │ │ │ │ └── ResponseMessage.java
│ │ │ │ │ │ │ └── umbtc
│ │ │ │ │ │ │ │ ├── UMBTCHeader.java
│ │ │ │ │ │ │ │ ├── UMBTCMessage.java
│ │ │ │ │ │ │ │ └── isp
│ │ │ │ │ │ │ │ └── UMBTCTelephoneInterconnectRequestExplicitDialing.java
│ │ │ │ │ │ │ ├── tdu
│ │ │ │ │ │ │ ├── TDULCMessage.java
│ │ │ │ │ │ │ └── TDUMessage.java
│ │ │ │ │ │ │ ├── tsbk
│ │ │ │ │ │ │ ├── ISPMessage.java
│ │ │ │ │ │ │ ├── OSPMessage.java
│ │ │ │ │ │ │ ├── Opcode.java
│ │ │ │ │ │ │ ├── TSBKMessage.java
│ │ │ │ │ │ │ ├── TSBKMessageFactory.java
│ │ │ │ │ │ │ ├── VendorISPMessage.java
│ │ │ │ │ │ │ ├── VendorOSPMessage.java
│ │ │ │ │ │ │ ├── harris
│ │ │ │ │ │ │ │ ├── isp
│ │ │ │ │ │ │ │ │ └── UnknownHarrisISPMessage.java
│ │ │ │ │ │ │ │ └── osp
│ │ │ │ │ │ │ │ │ ├── L3HarrisGroupRegroupExplicitEncryptionCommand.java
│ │ │ │ │ │ │ │ │ └── UnknownHarrisOSPMessage.java
│ │ │ │ │ │ │ ├── motorola
│ │ │ │ │ │ │ │ ├── isp
│ │ │ │ │ │ │ │ │ ├── MotorolaExtendedFunctionResponse.java
│ │ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupVoiceRequest.java
│ │ │ │ │ │ │ │ │ └── UnknownMotorolaISPMessage.java
│ │ │ │ │ │ │ │ └── osp
│ │ │ │ │ │ │ │ │ ├── ChannelLoading.java
│ │ │ │ │ │ │ │ │ ├── MotorolaAcknowledgeResponse.java
│ │ │ │ │ │ │ │ │ ├── MotorolaBaseStationId.java
│ │ │ │ │ │ │ │ │ ├── MotorolaDenyResponse.java
│ │ │ │ │ │ │ │ │ ├── MotorolaEmergencyAlarmActivation.java
│ │ │ │ │ │ │ │ │ ├── MotorolaExplicitTDMADataChannelAnnouncement.java
│ │ │ │ │ │ │ │ │ ├── MotorolaExtendedFunctionCommand.java
│ │ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupAddCommand.java
│ │ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupChannelUpdate.java
│ │ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupDeleteCommand.java
│ │ │ │ │ │ │ │ │ ├── MotorolaOpcode15.java
│ │ │ │ │ │ │ │ │ ├── MotorolaQueuedResponse.java
│ │ │ │ │ │ │ │ │ ├── MotorolaTrafficChannel.java
│ │ │ │ │ │ │ │ │ ├── PlannedChannelShutdown.java
│ │ │ │ │ │ │ │ │ └── UnknownMotorolaOSPMessage.java
│ │ │ │ │ │ │ ├── standard
│ │ │ │ │ │ │ │ ├── isp
│ │ │ │ │ │ │ │ │ ├── AuthenticationQuery.java
│ │ │ │ │ │ │ │ │ ├── CallAlertRequest.java
│ │ │ │ │ │ │ │ │ ├── CancelServiceRequest.java
│ │ │ │ │ │ │ │ │ ├── EmergencyAlarmRequest.java
│ │ │ │ │ │ │ │ │ ├── ExtendedFunctionResponse.java
│ │ │ │ │ │ │ │ │ ├── FrequencyBandUpdateRequest.java
│ │ │ │ │ │ │ │ │ ├── GroupAffiliationQueryResponse.java
│ │ │ │ │ │ │ │ │ ├── GroupAffiliationRequest.java
│ │ │ │ │ │ │ │ │ ├── GroupDataServiceRequest.java
│ │ │ │ │ │ │ │ │ ├── GroupVoiceServiceRequest.java
│ │ │ │ │ │ │ │ │ ├── IndividualDataServiceRequest.java
│ │ │ │ │ │ │ │ │ ├── LocationRegistrationRequest.java
│ │ │ │ │ │ │ │ │ ├── MessageUpdateRequest.java
│ │ │ │ │ │ │ │ │ ├── ProtectionParameterRequest.java
│ │ │ │ │ │ │ │ │ ├── RadioUnitMonitorRequest.java
│ │ │ │ │ │ │ │ │ ├── RoamingAddressRequest.java
│ │ │ │ │ │ │ │ │ ├── RoamingAddressResponse.java
│ │ │ │ │ │ │ │ │ ├── SNDCPDataChannelRequest.java
│ │ │ │ │ │ │ │ │ ├── SNDCPDataPageResponse.java
│ │ │ │ │ │ │ │ │ ├── SNDCPReconnectRequest.java
│ │ │ │ │ │ │ │ │ ├── StatusQueryRequest.java
│ │ │ │ │ │ │ │ │ ├── StatusQueryResponse.java
│ │ │ │ │ │ │ │ │ ├── StatusUpdateRequest.java
│ │ │ │ │ │ │ │ │ ├── TelephoneInterconnectAnswerResponse.java
│ │ │ │ │ │ │ │ │ ├── TelephoneInterconnectPstnRequest.java
│ │ │ │ │ │ │ │ │ ├── UnitAcknowledgeResponse.java
│ │ │ │ │ │ │ │ │ ├── UnitDeRegistrationRequest.java
│ │ │ │ │ │ │ │ │ ├── UnitRegistrationRequest.java
│ │ │ │ │ │ │ │ │ ├── UnitToUnitVoiceServiceAnswerResponse.java
│ │ │ │ │ │ │ │ │ ├── UnitToUnitVoiceServiceRequest.java
│ │ │ │ │ │ │ │ │ └── UnknownISPMessage.java
│ │ │ │ │ │ │ │ └── osp
│ │ │ │ │ │ │ │ │ ├── AcknowledgeResponse.java
│ │ │ │ │ │ │ │ │ ├── AdjacentStatusBroadcast.java
│ │ │ │ │ │ │ │ │ ├── AuthenticationCommand.java
│ │ │ │ │ │ │ │ │ ├── CallAlert.java
│ │ │ │ │ │ │ │ │ ├── DenyResponse.java
│ │ │ │ │ │ │ │ │ ├── ExtendedFunctionCommand.java
│ │ │ │ │ │ │ │ │ ├── FrequencyBandUpdate.java
│ │ │ │ │ │ │ │ │ ├── FrequencyBandUpdateTDMA.java
│ │ │ │ │ │ │ │ │ ├── FrequencyBandUpdateVUHF.java
│ │ │ │ │ │ │ │ │ ├── GroupAffiliationQuery.java
│ │ │ │ │ │ │ │ │ ├── GroupAffiliationResponse.java
│ │ │ │ │ │ │ │ │ ├── GroupDataChannelAnnouncement.java
│ │ │ │ │ │ │ │ │ ├── GroupDataChannelAnnouncementExplicit.java
│ │ │ │ │ │ │ │ │ ├── GroupDataChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── GroupVoiceChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── GroupVoiceChannelGrantUpdate.java
│ │ │ │ │ │ │ │ │ ├── GroupVoiceChannelGrantUpdateExplicit.java
│ │ │ │ │ │ │ │ │ ├── IndividualDataChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── LocationRegistrationResponse.java
│ │ │ │ │ │ │ │ │ ├── MessageUpdate.java
│ │ │ │ │ │ │ │ │ ├── NetworkStatusBroadcast.java
│ │ │ │ │ │ │ │ │ ├── ProtectionParameterUpdate.java
│ │ │ │ │ │ │ │ │ ├── QueuedResponse.java
│ │ │ │ │ │ │ │ │ ├── RFSSStatusBroadcast.java
│ │ │ │ │ │ │ │ │ ├── RadioUnitMonitorCommand.java
│ │ │ │ │ │ │ │ │ ├── RoamingAddressCommand.java
│ │ │ │ │ │ │ │ │ ├── SNDCPDataChannelAnnouncementExplicit.java
│ │ │ │ │ │ │ │ │ ├── SNDCPDataChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── SNDCPDataPageRequest.java
│ │ │ │ │ │ │ │ │ ├── SecondaryControlChannelBroadcast.java
│ │ │ │ │ │ │ │ │ ├── SecondaryControlChannelBroadcastExplicit.java
│ │ │ │ │ │ │ │ │ ├── StatusQuery.java
│ │ │ │ │ │ │ │ │ ├── StatusUpdate.java
│ │ │ │ │ │ │ │ │ ├── SynchronizationBroadcast.java
│ │ │ │ │ │ │ │ │ ├── SystemServiceBroadcast.java
│ │ │ │ │ │ │ │ │ ├── TelephoneInterconnectAnswerRequest.java
│ │ │ │ │ │ │ │ │ ├── TelephoneInterconnectVoiceChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── TelephoneInterconnectVoiceChannelGrantUpdate.java
│ │ │ │ │ │ │ │ │ ├── UnitDeRegistrationAcknowledge.java
│ │ │ │ │ │ │ │ │ ├── UnitRegistrationCommand.java
│ │ │ │ │ │ │ │ │ ├── UnitRegistrationResponse.java
│ │ │ │ │ │ │ │ │ ├── UnitToUnitAnswerRequest.java
│ │ │ │ │ │ │ │ │ ├── UnitToUnitVoiceChannelGrant.java
│ │ │ │ │ │ │ │ │ ├── UnitToUnitVoiceChannelGrantUpdate.java
│ │ │ │ │ │ │ │ │ └── UnknownOSPMessage.java
│ │ │ │ │ │ │ └── unknown
│ │ │ │ │ │ │ │ ├── isp
│ │ │ │ │ │ │ │ └── UnknownVendorISPMessage.java
│ │ │ │ │ │ │ │ └── osp
│ │ │ │ │ │ │ │ └── UnknownVendorOSPMessage.java
│ │ │ │ │ │ │ └── vselp
│ │ │ │ │ │ │ ├── VSELP1Message.java
│ │ │ │ │ │ │ └── VSELP2Message.java
│ │ │ │ │ ├── phase2
│ │ │ │ │ │ ├── DecodeConfigP25Phase2.java
│ │ │ │ │ │ ├── DibitDelayBuffer.java
│ │ │ │ │ │ ├── IP25P2DataUnitDetectListener.java
│ │ │ │ │ │ ├── P25P2Decoder.java
│ │ │ │ │ │ ├── P25P2DecoderHDQPSK.java
│ │ │ │ │ │ ├── P25P2DecoderHDQPSKInstrumented.java
│ │ │ │ │ │ ├── P25P2DecoderState.java
│ │ │ │ │ │ ├── P25P2MessageFramer.java
│ │ │ │ │ │ ├── P25P2MessageProcessor.java
│ │ │ │ │ │ ├── P25P2NetworkConfigurationMonitor.java
│ │ │ │ │ │ ├── P25P2SuperFrameDetector.java
│ │ │ │ │ │ ├── P25P2SyncDetector.java
│ │ │ │ │ │ ├── P25P2SyncPattern.java
│ │ │ │ │ │ ├── enumeration
│ │ │ │ │ │ │ ├── BER.java
│ │ │ │ │ │ │ ├── DataUnitID.java
│ │ │ │ │ │ │ ├── ISCHSequence.java
│ │ │ │ │ │ │ ├── LCHType.java
│ │ │ │ │ │ │ ├── RFLevel.java
│ │ │ │ │ │ │ ├── ScrambleParameters.java
│ │ │ │ │ │ │ ├── SuperframeSequence.java
│ │ │ │ │ │ │ └── Voice4VOffset.java
│ │ │ │ │ │ ├── message
│ │ │ │ │ │ │ ├── EncryptionSynchronizationSequence.java
│ │ │ │ │ │ │ ├── EncryptionSynchronizationSequenceProcessor.java
│ │ │ │ │ │ │ ├── P25P2Message.java
│ │ │ │ │ │ │ ├── SuperFrameFragment.java
│ │ │ │ │ │ │ ├── filter
│ │ │ │ │ │ │ │ ├── MacOpcodeMessageFilter.java
│ │ │ │ │ │ │ │ ├── MacOpcodeMessageFilterSet.java
│ │ │ │ │ │ │ │ ├── P25P2MessageFilterSet.java
│ │ │ │ │ │ │ │ ├── P25P2OtherMessageFilter.java
│ │ │ │ │ │ │ │ └── VoiceMessageFilter.java
│ │ │ │ │ │ │ ├── isch
│ │ │ │ │ │ │ │ ├── IISCH.java
│ │ │ │ │ │ │ │ ├── ISCHDecoder.java
│ │ │ │ │ │ │ │ └── SISCH.java
│ │ │ │ │ │ │ └── mac
│ │ │ │ │ │ │ │ ├── IP25ChannelGrantDetailProvider.java
│ │ │ │ │ │ │ │ ├── MacMessage.java
│ │ │ │ │ │ │ │ ├── MacMessageFactory.java
│ │ │ │ │ │ │ │ ├── MacOpcode.java
│ │ │ │ │ │ │ │ ├── MacPduType.java
│ │ │ │ │ │ │ │ ├── UnknownMacMessage.java
│ │ │ │ │ │ │ │ └── structure
│ │ │ │ │ │ │ │ ├── AcknowledgeResponseFNEAbbreviated.java
│ │ │ │ │ │ │ │ ├── AcknowledgeResponseFNEExtended.java
│ │ │ │ │ │ │ │ ├── AdjacentStatusBroadcastExplicit.java
│ │ │ │ │ │ │ │ ├── AdjacentStatusBroadcastExtendedExplicit.java
│ │ │ │ │ │ │ │ ├── AdjacentStatusBroadcastImplicit.java
│ │ │ │ │ │ │ │ ├── AuthenticationDemand.java
│ │ │ │ │ │ │ │ ├── AuthenticationFNEResponseAbbreviated.java
│ │ │ │ │ │ │ │ ├── AuthenticationFNEResponseExtended.java
│ │ │ │ │ │ │ │ ├── CallAlertAbbreviated.java
│ │ │ │ │ │ │ │ ├── CallAlertExtendedLCCH.java
│ │ │ │ │ │ │ │ ├── CallAlertExtendedVCH.java
│ │ │ │ │ │ │ │ ├── DenyResponse.java
│ │ │ │ │ │ │ │ ├── EndPushToTalk.java
│ │ │ │ │ │ │ │ ├── ExtendedFunctionCommandAbbreviated.java
│ │ │ │ │ │ │ │ ├── ExtendedFunctionCommandExtendedLCCH.java
│ │ │ │ │ │ │ │ ├── ExtendedFunctionCommandExtendedVCH.java
│ │ │ │ │ │ │ │ ├── FrequencyBandUpdate.java
│ │ │ │ │ │ │ │ ├── FrequencyBandUpdateTDMAAbbreviated.java
│ │ │ │ │ │ │ │ ├── FrequencyBandUpdateTDMAExtended.java
│ │ │ │ │ │ │ │ ├── FrequencyBandUpdateVUHF.java
│ │ │ │ │ │ │ │ ├── GroupAffiliationQueryAbbreviated.java
│ │ │ │ │ │ │ │ ├── GroupAffiliationQueryExtended.java
│ │ │ │ │ │ │ │ ├── GroupAffiliationResponseAbbreviated.java
│ │ │ │ │ │ │ │ ├── GroupAffiliationResponseExtended.java
│ │ │ │ │ │ │ │ ├── GroupRegroupVoiceChannelUserAbbreviated.java
│ │ │ │ │ │ │ │ ├── GroupVoiceChannelGrantExplicit.java
│ │ │ │ │ │ │ │ ├── GroupVoiceChannelGrantImplicit.java
│ │ │ │ │ │ │ │ ├── GroupVoiceChannelGrantUpdateExplicit.java
│ │ │ │ │ │ │ │ ├── GroupVoiceChannelGrantUpdateImplicit.java
│ │ │ │ │ │ │ │ ├── GroupVoiceChannelGrantUpdateMultipleExplicit.java
│ │ │ │ │ │ │ │ ├── GroupVoiceChannelGrantUpdateMultipleImplicit.java
│ │ │ │ │ │ │ │ ├── GroupVoiceChannelUserAbbreviated.java
│ │ │ │ │ │ │ │ ├── GroupVoiceChannelUserExtended.java
│ │ │ │ │ │ │ │ ├── GroupVoiceServiceRequest.java
│ │ │ │ │ │ │ │ ├── IndirectGroupPagingWithoutPriority.java
│ │ │ │ │ │ │ │ ├── IndividualPagingWithPriority.java
│ │ │ │ │ │ │ │ ├── LocationRegistrationResponse.java
│ │ │ │ │ │ │ │ ├── MacRelease.java
│ │ │ │ │ │ │ │ ├── MacStructure.java
│ │ │ │ │ │ │ │ ├── MacStructureDataService.java
│ │ │ │ │ │ │ │ ├── MacStructureFailedPDUCRC.java
│ │ │ │ │ │ │ │ ├── MacStructureFailedRS.java
│ │ │ │ │ │ │ │ ├── MacStructureGroupVoiceService.java
│ │ │ │ │ │ │ │ ├── MacStructureMultiFragment.java
│ │ │ │ │ │ │ │ ├── MacStructureUnitVoiceService.java
│ │ │ │ │ │ │ │ ├── MacStructureVariableLength.java
│ │ │ │ │ │ │ │ ├── MacStructureVendor.java
│ │ │ │ │ │ │ │ ├── MacStructureVoiceService.java
│ │ │ │ │ │ │ │ ├── MessageUpdate.java
│ │ │ │ │ │ │ │ ├── MessageUpdateAbbreviated.java
│ │ │ │ │ │ │ │ ├── MessageUpdateExtendedLCCH.java
│ │ │ │ │ │ │ │ ├── MessageUpdateExtendedVCH.java
│ │ │ │ │ │ │ │ ├── MultiFragmentContinuationMessage.java
│ │ │ │ │ │ │ │ ├── NetworkStatusBroadcastExplicit.java
│ │ │ │ │ │ │ │ ├── NetworkStatusBroadcastImplicit.java
│ │ │ │ │ │ │ │ ├── NullAvoidZeroBiasInformation.java
│ │ │ │ │ │ │ │ ├── NullInformation.java
│ │ │ │ │ │ │ │ ├── PowerControlSignalQuality.java
│ │ │ │ │ │ │ │ ├── PushToTalk.java
│ │ │ │ │ │ │ │ ├── QueuedResponse.java
│ │ │ │ │ │ │ │ ├── RadioUnitMonitorCommand.java
│ │ │ │ │ │ │ │ ├── RadioUnitMonitorCommandAbbreviated.java
│ │ │ │ │ │ │ │ ├── RadioUnitMonitorCommandExtendedLCCH.java
│ │ │ │ │ │ │ │ ├── RadioUnitMonitorCommandExtendedVCH.java
│ │ │ │ │ │ │ │ ├── RadioUnitMonitorEnhancedCommandAbbreviated.java
│ │ │ │ │ │ │ │ ├── RadioUnitMonitorEnhancedCommandExtended.java
│ │ │ │ │ │ │ │ ├── RfssStatusBroadcast.java
│ │ │ │ │ │ │ │ ├── RfssStatusBroadcastExplicit.java
│ │ │ │ │ │ │ │ ├── RfssStatusBroadcastImplicit.java
│ │ │ │ │ │ │ │ ├── RoamingAddressCommand.java
│ │ │ │ │ │ │ │ ├── RoamingAddressUpdate.java
│ │ │ │ │ │ │ │ ├── SNDCPDataChannelAnnouncement.java
│ │ │ │ │ │ │ │ ├── SNDCPDataChannelGrant.java
│ │ │ │ │ │ │ │ ├── SNDCPDataPageRequest.java
│ │ │ │ │ │ │ │ ├── SecondaryControlChannelBroadcast.java
│ │ │ │ │ │ │ │ ├── SecondaryControlChannelBroadcastExplicit.java
│ │ │ │ │ │ │ │ ├── SecondaryControlChannelBroadcastImplicit.java
│ │ │ │ │ │ │ │ ├── StatusQueryAbbreviated.java
│ │ │ │ │ │ │ │ ├── StatusQueryExtendedLCCH.java
│ │ │ │ │ │ │ │ ├── StatusQueryExtendedVCH.java
│ │ │ │ │ │ │ │ ├── StatusUpdate.java
│ │ │ │ │ │ │ │ ├── StatusUpdateAbbreviated.java
│ │ │ │ │ │ │ │ ├── StatusUpdateExtendedLCCH.java
│ │ │ │ │ │ │ │ ├── StatusUpdateExtendedVCH.java
│ │ │ │ │ │ │ │ ├── SynchronizationBroadcast.java
│ │ │ │ │ │ │ │ ├── SystemServiceBroadcast.java
│ │ │ │ │ │ │ │ ├── TelephoneInterconnectAnswerRequest.java
│ │ │ │ │ │ │ │ ├── TelephoneInterconnectVoiceChannelGrantExplicit.java
│ │ │ │ │ │ │ │ ├── TelephoneInterconnectVoiceChannelGrantImplicit.java
│ │ │ │ │ │ │ │ ├── TelephoneInterconnectVoiceChannelGrantUpdateExplicit.java
│ │ │ │ │ │ │ │ ├── TelephoneInterconnectVoiceChannelGrantUpdateImplicit.java
│ │ │ │ │ │ │ │ ├── TelephoneInterconnectVoiceChannelUser.java
│ │ │ │ │ │ │ │ ├── TimeAndDateAnnouncement.java
│ │ │ │ │ │ │ │ ├── UnitDeRegistrationAcknowledge.java
│ │ │ │ │ │ │ │ ├── UnitRegistrationCommandAbbreviated.java
│ │ │ │ │ │ │ │ ├── UnitRegistrationResponseAbbreviated.java
│ │ │ │ │ │ │ │ ├── UnitRegistrationResponseExtended.java
│ │ │ │ │ │ │ │ ├── UnitToUnitAnswerRequestAbbreviated.java
│ │ │ │ │ │ │ │ ├── UnitToUnitAnswerRequestExtended.java
│ │ │ │ │ │ │ │ ├── UnitToUnitVoiceChannelGrantUpdateAbbreviated.java
│ │ │ │ │ │ │ │ ├── UnitToUnitVoiceChannelGrantUpdateExtendedLCCH.java
│ │ │ │ │ │ │ │ ├── UnitToUnitVoiceChannelGrantUpdateExtendedVCH.java
│ │ │ │ │ │ │ │ ├── UnitToUnitVoiceChannelUserAbbreviated.java
│ │ │ │ │ │ │ │ ├── UnitToUnitVoiceChannelUserExtended.java
│ │ │ │ │ │ │ │ ├── UnitToUnitVoiceServiceChannelGrantAbbreviated.java
│ │ │ │ │ │ │ │ ├── UnitToUnitVoiceServiceChannelGrantExtendedLCCH.java
│ │ │ │ │ │ │ │ ├── UnitToUnitVoiceServiceChannelGrantExtendedVCH.java
│ │ │ │ │ │ │ │ ├── UnknownMacStructure.java
│ │ │ │ │ │ │ │ ├── UnknownVendorMessage.java
│ │ │ │ │ │ │ │ ├── l3harris
│ │ │ │ │ │ │ │ ├── L3HarrisGPS.java
│ │ │ │ │ │ │ │ ├── L3HarrisGroupRegroupExplicitEncryptionCommand.java
│ │ │ │ │ │ │ │ ├── L3HarrisPrivateDataChannelGrant.java
│ │ │ │ │ │ │ │ ├── L3HarrisTalkerAlias.java
│ │ │ │ │ │ │ │ ├── L3HarrisTalkerGpsLocation.java
│ │ │ │ │ │ │ │ ├── L3HarrisUnitToUnitDataChannelGrant.java
│ │ │ │ │ │ │ │ ├── L3HarrisUnknownOpcode129.java
│ │ │ │ │ │ │ │ ├── L3HarrisUnknownOpcode143.java
│ │ │ │ │ │ │ │ └── UnknownOpcode136.java
│ │ │ │ │ │ │ │ └── motorola
│ │ │ │ │ │ │ │ ├── MotorolaAcknowledgeResponse.java
│ │ │ │ │ │ │ │ ├── MotorolaActiveGroupRadiosOpcode130_x82.java
│ │ │ │ │ │ │ │ ├── MotorolaActiveGroupRadiosOpcode143_x8F.java
│ │ │ │ │ │ │ │ ├── MotorolaActiveGroupRadiosOpcode191_xBF.java
│ │ │ │ │ │ │ │ ├── MotorolaDenyResponse.java
│ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupAddCommand.java
│ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupChannelGrantExplicit.java
│ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupChannelGrantImplicit.java
│ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupChannelGrantUpdate.java
│ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupDeleteCommand.java
│ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupExtendedFunctionCommand.java
│ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupTalkerAlias.java
│ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupTalkerAliasContinuation.java
│ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupVoiceChannelUpdate.java
│ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupVoiceChannelUserAbbreviated.java
│ │ │ │ │ │ │ │ ├── MotorolaGroupRegroupVoiceChannelUserExtended.java
│ │ │ │ │ │ │ │ ├── MotorolaQueuedResponse.java
│ │ │ │ │ │ │ │ ├── MotorolaTDMADataChannel.java
│ │ │ │ │ │ │ │ ├── MotorolaTalkerAliasAssembler.java
│ │ │ │ │ │ │ │ ├── MotorolaTalkerAliasDataBlock.java
│ │ │ │ │ │ │ │ ├── MotorolaTalkerAliasHeader.java
│ │ │ │ │ │ │ │ └── MotorolaUnknownOpcode135.java
│ │ │ │ │ │ └── timeslot
│ │ │ │ │ │ │ ├── AbstractSignalingTimeslot.java
│ │ │ │ │ │ │ ├── AbstractVoiceTimeslot.java
│ │ │ │ │ │ │ ├── DatchTimeslot.java
│ │ │ │ │ │ │ ├── FacchTimeslot.java
│ │ │ │ │ │ │ ├── LcchTimeslot.java
│ │ │ │ │ │ │ ├── LinearFeedbackShiftRegister.java
│ │ │ │ │ │ │ ├── SacchTimeslot.java
│ │ │ │ │ │ │ ├── ScramblingSequence.java
│ │ │ │ │ │ │ ├── Timeslot.java
│ │ │ │ │ │ │ ├── TimeslotFactory.java
│ │ │ │ │ │ │ ├── UnknownTimeslot.java
│ │ │ │ │ │ │ ├── Voice2Timeslot.java
│ │ │ │ │ │ │ └── Voice4Timeslot.java
│ │ │ │ │ └── reference
│ │ │ │ │ │ ├── AccessType.java
│ │ │ │ │ │ ├── AnswerResponse.java
│ │ │ │ │ │ ├── ArgumentType.java
│ │ │ │ │ │ ├── CancelReason.java
│ │ │ │ │ │ ├── Capability.java
│ │ │ │ │ │ ├── ChannelType.java
│ │ │ │ │ │ ├── DataServiceOptions.java
│ │ │ │ │ │ ├── DataSubscriberUnitType.java
│ │ │ │ │ │ ├── DenyReason.java
│ │ │ │ │ │ ├── Digit.java
│ │ │ │ │ │ ├── Direction.java
│ │ │ │ │ │ ├── Duplex.java
│ │ │ │ │ │ ├── Encryption.java
│ │ │ │ │ │ ├── ExtendedFunction.java
│ │ │ │ │ │ ├── IPHeaderCompression.java
│ │ │ │ │ │ ├── MDPConfigurationOption.java
│ │ │ │ │ │ ├── MaximumTransmitUnit.java
│ │ │ │ │ │ ├── NetworkAddressType.java
│ │ │ │ │ │ ├── P25NetworkCallsign.java
│ │ │ │ │ │ ├── PDUFormat.java
│ │ │ │ │ │ ├── PDUPriorityMaximumType.java
│ │ │ │ │ │ ├── PDUType.java
│ │ │ │ │ │ ├── PacketResponse.java
│ │ │ │ │ │ ├── QueuedResponseReason.java
│ │ │ │ │ │ ├── ReadyTimer.java
│ │ │ │ │ │ ├── RegroupOptions.java
│ │ │ │ │ │ ├── RejectReason.java
│ │ │ │ │ │ ├── Response.java
│ │ │ │ │ │ ├── Service.java
│ │ │ │ │ │ ├── ServiceAccessPoint.java
│ │ │ │ │ │ ├── ServiceOptions.java
│ │ │ │ │ │ ├── SessionMode.java
│ │ │ │ │ │ ├── SiteFlags.java
│ │ │ │ │ │ ├── StackOperation.java
│ │ │ │ │ │ ├── StandbyTimer.java
│ │ │ │ │ │ ├── Status.java
│ │ │ │ │ │ ├── SystemServiceClass.java
│ │ │ │ │ │ ├── UDPHeaderCompression.java
│ │ │ │ │ │ ├── Vendor.java
│ │ │ │ │ │ ├── VendorLinkControlOpcode.java
│ │ │ │ │ │ ├── Vocoder.java
│ │ │ │ │ │ └── VoiceServiceOptions.java
│ │ │ │ ├── passport
│ │ │ │ │ ├── DecodeConfigPassport.java
│ │ │ │ │ ├── PassportBand.java
│ │ │ │ │ ├── PassportDecodeEvent.java
│ │ │ │ │ ├── PassportDecoder.java
│ │ │ │ │ ├── PassportDecoderState.java
│ │ │ │ │ ├── PassportMessage.java
│ │ │ │ │ ├── PassportMessageFilter.java
│ │ │ │ │ ├── PassportMessageProcessor.java
│ │ │ │ │ └── identifier
│ │ │ │ │ │ ├── PassportRadioId.java
│ │ │ │ │ │ └── PassportTalkgroup.java
│ │ │ │ ├── tait
│ │ │ │ │ ├── Tait1200ANIMessage.java
│ │ │ │ │ ├── Tait1200ANIMessageProcessor.java
│ │ │ │ │ ├── Tait1200Decoder.java
│ │ │ │ │ ├── Tait1200DecoderInstrumented.java
│ │ │ │ │ ├── Tait1200DecoderState.java
│ │ │ │ │ ├── Tait1200GPSMessage.java
│ │ │ │ │ ├── Tait1200GPSMessageProcessor.java
│ │ │ │ │ ├── Tait1200MessageFilter.java
│ │ │ │ │ └── identifier
│ │ │ │ │ │ └── TaitIdentifier.java
│ │ │ │ └── traffic
│ │ │ │ │ └── TrafficChannelManager.java
│ │ │ ├── demodulate
│ │ │ │ └── fm
│ │ │ │ │ └── FMDemodulatorModule.java
│ │ │ └── log
│ │ │ │ ├── DecodeEventLogger.java
│ │ │ │ ├── EventLogManager.java
│ │ │ │ ├── EventLogType.java
│ │ │ │ ├── EventLogger.java
│ │ │ │ ├── MessageEventLogger.java
│ │ │ │ └── config
│ │ │ │ └── EventLogConfiguration.java
│ │ │ ├── monitor
│ │ │ ├── DiagnosticMonitor.java
│ │ │ ├── ResourceMonitor.java
│ │ │ └── StatusBox.java
│ │ │ ├── playlist
│ │ │ ├── PlaylistManager.java
│ │ │ ├── PlaylistUpdater.java
│ │ │ └── PlaylistV2.java
│ │ │ ├── preference
│ │ │ ├── Preference.java
│ │ │ ├── PreferenceType.java
│ │ │ ├── TimestampFormat.java
│ │ │ ├── UserPreferences.java
│ │ │ ├── application
│ │ │ │ └── ApplicationPreference.java
│ │ │ ├── calibration
│ │ │ │ └── VectorCalibrationPreference.java
│ │ │ ├── decoder
│ │ │ │ └── JmbeLibraryPreference.java
│ │ │ ├── directory
│ │ │ │ └── DirectoryPreference.java
│ │ │ ├── duplicate
│ │ │ │ ├── CallManagementPreference.java
│ │ │ │ ├── ICallManagementProvider.java
│ │ │ │ └── TestCallManagementProvider.java
│ │ │ ├── event
│ │ │ │ └── DecodeEventPreference.java
│ │ │ ├── identifier
│ │ │ │ ├── IntegerFormat.java
│ │ │ │ ├── TalkgroupFormatPreference.java
│ │ │ │ └── talkgroup
│ │ │ │ │ ├── APCO25TalkgroupFormatter.java
│ │ │ │ │ ├── AbstractIntegerFormatter.java
│ │ │ │ │ ├── AnalogTalkgroupFormatter.java
│ │ │ │ │ ├── DMRTalkgroupFormatter.java
│ │ │ │ │ ├── FleetsyncTalkgroupFormatter.java
│ │ │ │ │ ├── LTRTalkgroupFormatter.java
│ │ │ │ │ ├── MDC1200TalkgroupFormatter.java
│ │ │ │ │ ├── MPT1327TalkgroupFormatter.java
│ │ │ │ │ ├── PassportTalkgroupFormatter.java
│ │ │ │ │ └── UnknownTalkgroupFormatter.java
│ │ │ ├── javafx
│ │ │ │ └── JavaFxPreferences.java
│ │ │ ├── mp3
│ │ │ │ └── MP3Preference.java
│ │ │ ├── playback
│ │ │ │ └── PlaybackPreference.java
│ │ │ ├── playlist
│ │ │ │ └── PlaylistPreference.java
│ │ │ ├── radioreference
│ │ │ │ └── RadioReferencePreference.java
│ │ │ ├── record
│ │ │ │ └── RecordPreference.java
│ │ │ ├── source
│ │ │ │ ├── ChannelMultiFrequencyPreference.java
│ │ │ │ ├── ChannelizerType.java
│ │ │ │ └── TunerPreference.java
│ │ │ └── swing
│ │ │ │ ├── JTableColumnWidthMonitor.java
│ │ │ │ └── SwingPreference.java
│ │ │ ├── properties
│ │ │ └── SystemProperties.java
│ │ │ ├── protocol
│ │ │ └── Protocol.java
│ │ │ ├── record
│ │ │ ├── AudioRecordingManager.java
│ │ │ ├── AudioSegmentRecorder.java
│ │ │ ├── RecordFormat.java
│ │ │ ├── RecorderFactory.java
│ │ │ ├── RecorderType.java
│ │ │ ├── binary
│ │ │ │ ├── BinaryReader.java
│ │ │ │ └── BinaryRecorder.java
│ │ │ ├── config
│ │ │ │ └── RecordConfiguration.java
│ │ │ └── wave
│ │ │ │ ├── AudioMetadata.java
│ │ │ │ ├── AudioMetadataUtils.java
│ │ │ │ ├── ComplexSamplesWaveRecorder.java
│ │ │ │ ├── IRecordingStatusListener.java
│ │ │ │ ├── NativeBufferWaveRecorder.java
│ │ │ │ ├── WaveUtils.java
│ │ │ │ └── WaveWriter.java
│ │ │ ├── sample
│ │ │ ├── Broadcaster.java
│ │ │ ├── BufferOverflow.java
│ │ │ ├── ConversionUtils.java
│ │ │ ├── IOverflowListener.java
│ │ │ ├── Listener.java
│ │ │ ├── OverflowableTransferQueue.java
│ │ │ ├── Provider.java
│ │ │ ├── SampleType.java
│ │ │ ├── SampleUtils.java
│ │ │ ├── adapter
│ │ │ │ ├── ComplexShortAdapter.java
│ │ │ │ ├── ISampleAdapter.java
│ │ │ │ ├── RealChannelShortAdapter.java
│ │ │ │ ├── RealSampleAdapter.java
│ │ │ │ └── RealShortAdapter.java
│ │ │ ├── buffer
│ │ │ │ ├── IByteBufferListener.java
│ │ │ │ ├── IByteBufferProvider.java
│ │ │ │ └── ITimestamped.java
│ │ │ ├── complex
│ │ │ │ ├── Complex.java
│ │ │ │ ├── ComplexSampleListener.java
│ │ │ │ ├── ComplexSampleListenerModule.java
│ │ │ │ ├── ComplexSamples.java
│ │ │ │ ├── ComplexSamplesNativeBufferAdapter.java
│ │ │ │ ├── ComplexSamplesToNativeBufferModule.java
│ │ │ │ ├── IComplexSamplesListener.java
│ │ │ │ ├── IComplexSamplesProvider.java
│ │ │ │ ├── IInterleavedComplexSamplesListener.java
│ │ │ │ ├── IInterleavedComplexSamplesProvider.java
│ │ │ │ └── InterleavedComplexSamples.java
│ │ │ └── real
│ │ │ │ ├── IRealBufferListener.java
│ │ │ │ ├── IRealBufferProvider.java
│ │ │ │ └── RealSampleListener.java
│ │ │ ├── service
│ │ │ └── radioreference
│ │ │ │ ├── CachingRadioReferenceService.java
│ │ │ │ └── RadioReference.java
│ │ │ ├── settings
│ │ │ ├── ColorSetting.java
│ │ │ ├── ColorSettingMenuItem.java
│ │ │ ├── ColorSettingResetAllMenuItem.java
│ │ │ ├── ColorSettingResetMenuItem.java
│ │ │ ├── FileSetting.java
│ │ │ ├── MapViewSetting.java
│ │ │ ├── Setting.java
│ │ │ ├── SettingChangeListener.java
│ │ │ ├── SettingType.java
│ │ │ ├── Settings.java
│ │ │ └── SettingsManager.java
│ │ │ ├── source
│ │ │ ├── BufferReceiver.java
│ │ │ ├── ComplexSource.java
│ │ │ ├── IControllableFileSource.java
│ │ │ ├── IFrameLocationListener.java
│ │ │ ├── ISourceEventListener.java
│ │ │ ├── ISourceEventProcessor.java
│ │ │ ├── ISourceEventProvider.java
│ │ │ ├── InvalidFrequencyException.java
│ │ │ ├── RealSource.java
│ │ │ ├── Source.java
│ │ │ ├── SourceEvent.java
│ │ │ ├── SourceEventListenerToProcessorAdapter.java
│ │ │ ├── SourceException.java
│ │ │ ├── SourceType.java
│ │ │ ├── config
│ │ │ │ ├── SourceConfigFactory.java
│ │ │ │ ├── SourceConfigMixer.java
│ │ │ │ ├── SourceConfigNone.java
│ │ │ │ ├── SourceConfigRecording.java
│ │ │ │ ├── SourceConfigTuner.java
│ │ │ │ ├── SourceConfigTunerMultipleFrequency.java
│ │ │ │ └── SourceConfiguration.java
│ │ │ ├── heartbeat
│ │ │ │ ├── Heartbeat.java
│ │ │ │ ├── HeartbeatManager.java
│ │ │ │ ├── IHeartbeatListener.java
│ │ │ │ └── IHeartbeatProvider.java
│ │ │ ├── mixer
│ │ │ │ ├── ComplexMixer.java
│ │ │ │ ├── MixerChannel.java
│ │ │ │ ├── MixerChannelConfiguration.java
│ │ │ │ ├── MixerManager.java
│ │ │ │ ├── MixerReader.java
│ │ │ │ ├── RealMixerSource.java
│ │ │ │ └── SystemMixerDevices.java
│ │ │ ├── recording
│ │ │ │ └── RecordingConfiguration.java
│ │ │ ├── tuner
│ │ │ │ ├── ITunerErrorListener.java
│ │ │ │ ├── LoggingTunerErrorListener.java
│ │ │ │ ├── MixerTunerType.java
│ │ │ │ ├── Tuner.java
│ │ │ │ ├── TunerChannelSource.java
│ │ │ │ ├── TunerClass.java
│ │ │ │ ├── TunerController.java
│ │ │ │ ├── TunerEvent.java
│ │ │ │ ├── TunerFactory.java
│ │ │ │ ├── TunerFrequencyErrorMonitor.java
│ │ │ │ ├── TunerType.java
│ │ │ │ ├── airspy
│ │ │ │ │ ├── AirspyDeviceInformation.java
│ │ │ │ │ ├── AirspySampleRate.java
│ │ │ │ │ ├── AirspyTuner.java
│ │ │ │ │ ├── AirspyTunerConfiguration.java
│ │ │ │ │ ├── AirspyTunerController.java
│ │ │ │ │ ├── AirspyTunerEditor.java
│ │ │ │ │ └── hf
│ │ │ │ │ │ ├── AirspyHfSampleRate.java
│ │ │ │ │ │ ├── AirspyHfTuner.java
│ │ │ │ │ │ ├── AirspyHfTunerConfiguration.java
│ │ │ │ │ │ ├── AirspyHfTunerController.java
│ │ │ │ │ │ ├── AirspyHfTunerEditor.java
│ │ │ │ │ │ ├── Attenuation.java
│ │ │ │ │ │ ├── BoardId.java
│ │ │ │ │ │ ├── Request.java
│ │ │ │ │ │ └── Response.java
│ │ │ │ ├── channel
│ │ │ │ │ ├── ChannelSpecification.java
│ │ │ │ │ ├── HalfBandTunerChannelSource.java
│ │ │ │ │ ├── MultiFrequencyTunerChannelSource.java
│ │ │ │ │ ├── PassThroughChannelSource.java
│ │ │ │ │ ├── TunerChannel.java
│ │ │ │ │ ├── TunerChannelProvider.java
│ │ │ │ │ ├── TunerChannelSource.java
│ │ │ │ │ └── rotation
│ │ │ │ │ │ ├── AddChannelRotationActiveStateRequest.java
│ │ │ │ │ │ ├── ChannelRotationMonitor.java
│ │ │ │ │ │ ├── DisableChannelRotationMonitorRequest.java
│ │ │ │ │ │ └── FrequencyLockChangeRequest.java
│ │ │ │ ├── configuration
│ │ │ │ │ ├── DisabledTuner.java
│ │ │ │ │ ├── TunerConfiguration.java
│ │ │ │ │ ├── TunerConfigurationEvent.java
│ │ │ │ │ ├── TunerConfigurationManager.java
│ │ │ │ │ └── TunerConfigurationState.java
│ │ │ │ ├── fcd
│ │ │ │ │ ├── FCDCommand.java
│ │ │ │ │ ├── FCDModel.java
│ │ │ │ │ ├── FCDTuner.java
│ │ │ │ │ ├── FCDTunerController.java
│ │ │ │ │ ├── proV1
│ │ │ │ │ │ ├── FCD1TunerConfiguration.java
│ │ │ │ │ │ ├── FCD1TunerController.java
│ │ │ │ │ │ └── FCD1TunerEditor.java
│ │ │ │ │ └── proplusV2
│ │ │ │ │ │ ├── FCD2TunerConfiguration.java
│ │ │ │ │ │ ├── FCD2TunerController.java
│ │ │ │ │ │ └── FCD2TunerEditor.java
│ │ │ │ ├── frequency
│ │ │ │ │ ├── FrequencyController.java
│ │ │ │ │ └── FrequencyLimitException.java
│ │ │ │ ├── hackrf
│ │ │ │ │ ├── HackRFTuner.java
│ │ │ │ │ ├── HackRFTunerConfiguration.java
│ │ │ │ │ ├── HackRFTunerController.java
│ │ │ │ │ └── HackRFTunerEditor.java
│ │ │ │ ├── manager
│ │ │ │ │ ├── CenterFrequencyCalculator.java
│ │ │ │ │ ├── ChannelSourceManager.java
│ │ │ │ │ ├── DiscoveredRecordingTuner.java
│ │ │ │ │ ├── DiscoveredTuner.java
│ │ │ │ │ ├── DiscoveredUSBTuner.java
│ │ │ │ │ ├── FrequencyErrorCorrectionManager.java
│ │ │ │ │ ├── HeterodyneChannelSourceManager.java
│ │ │ │ │ ├── IDiscoveredTunerStatusListener.java
│ │ │ │ │ ├── PassThroughSourceManager.java
│ │ │ │ │ ├── PolyphaseChannelSourceManager.java
│ │ │ │ │ ├── TestPolyphaseChannelSourceManager.java
│ │ │ │ │ ├── TunerManager.java
│ │ │ │ │ └── TunerStatus.java
│ │ │ │ ├── recording
│ │ │ │ │ ├── AddRecordingTunerDialog.java
│ │ │ │ │ ├── RecordingTuner.java
│ │ │ │ │ ├── RecordingTunerConfiguration.java
│ │ │ │ │ ├── RecordingTunerController.java
│ │ │ │ │ └── RecordingTunerEditor.java
│ │ │ │ ├── rtl
│ │ │ │ │ ├── EmbeddedTuner.java
│ │ │ │ │ ├── RTL2832Tuner.java
│ │ │ │ │ ├── RTL2832TunerConfiguration.java
│ │ │ │ │ ├── RTL2832TunerController.java
│ │ │ │ │ ├── RTL2832UnknownTunerEditor.java
│ │ │ │ │ ├── e4k
│ │ │ │ │ │ ├── E4KEmbeddedTuner.java
│ │ │ │ │ │ ├── E4KTunerConfiguration.java
│ │ │ │ │ │ └── E4KTunerEditor.java
│ │ │ │ │ ├── fc0013
│ │ │ │ │ │ ├── FC0013EmbeddedTuner.java
│ │ │ │ │ │ ├── FC0013TunerConfiguration.java
│ │ │ │ │ │ └── FC0013TunerEditor.java
│ │ │ │ │ └── r8x
│ │ │ │ │ │ ├── R8xEmbeddedTuner.java
│ │ │ │ │ │ ├── R8xTunerConfiguration.java
│ │ │ │ │ │ ├── R8xTunerEditor.java
│ │ │ │ │ │ ├── r820t
│ │ │ │ │ │ ├── R820TEmbeddedTuner.java
│ │ │ │ │ │ └── R820TTunerConfiguration.java
│ │ │ │ │ │ └── r828d
│ │ │ │ │ │ ├── R828DEmbeddedTuner.java
│ │ │ │ │ │ └── R828DTunerConfiguration.java
│ │ │ │ ├── sdrplay
│ │ │ │ │ ├── ControlRsp.java
│ │ │ │ │ ├── DiscoveredRspTuner.java
│ │ │ │ │ ├── IControlRsp.java
│ │ │ │ │ ├── ITunerStatusListener.java
│ │ │ │ │ ├── RspNativeBuffer.java
│ │ │ │ │ ├── RspNativeBufferFactory.java
│ │ │ │ │ ├── RspSampleRate.java
│ │ │ │ │ ├── RspTuner.java
│ │ │ │ │ ├── RspTunerConfiguration.java
│ │ │ │ │ ├── RspTunerController.java
│ │ │ │ │ ├── RspTunerEditor.java
│ │ │ │ │ ├── api
│ │ │ │ │ │ ├── DeviceSelectionMode.java
│ │ │ │ │ │ ├── README
│ │ │ │ │ │ ├── SDRPlayException.java
│ │ │ │ │ │ ├── SDRPlayLibraryHelper.java
│ │ │ │ │ │ ├── SDRPlayUpdateException.java
│ │ │ │ │ │ ├── SDRplay.java
│ │ │ │ │ │ ├── Status.java
│ │ │ │ │ │ ├── UpdateReason.java
│ │ │ │ │ │ ├── Version.java
│ │ │ │ │ │ ├── async
│ │ │ │ │ │ │ ├── AsyncFuture.java
│ │ │ │ │ │ │ ├── AsyncUpdateFuture.java
│ │ │ │ │ │ │ ├── CompletedAsyncUpdate.java
│ │ │ │ │ │ │ └── IAsyncCallback.java
│ │ │ │ │ │ ├── callback
│ │ │ │ │ │ │ ├── CallbackFunctions.java
│ │ │ │ │ │ │ ├── DeviceEventAdapter.java
│ │ │ │ │ │ │ ├── IDeviceEventListener.java
│ │ │ │ │ │ │ ├── IStreamCallbackListener.java
│ │ │ │ │ │ │ ├── IStreamListener.java
│ │ │ │ │ │ │ ├── StreamCallbackAdapter.java
│ │ │ │ │ │ │ └── StreamCallbackParameters.java
│ │ │ │ │ │ ├── device
│ │ │ │ │ │ │ ├── Decimate.java
│ │ │ │ │ │ │ ├── Device.java
│ │ │ │ │ │ │ ├── DeviceFactory.java
│ │ │ │ │ │ │ ├── DeviceInfo.java
│ │ │ │ │ │ │ ├── DeviceStruct_v3_07.java
│ │ │ │ │ │ │ ├── DeviceStruct_v3_08.java
│ │ │ │ │ │ │ ├── DeviceType.java
│ │ │ │ │ │ │ ├── IDeviceStruct.java
│ │ │ │ │ │ │ ├── Rsp1Device.java
│ │ │ │ │ │ │ ├── Rsp1Tuner.java
│ │ │ │ │ │ │ ├── Rsp1aDevice.java
│ │ │ │ │ │ │ ├── Rsp1aTuner.java
│ │ │ │ │ │ │ ├── Rsp1bDevice.java
│ │ │ │ │ │ │ ├── Rsp1bTuner.java
│ │ │ │ │ │ │ ├── Rsp2Device.java
│ │ │ │ │ │ │ ├── Rsp2Tuner.java
│ │ │ │ │ │ │ ├── RspDuoDevice.java
│ │ │ │ │ │ │ ├── RspDuoMode.java
│ │ │ │ │ │ │ ├── RspDuoTuner.java
│ │ │ │ │ │ │ ├── RspDuoTuner1.java
│ │ │ │ │ │ │ ├── RspDuoTuner2.java
│ │ │ │ │ │ │ ├── RspDxDevice.java
│ │ │ │ │ │ │ ├── RspDxTuner.java
│ │ │ │ │ │ │ ├── RspTuner.java
│ │ │ │ │ │ │ ├── TunerSelect.java
│ │ │ │ │ │ │ └── UnknownDevice.java
│ │ │ │ │ │ ├── error
│ │ │ │ │ │ │ ├── DebugLevel.java
│ │ │ │ │ │ │ └── ErrorInformation.java
│ │ │ │ │ │ ├── parameter
│ │ │ │ │ │ │ ├── composite
│ │ │ │ │ │ │ │ ├── CompositeParameters.java
│ │ │ │ │ │ │ │ ├── CompositeParametersFactory.java
│ │ │ │ │ │ │ │ ├── Rsp1CompositeParameters.java
│ │ │ │ │ │ │ │ ├── Rsp1aCompositeParameters.java
│ │ │ │ │ │ │ │ ├── Rsp1bCompositeParameters.java
│ │ │ │ │ │ │ │ ├── Rsp2CompositeParameters.java
│ │ │ │ │ │ │ │ ├── RspDuoCompositeParameters.java
│ │ │ │ │ │ │ │ └── RspDxCompositeParameters.java
│ │ │ │ │ │ │ ├── control
│ │ │ │ │ │ │ │ ├── AdsbMode.java
│ │ │ │ │ │ │ │ ├── Agc.java
│ │ │ │ │ │ │ │ ├── AgcMode.java
│ │ │ │ │ │ │ │ ├── ControlParameters.java
│ │ │ │ │ │ │ │ ├── DcOffset.java
│ │ │ │ │ │ │ │ └── Decimation.java
│ │ │ │ │ │ │ ├── device
│ │ │ │ │ │ │ │ ├── DeviceParameters.java
│ │ │ │ │ │ │ │ ├── DeviceParametersFactory.java
│ │ │ │ │ │ │ │ ├── ResetFlags.java
│ │ │ │ │ │ │ │ ├── Rsp1DeviceParameters.java
│ │ │ │ │ │ │ │ ├── Rsp1aDeviceParameters.java
│ │ │ │ │ │ │ │ ├── Rsp2DeviceParameters.java
│ │ │ │ │ │ │ │ ├── RspDuoDeviceParameters.java
│ │ │ │ │ │ │ │ ├── RspDxDeviceParameters.java
│ │ │ │ │ │ │ │ ├── SamplingFrequency.java
│ │ │ │ │ │ │ │ ├── SynchronousUpdate.java
│ │ │ │ │ │ │ │ └── TransferMode.java
│ │ │ │ │ │ │ ├── event
│ │ │ │ │ │ │ │ ├── EventParametersFactory.java
│ │ │ │ │ │ │ │ ├── EventType.java
│ │ │ │ │ │ │ │ ├── GainCallbackParameters.java
│ │ │ │ │ │ │ │ ├── PowerOverloadCallbackParameters.java
│ │ │ │ │ │ │ │ ├── PowerOverloadEventType.java
│ │ │ │ │ │ │ │ ├── RspDuoModeCallbackParameters.java
│ │ │ │ │ │ │ │ └── RspDuoModeEventType.java
│ │ │ │ │ │ │ └── tuner
│ │ │ │ │ │ │ │ ├── Bandwidth.java
│ │ │ │ │ │ │ │ ├── DcOffsetTuner.java
│ │ │ │ │ │ │ │ ├── Gain.java
│ │ │ │ │ │ │ │ ├── GainValues.java
│ │ │ │ │ │ │ │ ├── HdrModeBandwidth.java
│ │ │ │ │ │ │ │ ├── IfMode.java
│ │ │ │ │ │ │ │ ├── LoMode.java
│ │ │ │ │ │ │ │ ├── MinimumGainReductionMode.java
│ │ │ │ │ │ │ │ ├── RfFrequency.java
│ │ │ │ │ │ │ │ ├── Rsp1TunerParameters.java
│ │ │ │ │ │ │ │ ├── Rsp1aTunerParameters.java
│ │ │ │ │ │ │ │ ├── Rsp2AmPort.java
│ │ │ │ │ │ │ │ ├── Rsp2Antenna.java
│ │ │ │ │ │ │ │ ├── Rsp2AntennaSelection.java
│ │ │ │ │ │ │ │ ├── Rsp2TunerParameters.java
│ │ │ │ │ │ │ │ ├── RspDuoAmPort.java
│ │ │ │ │ │ │ │ ├── RspDuoTunerParameters.java
│ │ │ │ │ │ │ │ ├── RspDuoTunerParametersV3_07.java
│ │ │ │ │ │ │ │ ├── RspDuoTunerParametersV3_14.java
│ │ │ │ │ │ │ │ ├── RspDxAntenna.java
│ │ │ │ │ │ │ │ ├── RspDxTunerParameters.java
│ │ │ │ │ │ │ │ ├── TunerParameters.java
│ │ │ │ │ │ │ │ └── TunerParametersFactory.java
│ │ │ │ │ │ ├── util
│ │ │ │ │ │ │ ├── Flag.java
│ │ │ │ │ │ │ └── Retry.java
│ │ │ │ │ │ ├── v3_07
│ │ │ │ │ │ │ ├── sdrplay_api_AgcT.java
│ │ │ │ │ │ │ ├── sdrplay_api_ApiVersion_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_CallbackFnsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Close_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_ControlParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DcOffsetT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DcOffsetTunerT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DebugEnable_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_DecimationT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DevParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DeviceParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DeviceT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DisableHeartbeat_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_ErrorInfoT.java
│ │ │ │ │ │ │ ├── sdrplay_api_EventCallback_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_EventParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_FsFreqT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GainCbParamT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GainT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GainValuesT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetDeviceParams_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetDevices_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetErrorString_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetLastError_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_Init_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_LockDeviceApi_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_Open_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_PowerOverloadCbParamT.java
│ │ │ │ │ │ │ ├── sdrplay_api_ReleaseDevice_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_ResetFlagsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RfFreqT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp1aParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp1aTunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp2ParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp2TunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDuoModeCbParamT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDuoParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDuoTunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDxParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDxTunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RxChannelParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_SelectDevice_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_StreamCallback_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_StreamCbParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_SwapRspDuoActiveTuner_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_SwapRspDuoDualTunerModeSampleRate_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_SwapRspDuoMode_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_SyncUpdateT.java
│ │ │ │ │ │ │ ├── sdrplay_api_TunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Uninit_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_UnlockDeviceApi_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_Update_t.java
│ │ │ │ │ │ │ └── sdrplay_api_h.java
│ │ │ │ │ │ ├── v3_08
│ │ │ │ │ │ │ ├── sdrplay_api_AgcT.java
│ │ │ │ │ │ │ ├── sdrplay_api_ApiVersion_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_CallbackFnsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Close_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_ControlParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DcOffsetT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DcOffsetTunerT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DebugEnable_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_DecimationT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DevParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DeviceParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DeviceT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DisableHeartbeat_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_ErrorInfoT.java
│ │ │ │ │ │ │ ├── sdrplay_api_EventCallback_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_EventParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_FsFreqT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GainCbParamT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GainT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GainValuesT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetDeviceParams_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetDevices_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetErrorString_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetLastError_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_Init_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_LockDeviceApi_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_Open_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_PowerOverloadCbParamT.java
│ │ │ │ │ │ │ ├── sdrplay_api_ReleaseDevice_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_ResetFlagsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RfFreqT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp1aParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp1aTunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp2ParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp2TunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDuoModeCbParamT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDuoParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDuoTunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDxParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDxTunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RxChannelParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_SelectDevice_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_StreamCallback_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_StreamCbParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_SwapRspDuoActiveTuner_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_SwapRspDuoDualTunerModeSampleRate_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_SwapRspDuoMode_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_SyncUpdateT.java
│ │ │ │ │ │ │ ├── sdrplay_api_TunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Uninit_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_UnlockDeviceApi_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_Update_t.java
│ │ │ │ │ │ │ └── sdrplay_api_h.java
│ │ │ │ │ │ └── v3_15
│ │ │ │ │ │ │ ├── sdrplay_api_AgcT.java
│ │ │ │ │ │ │ ├── sdrplay_api_ApiVersion_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_CallbackFnsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Close_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_ControlParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DcOffsetT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DcOffsetTunerT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DebugEnable_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_DecimationT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DevParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DeviceParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DeviceT.java
│ │ │ │ │ │ │ ├── sdrplay_api_DisableHeartbeat_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_ErrorInfoT.java
│ │ │ │ │ │ │ ├── sdrplay_api_EventCallback_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_EventParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_FsFreqT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GainCbParamT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GainT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GainValuesT.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetDeviceParams_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetDevices_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetErrorString_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetLastErrorByType_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_GetLastError_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_Init_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_LockDeviceApi_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_Open_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_PowerOverloadCbParamT.java
│ │ │ │ │ │ │ ├── sdrplay_api_ReleaseDevice_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_ResetFlagsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RfFreqT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp1aParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp1aTunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp2ParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Rsp2TunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDuoModeCbParamT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDuoParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDuoTunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDuo_ResetSlaveFlagsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDxParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RspDxTunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_RxChannelParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_SelectDevice_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_StreamCallback_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_StreamCbParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_SwapRspDuoActiveTuner_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_SwapRspDuoDualTunerModeSampleRate_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_SwapRspDuoMode_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_SyncUpdateT.java
│ │ │ │ │ │ │ ├── sdrplay_api_TunerParamsT.java
│ │ │ │ │ │ │ ├── sdrplay_api_Uninit_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_UnlockDeviceApi_t.java
│ │ │ │ │ │ │ ├── sdrplay_api_Update_t.java
│ │ │ │ │ │ │ └── sdrplay_api_h.java
│ │ │ │ │ ├── rsp1
│ │ │ │ │ │ ├── ControlRsp1.java
│ │ │ │ │ │ ├── DiscoveredRsp1Tuner.java
│ │ │ │ │ │ ├── IControlRsp1.java
│ │ │ │ │ │ ├── Rsp1TunerConfiguration.java
│ │ │ │ │ │ ├── Rsp1TunerController.java
│ │ │ │ │ │ └── Rsp1TunerEditor.java
│ │ │ │ │ ├── rsp1a
│ │ │ │ │ │ ├── ControlRsp1a.java
│ │ │ │ │ │ ├── DiscoveredRsp1aTuner.java
│ │ │ │ │ │ ├── IControlRsp1a.java
│ │ │ │ │ │ ├── Rsp1aTunerConfiguration.java
│ │ │ │ │ │ ├── Rsp1aTunerController.java
│ │ │ │ │ │ └── Rsp1aTunerEditor.java
│ │ │ │ │ ├── rsp1b
│ │ │ │ │ │ ├── ControlRsp1b.java
│ │ │ │ │ │ ├── DiscoveredRsp1bTuner.java
│ │ │ │ │ │ ├── IControlRsp1b.java
│ │ │ │ │ │ ├── Rsp1bTunerConfiguration.java
│ │ │ │ │ │ ├── Rsp1bTunerController.java
│ │ │ │ │ │ └── Rsp1bTunerEditor.java
│ │ │ │ │ ├── rsp2
│ │ │ │ │ │ ├── ControlRsp2.java
│ │ │ │ │ │ ├── DiscoveredRsp2Tuner.java
│ │ │ │ │ │ ├── IControlRsp2.java
│ │ │ │ │ │ ├── Rsp2TunerConfiguration.java
│ │ │ │ │ │ ├── Rsp2TunerController.java
│ │ │ │ │ │ └── Rsp2TunerEditor.java
│ │ │ │ │ ├── rspDuo
│ │ │ │ │ │ ├── ControlRspDuo.java
│ │ │ │ │ │ ├── ControlRspDuoTuner1.java
│ │ │ │ │ │ ├── ControlRspDuoTuner1Master.java
│ │ │ │ │ │ ├── ControlRspDuoTuner1Single.java
│ │ │ │ │ │ ├── ControlRspDuoTuner2.java
│ │ │ │ │ │ ├── ControlRspDuoTuner2Single.java
│ │ │ │ │ │ ├── ControlRspDuoTuner2Slave.java
│ │ │ │ │ │ ├── DiscoveredRspDuoTuner1.java
│ │ │ │ │ │ ├── DiscoveredRspDuoTuner2.java
│ │ │ │ │ │ ├── IControlRspDuo.java
│ │ │ │ │ │ ├── IControlRspDuoTuner1.java
│ │ │ │ │ │ ├── IControlRspDuoTuner2.java
│ │ │ │ │ │ ├── MasterSlaveBridge.java
│ │ │ │ │ │ ├── RspDuoTuner1Configuration.java
│ │ │ │ │ │ ├── RspDuoTuner1Controller.java
│ │ │ │ │ │ ├── RspDuoTuner1Editor.java
│ │ │ │ │ │ ├── RspDuoTuner2Configuration.java
│ │ │ │ │ │ ├── RspDuoTuner2Controller.java
│ │ │ │ │ │ └── RspDuoTuner2Editor.java
│ │ │ │ │ └── rspDx
│ │ │ │ │ │ ├── ControlRspDx.java
│ │ │ │ │ │ ├── DiscoveredRspDxTuner.java
│ │ │ │ │ │ ├── IControlRspDx.java
│ │ │ │ │ │ ├── RspDxTunerConfiguration.java
│ │ │ │ │ │ ├── RspDxTunerController.java
│ │ │ │ │ │ └── RspDxTunerEditor.java
│ │ │ │ ├── test
│ │ │ │ │ ├── SampleGenerator.java
│ │ │ │ │ ├── TestTuner.java
│ │ │ │ │ └── TestTunerController.java
│ │ │ │ ├── ui
│ │ │ │ │ ├── DiscoveredTunerEditor.java
│ │ │ │ │ ├── DiscoveredTunerModel.java
│ │ │ │ │ ├── EmptyTunerEditor.java
│ │ │ │ │ ├── TunerEditor.java
│ │ │ │ │ ├── TunerSpectralDisplayManager.java
│ │ │ │ │ └── TunerViewPanel.java
│ │ │ │ └── usb
│ │ │ │ │ ├── USBTunerController.java
│ │ │ │ │ └── UsbUtils.java
│ │ │ └── wave
│ │ │ │ ├── ComplexWaveSource.java
│ │ │ │ └── RealWaveSource.java
│ │ │ ├── spectrum
│ │ │ ├── ComplexDftProcessor.java
│ │ │ ├── DFTResultsListener.java
│ │ │ ├── DFTResultsProvider.java
│ │ │ ├── DFTSize.java
│ │ │ ├── DisableSpectrumWaterfallMenuItem.java
│ │ │ ├── FrequencyOverlayPanel.java
│ │ │ ├── IDFTWidthChangeProcessor.java
│ │ │ ├── NativeBufferManager.java
│ │ │ ├── OverflowableBufferStream.java
│ │ │ ├── OverlayPanel.java
│ │ │ ├── Pausable.java
│ │ │ ├── ShowTunerMenuItem.java
│ │ │ ├── SpectralDisplayAdjuster.java
│ │ │ ├── SpectralDisplayPanel.java
│ │ │ ├── SpectrumFrame.java
│ │ │ ├── SpectrumPanel.java
│ │ │ ├── WaterfallColorModel.java
│ │ │ ├── WaterfallPanel.java
│ │ │ ├── converter
│ │ │ │ ├── ComplexDecibelConverter.java
│ │ │ │ ├── DFTResultsConverter.java
│ │ │ │ └── RealDecibelConverter.java
│ │ │ └── menu
│ │ │ │ ├── AveragingItem.java
│ │ │ │ ├── DFTSizeItem.java
│ │ │ │ ├── FFTWindowTypeItem.java
│ │ │ │ ├── FrameRateItem.java
│ │ │ │ ├── SmoothingItem.java
│ │ │ │ └── SmoothingTypeItem.java
│ │ │ ├── util
│ │ │ ├── Angle.java
│ │ │ ├── ArcTangent.java
│ │ │ ├── ByteUtil.java
│ │ │ ├── ColorIcon.java
│ │ │ ├── Dispatcher.java
│ │ │ ├── FileUtil.java
│ │ │ ├── MemoryUsageLogger.java
│ │ │ ├── OSType.java
│ │ │ ├── PacketUtil.java
│ │ │ ├── StringUtils.java
│ │ │ ├── SwingUtils.java
│ │ │ ├── ThreadPool.java
│ │ │ ├── TimeStamp.java
│ │ │ ├── XTEA.java
│ │ │ └── ZipUtility.java
│ │ │ └── vector
│ │ │ ├── VectorUtilities.java
│ │ │ └── calibrate
│ │ │ ├── Calibration.java
│ │ │ ├── CalibrationException.java
│ │ │ ├── CalibrationManager.java
│ │ │ ├── CalibrationType.java
│ │ │ ├── Implementation.java
│ │ │ ├── airspy
│ │ │ ├── AirspySampleConverterCalibration.java
│ │ │ ├── AirspyUnpackedCalibration.java
│ │ │ └── AirspyUnpackedInterleavedCalibration.java
│ │ │ ├── demodulator
│ │ │ ├── DqpskDemodulatorCalibration.java
│ │ │ └── FmDemodulatorCalibration.java
│ │ │ ├── filter
│ │ │ ├── FirFilterCalibration.java
│ │ │ ├── RealDcRemovalCalibration.java
│ │ │ ├── RealHalfBand11TapFilterCalibration.java
│ │ │ ├── RealHalfBand15TapFilterCalibration.java
│ │ │ ├── RealHalfBand23TapFilterCalibration.java
│ │ │ ├── RealHalfBand63TapFilterCalibration.java
│ │ │ └── RealHalfBandDefaultFilterCalibration.java
│ │ │ ├── gain
│ │ │ ├── ComplexGainCalibration.java
│ │ │ └── ComplexGainControlCalibration.java
│ │ │ ├── hilbert
│ │ │ └── HilbertCalibration.java
│ │ │ ├── interpolator
│ │ │ └── InterpolatorCalibration.java
│ │ │ ├── magnitude
│ │ │ └── MagnitudeCalibration.java
│ │ │ ├── mixer
│ │ │ └── ComplexMixerCalibration.java
│ │ │ ├── oscillator
│ │ │ ├── ComplexOscillatorCalibration.java
│ │ │ └── RealOscillatorCalibration.java
│ │ │ ├── sync
│ │ │ └── DMRSoftSyncCalibration.java
│ │ │ └── window
│ │ │ └── WindowCalibration.java
│ └── org
│ │ ├── jdesktop
│ │ ├── beans
│ │ │ ├── AbstractBean.java
│ │ │ └── AbstractSerializableBean.java
│ │ └── swingx
│ │ │ ├── JXMapKit.form
│ │ │ ├── JXMapKit.java
│ │ │ ├── JXMapViewer.java
│ │ │ ├── OSMTileFactoryInfo.java
│ │ │ ├── VirtualEarthTileFactoryInfo.java
│ │ │ ├── input
│ │ │ ├── CenterMapListener.java
│ │ │ ├── PanKeyListener.java
│ │ │ ├── PanMouseInputListener.java
│ │ │ ├── ZoomMouseWheelListenerCenter.java
│ │ │ └── ZoomMouseWheelListenerCursor.java
│ │ │ ├── mapviewer
│ │ │ ├── AbstractTileFactory.java
│ │ │ ├── DefaultTileFactory.java
│ │ │ ├── DefaultWaypoint.java
│ │ │ ├── DefaultWaypointRenderer.java
│ │ │ ├── GeoBounds.java
│ │ │ ├── GeoPosition.java
│ │ │ ├── LocalResponseCache.java
│ │ │ ├── Tile.java
│ │ │ ├── TileCache.java
│ │ │ ├── TileFactory.java
│ │ │ ├── TileFactoryInfo.java
│ │ │ ├── TileListener.java
│ │ │ ├── Waypoint.java
│ │ │ ├── WaypointPainter.java
│ │ │ ├── WaypointRenderer.java
│ │ │ ├── bmng
│ │ │ │ ├── CylindricalProjectionTileFactory.java
│ │ │ │ └── SLMapServerInfo.java
│ │ │ ├── empty
│ │ │ │ └── EmptyTileFactory.java
│ │ │ ├── esri
│ │ │ │ └── ESRITileFactory.java
│ │ │ ├── resources
│ │ │ │ ├── loading.png
│ │ │ │ ├── minus.png
│ │ │ │ ├── plus.png
│ │ │ │ └── standard_waypoint.png
│ │ │ ├── util
│ │ │ │ ├── GeoUtil.java
│ │ │ │ └── MercatorUtils.java
│ │ │ └── wms
│ │ │ │ ├── WMSService.java
│ │ │ │ └── WMSTileFactory.java
│ │ │ ├── painter
│ │ │ ├── AbstractPainter.java
│ │ │ ├── CompoundPainter.java
│ │ │ └── Painter.java
│ │ │ └── util
│ │ │ ├── GraphicsUtilities.java
│ │ │ └── ShapeUtils.java
│ │ └── jma
│ │ └── encoder
│ │ └── audio
│ │ └── IAudioEncoder.java
└── resources
│ ├── 52-airspy.rules
│ ├── 53-hackrf.rules
│ ├── FilterView.css
│ ├── funcube-dongle.rules
│ ├── images
│ ├── Curve-fitted-background.png
│ ├── Curve-fitted-chart-background.png
│ ├── Curve-fitted-graph-gridlines.png
│ ├── acars.png
│ ├── action.png
│ ├── ais.png
│ ├── am.png
│ ├── ambulance.png
│ ├── aprs.png
│ ├── audio_muted.png
│ ├── audio_unmuted.png
│ ├── broadcastify.png
│ ├── concrete_block_truck.png
│ ├── control_play.png
│ ├── control_stop.png
│ ├── cwid.png
│ ├── dispatcher.png
│ ├── dmr.png
│ ├── dump_truck_red.png
│ ├── fire_truck.png
│ ├── fm.png
│ ├── garbage_truck.png
│ ├── icecast.png
│ ├── loader.png
│ ├── loading.png
│ ├── ltr.png
│ ├── ltr_net.png
│ ├── motorola_type_2.png
│ ├── mpt1327.png
│ ├── no_icon.png
│ ├── no_record.png
│ ├── nxdn.png
│ ├── openmhz.png
│ ├── opt_bus.png
│ ├── p25_1.png
│ ├── p25_2.png
│ ├── passport.png
│ ├── police.png
│ ├── propane_truck.png
│ ├── rdioscanner.png
│ ├── rescue_truck.png
│ ├── school_bus.png
│ ├── shoutcast.png
│ ├── site.png
│ ├── system.png
│ ├── taxi.png
│ ├── train.png
│ ├── van.png
│ └── waypoint_white.png
│ ├── javax.usb.properties
│ ├── logback.xml
│ └── rtl-sdr.rules
└── test
└── java
└── io
└── github
└── dsheirer
├── alias
└── P25AliasTest.java
├── audio
├── DuplicateCallDetectionTest.java
└── broadcast
│ └── AudioStreamingManagerTest.java
├── dsp
└── psk
│ └── dqpsk
│ └── DmrSoftSyncDetectorTest.java
├── edac
└── bch
│ └── BCH_63_16_23_P25_Test.java
└── service
└── radioreference
└── RadioReferenceTest.java
/.github/ISSUE_TEMPLATE/bug-report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug Report
3 | about: Create a report to help us improve sdrtrunk
4 | title: ''
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **sdrtrunk Version**
11 | Indicate which sdrtrunk version you are using. Use 'master-branch' if you are running the latest code.
12 |
13 | **Describe the bug**
14 | A clear and concise description of what the bug is.
15 |
16 | **To Reproduce**
17 | Steps to reproduce the behavior:
18 | 1. Go to '...'
19 | 2. Click on '....'
20 | 3. Scroll down to '....'
21 | 4. See error
22 |
23 | **Expected behavior**
24 | A clear and concise description of what you expected to happen.
25 |
26 | **Screenshots**
27 | If applicable, add screenshots to help explain your problem.
28 |
29 | **Application Log**
30 | If applicable, include either the full application log,or a snippet of the error logging.
31 |
32 | **Desktop (optional - complete the following information):**
33 | - OS: [e.g. iOS]
34 | - CPU Cores: [e.g. 4 cores]
35 | - RAM:[e.g. 16GB]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: Support and Questions - How do I XXX? Does it support XXX?
4 | url: https://github.com/DSheirer/sdrtrunk/wiki/Support
5 | about: Please ask your user questions here -- DO NOT create an issue if you have a user question please!!
6 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: feature
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/workflows/gradle.yml:
--------------------------------------------------------------------------------
1 | # This workflow uses actions that are not certified by GitHub.
2 | # They are provided by a third-party and are governed by
3 | # separate terms of service, privacy policy, and support
4 | # documentation.
5 | # This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
6 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
7 |
8 | name: Java CI with Gradle
9 |
10 | on:
11 | push:
12 | branches: [ master ]
13 | pull_request:
14 | branches: [ master ]
15 |
16 | jobs:
17 | build:
18 | strategy:
19 | matrix:
20 | os: [ubuntu-latest, macos-latest, windows-latest]
21 | runs-on: ${{ matrix.os }}
22 |
23 | steps:
24 | - uses: actions/checkout@v4
25 | - name: Set up JDK 23
26 | uses: actions/setup-java@v3
27 | with:
28 | java-version: '23'
29 | distribution: 'liberica'
30 | java-package: 'jdk+fx'
31 | - name: Build with Gradle
32 | uses: gradle/gradle-build-action@v2
33 | with:
34 | arguments: clean build
35 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ### JetBrains template
2 | .idea/
3 | /classes*
4 | /product*
5 | out/
6 | .directory
7 | .settings
8 |
9 | ## File-based project format:
10 | *.iws
11 | *.iml
12 |
13 | # mpeltonen/sbt-idea plugin
14 | .idea_modules/
15 |
16 | ### Java template
17 | *.class
18 | *.log
19 | # Package Files #
20 | #*.jar
21 |
22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
23 | hs_err_pid*
24 | ### Gradle template
25 | .gradle
26 | /build/
27 |
28 | # Ignore Gradle GUI config
29 | gradle-app.setting
30 |
31 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
32 | !gradle-wrapper.jar
33 |
34 | # Cache of project
35 | .gradletasknamecache
36 |
--------------------------------------------------------------------------------
/.idea/dictionaries/denny.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | bahroo
5 | baseband
6 | basebanded
7 | broadcastify
8 | cach
9 | correlator
10 | deinterleave
11 | descrambled
12 | dibit
13 | dinf
14 | dqpsk
15 | esnid
16 | fleetsync
17 | heterdyned
18 | heterodynes
19 | hytera
20 | icecast
21 | ident
22 | lcns
23 | nutall
24 | overflowable
25 | polyphase
26 | qpsk
27 | remez
28 | resampler
29 | samplerate
30 | sdrtrunk
31 | sheirer
32 | shoutcast
33 | streamable
34 | talkgroup
35 | talkgroups
36 | tgid
37 | ultravox
38 | unsynchronized
39 | wacn
40 | xtea
41 |
42 |
43 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/artifacts/sdrplay-api-headers/v3_07/sdrplay_api_rsp1a.h:
--------------------------------------------------------------------------------
1 | #ifndef SDRPLAY_API_RSP1A_H
2 | #define SDRPLAY_API_RSP1A_H
3 |
4 | #define RSPIA_NUM_LNA_STATES 10
5 | #define RSPIA_NUM_LNA_STATES_AM 7
6 | #define RSPIA_NUM_LNA_STATES_LBAND 9
7 |
8 | // RSP1A parameter enums
9 |
10 | // RSP1A parameter structs
11 | typedef struct
12 | {
13 | unsigned char rfNotchEnable; // default: 0
14 | unsigned char rfDabNotchEnable; // default: 0
15 | } sdrplay_api_Rsp1aParamsT;
16 |
17 | typedef struct
18 | {
19 | unsigned char biasTEnable; // default: 0
20 | } sdrplay_api_Rsp1aTunerParamsT;
21 |
22 | #endif //SDRPLAY_API_RSP1A_H
23 |
--------------------------------------------------------------------------------
/artifacts/sdrplay-api-headers/v3_07/sdrplay_api_rsp2.h:
--------------------------------------------------------------------------------
1 | #ifndef SDRPLAY_API_RSP2_H
2 | #define SDRPLAY_API_RSP2_H
3 |
4 | #define RSPII_NUM_LNA_STATES 9
5 | #define RSPII_NUM_LNA_STATES_AMPORT 5
6 | #define RSPII_NUM_LNA_STATES_420MHZ 6
7 |
8 | // RSP2 parameter enums
9 | typedef enum
10 | {
11 | sdrplay_api_Rsp2_ANTENNA_A = 5,
12 | sdrplay_api_Rsp2_ANTENNA_B = 6,
13 | } sdrplay_api_Rsp2_AntennaSelectT;
14 |
15 | typedef enum
16 | {
17 | sdrplay_api_Rsp2_AMPORT_1 = 1,
18 | sdrplay_api_Rsp2_AMPORT_2 = 0,
19 | } sdrplay_api_Rsp2_AmPortSelectT;
20 |
21 | // RSP2 parameter structs
22 | typedef struct
23 | {
24 | unsigned char extRefOutputEn; // default: 0
25 | } sdrplay_api_Rsp2ParamsT;
26 |
27 | typedef struct
28 | {
29 | unsigned char biasTEnable; // default: 0
30 | sdrplay_api_Rsp2_AmPortSelectT amPortSel; // default: sdrplay_api_Rsp2_AMPORT_2
31 | sdrplay_api_Rsp2_AntennaSelectT antennaSel; // default: sdrplay_api_Rsp2_ANTENNA_A
32 | unsigned char rfNotchEnable; // default: 0
33 | } sdrplay_api_Rsp2TunerParamsT;
34 |
35 | #endif //SDRPLAY_API_RSP2_H
36 |
--------------------------------------------------------------------------------
/artifacts/sdrplay-api-headers/v3_07/sdrplay_api_rx_channel.h:
--------------------------------------------------------------------------------
1 | #ifndef SDRPLAY_API_RX_CHANNEL_H
2 | #define SDRPLAY_API_RX_CHANNEL_H
3 |
4 | #include "sdrplay_api_tuner.h"
5 | #include "sdrplay_api_control.h"
6 | #include "sdrplay_api_rsp1a.h"
7 | #include "sdrplay_api_rsp2.h"
8 | #include "sdrplay_api_rspDuo.h"
9 | #include "sdrplay_api_rspDx.h"
10 |
11 | typedef struct
12 | {
13 | sdrplay_api_TunerParamsT tunerParams;
14 | sdrplay_api_ControlParamsT ctrlParams;
15 | sdrplay_api_Rsp1aTunerParamsT rsp1aTunerParams;
16 | sdrplay_api_Rsp2TunerParamsT rsp2TunerParams;
17 | sdrplay_api_RspDuoTunerParamsT rspDuoTunerParams;
18 | sdrplay_api_RspDxTunerParamsT rspDxTunerParams;
19 | } sdrplay_api_RxChannelParamsT;
20 |
21 | #endif //SDRPLAY_API_RX_CHANNEL_H
22 |
--------------------------------------------------------------------------------
/artifacts/sdrplay-api-headers/v3_08/sdrplay_api_rsp1a.h:
--------------------------------------------------------------------------------
1 | #ifndef SDRPLAY_API_RSP1A_H
2 | #define SDRPLAY_API_RSP1A_H
3 |
4 | #define RSPIA_NUM_LNA_STATES 10
5 | #define RSPIA_NUM_LNA_STATES_AM 7
6 | #define RSPIA_NUM_LNA_STATES_LBAND 9
7 |
8 | // RSP1A parameter enums
9 |
10 | // RSP1A parameter structs
11 | typedef struct
12 | {
13 | unsigned char rfNotchEnable; // default: 0
14 | unsigned char rfDabNotchEnable; // default: 0
15 | } sdrplay_api_Rsp1aParamsT;
16 |
17 | typedef struct
18 | {
19 | unsigned char biasTEnable; // default: 0
20 | } sdrplay_api_Rsp1aTunerParamsT;
21 |
22 | #endif //SDRPLAY_API_RSP1A_H
23 |
--------------------------------------------------------------------------------
/artifacts/sdrplay-api-headers/v3_08/sdrplay_api_rsp2.h:
--------------------------------------------------------------------------------
1 | #ifndef SDRPLAY_API_RSP2_H
2 | #define SDRPLAY_API_RSP2_H
3 |
4 | #define RSPII_NUM_LNA_STATES 9
5 | #define RSPII_NUM_LNA_STATES_AMPORT 5
6 | #define RSPII_NUM_LNA_STATES_420MHZ 6
7 |
8 | // RSP2 parameter enums
9 | typedef enum
10 | {
11 | sdrplay_api_Rsp2_ANTENNA_A = 5,
12 | sdrplay_api_Rsp2_ANTENNA_B = 6,
13 | } sdrplay_api_Rsp2_AntennaSelectT;
14 |
15 | typedef enum
16 | {
17 | sdrplay_api_Rsp2_AMPORT_1 = 1,
18 | sdrplay_api_Rsp2_AMPORT_2 = 0,
19 | } sdrplay_api_Rsp2_AmPortSelectT;
20 |
21 | // RSP2 parameter structs
22 | typedef struct
23 | {
24 | unsigned char extRefOutputEn; // default: 0
25 | } sdrplay_api_Rsp2ParamsT;
26 |
27 | typedef struct
28 | {
29 | unsigned char biasTEnable; // default: 0
30 | sdrplay_api_Rsp2_AmPortSelectT amPortSel; // default: sdrplay_api_Rsp2_AMPORT_2
31 | sdrplay_api_Rsp2_AntennaSelectT antennaSel; // default: sdrplay_api_Rsp2_ANTENNA_A
32 | unsigned char rfNotchEnable; // default: 0
33 | } sdrplay_api_Rsp2TunerParamsT;
34 |
35 | #endif //SDRPLAY_API_RSP2_H
36 |
--------------------------------------------------------------------------------
/artifacts/sdrplay-api-headers/v3_08/sdrplay_api_rx_channel.h:
--------------------------------------------------------------------------------
1 | #ifndef SDRPLAY_API_RX_CHANNEL_H
2 | #define SDRPLAY_API_RX_CHANNEL_H
3 |
4 | #include "sdrplay_api_tuner.h"
5 | #include "sdrplay_api_control.h"
6 | #include "sdrplay_api_rsp1a.h"
7 | #include "sdrplay_api_rsp2.h"
8 | #include "sdrplay_api_rspDuo.h"
9 | #include "sdrplay_api_rspDx.h"
10 |
11 | typedef struct
12 | {
13 | sdrplay_api_TunerParamsT tunerParams;
14 | sdrplay_api_ControlParamsT ctrlParams;
15 | sdrplay_api_Rsp1aTunerParamsT rsp1aTunerParams;
16 | sdrplay_api_Rsp2TunerParamsT rsp2TunerParams;
17 | sdrplay_api_RspDuoTunerParamsT rspDuoTunerParams;
18 | sdrplay_api_RspDxTunerParamsT rspDxTunerParams;
19 | } sdrplay_api_RxChannelParamsT;
20 |
21 | #endif //SDRPLAY_API_RX_CHANNEL_H
22 |
--------------------------------------------------------------------------------
/artifacts/sdrplay-api-headers/v3_15/sdrplay_api_rsp1a.h:
--------------------------------------------------------------------------------
1 | #ifndef SDRPLAY_API_RSP1A_H
2 | #define SDRPLAY_API_RSP1A_H
3 |
4 | #define RSPIA_NUM_LNA_STATES 10
5 | #define RSPIA_NUM_LNA_STATES_AM 7
6 | #define RSPIA_NUM_LNA_STATES_LBAND 9
7 |
8 | // RSP1A parameter enums
9 |
10 | // RSP1A parameter structs
11 | typedef struct
12 | {
13 | unsigned char rfNotchEnable; // default: 0
14 | unsigned char rfDabNotchEnable; // default: 0
15 | } sdrplay_api_Rsp1aParamsT;
16 |
17 | typedef struct
18 | {
19 | unsigned char biasTEnable; // default: 0
20 | } sdrplay_api_Rsp1aTunerParamsT;
21 |
22 | #endif //SDRPLAY_API_RSP1A_H
23 |
--------------------------------------------------------------------------------
/artifacts/sdrplay-api-headers/v3_15/sdrplay_api_rsp2.h:
--------------------------------------------------------------------------------
1 | #ifndef SDRPLAY_API_RSP2_H
2 | #define SDRPLAY_API_RSP2_H
3 |
4 | #define RSPII_NUM_LNA_STATES 9
5 | #define RSPII_NUM_LNA_STATES_AMPORT 5
6 | #define RSPII_NUM_LNA_STATES_420MHZ 6
7 |
8 | // RSP2 parameter enums
9 | typedef enum
10 | {
11 | sdrplay_api_Rsp2_ANTENNA_A = 5,
12 | sdrplay_api_Rsp2_ANTENNA_B = 6,
13 | } sdrplay_api_Rsp2_AntennaSelectT;
14 |
15 | typedef enum
16 | {
17 | sdrplay_api_Rsp2_AMPORT_1 = 1,
18 | sdrplay_api_Rsp2_AMPORT_2 = 0,
19 | } sdrplay_api_Rsp2_AmPortSelectT;
20 |
21 | // RSP2 parameter structs
22 | typedef struct
23 | {
24 | unsigned char extRefOutputEn; // default: 0
25 | } sdrplay_api_Rsp2ParamsT;
26 |
27 | typedef struct
28 | {
29 | unsigned char biasTEnable; // default: 0
30 | sdrplay_api_Rsp2_AmPortSelectT amPortSel; // default: sdrplay_api_Rsp2_AMPORT_2
31 | sdrplay_api_Rsp2_AntennaSelectT antennaSel; // default: sdrplay_api_Rsp2_ANTENNA_A
32 | unsigned char rfNotchEnable; // default: 0
33 | } sdrplay_api_Rsp2TunerParamsT;
34 |
35 | #endif //SDRPLAY_API_RSP2_H
36 |
--------------------------------------------------------------------------------
/artifacts/sdrplay-api-headers/v3_15/sdrplay_api_rx_channel.h:
--------------------------------------------------------------------------------
1 | #ifndef SDRPLAY_API_RX_CHANNEL_H
2 | #define SDRPLAY_API_RX_CHANNEL_H
3 |
4 | #include "sdrplay_api_tuner.h"
5 | #include "sdrplay_api_control.h"
6 | #include "sdrplay_api_rsp1a.h"
7 | #include "sdrplay_api_rsp2.h"
8 | #include "sdrplay_api_rspDuo.h"
9 | #include "sdrplay_api_rspDx.h"
10 |
11 | typedef struct
12 | {
13 | sdrplay_api_TunerParamsT tunerParams;
14 | sdrplay_api_ControlParamsT ctrlParams;
15 | sdrplay_api_Rsp1aTunerParamsT rsp1aTunerParams;
16 | sdrplay_api_Rsp2TunerParamsT rsp2TunerParams;
17 | sdrplay_api_RspDuoTunerParamsT rspDuoTunerParams;
18 | sdrplay_api_RspDxTunerParamsT rspDxTunerParams;
19 | } sdrplay_api_RxChannelParamsT;
20 |
21 | #endif //SDRPLAY_API_RX_CHANNEL_H
22 |
--------------------------------------------------------------------------------
/copyright.template:
--------------------------------------------------------------------------------
1 | ******************************************************************************
2 | Copyright (C) 2014-${today.year} Dennis Sheirer
3 |
4 | This program is free software: you can redistribute it and/or modify
5 | it under the terms of the GNU General Public License as published by
6 | the Free Software Foundation, either version 3 of the License, or
7 | (at your option) any later version.
8 |
9 | This program is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 |
14 | You should have received a copy of the GNU General Public License
15 | along with this program. If not, see
16 | *****************************************************************************
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | #
2 | # ******************************************************************************
3 | # Copyright (C) 2014-2024 Dennis Sheirer
4 | #
5 | # This program is free software: you can redistribute it and/or modify
6 | # it under the terms of the GNU General Public License as published by
7 | # the Free Software Foundation, either version 3 of the License, or
8 | # (at your option) any later version.
9 | #
10 | # This program is distributed in the hope that it will be useful,
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | # GNU General Public License for more details.
14 | #
15 | # You should have received a copy of the GNU General Public License
16 | # along with this program. If not, see
17 | # *****************************************************************************
18 | #
19 |
20 | # Version naming conventions:
21 | # Alpha: maj.min.patch-alpha-build
22 | # Beta: maj.min.patch-beta-build
23 | # Release: maj.min.patch
24 | #
25 | # Example: 0.6.0-beta-5
26 | #
27 | # Note: this is so that the file names for the resultant release build products match the GitLab release asset
28 | # tag name, specifically the dashes inserted before and after the alpha/beta labels.
29 | # See: https://github.com/DSheirer/sdrtrunk/issues/1651
30 |
31 | projectVersion=0.6.2-beta-1
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #
2 | # ******************************************************************************
3 | # Copyright (C) 2014-2024 Dennis Sheirer
4 | #
5 | # This program is free software: you can redistribute it and/or modify
6 | # it under the terms of the GNU General Public License as published by
7 | # the Free Software Foundation, either version 3 of the License, or
8 | # (at your option) any later version.
9 | #
10 | # This program is distributed in the hope that it will be useful,
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | # GNU General Public License for more details.
14 | #
15 | # You should have received a copy of the GNU General Public License
16 | # along with this program. If not, see
17 | # *****************************************************************************
18 | #
19 |
20 | distributionBase=GRADLE_USER_HOME
21 | distributionPath=wrapper/dists
22 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
23 | networkTimeout=10000
24 | validateDistributionUrl=true
25 | zipStoreBase=GRADLE_USER_HOME
26 | zipStorePath=wrapper/dists
27 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'sdr-trunk'
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/alias/action/AliasActionType.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014-2016 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.alias.action;
19 |
20 | public enum AliasActionType
21 | {
22 | BEEP( "Beep" ),
23 | CLIP( "Play Clip" ),
24 | SCRIPT( "Run Script" );
25 |
26 | private String mLabel;
27 |
28 | private AliasActionType( String label )
29 | {
30 | mLabel = label;
31 | }
32 |
33 | public String toString()
34 | {
35 | return mLabel;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/audio/AudioEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.audio;
2 |
3 | public class AudioEvent
4 | {
5 | private Type mType;
6 | private String mChannel;
7 |
8 | public AudioEvent( Type event, String channel )
9 | {
10 | mType = event;
11 | mChannel = channel;
12 | }
13 |
14 | public Type getType()
15 | {
16 | return mType;
17 | }
18 |
19 | public String getChannel()
20 | {
21 | return mChannel;
22 | }
23 |
24 | public enum Type
25 | {
26 | AUDIO_MUTED,
27 | AUDIO_UNMUTED,
28 | AUDIO_SQUELCHED,
29 | AUDIO_UNSQUELCHED,
30 | AUDIO_STARTED,
31 | AUDIO_STOPPED,
32 | AUDIO_CONTINUATION,
33 | AUDIO_CONFIGURATION_CHANGE_STARTED,
34 | AUDIO_CONFIGURATION_CHANGE_COMPLETE;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/audio/AudioException.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.audio;
2 |
3 | public class AudioException extends Exception
4 | {
5 | private static final long serialVersionUID = 1L;
6 |
7 | public AudioException( String description )
8 | {
9 | super( description );
10 | }
11 |
12 | public AudioException( String description, Throwable throwable )
13 | {
14 | super( description, throwable );
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/audio/IAudioController.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.audio;
2 |
3 | import io.github.dsheirer.audio.playback.AudioOutput;
4 | import io.github.dsheirer.sample.Listener;
5 | import io.github.dsheirer.source.mixer.MixerChannelConfiguration;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * Interface for controlling one or more audio channels
11 | */
12 | public interface IAudioController
13 | {
14 | /* Current Mixer and MixerChannel configuration */
15 | public void setMixerChannelConfiguration( MixerChannelConfiguration entry ) throws AudioException;
16 | public MixerChannelConfiguration getMixerChannelConfiguration() throws AudioException;
17 |
18 | /* Audio Output(s) */
19 | public List getAudioOutputs();
20 |
21 | /* Controller Audio Event Listener */
22 | public void addControllerListener( Listener listener );
23 | public void removeControllerListener( Listener listener );
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/audio/IAudioSegmentListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.audio;
21 |
22 | import io.github.dsheirer.sample.Listener;
23 |
24 | /**
25 | * Interface for audio segment listener
26 | */
27 | public interface IAudioSegmentListener
28 | {
29 | /**
30 | * Get the audio segment listener
31 | */
32 | Listener getAudioSegmentListener();
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/audio/broadcast/IBroadcastMetadataUpdater.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdrtrunk
3 | * Copyright (C) 2014-2017 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | *
18 | ******************************************************************************/
19 | package io.github.dsheirer.audio.broadcast;
20 |
21 | import io.github.dsheirer.identifier.IdentifierCollection;
22 |
23 | public interface IBroadcastMetadataUpdater
24 | {
25 | /**
26 | * Updates broadcast audio metadata
27 | *
28 | * @param identifierCollection containing metadata attributes
29 | */
30 | void update(IdentifierCollection identifierCollection);
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/audio/convert/ISilenceGenerator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 | package io.github.dsheirer.audio.convert;
20 |
21 | import java.util.List;
22 |
23 | public interface ISilenceGenerator
24 | {
25 | AudioFrames generate(long duration);
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/audio/invert/IAudioTypeListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.audio.invert;
19 |
20 |
21 | public interface IAudioTypeListener
22 | {
23 | public void setAudioType( AudioType type );
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/audio/squelch/ISquelchStateListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * * ******************************************************************************
4 | * * Copyright (C) 2014-2019 Dennis Sheirer
5 | * *
6 | * * This program is free software: you can redistribute it and/or modify
7 | * * it under the terms of the GNU General Public License as published by
8 | * * the Free Software Foundation, either version 3 of the License, or
9 | * * (at your option) any later version.
10 | * *
11 | * * This program is distributed in the hope that it will be useful,
12 | * * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * * GNU General Public License for more details.
15 | * *
16 | * * You should have received a copy of the GNU General Public License
17 | * * along with this program. If not, see
18 | * * *****************************************************************************
19 | *
20 | *
21 | */
22 |
23 | package io.github.dsheirer.audio.squelch;
24 |
25 | import io.github.dsheirer.sample.Listener;
26 |
27 | public interface ISquelchStateListener
28 | {
29 | Listener getSquelchStateListener();
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/audio/squelch/ISquelchStateProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * * ******************************************************************************
4 | * * Copyright (C) 2014-2019 Dennis Sheirer
5 | * *
6 | * * This program is free software: you can redistribute it and/or modify
7 | * * it under the terms of the GNU General Public License as published by
8 | * * the Free Software Foundation, either version 3 of the License, or
9 | * * (at your option) any later version.
10 | * *
11 | * * This program is distributed in the hope that it will be useful,
12 | * * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * * GNU General Public License for more details.
15 | * *
16 | * * You should have received a copy of the GNU General Public License
17 | * * along with this program. If not, see
18 | * * *****************************************************************************
19 | *
20 | *
21 | */
22 |
23 | package io.github.dsheirer.audio.squelch;
24 |
25 | import io.github.dsheirer.sample.Listener;
26 |
27 | public interface ISquelchStateProvider
28 | {
29 | void setSquelchStateListener(Listener listener);
30 |
31 | void removeSquelchStateListener();
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/audio/squelch/SquelchMode.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.audio.squelch;
2 |
3 | /**
4 | * Squelch state for a decoding channel. The state determines the handling of
5 | * any audio packets processed by the channel state.
6 | */
7 | public enum SquelchMode
8 | {
9 | /**
10 | * Automatic: decoded message activity dictates squelch state and determines
11 | * if audio is passed
12 | */
13 | AUTOMATIC,
14 |
15 | /**
16 | * Manually applied squelch noise level threshold determines if audio is
17 | * passed.
18 | */
19 | MANUAL,
20 |
21 | /**
22 | * No Squelch - no squelch is applied and all audio is passed
23 | */
24 | NONE;
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/audio/squelch/SquelchState.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.audio.squelch;
2 |
3 | public enum SquelchState
4 | {
5 | SQUELCH,
6 | UNSQUELCH;
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/bits/BitSetFullException.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.bits;
19 |
20 | public class BitSetFullException extends Exception
21 | {
22 | private static final long serialVersionUID = 1L;
23 |
24 | public BitSetFullException( String text )
25 | {
26 | super( text );
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/bits/IBinarySymbolProcessor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 | package io.github.dsheirer.bits;
21 |
22 | public interface IBinarySymbolProcessor
23 | {
24 | void process(boolean symbol);
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/bits/ISyncProcessor.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.bits;
17 |
18 | public interface ISyncProcessor
19 | {
20 | /**
21 | * Checks if the value matches a known sync pattern
22 | * @param value
23 | * @return
24 | */
25 | boolean checkSync(long value);
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/channel/metadata/ChannelMetadataField.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 |
21 | package io.github.dsheirer.channel.metadata;
22 |
23 | public enum ChannelMetadataField
24 | {
25 | CONFIGURATION_CHANNEL,
26 | CONFIGURATION_FREQUENCY,
27 | CONFIGURATION_SITE,
28 | CONFIGURATION_SYSTEM,
29 | DECODER_CHANNEL_NAME,
30 | DECODER_STATE,
31 | DECODER_TYPE,
32 | USER_FROM,
33 | USER_TO;
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/channel/metadata/IAttributeChangeRequestListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdrtrunk
3 | * Copyright (C) 2014-2017 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | *
18 | ******************************************************************************/
19 | package io.github.dsheirer.channel.metadata;
20 |
21 | import io.github.dsheirer.sample.Listener;
22 |
23 | public interface IAttributeChangeRequestListener
24 | {
25 | public Listener getAttributeChangeRequestListener();
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/channel/metadata/IAttributeChangeRequestProvider.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdrtrunk
3 | * Copyright (C) 2014-2017 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | *
18 | ******************************************************************************/
19 | package io.github.dsheirer.channel.metadata;
20 |
21 | import io.github.dsheirer.sample.Listener;
22 |
23 | public interface IAttributeChangeRequestProvider
24 | {
25 | public void setAttributeChangeRequestListener(Listener listener);
26 |
27 | public void removeAttributeChangeRequestListener(Listener listener);
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/channel/metadata/IChannelMetadataUpdateListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 |
21 | package io.github.dsheirer.channel.metadata;
22 |
23 | /**
24 | * Interface to receive channel metadata update notifications
25 | */
26 | public interface IChannelMetadataUpdateListener
27 | {
28 | void updated(ChannelMetadata channelMetadata, ChannelMetadataField channelMetadataField);
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/channel/state/IDecoderStateEventListener.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.channel.state;
2 |
3 | import io.github.dsheirer.sample.Listener;
4 |
5 | public interface IDecoderStateEventListener
6 | {
7 | public Listener getDecoderStateListener();
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/channel/state/IDecoderStateEventProvider.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.channel.state;
2 |
3 | import io.github.dsheirer.sample.Listener;
4 |
5 | public interface IDecoderStateEventProvider
6 | {
7 | void setDecoderStateListener( Listener listener );
8 | void removeDecoderStateListener();
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/controller/channel/ChannelEventListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014-2016 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.controller.channel;
19 |
20 | /**
21 | * Interface for receiving channel events. Each listener will receive
22 | * notification of all channel events.
23 | */
24 | public interface ChannelEventListener
25 | {
26 | /**
27 | * Notifies the listener that a channel event has occurred
28 | */
29 | public void channelChanged( ChannelEvent event );
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/controller/channel/ConfigurationValidationException.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.controller.channel;
2 |
3 | import java.awt.*;
4 |
5 | public class ConfigurationValidationException extends Exception
6 | {
7 | private static final long serialVersionUID = 1L;
8 |
9 | private Component mComponent;
10 |
11 | public ConfigurationValidationException( Component component,
12 | String validationMessage )
13 | {
14 | super( validationMessage );
15 |
16 | mComponent = component;
17 | }
18 |
19 | public Component getComponent()
20 | {
21 | return mComponent;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/controller/channel/IChannelEventListener.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.controller.channel;
2 |
3 | import io.github.dsheirer.sample.Listener;
4 |
5 | public interface IChannelEventListener
6 | {
7 | public Listener getChannelEventListener();
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/controller/channel/IChannelEventProvider.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.controller.channel;
2 |
3 | import io.github.dsheirer.sample.Listener;
4 |
5 | public interface IChannelEventProvider
6 | {
7 | void setChannelEventListener( Listener listener );
8 | void removeChannelEventListener();
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/controller/config/Configuration.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.controller.config;
19 |
20 | import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
21 |
22 | @JacksonXmlRootElement(localName = "configuration")
23 | public abstract class Configuration
24 | {
25 | public Configuration()
26 | {
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/am/IAmDemodulator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2023 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.dsp.am;
21 |
22 | /**
23 | * AM Demodulator interface
24 | */
25 | public interface IAmDemodulator
26 | {
27 | /**
28 | * Demodulates an array of vector squared magnitudes.
29 | * @param magnitude values that are squared.
30 | * @return demodulated samples
31 | */
32 | float[] demodulateMagnitude(float[] magnitude);
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/filter/dc/IDcRemovalFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.dsp.filter.dc;
21 |
22 | /**
23 | * Interface for a DC removal filter.
24 | */
25 | public interface IDcRemovalFilter
26 | {
27 | float[] filter(float[] samples);
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/filter/decimate/IRealDecimationFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2021 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.dsp.filter.decimate;
21 |
22 | /**
23 | * Interface for a decimation filter for float array sample buffers
24 | */
25 | public interface IRealDecimationFilter
26 | {
27 | float[] decimateReal(float[] samples);
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/filter/decimate/RealDecimateX0Filter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.dsp.filter.decimate;
21 |
22 | /**
23 | * No decimation filter.
24 | */
25 | public class RealDecimateX0Filter implements IRealDecimationFilter
26 | {
27 | @Override
28 | public float[] decimateReal(float[] samples)
29 | {
30 | return samples;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/filter/design/FilterDesignException.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.dsp.filter.design;
2 |
3 | public class FilterDesignException extends Exception
4 | {
5 | private static final long serialVersionUID = 1L;
6 |
7 | public FilterDesignException( String text )
8 | {
9 | super( text );
10 | }
11 |
12 | public FilterDesignException( String text, Throwable throwable )
13 | {
14 | super( text, throwable );
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/filter/design/FilterView.css:
--------------------------------------------------------------------------------
1 | /* ....Show License.... */
2 | .chart {
3 | -fx-background-image: url("../../../Curve-fitted-background.png");
4 | -fx-padding: 15 25 15 15;
5 | }
6 | .chart-plot-background {
7 | -fx-background-color: red;
8 | -fx-background-image: url("../../../Curve-fitted-chart-background.png"),
9 | url("../../../Curve-fitted-graph-gridlines.png");
10 | -fx-background-size: cover, auto;
11 | -fx-background-repeat: no-repeat, repeat;
12 | -fx-background-position: 0% 0%, 0% 100%;
13 | -fx-border-color: black black transparent transparent;
14 | }
15 | .chart-area-symbol {
16 | -fx-background-color: white;
17 | }
18 | .chart-series-area-line {
19 | -fx-stroke: white;
20 | -fx-stroke-width: 2px;
21 | }
22 | .chart-series-area-fill {
23 | -fx-fill: linear-gradient(to right, white, rgba(255,255,255,0));
24 | -fx-blend-mode: OVERLAY;
25 | }
26 | .axis {
27 | -fx-tick-mark-visible: false;
28 | -fx-minor-tick-visible: false;
29 | -fx-tick-length: 3;
30 | -fx-minor-tick-length: 0;
31 | -fx-border-color: transparent;
32 | -fx-tick-label-fill: white;
33 | }
34 | .axis:bottom {
35 | -fx-border-color: black transparent transparent transparent;
36 | }
37 | .axis:left {
38 | -fx-border-color: transparent black transparent transparent;
39 | }
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/filter/design/FilterViewerLauncher.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.dsp.filter.design;
2 |
3 | import javafx.application.Platform;
4 | import javafx.embed.swing.JFXPanel;
5 | import javafx.stage.Stage;
6 |
7 | public class FilterViewerLauncher
8 | {
9 | private JFXPanel mJFXPanel;
10 |
11 | public FilterViewerLauncher()
12 | {
13 | mJFXPanel = new JFXPanel();
14 |
15 | Platform.runLater(() ->
16 | {
17 | FilterViewer filterViewer = new FilterViewer();
18 | Stage stage = new Stage();
19 |
20 | try
21 | {
22 | filterViewer.start(stage);
23 | }
24 | catch(Exception e)
25 | {
26 | e.printStackTrace();
27 | }
28 | });
29 | }
30 |
31 | public static void main(String[] args)
32 | {
33 | FilterViewerLauncher filterViewerLauncher = new FilterViewerLauncher();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/filter/fir/FIRFilter.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.dsp.filter.fir;
2 |
3 | public abstract class FIRFilter
4 | {
5 | public abstract void dispose();
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/filter/fir/complex/IComplexFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.dsp.filter.fir.complex;
21 |
22 | /**
23 | * Interface for a filter for float array sample buffers
24 | */
25 | public interface IComplexFilter
26 | {
27 | float[] filter(float[] samples);
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/filter/fir/real/IRealFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.dsp.filter.fir.real;
21 |
22 | /**
23 | * Interface for a filter for float array sample buffers
24 | */
25 | public interface IRealFilter
26 | {
27 | float[] filter(float[] samples);
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/filter/smoothing/NoSmoothingFilter.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.dsp.filter.smoothing;
2 |
3 |
4 | public class NoSmoothingFilter extends SmoothingFilter
5 | {
6 | public NoSmoothingFilter()
7 | {
8 | super( null, 3 );
9 | }
10 |
11 | public float[] filter( float[] data )
12 | {
13 | return data;
14 | }
15 |
16 | public static float[] getCoefficients( int points )
17 | {
18 | return null;
19 | }
20 |
21 | public int getPointSize()
22 | {
23 | return SMOOTHING_DEFAULT;
24 | }
25 |
26 | @Override
27 | public SmoothingType getSmoothingType()
28 | {
29 | return SmoothingType.NONE;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/fsk/ISyncStateListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.dsp.fsk;
17 |
18 | /**
19 | * Interface to receive sync state change events.
20 | */
21 | public interface ISyncStateListener
22 | {
23 | void setSyncState(SyncState syncState);
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/fsk/LTRDecoderInstrumented.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2023 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 | package io.github.dsheirer.dsp.fsk;
20 |
21 | public class LTRDecoderInstrumented extends LTRDecoder
22 | {
23 | /**
24 | * Instrumented extension to LTRDecoder
25 | */
26 | public LTRDecoderInstrumented()
27 | {
28 | super();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/fsk/SyncState.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.dsp.fsk;
17 |
18 | public enum SyncState
19 | {
20 | COARSE, MEDIUM, FINE;
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/gain/GainController.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.dsp.gain;
2 |
3 | public interface GainController
4 | {
5 | public abstract void increase();
6 |
7 | public abstract void decrease();
8 |
9 | public abstract void reset();
10 | }
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/gain/LegacyComplexGain.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.dsp.gain;
2 |
3 | import io.github.dsheirer.sample.Listener;
4 | import io.github.dsheirer.sample.complex.Complex;
5 |
6 | public class LegacyComplexGain implements Listener
7 | {
8 | private float mGain;
9 | private Listener mListener;
10 |
11 | public LegacyComplexGain(float gain)
12 | {
13 | mGain = gain;
14 | }
15 |
16 | public Complex apply(Complex sample)
17 | {
18 | sample.multiply(mGain);
19 |
20 | return sample;
21 | }
22 |
23 | @Override
24 | public void receive(Complex sample)
25 | {
26 | if(mListener != null)
27 | {
28 | apply(sample);
29 |
30 | mListener.receive(sample);
31 | }
32 | }
33 |
34 | public void setListener(Listener listener)
35 | {
36 | mListener = listener;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/gain/NonClippingGain.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.dsp.gain;
2 |
3 | public class NonClippingGain
4 | {
5 | private float mGain;
6 | private float mMaxValue;
7 |
8 | /**
9 | * Applies a fixed gain value to the float samples.
10 | *
11 | * @param gain value
12 | * @param maxValue max absolute value to prevent clipping ( 0.0 to 1.0 )
13 | */
14 | public NonClippingGain( float gain, float maxValue )
15 | {
16 | mGain = gain;
17 | mMaxValue = maxValue;
18 | }
19 |
20 | /**
21 | * Applies gain to the sample
22 | */
23 | public float apply( float sample )
24 | {
25 | float adjusted = sample * mGain;
26 |
27 | if( adjusted > mMaxValue )
28 | {
29 | adjusted = mMaxValue;
30 | }
31 | if( adjusted < -mMaxValue )
32 | {
33 | adjusted = -mMaxValue;
34 | }
35 |
36 | return adjusted;
37 | }
38 |
39 | /**
40 | * Applies gain to the sample array
41 | */
42 | public float[] apply( float[] samples )
43 | {
44 | for( int x = 0; x < samples.length; x++ )
45 | {
46 | samples[ x ] = apply( samples[ x ]);
47 | }
48 |
49 | return samples;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/magnitude/IMagnitudeCalculator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2023 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.dsp.magnitude;
21 |
22 | /**
23 | * Interface for implementations that calculate magnitude
24 | */
25 | public interface IMagnitudeCalculator
26 | {
27 | float[] calculate(float[] i, float[] q);
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/oscillator/IRealOscillator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.dsp.oscillator;
21 |
22 | public interface IRealOscillator extends IOscillator
23 | {
24 | /**
25 | * Generates the specified number of real samples into a sample array.
26 | * @param sampleCount number of samples to generate and length of the resulting float array.
27 | * @return generated samples
28 | */
29 | float[] generate(int sampleCount);
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/psk/IQPSKSymbolDecoder.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.dsp.psk;
17 |
18 | import io.github.dsheirer.dsp.symbol.Dibit;
19 | import io.github.dsheirer.sample.complex.Complex;
20 |
21 | public interface IQPSKSymbolDecoder
22 | {
23 | /**
24 | * Decodes the symbol and converts it into a Dibit
25 | * @param symbol to decode
26 | * @return decoded dibit
27 | */
28 | Dibit decode(Complex symbol);
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/psk/ISymbolPhaseErrorCalculator.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.dsp.psk;
17 |
18 | import io.github.dsheirer.sample.complex.Complex;
19 |
20 | public interface ISymbolPhaseErrorCalculator
21 | {
22 | /**
23 | * Calculates the phase error of the symbol relative to an alignment for the constellation
24 | * @param symbol to calculate error
25 | * @return error value
26 | */
27 | float getPhaseError(Complex symbol);
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/psk/LSMConstellationDecoder.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.dsp.psk;
17 |
18 | import io.github.dsheirer.dsp.symbol.Dibit;
19 | import io.github.dsheirer.sample.complex.Complex;
20 |
21 | public class LSMConstellationDecoder implements IQPSKSymbolDecoder
22 | {
23 | @Override
24 | public Dibit decode(Complex symbol)
25 | {
26 | return null;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/psk/pll/IFrequencyErrorProcessor.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.dsp.psk.pll;
17 |
18 | /**
19 | * Interface for passing frequency error measurements.
20 | */
21 | public interface IFrequencyErrorProcessor
22 | {
23 | /**
24 | * Provides a frequency error measurement to the listener.
25 | *
26 | * @param error value as measured by the provider
27 | */
28 | void processFrequencyError(long error);
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/squelch/ISquelchConfiguration.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.dsp.squelch;
2 |
3 | /**
4 | * Interface for configurations that support squelch threshold setting.
5 | */
6 | public interface ISquelchConfiguration
7 | {
8 | /**
9 | * Sets the squelch threshold
10 | * @param threshold (dB)
11 | */
12 | void setSquelchThreshold(int threshold);
13 |
14 | /**
15 | * Squelch threshold
16 | * @return threshold (dB)
17 | */
18 | int getSquelchThreshold();
19 |
20 | /**
21 | * Enable or disable the squelch noise floor auto-track feature.
22 | * @param autoTrack true to enable.
23 | */
24 | void setSquelchAutoTrack(boolean autoTrack);
25 |
26 | /**
27 | * Indicates if the squelch noise floor auto-track feature is enabled.
28 | * @return true if enabled.
29 | */
30 | boolean isSquelchAutoTrack();
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/symbol/SyncDetectProvider.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.dsp.symbol;
19 |
20 |
21 | public interface SyncDetectProvider
22 | {
23 | public void setSyncDetectListener( ISyncDetectListener listener );
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/window/ScalarWindow.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.dsp.window;
2 |
3 | /**
4 | * Scalar window implementation.
5 | */
6 | public class ScalarWindow extends Window
7 | {
8 | /**
9 | * Constructs an instance.
10 | *
11 | * @param coefficients coefficients
12 | */
13 | public ScalarWindow(float[] coefficients)
14 | {
15 | super(coefficients);
16 | }
17 |
18 | @Override public float[] apply(float[] samples)
19 | {
20 | validate(samples);
21 |
22 | for(int x = 0; x < mCoefficients.length; x++)
23 | {
24 | samples[x] *= mCoefficients[x];
25 | }
26 |
27 | return samples;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/window/Window.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.dsp.window;
2 |
3 | /**
4 | * Base window implementation.
5 | */
6 | public abstract class Window
7 | {
8 | protected float[] mCoefficients;
9 |
10 | /**
11 | * Constructs an instance.
12 | * @param coefficients coefficients
13 | */
14 | public Window(float[] coefficients)
15 | {
16 | mCoefficients = coefficients;
17 | }
18 |
19 | /**
20 | * Validates that the window coefficients and samples array lengths are the same.
21 | * @param samples to validate
22 | */
23 | protected void validate(float[] samples)
24 | {
25 | if(mCoefficients.length != samples.length)
26 | {
27 | throw new IllegalArgumentException("Sample array length [" + samples.length +
28 | "] must match window coefficients length[" + mCoefficients.length + "]");
29 | }
30 | }
31 |
32 | /**
33 | * Applies this window to the samples
34 | * @param samples to window
35 | * @return windowed samples
36 | */
37 | public abstract float[] apply(float[] samples);
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/dsp/window/WindowType.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.dsp.window;
2 |
3 | import java.util.EnumSet;
4 |
5 | /**
6 | * Window types
7 | */
8 | public enum WindowType
9 | {
10 | BLACKMAN("Blackman"),
11 | BLACKMAN_HARRIS_4("Blackman-Harris 4"),
12 | BLACKMAN_HARRIS_7("Blackman-Harris 7"),
13 | BLACKMAN_NUTALL("Blackman-Nutall"),
14 | COSINE("Cosine"),
15 | FLAT_TOP("Flat Top"),
16 | HAMMING("Hamming"),
17 | HANN("Hann"),
18 | KAISER("Kaiser"),
19 | NUTALL("Nutall"),
20 | NONE("None");
21 |
22 | private String mLabel;
23 |
24 | WindowType(String label)
25 | {
26 | mLabel = label;
27 | }
28 |
29 |
30 | public String toString()
31 | {
32 | return mLabel;
33 | }
34 |
35 | public static final EnumSet NO_PARAMETER_WINDOWS = EnumSet.of(WindowType.BLACKMAN, WindowType.BLACKMAN_HARRIS_4,
36 | WindowType.BLACKMAN_HARRIS_7, WindowType.BLACKMAN_NUTALL, WindowType.COSINE, WindowType.FLAT_TOP,
37 | WindowType.HAMMING, WindowType.HANN, WindowType.NUTALL);
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/edac/ReedSolomon_24_12_13_P25.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 |
21 | package io.github.dsheirer.edac;
22 |
23 | /**
24 | * Reed Solomon RS(24,12,13) decoder over GF(6)
25 | */
26 | public class ReedSolomon_24_12_13_P25 extends ReedSolomon_63_P25
27 | {
28 | /**
29 | * Constructs an instance.
30 | *
31 | * Note: this is a shortened form of RS(63,51,13)
32 | */
33 | public ReedSolomon_24_12_13_P25()
34 | {
35 | super(63,51);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/edac/ReedSolomon_24_16_9_P25.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 |
21 | package io.github.dsheirer.edac;
22 |
23 | /**
24 | * Reed Solomon RS(24,16,9) decoder over GF(6)
25 | */
26 | public class ReedSolomon_24_16_9_P25 extends ReedSolomon_63_P25
27 | {
28 | /**
29 | * Constructs an instance.
30 | *
31 | * Note: this is a shortened form of RS(63,55,9)
32 | */
33 | public ReedSolomon_24_16_9_P25()
34 | {
35 | super(63,55);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/edac/ReedSolomon_63_35_29_P25.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * * ******************************************************************************
4 | * * Copyright (C) 2014-2019 Dennis Sheirer
5 | * *
6 | * * This program is free software: you can redistribute it and/or modify
7 | * * it under the terms of the GNU General Public License as published by
8 | * * the Free Software Foundation, either version 3 of the License, or
9 | * * (at your option) any later version.
10 | * *
11 | * * This program is distributed in the hope that it will be useful,
12 | * * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * * GNU General Public License for more details.
15 | * *
16 | * * You should have received a copy of the GNU General Public License
17 | * * along with this program. If not, see
18 | * * *****************************************************************************
19 | *
20 | *
21 | */
22 |
23 | package io.github.dsheirer.edac;
24 |
25 | /**
26 | * Reed Solomon decoder for APCO-25 RS(63,35,29) over GF(6)
27 | */
28 | public class ReedSolomon_63_35_29_P25 extends ReedSolomon_63_P25
29 | {
30 | /**
31 | * Reed-Solomon RS(63,35,29) decoder.
32 | */
33 | public ReedSolomon_63_35_29_P25()
34 | {
35 | super(63, 35);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/edac/ReedSolomon_63_47_17_P25.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 |
21 | package io.github.dsheirer.edac;
22 |
23 | public class ReedSolomon_63_47_17_P25 extends ReedSolomon_63_P25
24 | {
25 | /**
26 | * Reed-Solomon RS(63,47,17) decoder.
27 | */
28 | public ReedSolomon_63_47_17_P25()
29 | {
30 | super(63,47);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/filter/IFilterChangeListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2023 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.filter;
21 |
22 | public interface IFilterChangeListener
23 | {
24 | void filterChanged();
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/JavaFxWindowRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui;
21 |
22 | /**
23 | * Base class for all JavaFX window view and show requests
24 | */
25 | public abstract class JavaFxWindowRequest
26 | {
27 | public JavaFxWindowRequest()
28 | {
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/icon/ViewIconManagerRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.icon;
21 |
22 | import io.github.dsheirer.gui.JavaFxWindowRequest;
23 |
24 | /**
25 | * Request to view/show the Icon Manager
26 | */
27 | public class ViewIconManagerRequest extends JavaFxWindowRequest
28 | {
29 | public ViewIconManagerRequest()
30 | {
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/instrument/decoder/AbstractDecoderPane.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 | package io.github.dsheirer.gui.instrument.decoder;
20 |
21 | import io.github.dsheirer.sample.Listener;
22 | import io.github.dsheirer.sample.SampleType;
23 | import javafx.scene.layout.VBox;
24 |
25 | public abstract class AbstractDecoderPane extends VBox implements Listener
26 | {
27 | abstract SampleType getSampleType();
28 |
29 | public void setSampleRate(double sampleRate)
30 | {
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/playlist/PlaylistEditorRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.playlist;
21 |
22 | import io.github.dsheirer.gui.JavaFxWindowRequest;
23 |
24 | /**
25 | * Request to view a facet of the playlist editor
26 | */
27 | public abstract class PlaylistEditorRequest extends JavaFxWindowRequest
28 | {
29 | public enum TabName {ALIAS, CHANNEL, PLAYLIST, RADIOREFERENCE, STREAM}
30 |
31 | public abstract TabName getTabName();
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/playlist/ViewPlaylistRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.playlist;
21 |
22 | /**
23 | * Request to view the playlist editor
24 | */
25 | public class ViewPlaylistRequest extends PlaylistEditorRequest
26 | {
27 | @Override
28 | public TabName getTabName()
29 | {
30 | return TabName.PLAYLIST;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/playlist/alias/AliasTabRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.playlist.alias;
21 |
22 | import io.github.dsheirer.gui.playlist.PlaylistEditorRequest;
23 |
24 | public abstract class AliasTabRequest extends PlaylistEditorRequest
25 | {
26 | @Override
27 | public TabName getTabName()
28 | {
29 | return TabName.ALIAS;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/playlist/alias/action/ActionEditor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.playlist.alias.action;
21 |
22 | import io.github.dsheirer.alias.action.AliasAction;
23 | import io.github.dsheirer.gui.playlist.Editor;
24 |
25 | /**
26 | * Base action editor class
27 | * @param aliasAction to edit
28 | */
29 | public abstract class ActionEditor extends Editor
30 | {
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/playlist/alias/identifier/IdentifierEditor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.playlist.alias.identifier;
21 |
22 | import io.github.dsheirer.alias.id.AliasID;
23 | import io.github.dsheirer.gui.playlist.Editor;
24 |
25 | /**
26 | * Base identifier editor class
27 | * @param aliasID to edit
28 | */
29 | public abstract class IdentifierEditor extends Editor
30 | {
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/playlist/channel/ChannelTabRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.playlist.channel;
21 |
22 | import io.github.dsheirer.gui.playlist.PlaylistEditorRequest;
23 |
24 | public abstract class ChannelTabRequest extends PlaylistEditorRequest
25 | {
26 | @Override
27 | public TabName getTabName()
28 | {
29 | return TabName.CHANNEL;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/playlist/channel/IFilterProcessor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2023 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.playlist.channel;
21 |
22 | /**
23 | * Interface for a processor that implements a filtering mechanism and can be commanded by an external controller to
24 | * temporarily clear a filter and then restore the filter.
25 | */
26 | public interface IFilterProcessor
27 | {
28 | void clearFilter();
29 | void restoreFilter();
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/playlist/radioreference/FlashAliasListComboBoxRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.playlist.radioreference;
21 |
22 | /**
23 | * Simple request to flash the alias list box
24 | */
25 | public class FlashAliasListComboBoxRequest
26 | {
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/playlist/radioreference/Level.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.playlist.radioreference;
21 |
22 | public enum Level {NATIONAL, STATE, COUNTY};
23 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/power/PeakMonitor.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.gui.power;
2 |
3 | /**
4 | * Peak value monitor
5 | */
6 | public class PeakMonitor
7 | {
8 | private double mInitialValue;
9 | private double mPeak;
10 |
11 | /**
12 | * Constructs an instance
13 | * @param initialValue for the peak value
14 | */
15 | public PeakMonitor(double initialValue)
16 | {
17 | mInitialValue = initialValue;
18 | reset();
19 | }
20 |
21 | /**
22 | * Current peak value
23 | */
24 | public double getPeak()
25 | {
26 | return mPeak;
27 | }
28 |
29 | /**
30 | * Processes the value and returns the current peak value
31 | * @param value to process
32 | * @return current peak value
33 | */
34 | public double process(double value)
35 | {
36 | if(value > mPeak)
37 | {
38 | mPeak = value;
39 | }
40 |
41 | return getPeak();
42 | }
43 |
44 | /**
45 | * Resets the peak value to the initial value
46 | */
47 | public void reset()
48 | {
49 | mPeak = mInitialValue;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/preference/CalibrateRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.preference;
21 |
22 | /**
23 | * View calibration preference and execute calibration request
24 | */
25 | public class CalibrateRequest extends ViewUserPreferenceEditorRequest
26 | {
27 | public CalibrateRequest()
28 | {
29 | super(PreferenceEditorType.VECTOR_CALIBRATION);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/gui/viewer/ViewRecordingViewerRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2023 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.gui.viewer;
21 |
22 | import io.github.dsheirer.gui.JavaFxWindowRequest;
23 |
24 | /**
25 | * Request to show the recording viewer
26 | */
27 | public class ViewRecordingViewerRequest extends JavaFxWindowRequest
28 | {
29 | /**
30 | * Constructs an instance
31 | */
32 | public ViewRecordingViewerRequest() {}
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/identifier/IdentifierUpdateListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 | package io.github.dsheirer.identifier;
21 |
22 | import io.github.dsheirer.sample.Listener;
23 |
24 | /**
25 | * Interface for receiving identifier update notifications
26 | */
27 | public interface IdentifierUpdateListener
28 | {
29 | Listener getIdentifierUpdateListener();
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/identifier/IdentifierUpdateProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 | package io.github.dsheirer.identifier;
21 |
22 | import io.github.dsheirer.sample.Listener;
23 |
24 | public interface IdentifierUpdateProvider
25 | {
26 | void setIdentifierUpdateListener(Listener listener);
27 |
28 | void removeIdentifierUpdateListener();
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/identifier/Role.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.identifier;
17 |
18 | /**
19 | * Identifier role. Indicates the role of the entity in the communication.
20 | */
21 | public enum Role
22 | {
23 | BROADCAST,
24 | FROM,
25 | IDENTIFIER,
26 | STATUS,
27 | TO,
28 | ANY;
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/map/IPlottableUpdateListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 | package io.github.dsheirer.map;
21 |
22 | public interface IPlottableUpdateListener
23 | {
24 | void entitiesUpdated();
25 | void addPlottableEntity(PlottableEntityHistory entity);
26 | void removePlottableEntity(PlottableEntityHistory entity);
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/map/TimestampedGeoPosition.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.map;
2 |
3 | import org.jdesktop.swingx.mapviewer.GeoPosition;
4 |
5 | /**
6 | * Timestamped geo position
7 | */
8 | public class TimestampedGeoPosition extends GeoPosition
9 | {
10 | private long mTimestamp;
11 |
12 | /**
13 | * Constructs an instance
14 | * @param latitude for the position
15 | * @param longitude for the position
16 | * @param timestamp in milliseconds
17 | */
18 | public TimestampedGeoPosition(GeoPosition position, long timestamp)
19 | {
20 | super(position.getLatitude(), position.getLongitude());
21 | mTimestamp = timestamp;
22 | }
23 |
24 | /**
25 | * Timestamp for the geo position
26 | * @return timestamp in milliseconds.
27 | */
28 | public long getTimestamp()
29 | {
30 | return mTimestamp;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/message/IMessageListener.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.message;
2 |
3 | import io.github.dsheirer.sample.Listener;
4 |
5 | public interface IMessageListener
6 | {
7 | Listener getMessageListener();
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/message/IMessageProvider.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.message;
2 |
3 | import io.github.dsheirer.sample.Listener;
4 |
5 | public interface IMessageProvider
6 | {
7 | void setMessageListener(Listener listener);
8 | void removeMessageListener();
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/message/MessageHistoryRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.message;
21 |
22 | import io.github.dsheirer.module.ModuleEventBusMessage;
23 |
24 | /**
25 | * Request for message history from the message history module.
26 | */
27 | public class MessageHistoryRequest extends ModuleEventBusMessage
28 | {
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/ModuleEventBusMessage.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.module;
21 |
22 | /**
23 | * Base module event bus message. All classes that are passed over a processing chain event bus should extend this
24 | * base class.
25 | */
26 | public abstract class ModuleEventBusMessage
27 | {
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/config/WithCallTimeout.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * * ******************************************************************************
4 | * * Copyright (C) 2014-2020 Dennis Sheirer
5 | * *
6 | * * This program is free software: you can redistribute it and/or modify
7 | * * it under the terms of the GNU General Public License as published by
8 | * * the Free Software Foundation, either version 3 of the License, or
9 | * * (at your option) any later version.
10 | * *
11 | * * This program is distributed in the hope that it will be useful,
12 | * * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * * GNU General Public License for more details.
15 | * *
16 | * * You should have received a copy of the GNU General Public License
17 | * * along with this program. If not, see
18 | * * *****************************************************************************
19 | *
20 | *
21 | */
22 |
23 | package io.github.dsheirer.module.decode.config;
24 |
25 | /**
26 | * Trait of decoder configurations that support providing information about call timeout.
27 | */
28 | public interface WithCallTimeout
29 | {
30 | /**
31 | * @return call timeout in seconds
32 | */
33 | int getCallTimeoutSeconds();
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/dmr/message/IServiceOptionsProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2023 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.module.decode.dmr.message;
21 |
22 | import io.github.dsheirer.module.decode.dmr.message.type.ServiceOptions;
23 |
24 | /**
25 | * DMR message that exposes a service options configuration
26 | */
27 | public interface IServiceOptionsProvider
28 | {
29 | /**
30 | * Service Options
31 | * @return service options
32 | */
33 | ServiceOptions getServiceOptions();
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/dmr/sync/DMRSyncDetectMode.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2024 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.module.decode.dmr.sync;
21 |
22 | /**
23 | * DMR sync detection modes enumeration.
24 | */
25 | public enum DMRSyncDetectMode
26 | {
27 | AUTOMATIC, BASE_ONLY, MOBILE_ONLY, DIRECT_ONLY;
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/event/ActivitySummaryProvider.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.module.decode.event;
19 |
20 | import io.github.dsheirer.message.IMessage;
21 | import io.github.dsheirer.message.Message;
22 | import io.github.dsheirer.sample.Listener;
23 |
24 | public interface ActivitySummaryProvider extends Listener
25 | {
26 | public String getActivitySummary();
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/event/IDecodeEventListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 |
21 | package io.github.dsheirer.module.decode.event;
22 |
23 | import io.github.dsheirer.sample.Listener;
24 |
25 | public interface IDecodeEventListener
26 | {
27 | Listener getDecodeEventListener();
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/event/IDecodeEventProvider.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.module.decode.event;
2 |
3 | import io.github.dsheirer.sample.Listener;
4 |
5 | public interface IDecodeEventProvider
6 | {
7 | void addDecodeEventListener(Listener listener );
8 | void removeDecodeEventListener(Listener listener );
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/ip/cellocator/ModularDataType.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.module.decode.ip.cellocator;
2 |
3 | /**
4 | * Modular message data types
5 | */
6 | public enum ModularDataType
7 | {
8 | FIRMWARE_PLATFORM_MANIFEST(1),
9 | CAN_DATA(2),
10 | CAN_TRIGGER_DATA(3),
11 | TIME_AND_LOCATION_DATA(4),
12 | ACCELEROMETER_DATA(5),
13 | PSP_ALARM_SYSTEM_DATA(6),
14 | USAGE_COUNTER_DATA(7),
15 | COMMAND_AUTHENTICATION_TABLE_DATA(8),
16 | GSM_NEIGHBOR_LIST(9),
17 | MAINTENANCE_SERVER_PLATFORM_MANIFEST(10),
18 | UNKNOWN(0);
19 |
20 | private int mValue;
21 |
22 | ModularDataType(int value)
23 | {
24 | mValue = value;
25 | }
26 |
27 | public int getValue()
28 | {
29 | return mValue;
30 | }
31 |
32 | public static ModularDataType fromValue(int value)
33 | {
34 | for(ModularDataType type: ModularDataType.values())
35 | {
36 | if(type.getValue() == value)
37 | {
38 | return type;
39 | }
40 | }
41 |
42 | return UNKNOWN;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/ltrstandard/LtrStandardMessageType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 |
21 | package io.github.dsheirer.module.decode.ltrstandard;
22 |
23 | public enum LtrStandardMessageType
24 | {
25 | CALL,
26 | CALL_END,
27 | IDLE,
28 | UNKNOWN;
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/nbfm/NBFMTalkgroup.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.module.decode.nbfm;
2 |
3 | import io.github.dsheirer.identifier.Role;
4 | import io.github.dsheirer.identifier.talkgroup.TalkgroupIdentifier;
5 | import io.github.dsheirer.protocol.Protocol;
6 |
7 | /**
8 | * Narrowband FM talkgroup. Note: this is a logical identifier that is assignable from a user-specified
9 | * configuration so that NBFM audio events are compatible with other features of the sdrtrunk system.
10 | */
11 | public class NBFMTalkgroup extends TalkgroupIdentifier
12 | {
13 | /**
14 | * Constructs an instance
15 | * @param value 1-65,535
16 | */
17 | public NBFMTalkgroup(int value)
18 | {
19 | super(value, Role.TO);
20 | }
21 |
22 | @Override
23 | public Protocol getProtocol()
24 | {
25 | return Protocol.NBFM;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/IServiceOptionsProvider.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.module.decode.p25;
2 |
3 |
4 | import io.github.dsheirer.module.decode.p25.reference.ServiceOptions;
5 |
6 | /**
7 | * APCO25 message that exposes a service options configuration
8 | */
9 | public interface IServiceOptionsProvider
10 | {
11 | /**
12 | * Service Options
13 | * @return service options
14 | */
15 | ServiceOptions getServiceOptions();
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/P25FrequencyBandPreloadDataContent.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.module.decode.p25;
2 |
3 | import io.github.dsheirer.controller.channel.event.PreloadDataContent;
4 | import io.github.dsheirer.module.decode.p25.phase1.message.IFrequencyBand;
5 |
6 | import java.util.Collection;
7 |
8 | /**
9 | * Frequency bands (aka Identifier Update) to preload into a traffic channel.
10 | */
11 | public class P25FrequencyBandPreloadDataContent extends PreloadDataContent>
12 | {
13 | /**
14 | * Constructs an instance
15 | *
16 | * @param data to preload
17 | */
18 | public P25FrequencyBandPreloadDataContent(Collection data)
19 | {
20 | super(data);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/phase2/message/mac/structure/motorola/MotorolaGroupRegroupTalkerAlias.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/java/io/github/dsheirer/module/decode/p25/phase2/message/mac/structure/motorola/MotorolaGroupRegroupTalkerAlias.java
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/phase2/message/mac/structure/motorola/MotorolaGroupRegroupTalkerAliasContinuation.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/java/io/github/dsheirer/module/decode/p25/phase2/message/mac/structure/motorola/MotorolaGroupRegroupTalkerAliasContinuation.java
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/reference/AccessType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 |
21 | package io.github.dsheirer.module.decode.p25.reference;
22 |
23 | /**
24 | * Access types
25 | */
26 | public enum AccessType
27 | {
28 | FDMA,
29 | TDMA,
30 | UNKNOWN;
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/reference/AnswerResponse.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.module.decode.p25.reference;
2 |
3 | public enum AnswerResponse
4 | {
5 | PROCEED,
6 | DENY,
7 | WAIT,
8 | UNKNOWN;
9 |
10 | public static AnswerResponse fromValue(int value)
11 | {
12 | switch(value)
13 | {
14 | case 0x20:
15 | return PROCEED;
16 | case 0x21:
17 | return DENY;
18 | case 0x22:
19 | return WAIT;
20 | default:
21 | return UNKNOWN;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/reference/ArgumentType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2024 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.module.decode.p25.reference;
21 |
22 | /**
23 | * Enumeration of argument types for the extended function.
24 | */
25 | public enum ArgumentType
26 | {
27 | SOURCE_RADIO,
28 | TARGET_RADIO,
29 | TALKGROUP,
30 | NONE;
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/reference/CancelReason.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.module.decode.p25.reference;
2 |
3 | public enum CancelReason
4 | {
5 | NO_REASON("NO REASON"),
6 | TERMINATE_QUEUED_CONDITION("TERMINATE QUEUED CONDITION"),
7 | TERMINATE_RESOURCE_ASSIGNMENT("TERMINATE RESOURCE ASSIGNMENT"),
8 | RESERVED("RESERVED"),
9 | USER_OR_SYSTEM_DEFINED("USER OR SYSTEM DEFINED"),
10 | UNKNOWN("UNKNOWN");
11 |
12 | private String mLabel;
13 |
14 | CancelReason(String label)
15 | {
16 | mLabel = label;
17 | }
18 |
19 | @Override
20 | public String toString()
21 | {
22 | return mLabel;
23 | }
24 |
25 | public static CancelReason fromCode(int code)
26 | {
27 | if(code == 0x00)
28 | {
29 | return CancelReason.NO_REASON;
30 | }
31 | else if(code == 0x10)
32 | {
33 | return TERMINATE_QUEUED_CONDITION;
34 | }
35 | else if(code == 0x20)
36 | {
37 | return TERMINATE_RESOURCE_ASSIGNMENT;
38 | }
39 | else if(code < 0x7F)
40 | {
41 | return RESERVED;
42 | }
43 |
44 | return USER_OR_SYSTEM_DEFINED;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/reference/Duplex.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.module.decode.p25.reference;
17 |
18 | public enum Duplex
19 | {
20 | HALF, FULL
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/reference/MDPConfigurationOption.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.module.decode.p25.reference;
2 |
3 | public enum MDPConfigurationOption
4 | {
5 | INTERNAL( "INTERNAL INTERFACE", 0 ),
6 | MDP_SLIP( "MDP SLIP", 1 ),
7 | MDP_PPP( "MDP PPP", 2 ),
8 | UNKNOWN( "UNKNOWN", -1 );
9 |
10 | private String mLabel;
11 | private int mValue;
12 |
13 | private MDPConfigurationOption( String label, int value )
14 | {
15 | mLabel = label;
16 | mValue = value;
17 | }
18 |
19 | public String getLabel()
20 | {
21 | return mLabel;
22 | }
23 |
24 | public int getValue()
25 | {
26 | return mValue;
27 | }
28 |
29 | public static MDPConfigurationOption fromValue( int value )
30 | {
31 | if( 0 <= value && value <= 2 )
32 | {
33 | return values()[ value ];
34 | }
35 |
36 | return UNKNOWN;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/reference/Response.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2024 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.module.decode.p25.reference;
21 |
22 | public enum Response
23 | {
24 | ACCEPTED,
25 | FAILED,
26 | DENIED,
27 | REFUSED,
28 | UNKNOWN;
29 |
30 | public static Response fromValue( int value )
31 | {
32 | if( 0 <= value && value <= 4 )
33 | {
34 | return values()[ value ];
35 | }
36 |
37 | return UNKNOWN;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/reference/SessionMode.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.module.decode.p25.reference;
17 |
18 | public enum SessionMode
19 | {
20 | PACKET, CIRCUIT
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/reference/StackOperation.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.module.decode.p25.reference;
2 |
3 | public enum StackOperation
4 | {
5 | CLEAR,
6 | WRITE,
7 | DELETE,
8 | READ,
9 | UNKNOWN;
10 |
11 | public static StackOperation fromValue( int value )
12 | {
13 | if( 0 <= value && value <= 3 )
14 | {
15 | return values()[ value ];
16 | }
17 |
18 | return UNKNOWN;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/reference/Status.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.module.decode.p25.reference;
2 |
3 | public enum Status
4 | {
5 | //Used by subscriber radios for repeated or direct connect communications
6 | MOBILE_RADIO,
7 |
8 | //Outbound repeater, inbound channel is busy
9 | REPEATER_BUSY,
10 |
11 | //Subscriber or repeater, unknown status
12 | UNKNOWN,
13 |
14 | //Outbound repeater, inbound channel is idle
15 | REPEATER_IDLE;
16 |
17 | public Status fromValue(int value)
18 | {
19 | if(0 <= value && value <= 3)
20 | {
21 | return values()[value];
22 | }
23 |
24 | return UNKNOWN;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/module/decode/p25/reference/Vocoder.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ******************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2018 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see
18 | * *****************************************************************************
19 | */
20 |
21 | package io.github.dsheirer.module.decode.p25.reference;
22 |
23 | /**
24 | * Vocoder data rates
25 | */
26 | public enum Vocoder
27 | {
28 | FULL_RATE,
29 | HALF_RATE;
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/preference/PreferenceType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2023 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.preference;
21 |
22 | /**
23 | * Types of preferences
24 | */
25 | public enum PreferenceType
26 | {
27 | APPLICATION,
28 | CALIBRATION,
29 | DECODE_EVENT,
30 | DIRECTORY,
31 | DUPLICATE_CALL_DETECTION,
32 | JMBE_LIBRARY,
33 | MP3,
34 | MULTI_FREQUENCY,
35 | PLAYLIST,
36 | PLAYBACK,
37 | RADIO_REFERENCE,
38 | RECORD,
39 | TALKGROUP_FORMAT,
40 | TUNER;
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/preference/duplicate/ICallManagementProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2024 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.preference.duplicate;
21 |
22 | /**
23 | * Interface for a call management value provider.
24 | */
25 | public interface ICallManagementProvider
26 | {
27 | boolean isDuplicateCallDetectionEnabled();
28 | boolean isDuplicateCallDetectionByTalkgroupEnabled();
29 | boolean isDuplicateCallDetectionByRadioEnabled();
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/preference/identifier/talkgroup/UnknownTalkgroupFormatter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.preference.identifier.talkgroup;
21 |
22 | import io.github.dsheirer.preference.identifier.IntegerFormat;
23 |
24 | public class UnknownTalkgroupFormatter extends AbstractIntegerFormatter
25 | {
26 | @Override
27 | public String format(int value, IntegerFormat integerFormat)
28 | {
29 | return format(value);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/BufferOverflow.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.sample;
19 |
20 | /**
21 | * Buffer overflow event. Used for broadcasting overflow events to listeners.
22 | */
23 | public class BufferOverflow
24 | {
25 | private String mSource;
26 |
27 | public BufferOverflow( String source )
28 | {
29 | mSource = source;
30 | }
31 |
32 | public String getSource()
33 | {
34 | return mSource;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/IOverflowListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.sample;
17 |
18 | public interface IOverflowListener
19 | {
20 | /**
21 | * Indicates that the source is in overflow state (true) or out of overflow state (false)
22 | * @param overflow true to indicate an overflow state
23 | */
24 | void sourceOverflow(boolean overflow);
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/Listener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.sample;
19 |
20 | public interface Listener
21 | {
22 | public void receive( T t );
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/Provider.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.sample;
19 |
20 | public interface Provider
21 | {
22 | void setListener(Listener listener);
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/SampleType.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.sample;
2 |
3 | public enum SampleType
4 | {
5 | COMPLEX, // I/Q
6 | REAL; // Real
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/adapter/ISampleAdapter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 | package io.github.dsheirer.sample.adapter;
20 |
21 | public interface ISampleAdapter
22 | {
23 | T convert(byte[] sampleBytes);
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/adapter/RealSampleAdapter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 | package io.github.dsheirer.sample.adapter;
20 |
21 | public abstract class RealSampleAdapter implements ISampleAdapter
22 | {
23 | /**
24 | * Constructs a real sample adapter
25 | */
26 | public RealSampleAdapter()
27 | {
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/buffer/IByteBufferListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 | package io.github.dsheirer.sample.buffer;
20 |
21 | import io.github.dsheirer.sample.Listener;
22 |
23 | import java.nio.ByteBuffer;
24 |
25 | public interface IByteBufferListener
26 | {
27 | Listener getByteBufferListener();
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/buffer/ITimestamped.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.sample.buffer;
21 |
22 | /**
23 | * Interface for objects that have timestamps.
24 | */
25 | public interface ITimestamped
26 | {
27 | long timestamp();
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/complex/ComplexSampleListener.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.sample.complex;
2 |
3 | public interface ComplexSampleListener
4 | {
5 | public void receive( float i, float q );
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/complex/IComplexSamplesListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.sample.complex;
17 |
18 | import io.github.dsheirer.sample.Listener;
19 |
20 | public interface IComplexSamplesListener
21 | {
22 | Listener getComplexSamplesListener();
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/complex/IInterleavedComplexSamplesListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 | package io.github.dsheirer.sample.complex;
20 |
21 | import io.github.dsheirer.sample.Listener;
22 |
23 | /**
24 | * Interface for listener of interleaved complex samples
25 | */
26 | public interface IInterleavedComplexSamplesListener
27 | {
28 | Listener getReusableComplexBufferListener();
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/real/IRealBufferListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 | package io.github.dsheirer.sample.real;
20 |
21 | import io.github.dsheirer.sample.Listener;
22 |
23 | public interface IRealBufferListener
24 | {
25 | Listener getBufferListener();
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/real/IRealBufferProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 | package io.github.dsheirer.sample.real;
20 |
21 | import io.github.dsheirer.sample.Listener;
22 |
23 | public interface IRealBufferProvider
24 | {
25 | /**
26 | * Adds the listener to receive complex buffer samples
27 | */
28 | void setBufferListener(Listener listener);
29 |
30 | /**
31 | * Removes the listener from receiving complex buffer samples
32 | */
33 | void removeBufferListener();
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/sample/real/RealSampleListener.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.sample.real;
2 |
3 | public interface RealSampleListener
4 | {
5 | public void receive( float sample );
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/settings/SettingChangeListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.settings;
19 |
20 | public interface SettingChangeListener
21 | {
22 | public void settingChanged( Setting setting );
23 | public void settingDeleted( Setting setting );
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/settings/SettingType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *********************************************************************************************************************
3 | * sdrtrunk
4 | * Copyright (C) 2014-2017 Dennis Sheirer
5 | *
6 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
7 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
8 | * later version.
9 | *
10 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
11 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License along with this program.
14 | * If not, see
15 | * *********************************************************************************************************************
16 | */
17 |
18 | package io.github.dsheirer.settings;
19 |
20 | public enum SettingType
21 | {
22 | COLOR_SETTING,
23 | DEFAULT_ICON,
24 | FILE_SETTING,
25 | MAP_ICON,
26 | MAP_VIEW_SETTING,
27 | UNKNOWN;
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/BufferReceiver.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.source;
19 |
20 | public interface BufferReceiver {
21 |
22 | /**
23 | * Method for receiving a buffer of bytes
24 | * @param buffer
25 | */
26 | public void receive( byte[] buffer );
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/ComplexSource.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdr-trunk
3 | * Copyright (C) 2014-2018 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
6 | * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
7 | * later version.
8 | *
9 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11 | *
12 | * You should have received a copy of the GNU General Public License along with this program.
13 | * If not, see
14 | *
15 | ******************************************************************************/
16 | package io.github.dsheirer.source;
17 |
18 | import io.github.dsheirer.sample.Provider;
19 | import io.github.dsheirer.sample.SampleType;
20 | import io.github.dsheirer.sample.complex.ComplexSamples;
21 |
22 | public abstract class ComplexSource extends Source implements Provider
23 | {
24 | @Override
25 | public SampleType getSampleType()
26 | {
27 | return SampleType.COMPLEX;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/IFrameLocationListener.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.source;
2 |
3 | public interface IFrameLocationListener
4 | {
5 | public void frameLocationUpdated( int location );
6 |
7 | public void frameLocationReset();
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/ISourceEventProcessor.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdrtrunk
3 | * Copyright (C) 2014-2017 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | *
18 | ******************************************************************************/
19 | package io.github.dsheirer.source;
20 |
21 | public interface ISourceEventProcessor
22 | {
23 | void process(SourceEvent event) throws SourceException;
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/ISourceEventProvider.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdrtrunk
3 | * Copyright (C) 2014-2017 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | *
18 | ******************************************************************************/
19 | package io.github.dsheirer.source;
20 |
21 | import io.github.dsheirer.sample.Listener;
22 |
23 | /**
24 | * Provider of Source Change Events
25 | */
26 | public interface ISourceEventProvider
27 | {
28 | void setSourceEventListener(Listener listener );
29 | void removeSourceEventListener();
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/RealSource.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.source;
21 |
22 | import io.github.dsheirer.sample.Provider;
23 | import io.github.dsheirer.sample.SampleType;
24 |
25 |
26 | public abstract class RealSource extends Source implements Provider
27 | {
28 | @Override
29 | public SampleType getSampleType()
30 | {
31 | return SampleType.REAL;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/SourceException.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.source;
19 |
20 | public class SourceException extends Exception
21 | {
22 | private static final long serialVersionUID = 1L;
23 |
24 | public SourceException( String message )
25 | {
26 | this( message, null );
27 | }
28 |
29 | public SourceException( String message, Throwable cause )
30 | {
31 | super( message, cause );
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/heartbeat/Heartbeat.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdrtrunk
3 | * Copyright (C) 2014-2017 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | *
18 | ******************************************************************************/
19 | package io.github.dsheirer.source.heartbeat;
20 |
21 | public class Heartbeat
22 | {
23 | /**
24 | * Periodic pulse that is broadcast to subscribing modules within the demodulating chain so that
25 | * monitoring of state and other attributes can occur on the primary demodulation and decoding
26 | * thread.
27 | */
28 | public Heartbeat()
29 | {
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/heartbeat/IHeartbeatListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * sdrtrunk
3 | * Copyright (C) 2014-2017 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | *
18 | ******************************************************************************/
19 | package io.github.dsheirer.source.heartbeat;
20 |
21 | import io.github.dsheirer.sample.Listener;
22 |
23 | public interface IHeartbeatListener
24 | {
25 | public Listener getHeartbeatListener();
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/tuner/ITunerErrorListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2023 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.source.tuner;
21 |
22 | public interface ITunerErrorListener
23 | {
24 | /**
25 | * Sets an error message for the tuner listener
26 | * @param errorMessage to set
27 | */
28 | void setErrorMessage(String errorMessage);
29 |
30 | /**
31 | * Indicates that the tuner has been removed from the system.
32 | */
33 | void tunerRemoved();
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/tuner/TunerChannelSource.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/java/io/github/dsheirer/source/tuner/TunerChannelSource.java
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/tuner/airspy/AirspySampleRate.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.source.tuner.airspy;
2 |
3 | public class AirspySampleRate
4 | {
5 | private int mIndex;
6 | private int mValue;
7 | private String mLabel;
8 |
9 | public AirspySampleRate( int index, int value, String label )
10 | {
11 | mIndex = index;
12 | mValue = value;
13 | mLabel = label;
14 | }
15 |
16 | public int getIndex()
17 | {
18 | return mIndex;
19 | }
20 |
21 | public int getRate()
22 | {
23 | return mValue;
24 | }
25 |
26 | public String getLabel()
27 | {
28 | return mLabel;
29 | }
30 |
31 | public String toString()
32 | {
33 | return getLabel();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/tuner/airspy/hf/BoardId.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.source.tuner.airspy.hf;
2 |
3 | /**
4 | * Airspy HF models
5 | */
6 | public enum BoardId
7 | {
8 | UNKNOWN(0, "UNKNOWN"),
9 | HF_REV_A(1, "HF+"),
10 | HF_DISCOVERY_REV_A(2, "HF Discovery"),
11 | INVALID(0xFF, "INVALID");
12 |
13 | private int mValue;
14 | private String mLabel;
15 |
16 | /**
17 | * Constructs an instance
18 | * @param value of the entry
19 | * @param label for display
20 | */
21 | BoardId(int value, String label)
22 | {
23 | mValue = value;
24 | mLabel = label;
25 | }
26 |
27 | /**
28 | * Lookup a board ID from a value
29 | * @param value to lookup
30 | * @return matching entry or INVALID
31 | */
32 | public static BoardId fromValue(int value)
33 | {
34 | return switch(value)
35 | {
36 | case 0 -> UNKNOWN;
37 | case 1 -> HF_REV_A;
38 | case 2 -> HF_DISCOVERY_REV_A;
39 | default -> INVALID;
40 | };
41 | }
42 |
43 | @Override
44 | public String toString()
45 | {
46 | return mLabel;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/tuner/airspy/hf/Response.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.source.tuner.airspy.hf;
2 |
3 | /**
4 | * Responses to Airspy HF requests
5 | */
6 | public enum Response
7 | {
8 | SUCCESS(0),
9 | ERROR(-1),
10 | UNSUPPORTED(-2);
11 |
12 | private int mValue;
13 |
14 | Response(int value)
15 | {
16 | mValue = value;
17 | }
18 |
19 | /**
20 | * Lookup the enumeration entry from the value.
21 | * @param value to lookup
22 | * @return entry or UNSUPPORTED if there are no matches.
23 | */
24 | public static Response fromValue(int value)
25 | {
26 | return switch(value)
27 | {
28 | case 0 -> SUCCESS;
29 | case -1 -> ERROR;
30 | default -> UNSUPPORTED;
31 | };
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/tuner/channel/rotation/DisableChannelRotationMonitorRequest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2020 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.source.tuner.channel.rotation;
21 |
22 | import io.github.dsheirer.module.ModuleEventBusMessage;
23 |
24 | /**
25 | * Request to disable the channel rotation monitor.
26 | */
27 | public class DisableChannelRotationMonitorRequest extends ModuleEventBusMessage
28 | {
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/tuner/configuration/TunerConfigurationEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.source.tuner.configuration;
2 |
3 | public class TunerConfigurationEvent
4 | {
5 | private TunerConfiguration mTunerConfiguration;
6 | private Event mEvent;
7 |
8 | public TunerConfigurationEvent( TunerConfiguration configuration, Event event )
9 | {
10 | mTunerConfiguration = configuration;
11 | mEvent = event;
12 | }
13 |
14 | public TunerConfiguration getConfiguration()
15 | {
16 | return mTunerConfiguration;
17 | }
18 |
19 | public Event getEvent()
20 | {
21 | return mEvent;
22 | }
23 |
24 | public enum Event
25 | {
26 | ADD,
27 | REMOVE,
28 | CHANGE;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/tuner/frequency/FrequencyLimitException.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.source.tuner.frequency;
2 |
3 | public class FrequencyLimitException extends Exception
4 | {
5 | private static final long serialVersionUID = 1L;
6 |
7 | private long mFrequencyLimit;
8 | private long mRequestedFrequency;
9 |
10 | /**
11 | * Indicates that the requested frequency is outside of the tunable bounds
12 | * of the tuner.
13 | * @param message
14 | * @param frequency
15 | */
16 | public FrequencyLimitException( long requestedFrequency,
17 | long frequencyLimit )
18 | {
19 | super( "Requested frequency [" + requestedFrequency +
20 | "] exceeds the limit [" + frequencyLimit + "]. Tuned "
21 | + "frequency was set to the limit value" );
22 |
23 | mRequestedFrequency = requestedFrequency;
24 | mFrequencyLimit = frequencyLimit;
25 | }
26 |
27 | public long getRequestedFrequency()
28 | {
29 | return mRequestedFrequency;
30 | }
31 |
32 | public long getFrequencyLimit()
33 | {
34 | return mFrequencyLimit;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rsp1/IControlRsp1.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2023 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.source.tuner.sdrplay.rsp1;
21 |
22 | import io.github.dsheirer.source.tuner.sdrplay.IControlRsp;
23 |
24 | /**
25 | * Control interface for RSP1A device
26 | */
27 | public interface IControlRsp1 extends IControlRsp
28 | {
29 | //No additional features beyond the base control.
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/spectrum/DFTResultsListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.spectrum;
19 |
20 | /**
21 | * Interface for passing the output of DFT processing
22 | */
23 | public interface DFTResultsListener
24 | {
25 | public void receive( float[] results );
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/spectrum/DFTResultsProvider.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.spectrum;
19 |
20 | public interface DFTResultsProvider
21 | {
22 | public void addListener( DFTResultsListener listener );
23 |
24 | public void removeListener( DFTResultsListener listener );
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/spectrum/IDFTWidthChangeProcessor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * *****************************************************************************
3 | * Copyright (C) 2014-2022 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | * ****************************************************************************
18 | */
19 |
20 | package io.github.dsheirer.spectrum;
21 |
22 | public interface IDFTWidthChangeProcessor
23 | {
24 | void setDFTSize( DFTSize size );
25 | DFTSize getDFTSize();
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/spectrum/Pausable.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.spectrum;
19 |
20 | /**
21 | * Interface to add pause action to moving displays like the spectrum and
22 | * waterfall panels
23 | */
24 | public interface Pausable
25 | {
26 | public void setPaused( boolean paused );
27 |
28 | public boolean isPaused();
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/spectrum/converter/RealDecibelConverter.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.spectrum.converter;
2 |
3 | import org.apache.commons.math3.util.FastMath;
4 | import org.slf4j.Logger;
5 | import org.slf4j.LoggerFactory;
6 |
7 | public class RealDecibelConverter extends DFTResultsConverter
8 | {
9 | private static final Logger mLog = LoggerFactory.getLogger( RealDecibelConverter.class );
10 |
11 | public RealDecibelConverter()
12 | {
13 | }
14 |
15 | /**
16 | * Converts the output of the JTransforms FloatFFT_1D.realForward()
17 | * calculation into a normalized power spectrum in decibels, per description
18 | * in Lyons, Understanding Digital Signal Processing, 3e, page 141.
19 | *
20 | * Note: this is only calculating the lower half of the spectrum
21 | */
22 | @Override
23 | public void receive( float[] results )
24 | {
25 | float dftBinSizeScalor = 1.0f / (float)results.length;
26 |
27 | float[] processed = new float[ results.length / 4 ];
28 |
29 | int index = 0;
30 |
31 | for( int x = 0; x < processed.length; x ++ )
32 | {
33 | index = x * 2;
34 |
35 | processed[ x ] = 20.0f * (float) FastMath.log10(
36 | ( ( results[ index ] * results[ index ] ) +
37 | ( results[ index + 1 ] * results[ index + 1 ] ) ) * dftBinSizeScalor );
38 | }
39 |
40 | dispatch( processed );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/spectrum/menu/DFTSizeItem.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.spectrum.menu;
2 |
3 | import io.github.dsheirer.spectrum.DFTSize;
4 | import io.github.dsheirer.spectrum.IDFTWidthChangeProcessor;
5 |
6 | import javax.swing.*;
7 | import java.awt.event.ActionEvent;
8 | import java.awt.event.ActionListener;
9 |
10 | public class DFTSizeItem extends JCheckBoxMenuItem
11 | {
12 | private static final long serialVersionUID = 1L;
13 |
14 | private IDFTWidthChangeProcessor mDFTProcessor;
15 | private DFTSize mDFTSize;
16 |
17 | public DFTSizeItem( IDFTWidthChangeProcessor processor, DFTSize size )
18 | {
19 | super( size.getLabel() );
20 |
21 | mDFTProcessor = processor;
22 | mDFTSize = size;
23 |
24 | if( processor.getDFTSize() == mDFTSize )
25 | {
26 | setSelected( true );
27 | }
28 |
29 | addActionListener( new ActionListener()
30 | {
31 | @Override
32 | public void actionPerformed( ActionEvent arg0 )
33 | {
34 | mDFTProcessor.setDFTSize( mDFTSize );
35 | }
36 | } );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/spectrum/menu/SmoothingTypeItem.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.spectrum.menu;
2 |
3 | import io.github.dsheirer.dsp.filter.smoothing.SmoothingFilter.SmoothingType;
4 | import io.github.dsheirer.spectrum.SpectralDisplayAdjuster;
5 |
6 | import javax.swing.*;
7 | import java.awt.event.ActionEvent;
8 | import java.awt.event.ActionListener;
9 |
10 | public class SmoothingTypeItem extends JCheckBoxMenuItem
11 | {
12 | private static final long serialVersionUID = 1L;
13 |
14 | private SpectralDisplayAdjuster mAdjuster;
15 | private SmoothingType mSmoothingType;
16 |
17 | public SmoothingTypeItem( SpectralDisplayAdjuster adjuster, SmoothingType type )
18 | {
19 | super( type.name() );
20 |
21 | mAdjuster = adjuster;
22 | mSmoothingType = type;
23 |
24 | setSelected( mAdjuster.getSmoothingType() == type );
25 |
26 | addActionListener( new ActionListener()
27 | {
28 | @Override
29 | public void actionPerformed( ActionEvent e )
30 | {
31 | mAdjuster.setSmoothingType( mSmoothingType );
32 | }
33 | } );
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/util/Angle.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package io.github.dsheirer.util;
19 |
20 | import org.apache.commons.math3.util.FastMath;
21 |
22 | public class Angle
23 | {
24 |
25 | public static double degreesFromRadians( double radians )
26 | {
27 | return radians * ( 180 / FastMath.PI );
28 | }
29 |
30 | public static double radiansFromDegrees( double degrees )
31 | {
32 | return degrees * ( FastMath.PI / 180 );
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/vector/calibrate/CalibrationException.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.vector.calibrate;
2 |
3 | /**
4 | * Error encountered while calibrating
5 | */
6 | public class CalibrationException extends Exception
7 | {
8 | /**
9 | * Constructs a new instance
10 | * @param description of the error
11 | * @param error nested
12 | */
13 | public CalibrationException(String description, Exception error)
14 | {
15 | super(description, error);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/java/io/github/dsheirer/vector/calibrate/Implementation.java:
--------------------------------------------------------------------------------
1 | package io.github.dsheirer.vector.calibrate;
2 |
3 | /**
4 | * Identifies the optimal implementation (Scalar vs Vector) identified through calibration testing
5 | */
6 | public enum Implementation
7 | {
8 | SCALAR,
9 | VECTOR_SIMD_PREFERRED,
10 | VECTOR_SIMD_64,
11 | VECTOR_SIMD_128,
12 | VECTOR_SIMD_256,
13 | VECTOR_SIMD_512,
14 | UNCALIBRATED;
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/org/jdesktop/swingx/mapviewer/DefaultTileFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * DefaultTileFactory.java
3 | *
4 | * Created on June 27, 2006, 2:20 PM
5 | *
6 | * To change this template, choose Tools | Template Manager
7 | * and open the template in the editor.
8 | */
9 |
10 | package org.jdesktop.swingx.mapviewer;
11 |
12 | /**
13 | * A tile factory which configures itself using a TileFactoryInfo object and uses a Google Maps like mercator
14 | * projection.
15 | * @author joshy
16 | */
17 | public class DefaultTileFactory extends AbstractTileFactory
18 | {
19 | /**
20 | * Creates a new instance of DefaultTileFactory using the spcified TileFactoryInfo
21 | * @param info a TileFactoryInfo to configure this TileFactory
22 | */
23 | public DefaultTileFactory(TileFactoryInfo info)
24 | {
25 | super(info);
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/org/jdesktop/swingx/mapviewer/TileListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * SDR Trunk
3 | * Copyright (C) 2014 Dennis Sheirer
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see
17 | ******************************************************************************/
18 | package org.jdesktop.swingx.mapviewer;
19 |
20 | /**
21 | * Notified when the status of a tile has changed
22 | * @author Martin Steiger
23 | */
24 | public interface TileListener
25 | {
26 | /**
27 | * Notification when a tile is loaded
28 | * @param tile the tile
29 | */
30 | public void tileLoaded(Tile tile);
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/org/jdesktop/swingx/mapviewer/Waypoint.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Waypoint.java
3 | *
4 | * Created on March 30, 2006, 5:22 PM
5 | *
6 | * To change this template, choose Tools | Template Manager
7 | * and open the template in the editor.
8 | */
9 |
10 | package org.jdesktop.swingx.mapviewer;
11 |
12 |
13 | /**
14 | * A Waypoint is a GeoPosition that can be
15 | * drawn on a may using a WaypointPainter.
16 | * @author joshy
17 | */
18 | public interface Waypoint
19 | {
20 | /**
21 | * Get the current GeoPosition of this Waypoint
22 | * @return the current position
23 | */
24 | public GeoPosition getPosition();
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/org/jdesktop/swingx/mapviewer/resources/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/java/org/jdesktop/swingx/mapviewer/resources/loading.png
--------------------------------------------------------------------------------
/src/main/java/org/jdesktop/swingx/mapviewer/resources/minus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/java/org/jdesktop/swingx/mapviewer/resources/minus.png
--------------------------------------------------------------------------------
/src/main/java/org/jdesktop/swingx/mapviewer/resources/plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/java/org/jdesktop/swingx/mapviewer/resources/plus.png
--------------------------------------------------------------------------------
/src/main/java/org/jdesktop/swingx/mapviewer/resources/standard_waypoint.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/java/org/jdesktop/swingx/mapviewer/resources/standard_waypoint.png
--------------------------------------------------------------------------------
/src/main/java/org/jdesktop/swingx/mapviewer/wms/WMSTileFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * WMSTileFactory.java
3 | *
4 | * Created on October 7, 2006, 6:07 PM
5 | *
6 | * To change this template, choose Tools | Template Manager
7 | * and open the template in the editor.
8 | */
9 |
10 | package org.jdesktop.swingx.mapviewer.wms;
11 |
12 | import org.apache.commons.math3.util.FastMath;
13 | import org.jdesktop.swingx.mapviewer.DefaultTileFactory;
14 | import org.jdesktop.swingx.mapviewer.TileFactoryInfo;
15 |
16 | /**
17 | * A tile factory that uses a WMS service.
18 | * @author joshy
19 | */
20 | public class WMSTileFactory extends DefaultTileFactory
21 | {
22 | /**
23 | * Creates a new instance of WMSTileFactory
24 | * @param wms the WMSService
25 | */
26 | public WMSTileFactory(final WMSService wms)
27 | {
28 | // tile size and x/y orientation is r2l & t2b
29 | super(new TileFactoryInfo(0, 15, 17, 500, true, true, "", "x", "y", "zoom")
30 | {
31 | @Override
32 | public String getTileUrl(int x, int y, int zoom)
33 | {
34 | int zz = 17 - zoom;
35 | int z = 4;
36 | z = (int) FastMath.pow(2, (double) zz - 1);
37 | return wms.toWMSURL(x - z, z - 1 - y, zz, getTileSize(zoom));
38 | }
39 |
40 | });
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/org/jma/encoder/audio/IAudioEncoder.java:
--------------------------------------------------------------------------------
1 | package org.jma.encoder.audio;
2 |
3 | /**
4 | * Retrieved from: http://livertmpjavapublisher.blogspot.com/2011/06/orgtritonuslowlevellameapiiaudioencoder.html
5 | * on 5 Sep 2016
6 | */
7 | public interface IAudioEncoder
8 | {
9 | public int encodeBuffer(byte[] input, int offset, int encodedCount, byte[] output);
10 |
11 | public int encodeFinish(byte[] input);
12 |
13 | public int getInputBufferSize();
14 |
15 | public int getOutputBufferSize();
16 |
17 | public void close();
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/resources/52-airspy.rules:
--------------------------------------------------------------------------------
1 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="60a1", SYMLINK+="airspy-%k", MODE="660", GROUP="plugdev"
--------------------------------------------------------------------------------
/src/main/resources/53-hackrf.rules:
--------------------------------------------------------------------------------
1 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="604b", SYMLINK+="hackrf-jawbreaker-%k", MODE="660", GROUP="plugdev"
2 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="6089", SYMLINK+="hackrf-one-%k", MODE="660", GROUP="plugdev"
3 | ATTR{idVendor}=="1fc9", ATTR{idProduct}=="000c", SYMLINK+="nxp-dfu-%k", MODE="660", GROUP="plugdev"
--------------------------------------------------------------------------------
/src/main/resources/FilterView.css:
--------------------------------------------------------------------------------
1 | /* ....Show License.... */
2 | .chart {
3 | -fx-background-image: url("/../resources/images/Curve-fitted-background.png");
4 | -fx-padding: 15 25 15 15;
5 | }
6 | .chart-plot-background {
7 | -fx-background-color: red;
8 | -fx-background-image: url("/../resources/images/Curve-fitted-chart-background.png"),
9 | url("/../resources/images/Curve-fitted-graph-gridlines.png");
10 | -fx-background-size: cover, auto;
11 | -fx-background-repeat: no-repeat, repeat;
12 | -fx-background-position: 0% 0%, 0% 100%;
13 | -fx-border-color: black black transparent transparent;
14 | }
15 | .chart-area-symbol {
16 | -fx-background-color: white;
17 | }
18 | .chart-series-area-line {
19 | -fx-stroke: white;
20 | -fx-stroke-width: 2px;
21 | }
22 | .chart-series-area-fill {
23 | -fx-fill: linear-gradient(to right, white, rgba(255,255,255,0));
24 | -fx-blend-mode: OVERLAY;
25 | }
26 | .axis {
27 | -fx-tick-mark-visible: false;
28 | -fx-minor-tick-visible: false;
29 | -fx-tick-length: 3;
30 | -fx-minor-tick-length: 0;
31 | -fx-border-color: transparent;
32 | -fx-tick-label-fill: white;
33 | }
34 | .axis:bottom {
35 | -fx-border-color: black transparent transparent transparent;
36 | }
37 | .axis:left {
38 | -fx-border-color: transparent black transparent transparent;
39 | }
--------------------------------------------------------------------------------
/src/main/resources/funcube-dongle.rules:
--------------------------------------------------------------------------------
1 | # Udev rules for the Funcube Dongle Pro (0xfb56) and Pro+ (0xfb31)
2 |
3 | # HIDAPI/libusb:
4 | SUBSYSTEMS=="usb" ATTRS{idVendor}=="04d8" ATTRS{idProduct}=="fb56" MODE:="0666"
5 | SUBSYSTEMS=="usb" ATTRS{idVendor}=="04d8" ATTRS{idProduct}=="fb31" MODE:="0666"
6 |
7 | # HIDAPI/hidraw:
8 | KERNEL=="hidraw*", ATTRS{busnum}=="1", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="fb56", MODE="0666"
9 | KERNEL=="hidraw*", ATTRS{busnum}=="1", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="fb31", MODE="0666"
10 |
11 |
--------------------------------------------------------------------------------
/src/main/resources/images/Curve-fitted-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/Curve-fitted-background.png
--------------------------------------------------------------------------------
/src/main/resources/images/Curve-fitted-chart-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/Curve-fitted-chart-background.png
--------------------------------------------------------------------------------
/src/main/resources/images/Curve-fitted-graph-gridlines.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/Curve-fitted-graph-gridlines.png
--------------------------------------------------------------------------------
/src/main/resources/images/acars.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/acars.png
--------------------------------------------------------------------------------
/src/main/resources/images/action.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/action.png
--------------------------------------------------------------------------------
/src/main/resources/images/ais.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/ais.png
--------------------------------------------------------------------------------
/src/main/resources/images/am.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/am.png
--------------------------------------------------------------------------------
/src/main/resources/images/ambulance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/ambulance.png
--------------------------------------------------------------------------------
/src/main/resources/images/aprs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/aprs.png
--------------------------------------------------------------------------------
/src/main/resources/images/audio_muted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/audio_muted.png
--------------------------------------------------------------------------------
/src/main/resources/images/audio_unmuted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/audio_unmuted.png
--------------------------------------------------------------------------------
/src/main/resources/images/broadcastify.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/broadcastify.png
--------------------------------------------------------------------------------
/src/main/resources/images/concrete_block_truck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/concrete_block_truck.png
--------------------------------------------------------------------------------
/src/main/resources/images/control_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/control_play.png
--------------------------------------------------------------------------------
/src/main/resources/images/control_stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/control_stop.png
--------------------------------------------------------------------------------
/src/main/resources/images/cwid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/cwid.png
--------------------------------------------------------------------------------
/src/main/resources/images/dispatcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/dispatcher.png
--------------------------------------------------------------------------------
/src/main/resources/images/dmr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/dmr.png
--------------------------------------------------------------------------------
/src/main/resources/images/dump_truck_red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/dump_truck_red.png
--------------------------------------------------------------------------------
/src/main/resources/images/fire_truck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/fire_truck.png
--------------------------------------------------------------------------------
/src/main/resources/images/fm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/fm.png
--------------------------------------------------------------------------------
/src/main/resources/images/garbage_truck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/garbage_truck.png
--------------------------------------------------------------------------------
/src/main/resources/images/icecast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/icecast.png
--------------------------------------------------------------------------------
/src/main/resources/images/loader.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/loader.png
--------------------------------------------------------------------------------
/src/main/resources/images/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/loading.png
--------------------------------------------------------------------------------
/src/main/resources/images/ltr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/ltr.png
--------------------------------------------------------------------------------
/src/main/resources/images/ltr_net.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/ltr_net.png
--------------------------------------------------------------------------------
/src/main/resources/images/motorola_type_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/motorola_type_2.png
--------------------------------------------------------------------------------
/src/main/resources/images/mpt1327.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/mpt1327.png
--------------------------------------------------------------------------------
/src/main/resources/images/no_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/no_icon.png
--------------------------------------------------------------------------------
/src/main/resources/images/no_record.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/no_record.png
--------------------------------------------------------------------------------
/src/main/resources/images/nxdn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/nxdn.png
--------------------------------------------------------------------------------
/src/main/resources/images/openmhz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/openmhz.png
--------------------------------------------------------------------------------
/src/main/resources/images/opt_bus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/opt_bus.png
--------------------------------------------------------------------------------
/src/main/resources/images/p25_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/p25_1.png
--------------------------------------------------------------------------------
/src/main/resources/images/p25_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/p25_2.png
--------------------------------------------------------------------------------
/src/main/resources/images/passport.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/passport.png
--------------------------------------------------------------------------------
/src/main/resources/images/police.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/police.png
--------------------------------------------------------------------------------
/src/main/resources/images/propane_truck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/propane_truck.png
--------------------------------------------------------------------------------
/src/main/resources/images/rdioscanner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/rdioscanner.png
--------------------------------------------------------------------------------
/src/main/resources/images/rescue_truck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/rescue_truck.png
--------------------------------------------------------------------------------
/src/main/resources/images/school_bus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/school_bus.png
--------------------------------------------------------------------------------
/src/main/resources/images/shoutcast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/shoutcast.png
--------------------------------------------------------------------------------
/src/main/resources/images/site.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/site.png
--------------------------------------------------------------------------------
/src/main/resources/images/system.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/system.png
--------------------------------------------------------------------------------
/src/main/resources/images/taxi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/taxi.png
--------------------------------------------------------------------------------
/src/main/resources/images/train.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/train.png
--------------------------------------------------------------------------------
/src/main/resources/images/van.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/van.png
--------------------------------------------------------------------------------
/src/main/resources/images/waypoint_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DSheirer/sdrtrunk/189173e2897acc33a451ea93f4dfbf1a67fc4ae7/src/main/resources/images/waypoint_white.png
--------------------------------------------------------------------------------
/src/main/resources/javax.usb.properties:
--------------------------------------------------------------------------------
1 | javax.usb.services = org.usb4java.javax.Services
2 |
--------------------------------------------------------------------------------