W3AXL
340400fab7
fixed wrong MI on start of enc calls
2 years ago
Bryan Biedenkapp
617c889d1a
Merge DFSI host changes into master ( #63 )
...
* begin implementing support for the V.24 modem as a regular modem dvmhost can utilize;
* add Tx support (maybe);
* theoretical TSBKs via V.24?;
* set start of stream correctly;
* ensure stream frame type is set correctly; send start of stream and end of stream correctly for TSBK (hopefully);
* fix variable naming; ensure voice frames aren't repeated back to the V.24 source;
* document configuration changes;
* add framework for eventual V.24 UDP support;
* correct issue not handling regular modem commands;
* fix up issue writing V.24 data to the modem buffers;
* initial working V24 modem implementation
* update commenting/documentation;
* reorganize configuration parameters and documentation;
* whoops forgot comment;
* ensure TSDU MBF is disabled for DFSI modems; tag DFSI parameters in log output proper for clarity; ensure P25 fixed mode is forced for DFSI modems;
* fixup V.24 UDP port, properly fake certain modem responses, fix bad RTP transmissions; add STT_NON_IMBE_NO_JITTER message type for ignoring message jitter;
* fix data offsets;
* ensure DFSI's internal call timeout is settable;
* bump version numbers;
* use LOG_MODEM not LOG_SERIAL;
* correct issue with PING/PONG resetting pktSeq incorrectly; add metric calculation for determining RTT for a PING/PONG;
* use milliseconds instead of seconds for delta clocking on the FNE and host for networking; correct several issues with incorrect packet sequences being sent for some control packets; correct issue with tracked packet sequence possibly being incorrectly reset;
---------
Co-authored-by: W3AXL <29879554+W3AXL@users.noreply.github.com>
2 years ago
Bryan Biedenkapp
eae8923227
various cleanups; correct incorrect implementation for copy constructors on DFSI FSC messages;
2 years ago
Bryan Biedenkapp
cd579eeabf
add virtual flag to some routines;
2 years ago
Bryan Biedenkapp
e0ea19b350
move dvmdfsi/frames into common; make host Modem class inheritable;
2 years ago
Bryan Biedenkapp
fb0bb665eb
fix issue where SIGTERM or SIGINT was not properly stopping the process;
2 years ago
Bryan Biedenkapp
9205f514a1
increase time between modem polls to 750us;
2 years ago
Bryan Biedenkapp
abe45a1d53
fix up file headers;
2 years ago
Bryan Biedenkapp
dbe1f69071
if the control the beginning of a call has valid crypto data, use the MI for the HDU;
2 years ago
Bryan Biedenkapp
47d89febdf
fix various valgrind reports;
2 years ago
Bryan Biedenkapp
22d13e4c77
decrease the modem status polling delays to 125ms idle, 75ms active;
2 years ago
Bryan Biedenkapp
355db0c9cc
[This commit contains highly-experimental and possibly unstable alterations to core archeitcture on dvmhost] deprecate ThreadFunc (using C++ lambda's was a bad idea to begin with); refactor some startup messages; refactor use of ThreadFunc in FNE; refactor how threads were created in the FNE; [EXPERIMENTAL] refactor the host architecture to use threading for modem clocking and protocol readers;
2 years ago
Bryan Biedenkapp
4ba65c5bab
fix issue where when *decoding* a EXT_FNCT the src and dst would be inverted resulting in bad logging;
2 years ago
Bryan Biedenkapp
89f255d8e3
fix issue with P25 packet lengths being potentially truncated;
2 years ago
Bryan Biedenkapp
07d6d3c91f
fix issue where next MI wouldn't be calculated from the HDU MI if we received a valid HDU; fix issue with first superframe LDU1 containing a non-standard MFID resulting in incorrect destination IDs (if this happens and we've received a valid HDU, attempt to use the HDUs destination ID);
2 years ago
Bryan Biedenkapp
da2f6130a8
[NOTICE: this commit is *EXPERIMENTAL* and implements *very* early data support, it is expected to be buggy, incomplete or broken] implement VTUN interface (fne0) on the dvmfne (this requires dvmfne to be run as root on Linux system [untested on non-Linux] to create the tun interface); implement VIFace random MAC generation; implement P25 TIA-102.BAEB SCEP ARP (SCEP is always used for conventional data) on dvmfne; refactor P25 packet status bits (this may break things else where, beware!); properly implement P25 status bit flipping on inbound channel activity; implement functionality in the P25 and DMR DataHeader classes to calculate the proper raw PDU frame length; implement dvmfne ARP table creation and maintainence (this is buggy and requires more implementation and test); implement dvmfne VTUN -> PDU and PDU -> VTUN IP traffic forwarding (this is incomplete and requires more implementation and test); correct several issues on dvmhost p25::packet::Data with overlapped buffers;
2 years ago
Bryan Biedenkapp
dc29208e70
refactor DMR PDU processing to be more in-line with how P25 PDU processing is done; implement support on the FNE to inspect and dispatch DMR PDUs properly;
2 years ago
Bryan Biedenkapp
c9e7dcc11f
make LC_CALL_TERM use dstId;
2 years ago
Bryan Biedenkapp
d467405a01
ensure TDU preamble is sent before voice for late entry;
2 years ago
Bryan Biedenkapp
98ded890f0
more cleanup; fix accidental change for block counting that broke things;
2 years ago
Bryan Biedenkapp
369c3bee25
remove debug trace log messages (whoops); fix edge case situation where the modem may stop reading because the response state machine is stuck;
2 years ago
Bryan Biedenkapp
2be4ca2bec
log ARP requests;
2 years ago
Bryan Biedenkapp
f3c3cc95ce
refactor P25 PDU extended address handling (this loosely gets a lot of conventional data things working, Moto TMS for example will pass in conventional [although buggy]); pass PDU response data headers (with no block followers) across the network;
2 years ago
Bryan Biedenkapp
197ce833ac
correct Trellis symbol skipping logic for DMR for 3/4 Trellis; enhance DMR short LC bits; correctly identify short LC for data and CSBK; correct buffered PDU repeat logic (when header has no blocks following);
2 years ago
Bryan Biedenkapp
1e25fff1ed
send these packets in the immediate queue;
2 years ago
Bryan Biedenkapp
88b619c71f
implement initial logic to provide PDU processing on the FNE;
2 years ago
Bryan Biedenkapp
96ea9269be
don't transmit trailing TDUs;
2 years ago
Bryan Biedenkapp
93e1531308
whoops confirmed packets always require acknowledgement;
2 years ago
Bryan Biedenkapp
d281844c74
byte reverse IP addresses returned for P25's OTA; fix conventional registration packets not properly transmitting; continued work on P25 data refactoring;
2 years ago
Bryan Biedenkapp
6dad7186c4
don't make *all* AMBT's goto the immediate queue, only do this for AUTH_DMD;
2 years ago
Bryan Biedenkapp
ca3fc407c0
add helper to convert an IP in std::string to a uint32_t; add calculateLength() function to P25 PDU DataHeader to more easily calculate data header fields for a packet; correct missing DAC and MDPCO fields on SNDCPCtxActAccept; correct missing MDPCO field on SNDCPCtxActRequest; implement support for Control::writeRF_TDU to be sent to the immediate queue; implement support for Data::writeRF_PDU and Data::writeRF_PDU_User to send data to the immediate queue; add some TDU leader and trialers to PDU handling; enhance the AUTH_DMD by forcing the AMBTs to the immediate queue; continued enhancements to the SNDCP support;
2 years ago
Bryan Biedenkapp
5db4f58ab6
update hotspot and modem firmware submodules; fix some bad commenting;
2 years ago
Bryan Biedenkapp
6a040b6bec
correct issue with P25 deregistrations always generating a U_REG_CMD instead of only generating a U_REG_CMD for registration timeouts;
2 years ago
Bryan Biedenkapp
d9c6447563
fire off a U_REG_CMD when performing stale unit deregistration to force a SU to re-register itself when the inactivity timer is hit;
2 years ago
Bryan Biedenkapp
882c2564ca
correct double spaced formatting of CPP files in common; convert dvmhost to Doxygen documentation format; convert dvmfne to Doxygen documentation format; convert dvmcmd to Doxygen documentation format;
2 years ago
Bryan Biedenkapp
3861559f87
add support to send SNDCP disabled annoucement messages properly;
2 years ago
Bryan Biedenkapp
dc0838e0c3
whoops swapped reject values;
2 years ago
Bryan Biedenkapp
f23d3931f4
add initial support to process SNDCP control PDU data;
2 years ago
Bryan Biedenkapp
d18b4c2b4e
fix issue with SNDCP packets not having the site IDEN table set;
2 years ago
Bryan Biedenkapp
e90350d350
begin implementing some basic SNDCP handling logic (this isn't complete, and this doesn't make SNDCP work *yet*), however until the implementation is complete, this should prevent channels from becoming grant locked (hopefully);
2 years ago
Bryan Biedenkapp
1388863371
ensure the host doesn't attempt to retransmit rogue OSP_SNDCP_CH_GNT;
2 years ago
Bryan Biedenkapp
ecda6b13d3
cowardly refuse to transmit OSP_SNDCP_CH_GNT across the network;
2 years ago
Bryan Biedenkapp
35c07715bc
don't use HUGE as a SiteModel because certain versions of GCC are awful;
2 years ago
Bryan Biedenkapp
9050ad7885
this should address the issues with #53 , dvmhost and dvmdfsi *should* transparently pass unknown non-standard MFId LCs in the voice LDU1 frames; correct some logging irregularities in dvmdfsi;
2 years ago
Bryan Biedenkapp
eacbc27143
add marking of whether an inbound CAC is long or short; fix issue with short CAC not properly building a puncturing buffer (even tho short CAC doesn't do puncturing, its needed for NXDN convolution); correct CAC getData() return; remove deprecated code causing decoding offsets to be wrong resulting in invalid RCCHs;
2 years ago
Bryan Biedenkapp
51bd9e749d
implement CAC long puncturing for NXDN; correct issues with NXDN site information data;
2 years ago
Bryan Biedenkapp
67429e3e34
use localtime instead of gmtime for logs;
2 years ago
Bryan Biedenkapp
cb0500b2e7
treewide: refactor constant variables into proper enumerations where appropriate (this applies to DMR, P25 and NXDN, and may introduce gremlins);
2 years ago
Bryan Biedenkapp
36c04a74ec
move the NET_FUNC* and NET_SUBFUNC* constants into proper namespaced enums;
2 years ago
Bryan Biedenkapp
e5e5462473
fix #54 , this should fix issue #54 in dealing with segmented/fragemented HTTP requests; enhance debug messaging from REST API server;
2 years ago
Patrick W3AXL
0bbc69d237
Basic implementation of dvmdfsi in dvmhost C++ ecosystem ( #59 )
...
* initial bootstrap of CPP dvmdfsi
* more work on serial service, the basics are there now
* updated TODOs
* more work on dfsi, getting there, just a few more things to implement
* rough code finished, totally untested, hope it works
* fixes for malloc errors, still not totally working
* almost working, P25 voice from FNE is garbled but we're getting there
* verified v24 decode/encode is working, still cleaning up serial TX
* dvmdfsi ready for beta testing! A few gremlins to find but it works.
* added configurable source flag option
* fixed diu source flag config entry name
* small update to Mot VHDR1
* fixed serial initialization, flags work now, config & code cleanup
* log cleanups, added basic call collision logic, fixed kid being truncated to uint8_t
* fixed LDU2 MI not getting copied properly
* bring add-dvmdfsi up-to-date with master;
* Add syslog and some project file cleanup (#58 )
* initial bootstrap of CPP dvmdfsi
* more work on serial service, the basics are there now
* updated TODOs
* more work on dfsi, getting there, just a few more things to implement
* rough code finished, totally untested, hope it works
* fixes for malloc errors, still not totally working
* almost working, P25 voice from FNE is garbled but we're getting there
* verified v24 decode/encode is working, still cleaning up serial TX
* dvmdfsi ready for beta testing! A few gremlins to find but it works.
* added configurable source flag option
* fixed diu source flag config entry name
* small update to Mot VHDR1
* fixed serial initialization, flags work now, config & code cleanup
* log cleanups, added basic call collision logic, fixed kid being truncated to uint8_t
* fixed LDU2 MI not getting copied properly
* add support for syslog logging in dvmdfsi;
* add useSyslog parameter to log section of configuration file;
* project cleanup: split MotRtpFrames.cpp/.h into separate files properly; ensure decode() functions pass the pointer as const to prevent accidental modification of input buffer; move common enums to a separate RtpDefines.h header; reuse MotRtpFrames.h (renamed RtpFrames.h) as a quick way of including all the RTP frames;
---------
Co-authored-by: W3AXL <29879554+W3AXL@users.noreply.github.com>
---------
Co-authored-by: W3AXL <29879554+W3AXL@users.noreply.github.com>
Co-authored-by: Bryan Biedenkapp <gatekeep@gmail.com>
2 years ago
Bryan Biedenkapp
2f918d759d
implement support to send logs to the syslog;
2 years ago
Bryan Biedenkapp
3be3366e5f
enhance FNE notification of CC voice channels; implement support to maintain mapping of CC <-> VC relationships at the FNE;
2 years ago
Bryan Biedenkapp
2c560dc3ce
add support to report host status JSON blob to FNE for storage in InfluxDB;
2 years ago
Bryan Biedenkapp
5a3e031247
reset states for DMR and NXDN like previous commit;
2 years ago
Bryan Biedenkapp
424b228c46
fix issue where last ID data wasn't being reset when the VC was done with a call;
2 years ago
Bryan Biedenkapp
22803a857e
update fw/hotspot and fw/modem to latest master; fix issue where block alignment would be lost for P25 PDUs if individual blocks failed to decode;
2 years ago
Bryan Biedenkapp
cae622b898
perform early peer checking during RPTL; if an ACL rejection occurs, straight disable the peer networking;
2 years ago
Bryan Biedenkapp
f39e8de0e1
refactor PR#55's peer list implementation to utilize a lookup table; add support to peer list implementation, when in whitelist mode to support per peer passwords (techincally this works in blacklist mode but is ... well irrelevant as blacklist mode *rejects* connections from peers in the list file); correct a few issues regarding how NAKs are returned early in the authentication handshake; reformat log messages; fix issue in host voice when regular conventional traffic is sent to a DVRS-enabled channel and legacy group grant is disabled;
2 years ago
Bryan Biedenkapp
f4c85e822e
minor fix up for PR#56 (nothing I wanted to prevent merging 56);
2 years ago
firealarmss
bd3e737adf
REST Additions and added NAK reasons ( #56 )
...
* Initial work for a peer whitelist/blacklist
* Remove forgotten debug log
* Remove extra line
* Use a dedicated file for white/blacklists
* Add support to REST for managing the peer white/blacklist
* Fix line spaces
* Move to one example file
* Add support for disconnecting a peer via the REST API; Add NAK reason for a peer ACL violation and for a peer reset; Add a REST endpoint for getting the current mode of peer ACL
2 years ago
Bryan Biedenkapp
1de86458a6
fix DVRS unit deregistration issue (units weren't registered properly during GRP_AFF because DVRS doesn't do the typical U_REG); implement 12-hour timeout for unit registrations (this is only applied if the SU in question has *NOT* had *ANY* activity within 12 hours);
2 years ago
Bryan Biedenkapp
0251944438
fix ability to set MFID via REST before issuing P25 commands; implement MBT for GRP_AFF_Q_RSP;
2 years ago
Bryan Biedenkapp
01b92641fd
run the loop watchdog timer properly during CW;
2 years ago
Bryan Biedenkapp
70600d3fd7
remove deprecated options; ensure we check if a peer is enabled on the FNE before attempting to read/write to it; silence BUGBUG UDP write message;
2 years ago
Bryan Biedenkapp
ce9534b81f
correct a check that determines whether a CC stream should be generated; correct some misleading log messages;
2 years ago
Bryan Biedenkapp
9b6fcdbdf7
fix incorrect assembly of DENY TSDUs for certain services; replace QUEUE TSDUs for grant TSDUs with DENY TSDUs;
2 years ago
Bryan Biedenkapp
864044ff8b
replace sprintf with snprintf;
2 years ago
Bryan Biedenkapp
a7f9cb93be
fix issue handling $F7E NAC; implement $F7F NAC support;
2 years ago
Bryan Biedenkapp
9b828fe7a4
ensure the lookup table thread is named; don't display the not transmitting CC messages unless the test timer is not paused; add aggressive watchdog logging for when timers exceed 1s intervals; split adj. site and affiliation updating into a separate thread (huge adj. site updates could be the cause of main loop processing delays); ensure threads are properly shutdown; increase P25 adj site update timer from 30 seconds to 60 seconds (5 minutes of no updates will now FAIL an adj. site);
2 years ago
Bryan Biedenkapp
36099367c8
fix condition where the Log and ActivityLog would overflow the character buffer by no properly calculating the length of the va_args string (this should resolve buffer overflow terminations on GCC 13+);
2 years ago
Bryan Biedenkapp
cbb0af42ba
fix some minor DVRS/conventional weirdness;
2 years ago
Bryan Biedenkapp
a7e727a7ec
ensure we don't end up with badness;
2 years ago
Bryan Biedenkapp
01af69a954
make sure the data length for P25 is twice the PDU length; add support to log if a dedicated CC stops transmitting from the host perspective (the logic for this is: is host in appropriate digital mode for CC, is the modem reporting no Tx, has the modem reported its status initially, and is the CC in a running state);
2 years ago
Bryan Biedenkapp
e4aca9fc4f
don't register a CC with itself; be more clear in the config YAML that the controlChannel block should be left at defaults for dedicated control channels;
2 years ago
Bryan Biedenkapp
41044d2271
fix a potential situation where we may get a length stuck on the queue (this shouldn't happen but, this is protection logic to ensure it never happens);
2 years ago
Bryan Biedenkapp
24082b9652
P25 data ( #52 )
...
NOTE: this does not indicate full P25 data support as working yet; this commit refactors a lot of the baseline PDU handling code, and better handles both confirmed and unconfirmed PDU data blocks, there is still some more work to do, I just didn't want p25_data to start getting overly out of sync with master.
* rework modem protocol to support variable length frames up to 64k; refactor P25 PDU handling to support TIA-102 minimum 512 byte frames;
* fix PDU length its 512 bytes not 500; ignore instead of report invalid modem frames; add double length checking to HostSetup;
* add support to send P25 long frames to the modem;
* adjust FIFO size to 522 (fits a single PDU frame); remove extra debug displays; match fixed FIFO sizes between modem and host;
* correct weird inverted CRC-9 that sometimes happen;
* ensure netPDU is reset at the beginning of a network data call; fix lengh used by data block dumping;
* fix some buffer lengths;
2 years ago
Bryan Biedenkapp
cf2469a2aa
revert previous change to ControlSignaling that pulled wrong commit from p25_data branch;
2 years ago
Bryan Biedenkapp
137dfbe918
use site data sysId for U_REG_RSP for a successful AUTH_RESP;
2 years ago
Bryan Biedenkapp
7e3e006fd1
fix comment typo;
2 years ago
Bryan Biedenkapp
e0b6da51fb
make the network presence announcment (VC -> CC and CC -> FNE) timing configurable (this value is in seconds); refactor RF channel enumeration, RF channels are now enumerated in their own class ChannelLookup instead of being integrated into AffiliationLookup, this allows the flexibility to update and change channel information at runtime; add support for VC -> CC presence/registration to tell the CC what the REST information is for that VC, this makes the restAddress and restPort entries for the voiceChNo list in the config.yml optional, the only mandatory fields are channelId, channelNo and restPassword;
2 years ago
Bryan Biedenkapp
f5a5d83f4b
fix potential issue with full group affiliation update;
2 years ago
Bryan Biedenkapp
0f7eabff82
implement support for peers that identify themselves as "conventional" to ignore affiliated talkgroup rules and be able to receive all traffic if the FNE is configured to allow promiscuous operation; implement extremely preliminary support to allow a CC to claim a VC peer, allowing for appropriate grouping of peers for trunked sites;
2 years ago
Bryan Biedenkapp
6d738432e2
fix missing break for AUTH_RESP case;
2 years ago
Bryan Biedenkapp
f8aa80a63f
continued work on P25 PDU handling (this has a long way to go...);
2 years ago
Bryan Biedenkapp
424c7fa35a
fix missed nullptr checks for if networking is disabled;
2 years ago
Bryan Biedenkapp
7cc2b99000
pass VSELP1/2 frames (this is experimental, in my tests doesn't break anything else, but it could), this will also pass VSELP1/2 frames to the network core but the host doesn't currently carry code to retransmit network VSELP frames over the air [yet];
2 years ago
Bryan Biedenkapp
17fae1d461
fix issue where the timeout timer wasn't running for the network which would never cause the connection to reset after a number of error attempts trying to login to the master;
2 years ago
Bryan Biedenkapp
d5ef9a0cb5
little bit of P25 data work (nothing amazing here yet);
2 years ago
Bryan Biedenkapp
4d776f6314
add support for DMR T3 adjacent site broadcast;
2 years ago
Bryan Biedenkapp
690bac453d
remove clearBeforeWrite function argument for a lot of control singalling (and some data) cases, this was an old method of clearing the Tx packet queue before creating a frame to ensure it went out really fast, but shouldn't be done anymore, so I'm removing this so no one gets any bright ideas;
2 years ago
Bryan Biedenkapp
96a9ba1c03
implement trunking site preference support for TGIDs, this implements a feature by which TGIDs can be gated to allow affiliation to preferred sites, all other non-preferred sites will DENY affiliation causing the radio to attempt to roam to another site (this is a trunking only feature and does not change conventional operation);
2 years ago
Bryan Biedenkapp
856fa98357
make the REST response wait time variable; use a quick response time of 150ms when using REST API during real-time OTA packet processing; add extra logging messages for UDP;
2 years ago
Bryan Biedenkapp
1632019650
port and implement /dmr/rid and /p25/rid REST APIs on the CFNE;
2 years ago
W3AXL
9675f42db5
added ability to save RID/TGID lookups from the FNE to local files
2 years ago
Bryan Biedenkapp
5571a71e4e
replace manual lock/unlock with lock_guard to ensure a lock is held in a scope, and released when a scope is closed;
2 years ago
Bryan Biedenkapp
86d736b0bb
revert change from 0ea6ee0 that changed the RingBuffer const char* to std::string to correct issue where the RingBuffer name is being copied incorrectly; change method for copying name std::string passed to AffiliationLookup; remove accidentally committed debug code;
2 years ago
Bryan Biedenkapp
f000639c7f
ensure m_forceHotspot is initialized to a sane default;
2 years ago
Bryan Biedenkapp
31ca17449d
*BEWARE* this commit alters the RPI_ARM cross-compiler and may break things *BEWARE*; implement support for HTTPS SSL REST API configuration; add contrib binary overlay for the RPI_ARM compiler (to add libssl-dev dependences);
2 years ago
Bryan Biedenkapp
b4f9b2d201
fix some issues with the "unsupported no no mode" that people continue to abuse; correct issue with calculating list offsets when announcing RID lists to the host;
2 years ago