Commit Graph

44 Commits

Author SHA1 Message Date
dennis.sheirer
52f2e3bdca P25 audio work in progress - started work on exposing 88-bit (11-byte) IMBE voice frames from LDU messages. Added deinterleave, derandomize and the Golay(23,12,7) error detection and correction to LDU voice messages. Hamming edac still remains to be implemented. Plan to create a separate project to produce an imbe FormatConversionProvider that will convert 88-bit imbe frames to PCM audio that is then in a standard format for audio playback, recording, or conversion to another format like shoutcast. 2015-03-01 15:40:25 +00:00
dennis.sheirer
d87acad189 P25 - adds icons to decoding channel display for talkgroups and addresses. Includes new super high-resolution (not) fire truck and rescue truck icons. 2015-02-24 01:19:27 +00:00
dennis.sheirer
ebee420478 P25 cleanup. 2015-02-20 01:52:04 +00:00
dennis.sheirer
7d948c4af4 P25 LSM work in progress. CQPSK demodulator is working now, but there is a slight phase error in the constellation (it's rotated right by 5-10 degrees). I'm not sure if this is an error coming from the decoder, or if it's reflecting a phase imbalance from the source tuner i/q data. 2015-02-16 23:14:23 +00:00
dennis.sheirer
a65e821e85 P25 LSM decoder work in progress. Adds a CQPSK decoder based on Max's (KA1RBI) scope.py and gardner loop.
The CQPSK decoder is starting to take shape, but needs more tweaking and testing.  It's not keeping a good lock on strong P25 signals.  I have to add some more features to the intrumentation package to allow me to visualize the internals of the CQPSK decoder so that I can get a better sense of what needs fine tuning.

The CQPSK decoder may work for anyone that wants to sync the repo and run the build script.
2015-02-10 00:42:08 +00:00
dennis.sheirer
9310fb0daf Global rename of BitSetBuffer to BinaryMessage.
Corrected issue in P25 NID error correction.
2015-01-24 13:37:42 +00:00
dennis.sheirer
871705ece8 P25 - adds SNDCP context management and data packet parsing for IPV4 and UDP/IP packets to include IP addresses and data payload bytes. 2015-01-23 21:06:02 +00:00
dennis.sheirer
e5fad7ee22 P25 - Automatic Gain Control for P25 decoder 2015-01-19 19:25:43 +00:00
dennis.sheirer
1c0da75c01 P25 - adds direct frequency control for the C4FM symbol filter to adjust the tuner channel for frequency correction. 2015-01-19 16:20:37 +00:00
dennis.sheirer
cc5edd4790 P25 - added parsing of packet payload data for confirmed PDUs. 2015-01-19 13:17:11 +00:00
dennis.sheirer
51d6b328bd P25 - adds CRC-9 error detection to confirmed PDU message blocks 2015-01-18 12:43:10 +00:00
dennis.sheirer
35855b08bb P25 - adds 3/4 rate convolutional decoder for confirmed packet data units. 2015-01-17 18:24:39 +00:00
dennis.sheirer
71c247a7c3 Updates to Tait decoder - adds GPS message parsing and SELCAL ident parsing 2015-01-10 20:27:01 +00:00
dennis.sheirer
c579f1617d P25 work in progress 2015-01-07 02:15:51 +00:00
dennis.sheirer
84261a4be9 Changed NID error detection and correction (edac) to using Berlekemp Massey 63-bit block decoder for the BCH(63,16,11) code so that we can correct up to 11 bit errors in a NID (versus previous 2). 2015-01-04 15:29:34 +00:00
dennis.sheirer
03460eeb19 P25 work in progress 2015-01-02 14:08:22 +00:00
dennis.sheirer
86cb5b2f4b P25 work in progress 2014-12-23 22:43:55 +00:00
dennis.sheirer
d15ff407bd P25 channel state updates. 2014-12-21 23:05:47 +00:00
dennis.sheirer
ba053457bd Out of memory fixes and updates to the P25 decoder.
Memory Fixes
Decreased the decimation process repeat timing so that it runs smaller work chunks more often
Decreased scheduled thread pool to 2 hot threads
Wrapped all scheduled thread pool runnables in try/catch blocks so that an exception doesn't kill the sample buffer processing thread and cause the buffer to grow unbounded.

P25 updates
Moved TSBK crc checks into the message framer so that message corrections don't occur after the message is constructed.
Added more functionality to the channel state for handling registrations and call events.
2014-12-19 23:59:38 +00:00
dennis.sheirer
2635b58dfc Resolved issue in CRC-CCITT correction method. Added CRC error detection to PDU header block in the message framer, so that we're sure that the number of follow blocks is correct while we're capturing symbols/bits. Set the TDU message error correction to Pass since the CRC is calculated within the message framer and no errant NIDs (TDU) are passed. 2014-12-15 02:01:15 +00:00
dennis.sheirer
d6306a5e85 P25 work in progress - adds CRC-CCITT error checking to TSBK messages and shows CRC correction state in the messages tab 2014-12-14 22:54:37 +00:00
dennis.sheirer
170688b95e P25 Work in progress. Adds CRC checking to NID/DUID. Adds limiter to trellis decoder to prevent it from decoding an excessive error message. Updates channel state with initial handling/generation of call events. 2014-12-14 02:34:19 +00:00
dennis.sheirer
1ff69404f4 Updated P25 channel display to show relevant site information.
Changed Site ID Alias to a string from integer to support P25 style site identifiers (RFSS-Site)
2014-11-26 12:09:21 +00:00
dennis.sheirer
86899e8a77 P25 work in progress. 2014-11-26 03:42:22 +00:00
dennis.sheirer
1660f13633 P25 work in progress 2014-11-22 16:13:44 +00:00
dennis.sheirer
5ef806ef02 Resolved issue with LJ1200 decoder using inverted bit output 2014-11-16 13:43:41 +00:00
dennis.sheirer
eee28a3449 P25 Decoder work in progress 2014-11-14 12:53:32 +00:00
dennis.sheirer
46e3594c07 P25 Work-in-progress check-in. 2014-11-10 09:53:03 +00:00
dennis.sheirer
ae0568ff3b Updated spectral display to used dBm scale and removed baseline/amplification items.
Updated sample handling code to use -1.0 to 1.0 float values throughout, to support P25 decoder and symbol filter.
2014-11-01 17:39:06 +00:00
dennis.sheirer
86f374bb88 Updated copyright banners 2014-10-31 17:07:32 +00:00
dennis.sheirer
5e7c8a8a57 AM Decoder final commit. Includes automatic gain control on baseband input and audio output. 2014-10-31 16:58:09 +00:00
dennis.sheirer
d34abdd2fa Refactoring to use COMPLEX and REAL sample terms throughout 2014-10-31 13:58:20 +00:00
dennis.sheirer
d1ab661754 Frequency limit for Automatic Frequency Control to prevent the controller from walking too far.
Defaults to a maximum of 3kHz, but can be set to as high as 15 kHz.
2014-10-26 22:36:06 +00:00
dennis.sheirer
e61c3a891c Memory/CPU performance improvement and Audio/Mixer source restructuring
Converted to use float primitives and to keep samples in buffer format until the sample rate is decimated to 48kHz.  
Added new non-recursive, CIC decimation filter -- untested

Updated sound card/mixer input source management.  Now testing for mono/stereo support for each card and limiting channel choices accordingly.  Separated the mixersource into a ComplexMixer and and SimplexMixerSource.  The ComplexMixer is used for sound card based tuners like the funcube.  The SimplexMixerSource is used for demodulated sound card inputs.

Interfaces for sample handling - standardized on using 'Complex' to indicate I/Q samples and 'Simplex' to indicate demodulated float samples.  The processing chain now accepts either a decimated (48k) list of complex samples from a tuner channel source, or a 48k simplex buffer (array of demodulated float samples).

Resolved issue with HackRF tuner not applying tuner configuration information.
2014-10-26 10:11:30 +00:00
dennis.sheirer
5f4e7652bd HackRF - final check-in. Changed all tuners to use the low-level API of the usb4java library to resolve limitation in high-level API that constrains maximum sample rate to ~2.0 MHz. Added console logging to logback. 2014-10-20 23:09:50 +00:00
dennis.sheirer
61ecb5abf2 Adds an AM Demodulator to the list of available decoders. 2014-10-11 18:00:49 +00:00
dennis.sheirer
550aed79d4 Changed FrequencyChangeListener interface to an event so that I could describe what event was causing the frequency change and to broadcast frequency and sample rate error values.
R820T - added a couple more sample rate settings to the enum and modified the periodic sample rate info logger.
2014-09-27 09:46:18 +00:00
dennis.sheirer
e441ebf0c9 Changed to slf4j logging framework
Enhanced error handling/logging in RTL2832 eeprom device descriptor read method for troubleshooting issue present in some R820T tuners.
2014-09-20 10:04:04 +00:00
dennis.sheirer
0f43c7ed22 Automatic Frequency Control enhancement. Provides default AFC and ability to disable in the Decoder tab of each channel. Spectral display includes visual indicators of frequency center (grey) and current AFC offset (yellow). 2014-09-11 22:46:05 +00:00
dennis.sheirer
4e0fd9b7b0 Channel Spectral Display
- Adds Channel Spectrum tab to display FFT of the audio output of the currently selected channel
 - Upgrades to JTransforms 3.0 FFT library
 - Adds three new context menus to main and channel spectral displays:
   -- Baseline - affects the vertical rendering baseline of the FFT
   -- Amplification - affects the vertical height of each FFT bin
   -- Averaging - affects how many FFTs are averaged to produce the display
2014-09-06 14:58:05 +00:00
dennis.sheirer
44faeb9351 IQ recording file playback partial checkin.
NOTE: only the gui components and settings handling have been implemented.  Actual recording playback is not yet implemented.

Partial checkin of initial P25 decoder development.  

NOTE: P25 decoder is not yet functional.
2014-08-02 15:16:12 +00:00
dennis.sheirer
35a2cebe03 Converted frequency to long primitive type (from integer) in anticipation of HackRF support which requires frequencies greater than 2.147 GHz, which is the max hertz value that can be represented by an integer primitive. 2014-07-08 14:40:11 +00:00
dennis.sheirer
da1db8a804 Improved LTR FSK decoder for LTR, LTR-Net and Passport decoders. Added IIR DC blocking filter and used improved slicer from the FSK decoder.
Added instrumentation to Passport decoder and updated some of the instrumentation components.
2014-05-01 23:24:51 +00:00
dennis.sheirer
3dfedcf8d1 Initial code check in continued 2014-04-26 19:48:24 +00:00