* implement support for LC_GROUP_UPDT (this includes the RPC between the CC and VC's to announce active TG lists); completely and entirely refactor how packet handling threads are done, use a new method introduced for this, thread pool resources. this will ultimately be more resource consuming depending on configuration as the worker threads for packet processing stay alive along side the main process. this should be more performant (because we're not constantly creating and destroying threads) and will prevent error conditions that can cause an extreme number of threads to spawn;
* reduce influx and V.24 thread pool sizes; add calculation of how long between when a packet was Rx to when it began proper processing;
* don't use void* for the task routines;
* rename ThreadPoolCallback to ThreadPoolTask; add some checking around task validness; correct a valgrind issue with RawFrameQueue() write not deleting the buffer before return;
* valgrind cleanups;
* gate active TG from CC to VC updates at 5s (prevent API spam);
* update package version;
* don't attempt to send active TG updates to 0.0.0.0;
* make notification of active TGs CC -> VC optional;
* correct ThreadPool issue on Win32; split UDP PCM audio processing into its own thread; implement user control of inter-audio frame delay and jitter buffer (if using inter-audio frame delay);
* lock queue;
* add custom classes for STL containers that support mutex locking for thread safe operation; modify ChannelLookup and AffiliationLookup to use concurrent containers; modify FNE to use concurrent containers for internal lists;
* remove mutex used for protecting udp packet deque;
* more concurrency solidification;
* further concurrency class usage; bump version number to R04H30;
* add --boot commandline argument to reboot modem into bootloader without any interactive interface;
* cleanup program -h usage display;
* incorrect opcode define;
* update README.md;
* correct incorrect string format for non-useAlternatePortForDiagnostics;
* update README.md;
* simplify influxdb worker task function;
* refactor PL_ACT_PEER_LIST opcode entirely, use zlib and compress list sent and properly block data sent;
* don't waste cycles on building the peer list repeatedly, build it once for the cycle;
* deduplicate compress/decompress code into a static C++ class;
* stylecop file formatting;
* add table locking and remove at find;
* deduplicate implementation;
* cleanup unused label; change FrameQueue's unordered_map to a concurrent one; fix incorrect setting of __lock() for concurrent containers;
* add more timestream map locking;
* fix incorrect behavior when deriving initial timestamp for a call stream; correct incorrect behavior inserting new stream in to timestamps table for frame queue; fix incorrect behavior deriving timestamp for bridge RTP;
* fix issue with naive approach to handling PL_ACT_PEER_LIST data fragementation;
* disable accidental debug code;
* instead of asserting, throw a log error message and discard network packet;
* lock the talkgroup tables when a find is in progress (this will prevent some weird concurrency behaviors because talkgroup rules does not use the concurrent vector);
* if filter headers or terminators is enabled, and the target peer is in the exclusion list, do not send headers or terminators;
* exclusion check should happen before the rewrite check;
* implement dvmpatch, this is a new utility that allows simple TG to TG patching;
* ensure FNE downstream peers that report as peer link have implicit always rules applied to them (i.e. they will *always* receive *all* traffic); correct order of operations when deleting a peer entry (delete connection *AFTER* removing from peers table);
* document concern over possible null ref concurrency issue;
* don't be overly aggressive with FNE process niceness, nice of -10 is more then sufficient;
* Add support for USRP UDP transport
* Maintain USRP sequence
* Oops not sure how I did that
* Update DMR to be like P25
* Check for invalid UDP configuration
---------
Co-authored-by: firealarmss <caleb.k4php@gmail.com>
* experimental support for WIN32 compilation (tested only with VS2022);
* fix up incorrect return;
* make debug compile verbose; ensure ws2_32.lib is included;
* initial commit of vocoder library to main source tree; initial commit of C++ port of bridge (non-functional);
* calculate the length of the preamble tone and properly write it;
* implement MDC callback to detect MDC unit ID; implement UDP audio reception; implement local audio reception;
* very alpha working verison;
* correct buffer size;
* correct issue with enabled Tx mode not properly being set on the network; correct issue with DMR not setting the appropriate frame length after packing AMBE bits; correct false call starts by faking the txStreamId (this isn't correct but works for now); fix issue with P25 non-GROUP LCOs causing audio breaks; correct bad logic for call lockup thread;
* cleanup and properly align log messages;
* implement missing Rx/Tx manual gain control; fix missing srcId overrides;
* eliminate the __ALLOC_VLA macro (this really only works on VS2022, GCC explodes in a fit of horror);
* fix missing comment;
* fix bad CFLAGS; correct missing dl library when linking dvmbridge on linux; fix various typos and bad variable types in bridge;
* fix some bad memset calls not taking array size into account; fix some missing parens;
* implement missing cal options;
* don't start the timer till the first LDU1 for cal mode;
* I'm just full of bad mistakes today;
* ignore logging excessive sync frame errors;
* update modem submodule;
* Add DVM-V24 Firmware Submodule And Enable Building It (#66)
* Added v24 firmware as a submodule
* Added v24 firmware compilation
* V24 doesn't have make clean, so remove it from cmake
* Added V24 firmware to tarballs
* Fix my 1D107 error...
---------
Co-authored-by: faulty <faulty@evilcomputing.net>
* correct compilation flags for Win32; add support to dump sample levels on bridge (this is useful for tuning the vox level); add various fixes for local audio flag; add various fixes for not starting loops until completely running; ensure audio input/output device settings are output to the log; fix issue with Rx and Tx gain controls not being applied appropriately;
* fix compilation issues for RPI_ARM; ensure math constants are defined; remove unused command line arguments;
---------
Co-authored-by: Jim <25770089+faultywarrior@users.noreply.github.com>
Co-authored-by: faulty <faulty@evilcomputing.net>