├── .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 | --------------------------------------------------------------------------------