Call Alert (-a or toggle on/off in ncurses)
--beep sound on radio id change when using ncurses terminal (tied to call history array)
---need to copy tone8.wav and tone24.wav files to /usr/share/ directory and chmod 777 them.
---updated all auto install scripts to copy and chmod as appropriate
----iz4tow, need to update windows tutorials for the wav files, else they won't play
Tweaks/Bug Fix to Call History (specifically DMR) to only set src ids on voice sync, and not on data sync
Manually Set P2 Parameters at CLI (-X BEE00ABC123)
-- use -X (capital X) and then enter WACN/SYSID/CC altogether
--- feature already available in ncurses terminal menu
Update Linux Install Instructions and auto installers to copy/paste wav files into /usr/share/ directory
Other Minor Tweaks
P2 Console Output Change;
--change up color coding slightly
Disable YSF Sync
--frame_ysf variable was never initialized, so some systems would false sync on YSF (YSF never finished, no handling yet)
Checkdown for Valid P2 Parameters
--if invalid parameters specified by user for P2 WACN, SYSID, and CC (too large) then treat same as missing parameters and skip processing P2 frames that require scrambling.
Experimental Symbol Capture Bin Input Throttle
--throttle read speed when reading capture bin files that are still being written to by OP25, quick easy piggyback (-n).
Readme tweaks
Minor tweaks
Fix DMR Voice Burst Bug
--was gathering bits to bytes wrong, and it broke DMR ProcessVoiceBurstSync
Update Screenshot to reflect current look and feel of FME
Phase 2 Audio Decoding Implemented
XDMA decoder class implemented and set to default (-ft)
--decoder class includes P25 1, 2, DMR BS/MS, and X2-TDMA
-- -fr -T option reworked, -T now for Per Call, use -ft (default)
Force Privacy Key
--force privacy key use over system FID and SVC options.
Per call now works on XDMA decoding and NXDN decoding
Limited Phase 1 TSBK and Phase 2 LCCH handling (for Network Status Broadcast)
--Need to get WACN, SYSID, and CC values for Phase 2 descrambling
Fix most of the compiler warnings
Additional Sanity Check
--perform sanity check on DMRvcL and DMRvcR to prevent out of bounds array issue that could lead to a crash in some environments with bad signal
Serpen'tera' Privacy now supports 10/32/64 character modes (have to use ncurses terminal to enter 32 or 64 char values)
NXDN Scrambler LFSR
Odd and End Terminal Tweaks
DMR Voice LC Header Fix
--Fix Voice LC Header to assign SRC and TGT values, mask if Cap+ system detected to prevent erroneous values
--Optimization for FID and SVC options, don't reset on carrier signal drop or TLC
Disable setting state src and tgt on VLC Header
--bugfix for ncurses terminal specifically to prevent the Voice LC Header setting the src and tgt ids;
--some TIII systems seem to have different values for that than what is in the TLC and Voice Burst.
--console printout can still show erroneous VLC header radio src ids that don't match the TLC or Voice Burst.
--Easier to use key entry for privacy modes
---Serpen'tera' 10 mode now available
--Slightly improved dmr dibit buffering/inverted dibit buffering
--Tweaks to console and ncurses output regarding FID, SVC, and privacy key values
--fix for RTL optional support (think I have all the ifdef covered now)
--TGT, SRC, FID, SVC, now set on Voice LC Header (not sure why I wasn't before)
--other misc tweaks that I can't recall
Muting Enc Tweaks
--Tweak when to mute and unmute encrypted traffic, and when to write wav and mbe files when enc or not
--If any DMR traffic appears muted that shouldn't be, simply toggle the mute in ncurses menu
LRRP getDateL tweak
--expand array from 99 to 120; seems to be usable in both Linux Desktop and Cygwin this way, most tests required.
Revert getDateL array size; 200 fixes issue in Cygwin, but breaks in Linux builds; (priority is Linux builds)
--Will look into a different solution that works on both ends.
Encrypted DMR muted by default now; Can be toggled in Terminal; Will still dump payload on request. Fix Bug in DMR Stereo 'muddy sound' caused by appending audio errs to both left and right channel each pass instead of only when using left or right.
--will not playback audio or write wav files or mbe files when muted
Fix errs and errsR to only append/set in MBE when on that slot, not always
Cleanup the code in the dmr_sync.c file, fix minor code errors.
Include the dsd-fme-qgis-map file for opening with QGIS and importing LRRP data dumped to ~/lrrp.txt
Update the Readme file.
--NCurses Menu (no more tedious CLI options)
--Save/Read Capture Bin (WIP!)
--Read OP25 Capture Bin (WIP!)
--Per Call WAV saving on DMR Stereo
--Revampled Data Header and 1/2, 3/4 Data LRRP
--Dump LRRP Data to text file, import into QGIS
--Included QGIS Map File with layers set up
--DMR CACH and Burst FEC
--No more Port Audio or OSS...ever.
--Switch to 8Khz/1Ch for most decode types due to crisper sound
---DMR Stereo remains at 24/2, will look into revampint upsampe for cleaner sound
--Tweak Naming of DMR Stereo output streams, giving them unique names so that the pulse audio server will remember their audio levels and left and right channel configurations on subsequent start ups.
--Tweak timing of events inside of the DMR BS Stereo Method
Seperate MBE Payload Printing from MBE Saving
--seperate the MBE Payload Printing functions from MBE Saving Function
--no longer need to use -d ./MBE/ to print a MBE Payload
--is currently using -Z for payload printing, may further seperate, make new user switch in future
audio_in_type and audio_out_type were not initialized
--this caused issues with Raspberry Pi OS 64-bit, presumably others as well by not opening the audio output stream.
DMR Stereo Payload Printing
--new method to print voice payloads
--dump DMR Stereo payloads without needing to use -d ./MBE/
--rework how DMR Stereo voice is handled and add extra features to it
--general code cleanup
Revert STDIN Audio Output
--Revert back to 8K/1 for normal due to occasional crackling that resulted from upscaling audio to 48k when using stdin, mbe, and rtl.
--Still need to investigate the root cause of this issue.
Fix Segfault on MBE Payload directory not existing
--code will check for existence of save directory, and create it if needed to prevent a segfault.
--other minor tweak to DMR slots
More DMR Inversion fixes
--fix some issues regarding when to invert dibits
---still have random issue of frame syncing to voice type instead of data type immediately after voice ends in TDMA stereo when inverted, guessing the dibit buffer is storing non-inverted dibits causing this?
--code will need a round of cleanup once fully tested and going good inverted
Fix Upsampling Bug
--Change logic to only upsample audio when out sample rate is greater than 8k.
--Revert RTL and MBE output sample rate to 8k/1 due to random crackling
--RTL will still shift to 24k/2 for DMR TDMA stereo, may produce noticeable crackling, unknown as of now, unable to test.
Fix Upsampling
--upsample audio on all input types to the proper output rate required for mono and stereo output.
--Allows for 48000/1 or 24000/2 output when using RTL or STDIN input
--MBE file playback still at 8000 due to random crackling when upscaled
--WAV file still recorded at 8000 mono
--MBE file saving and WAV saving disabled when using the -T Stereo TDMA option until both can be reworked.
Reconfigure STDIN and RTL for TDMA Stereo
--adjust configurations and rates to allow two channel audio output when using -T option with RTL and STDIN
--minor LRRP print mistake
DMR Stereo TDMA
--play voice in both TDMA slots with the -T option (dsd -fr -T)
--Improved MS voice (mostly working) and data handling (hit or miss)
--pretty pretty colors on the console log output
--rate 3/4 data decoding partially working
Fix Raw Audio Monitoring
--Still crashes Pulse Audio server on Ubuntu/Linux Mint
--PULSE_LATENCY_MSEC=1000 or high value mitigates problem for brief moment, but still crashes
---Issue with Latency, or maybe writing garbage values to pa_simple_write
General Code Cleanup
Tweak NCURSES Printer
Tweak STDERR Printouts
DMR PI Header, NCurses Tweaks, Fun Stuff
--Add PI Header handler, print DMR ALG, KEY, and MI values
--NCurses updates to reflect new DMR and NXDN info available
--Other Fun Stuff a.k.a. Stuff I might have broken or can't remember what I did now
More DMR Staging, Fix MI to Hex in P25
-switch back to 7 octets on AMB payloads
--will break compatibility with 6 octets
-Print MI values as Hex now, not as binary strings
Fix issue on amb file playback
-switching from 7 back to 6, otherwise older files may break when playing back
-still needs testing on 6 to 6, and 7 to 6 reads
Append to WAV files as opposed to overwriting them each time
Minor Tweaks to NCURSES terminal in regards to NXDN, update call log on systems with RAN of 0
More NCURSES Tweaking
-tweak array, seems to update smoother now, immediate
-more concise, cleaner names for sync types
-array updates on DMR, P25P1, NXDN, PV types only currenlty (no dstar etc yet)
More P25 resetState tweaking/testing
Other under the hood tweaking
resetState and Minor Ncurses Printer tweak
don't run with -n yet, resets state, using to test to fix when input type changes, but won't decode properly
Change NXDN to C4FM Modulation and change RF_mod type.
Not sure if it actually affects performance, but its the correct type.
Decoding relies more on samplesPerSymbol than anything.
Add Github Build Version
Work on Pulse Audio System (Testing 2 Channel Stereo Output)
Work on NCurses Terminal (Still Work to Do)
Include install.sh and rebuild.sh scripts
Initial NCURSES Support
Its in there, and can be called with -N, but it doesn't display much yet aside from program name, mbelib, and time.
Just want to upload it so I can test it vs autobuild with cmake requiring ncurses libraries again
Had to fix line 644 with this
Had wrong detection type
else if ((strncmperr (synctest18, INV_NXDN_BS_VOICE_SYNC, 18, 1) == 0) || (strncmperr (synctest18, INV_NXDN_MS_VOICE_SYNC, 18, 1) == 0)) //supposed to be voice, not data?
Had to fix line 651 with correct detection type
else if ((strncmperr (synctest18, INV_NXDN_BS_VOICE_SYNC, 18, 1) == 0) || (strncmperr (synctest18, INV_NXDN_MS_VOICE_SYNC, 18, 1) == 0))
More Pulse Audio Tinkering
Had to disable Monitor Source Input
(Was working in Arch, but with some latency/buffer issues, makes LM pulse server crash/restart?)
Fix Monitor Source Audio Issue
Forgot to add 'now' variable to all sync types, would attempt to play source audio and decoded audio at same time on most types.
Add Source Audio Monitoring - But its a Work in Progress
Seriously, though, depending on which setting you have on, it sounds terrible.
Also, make ncurses no longer a requirement for the time being. Still want to work that into this version eventually.
NXDN48 Voice Decoding is Good Now
Just use squelch if using SDR++ or GQRX to feed it. RTL-SDR input mode and NXDN still makes tons of false positives, and doesn't work well at all. May just be a bad signal issue but still think the RTLSDR input uses wrong center freq/tuned freq/"optimizations", need to get back to that some time, maybe also implement squelch settings on rtl_fm mode.
Thanks to LouisErigHerve for his 'Improved NXDN Detection' update on his version, implemented it and works SO MUCH BETTER!
May still disable the if ((state->lastsynctype == 9) || (state->lastsynctype == 17)) condition in dsd_frame_sync.c if I think it leads to more consistent decoding vs false positives. USE SQUELCH!