Skip to content

Commit 7c2bfb3

Browse files
gatekeepfaultywarriorfaultylorenzolrom
authored
R04J32 Merge to Master (#95)
* implement user-defined adj site mapping to allow fine grained control over neighboring site announcements; * BUGFIX: patch issue where the FNE would not maintain the source peer ID for certain routing scenarios; * fix typo in original implementation, peerId should be the peerId and ssrc should become the originating peer ID; remove peer check throwing a warning; * log ssrc for various data points (the ssrc is the RTP originating sync source which would be the peer ID of the origination of a RTP packet); * bump build number; * add peer ID masking support (this is useful for FNEs that are "public" links where internal peer IDs don't need to be retained); more work for maintaining the originating stream sync source; refactor how the FNE handles peer network connections; * throw a warning if the user configured more then 8 upstream peer connections (more than this number can cause performance problems); * make non-peer-link peer ID masking optional; * add checking for traffic repeat to verify we are not trying to send traffic back to the source; * add checking for traffic repeat to verify we are not trying to send traffic back to an external source; * convert peer network protocol packet processing to a threaded model; * update copyright dates; * implement REST API for manipulating adjacent site map entries; * fix missed REST API initializer, need to pass the adj site map; * add DFSI/V.24 full duplex option (this allows dvmhost to repeat incoming frames back out); * Fix incorrect check of DFSI and FSC operating modes that resulted in a segfault (#92) Co-authored-by: faulty <[email protected]> * document p25CorrCount in depth more; set the default p25CorrCount to 2; * properly call PacketBuffers clear() before leaving a scope to ensure contained buffers are deleted (otherwise we'll leak memory); * skip the first 6 bits of the TIA-102 DFSI VHDR (this is very strange, and is probably not kosher); * transparently pass voice frames with FID $20 (assumed to be Kenwood) when the PF flag is set (this allows Kenwoods flavor of encryption to pass); * relabel FID_DMRA to FID_MOT (this feature ID is assigned to Motorola); handle more conditions for FID $20 (Kenwood) on voice frames; * remove filterHeaders (this is deprecated, HDUs aren't sent over the network); perform frame length validation for P25 network frames (unlike DMR and NXDN P25 frames are variable length, requring length validation to prevent buffer under or overflows); fix issue with addr variable not being freed in InfluxDB handler; * [EXPERIMENTAL] add very initial support for dvmpatch to talk to a MMDVM P25 Gateway in P25 mode; * fixup dvmpatch support for talking to MMDVM P25 Gateway; * fix up handling of MMDVM call termination; * more work on better signalling end of call for MMDVM P25 gateway patches; better log traffic from MMDVM; * correct some incorrect timing; * add support for properly authorizing a peer to send Inhibit/Uninhibit commands; add some NXDN constants for remote control; * add columns to main peered peer list to represent if a peer is allowed to inhibit; * fixup informational logging; * add auto generation of a peer password; slightly increase the dialog size of the peer edit window; * fix TIA VHDR incorrect length; correct gatekeep accidentally setting TIA StartOfStream to 4 bytes instead of 3, because you know the TIA spec is incomprehensible with its bit alignment; * add some permanent log trace for DFSI over UDP tracing; correct startOfStreamTIA incorrectly sending a LDU1 NID; correct some offsets; * make sure we send out heartbeats *before* the heartbeat time; * send Start of Stream with voice data; * free memory in error case; remove unused variables; * correct some buffer allocations; ensure the AES class is deleted after use; * implement support for legacy radio affiliation (like P25) for DMR and NXDN (this fixes an issue where conventional DMR and NXDN systems would be unable to transmit onto affiliation only TGs); correct bad CSBK decoding in the FNE (forgot to check for dataSync); * code cleanup to correct compiler warnings; * add string file meta data info to Win32 EXEs; add icons to Win32 EXEs; * migrate and condense analog audio helper and G.711 codec routines into a common class called AnalogAudio for easy reuse; stub network protocol entries to eventually handle analog audio; * add support in the DVM network protocol for analog FM audio traffic; add support to the DVM FNE to properly switch analog FM audio traffic; bump revision from H to J; * add analog enable flag to fne config YAML; * prelim work to make dvmbridge pass analog audio directly into FNE network; * handle locking inside deleteBuffers(); * refactor FrameQueue mutex handling; don't start and stop the thread pool when the peer network opens/closes; * use unique_ptr for compression class instead of passing raw pointers; * refactor FrameQueue from using a std::unordered_map to a simple fixed array that is directly controlled; * refactor compression slightly; * better handle multi-threaded problems; * use a std::vector instead of a classical C allocated array for timestamp list; add error/logic checking for V.24/DFSI where the VHDR may send a TGID0 during a call causing a call rejection; * make timestamps vector static; * dump out of VHDR processing if call is in progress; * bump tarball version build stamp; * add option to forcibly allow TGID0 for badly behaved systems this will cause dvmhost to accept the call and not drop it, with the caveat that the TGID will be rewritten to TGID1, the network stack simply cannot service a TGID of 0 and as such we must rewrite the TGID a TIA-102 valid TGID; * simplify late entry handling where V.24 may send a dstId of 0; * whoops correct my own stupidity; * whoops correct my own stupidity (again); * add opcodes for Harris User Alias and GPS; add opcode for Motorola GPS on PTT; decode Harris User Alias in LDU LCs; * attempt at decoding the LDU RS values for both V.24 and TIA DFSI, this does not abort decoding in the ModemV24 right now and will simply log an error if the RS values for the LDU1 or LDU2 are to badly invalid; * alter field data based on recent testing; enhance and update debug log entries; add debug logging for Voice 1 and 10 start of voice frames for V.24; * add missing tag information for V.24 PDU; * fix incorrect handling of RFSS ID in host setup; * experimental fix to ignore wildly illegal TGIDs in the HDU; * simplify the V.24 HDU TGID logic, entirely ignore the TGID presented in the HDU and just wait for the LDU1 to set the rfLastDstId; * add grantDemand documentation to dvmpatch; * [EXPERIMENTAL] add experimental support for cross-encrypting patched P25 traffic; * reset call algo when a P25 call ends; * properly handle algo ID's for source and destinations; * missed reverseCrypto check; * [EXPERIMENTAL] for some configurations (**you know who you are god damn it**), allow dvmhost to be configured to "idle" on a non-zero TG when the RF talkgroup hangtimer stops, this effectively disables the promiscuous network Rx of the host for certain conventional operations, and requires RF-based TG steering to change the active talkgroup; cleanup the macros for DMR and NXDN that perform various repeated checks; * major refactor for V.24 support; * hide RSSI2 ICW errors; report on any voice frames reporting more then 0 errors; * properly sent VHDR1 and VHDR2 with proper opcodes (whoops); * add experimental support for TDULC over V.24; add some documentation for the V.24 and TIA voice header byte layout; * experimental support for transporting V.24 over IP; * initial super frame should start at 1; make sure to use proper constants instead of magic numbers; * reorganize code slightly; * cleanup format for, and make slightly more precise trace and error dumping log messaging; * add option for the FNE to directly log traffic denials to the system log; * centralize string for illegal RID access; * log total voice frame errors for TIA/DFSI mode; * minor PDU refactoring on when network PDU data is sent; correct issue with accepting a conventional data reg; * disable allowExplicitSourceId by default (not all subscribers support this); correct some bad handling of LC data; * log sysId and netId info for call start and end on the FNE log; * add setting netId and sysId to dvmbridge and dvmpatch for future use; * reorganize and expose decodeLC/encodeLC from LC; correct typo in TDULC headers; add explicit source id TDULC; add LC_GROUP explicit ID flag; * use shorthand macros where able; * enable or disable explicit source ID directly, don't require control to be enabled (important for trunked VC); * minor correction to handling explicit source ID; * properly set dummy SiteData for dvmbridge and dvmpatch (necessary to set the WACN and SysId); * handle condition defaulting WACN and SysId if network data for WACN and SysId is 0; * ensure unencrypted parameters if encryption is disabled; * copy dvmbridge change to dvmpatch for: ensure unencrypted parameters if encryption is disabled; * ignore extra ICW opcodes; * use raw LDU values from the call data instead of processed values if the MFId on the LC isn't TIA standard; * collate bit errors reported from V.24 or TIA; * typos; * allow a group affiliation on Conv+ (DVRS) to terminate a running TG hang timer; * add missing stop to the timer; * add WACN/SysId logging to SysView; * add global to disable transmitting logging to the network (this is used when the UDP socket fails to send data to prevent a crash condition talking to a null socket); unify errno to string message processing for clearity in logs; refactor network reconnect and retry logic to better handle a full connection reset cycle (this is useful for conditions where the network loss isn't transient and is something like a Ethernet or WiFi link drop causing the entire interface to become down temporarily); * remove unnecessary debug logging; * allow encoding user alias at the LC level; * see if we can calculate error percentages; * get rid of magic numbers for properly defined constants; * implement proper support for P25 LDU1 and LDU2 to pass call control bytes; allow a end-point to signal that a call is handing over/switching over from one stream ID/source ID to another; implement support on dvmbridge to properly handle stream/source ID switch over; * log call source switch over events; * whoops this should be a OR equals not equals; * correct issue where network frames would be ignored during RF calls causing buffer overflows; * cleanup and remove unnecessary and confusing C compiler macros; * cleanup and unify design a bit, for P25 move traffic collision checking into separate function calls; * add colorize-host.sh helper tool; update colorize-fne.sh tool for DMR and NXDN; * store status data for a private call; * during unit registration store the originating source peer ID for a given unit registration; use unit registration source ID to select the destination peer to send private call data to; * initial experimental implementation of private call routing: this introduces a new configuration flag "restrictPrivateCallToRegOnly", when set, this flag will influence how private calls are routed through the system private calls using restrictPrivateCallToRegOnly require both the source and destination subscribers to be unit registered with the system, when a private call occurs the system will utilize the source peer ID to restrict repeating the private call traffic only to the 2 peers involved in the private call FNEs will *always* receive private call traffic * rework stream validation for U2U calls slightly for P25; ensure P25 always sends the U2U control byte for private calls; * enhance handling of NXDN LC on the FNE; fix issue where dvmhost would not process a network RCCH burst; * refactor NXDN CC handling a bit; * add support to translate a raw DENY/QUEUE/CAUSE/REASON value for DMR/P25/NXDN into a human readable string; * whoops hastily missed std::string -> c_str conversion; * ensure SSRC is maintained for unit registration announcements; * more implementation for private call routing; * add missing clear flag to DMR payload activate RPC; * correct crash for fsc set to true when not using DFSI TIA-102/UDP; * add support to disable a failed CRC-32 for P25 PDU data; ignore CRC-32 errors for AMBT PDUs; * Add support in dvmbridge for a serial PTT activation switch. RTS is asserted on the serial port defined in bridge-config.yml for the duration of audio received, then is removed. (#102) * P25 PDU packet handling refactor (for future use); * remove test code; * fix issue where PDU RSPs weren't being sent to the FNE; correct timing around ARP and packet retry when subscriber is not ready; * add some more verbose logging; * experimental changes to PDU data handling; * correct CSV parsing for iden, peer list and RID lookup tables (we would skip parameters if they were empty); make the FNE P25 packet data handler operate in the TIA-102 asymmetric addressing mode (as would be required with FNE configurations); --------- Co-authored-by: Jamie <[email protected]> Co-authored-by: faulty <[email protected]> Co-authored-by: Lorenzo L. Romero <[email protected]>
1 parent fcdec00 commit 7c2bfb3

File tree

221 files changed

+12104
-3659
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

221 files changed

+12104
-3659
lines changed

configs/adj_site_map.example.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#
2+
# Digital Voice Modem - Adj. Site Map
3+
#
4+
5+
#
6+
# Peer List
7+
#
8+
peers:
9+
# Peer ID.
10+
- peerId: 1234567
11+
# Flag indicating whether this talkgroup is active or not.
12+
active: true
13+
# List of peer IDs that are neighbors for this peer.
14+
neighbors: []

configs/bridge-config.example.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@ system:
125125
# Textual Name
126126
identity: BRIDGE
127127

128+
# Network ID (WACN).
129+
netId: BB800
130+
# System ID.
131+
sysId: 001
132+
128133
# PCM audio gain for received (from digital network) audio frames.
129134
# - This is used to apply gain to the decoded IMBE/AMBE audio, post-decoding.
130135
rxAudioGain: 1.0
@@ -145,7 +150,7 @@ system:
145150
# - (Not used when utilizing external USB vocoder!)
146151
vocoderEncoderAudioGain: 3.0
147152

148-
# Audio transmit mode (1 - DMR, 2 - P25).
153+
# Audio transmit mode (1 - DMR, 2 - P25, 3 - Analog).
149154
txMode: 1
150155

151156
# Relative sample level for VOX to activate.
@@ -179,3 +184,9 @@ system:
179184
trace: false
180185
# Flag indicating whether or not debug logging is enabled.
181186
debug: false
187+
188+
# RTS PTT Configuration
189+
# Flag indicating whether RTS PTT control is enabled.
190+
rtsPttEnable: false
191+
# Serial port device for RTS PTT control (e.g., /dev/ttyUSB0).
192+
rtsPttPort: "/dev/ttyUSB0"

configs/config.example.yml

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,10 @@ protocols:
155155
ignoreAffiliationCheck: false
156156
# Flag indicating the host should send a network grant demand for conventional traffic.
157157
convNetGrantDemand: false
158+
# Flag indicating the fallback legacy group registration for radios that do not support group affiliation.
159+
# (Useful for alerting the FNE to affiliations to TGIDs for radios that do not properly support group
160+
# affiliation.)
161+
legacyGroupReg: false
158162
# Flag indicating whether or not received RF embedded LC data only should be transmitted.
159163
embeddedLCOnly: false
160164
# Flag indicating whether talker alias data should be dumped to the log.
@@ -240,12 +244,16 @@ protocols:
240244
# (This applies only in conventional operations where channel granting is utilized and RF-only talkgroup
241245
# steering is required.)
242246
disableNetworkGrant: false
247+
# Flag indicating whether or not TGID 0 (P25 blackhole talkgroup) will be allowed.
248+
# (Normally this should *never* be enabled, it is here to support poorly behaved systems that transmit
249+
# TGID 0 for some reason.)
250+
forceAllowTG0: false
243251
# Flag indicating whether or not a TGID will be tested for affiliations before being granted.
244252
ignoreAffiliationCheck: false
245253
# Flag indicating that the host will attempt to automatically inhibit unauthorized RIDs (those not in the
246254
# RID ACL list).
247255
inhibitUnauthorized: false
248-
# Flag indicating the fallback legacy group grant for radios that do not support group affilition to
256+
# Flag indicating the fallback legacy group grant for radios that do not support group affiliation to
249257
# have group grants transmitted. (Useful for alerting the FNE to affiliations to TGIDs for radios that
250258
# do not properly support group affiliation.)
251259
legacyGroupGrnt: true
@@ -267,6 +275,8 @@ protocols:
267275
dumpDataPacket: false
268276
# Flag indicating whether or not this host will repeat P25 data traffic.
269277
repeatDataPacket: true
278+
# Flag indicating whether or not the host will ignore CRC errors in P25 PDU data packets.
279+
ignoreDataCRC: false
270280
# Flag indicating whether verbose dumping of P25 TSBK data is enabled.
271281
dumpTsbkData: false
272282
# Amount of time to hang after a voice call.
@@ -278,7 +288,7 @@ protocols:
278288
# Flag indicating that unit-to-unit availiability checks should be performed for a private call.
279289
unitToUnitAvailCheck: false
280290
# Flag indicating explicit source ID support is enabled.
281-
allowExplicitSourceId: true
291+
allowExplicitSourceId: false
282292
# Flag indicating whether or not the host will respond to SNDCP data requests.
283293
sndcpSupport: false
284294
# BER/Error threshold for silencing voice packets. (0 or 1233 disables)
@@ -319,6 +329,10 @@ protocols:
319329

320330
# Flag indicating whether or not a TGID will be tested for affiliations before being granted.
321331
ignoreAffiliationCheck: false
332+
# Flag indicating the fallback legacy group registration for radios that do not support group affiliation.
333+
# (Useful for alerting the FNE to affiliations to TGIDs for radios that do not properly support group
334+
# affiliation.)
335+
legacyGroupReg: false
322336
# Flag indicating the host should verify group affiliation.
323337
verifyAff: false
324338
# Flag indicating the host should verify unit registration.
@@ -470,6 +484,10 @@ system:
470484
pSuperGroup: FFFE
471485
# Announcment Talkgroup Group.
472486
announcementGroup: FFFE
487+
# Default Talkgroup for idle network traffic.
488+
# NOTE: TGID 0 is used here to indicate "promiscuous" mode, where first-come-first-serve traffic from the network
489+
# is allowed.
490+
defaultNetIdleTalkgroup: 0
473491

474492
# DMR network ID.
475493
dmrNetId: 1
@@ -532,8 +550,12 @@ system:
532550
# Amount of time to wait before starting DMR transmissions after a signal is received.
533551
dmrRxDelay: 7
534552
# Amount of packet correlations that should occur before P25 data is returned from the modem to the host.
535-
# (Note: Changing this value will impact P25 protocol stability, and should not be altered.)
536-
p25CorrCount: 8
553+
# (Note: Changing this value will impact P25 protocol stability, and should not be altered. This is set to
554+
# a default value of 2 for fast synchronization of a P25 signal, if the air modem is having difficulty
555+
# synchronizing to a P25 signal, this value can be increased to 3 or 4, or beyond. It should be noted that
556+
# increasing this value will increase the time it takes to synchronize to a P25 signal, and may cause
557+
# issues with P25 voice calls (especially encrypted voice calls).)
558+
p25CorrCount: 2
537559
# Size (in bytes) of the DMR transmit FIFO buffer. It is not recommended to adjust this unless absolutely
538560
# necessary, excessive sizes will cause delays in transmitted frames due to excessive buffering.
539561
# Calculation Formula: (DMR Frame Size (33 bytes) * x Frames) + Pad Bytes = FIFO Buffer Size Bytes
@@ -626,6 +648,9 @@ system:
626648
jitter: 200
627649
# Timer which will reset local/remote call flags if frames aren't received longer than this time in ms
628650
callTimeout: 200
651+
# Flag indicating whether or not the V.24 modem is operating in full-duplex mode.
652+
# (This enables DVM to repeat incoming V.24 frames back out after processing.)
653+
fullDuplex: false
629654
# Flag indicating when operating in V.24 UDP mode, the FSC protocol should be used to negotiate connection.
630655
fsc: false
631656
# Sets the heartbeat interval for the FSC connection.

configs/fne-config.example.yml

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ master:
4848
# Flag indicating whether or not verbose debug logging is enabled.
4949
debug: false
5050

51+
# Flag indicating whether or not denied traffic will be logged.
52+
# (This is useful for debugging talkgroup rules and other ACL issues, but can be very noisy on a busy system.)
53+
logDenials: false
54+
5155
# Maximum number of concurrent packet processing workers.
5256
workers: 16
5357

@@ -70,6 +74,8 @@ master:
7074
allowP25Traffic: true
7175
# Flag indicating whether or not NXDN traffic will be passed.
7276
allowNXDNTraffic: true
77+
# Flag indicating whether or not analog traffic will be passed.
78+
allowAnalogTraffic: false
7379

7480
# Flag indicating whether packet data will be passed.
7581
disablePacketData: false
@@ -87,6 +93,8 @@ master:
8793

8894
# Flag indicating whether or not a grant responses will only be sent to TGs with affiliations, if the TG is configured for affiliation gating.
8995
restrictGrantToAffiliatedOnly: false
96+
# Flag indicating whether or not a private call will only be routed to the network peers the RID registers with.
97+
restrictPrivateCallToRegOnly: false
9098

9199
# Flag indicating whether or not a adjacent site broadcasts will pass to any peers.
92100
disallowAdjStsBcast: false
@@ -103,9 +111,14 @@ master:
103111
# Flag indicating whether or not a TDULC call terminations will pass to any peers.
104112
disallowCallTerm: false
105113

106-
# Flag indicating that traffic headers will be filtered by destination ID (i.e. valid RID or valid TGID).
107-
filterHeaders: true
108-
# Flag indicating that terminators will be filtered by destination ID (i.e. valid RID or valid TGID).
114+
# Flag indicating whether or not the FNE will mask all outbound traffic to use the FNE's own peer ID.
115+
# (This is useful for FNEs that are public facing, and the originating traffic peer ID should be masked.)
116+
maskOutboundPeerID: false
117+
# Flag indicating whether or not the FNE will mask only non-Peer-Link outbound traffic to use the FNE's own peer ID.
118+
# (This is useful for networked FNEs that are have a mix of connections, and the originating traffic peer ID to non-Peer-Link FNEs should be masked.)
119+
maskOutboundPeerIDForNonPeerLink: false
120+
121+
# Flag indicating that P25 terminators will be filtered by destination ID (i.e. valid RID or valid TGID).
109122
filterTerminators: true
110123

111124
# Flag indicating the FNE will drop all inbound Unit-to-Unit calls.
@@ -150,6 +163,15 @@ master:
150163
# Amount of time between updates of talkgroup rules file. (minutes)
151164
time: 30
152165

166+
#
167+
# Adj. Site Map Configuration
168+
#
169+
adj_site_map:
170+
# Full path to the Adj. Site Map file.
171+
file: adj_site_map.yml
172+
# Amount of time between updates of Adj. Site Map file. (minutes)
173+
time: 30
174+
153175
#
154176
# External Peers
155177
#

configs/patch-config.example.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,21 +60,62 @@ network:
6060
sourceTGID: 1
6161
# Source Slot for received/transmitted audio frames.
6262
sourceSlot: 1
63+
64+
# Source Traffic Encryption
65+
srcTek:
66+
# Flag indicating whether or not traffic encryption is enabled.
67+
enable: false
68+
# Traffic Encryption Key Algorithm
69+
# aes - AES-256 Encryption
70+
# arc4 - ARC4/ADP Encryption
71+
tekAlgo: "aes"
72+
# Traffic Encryption Key ID
73+
tekKeyId: 1
74+
6375
# Destination Talkgroup ID for transmitted/received audio frames.
6476
destinationTGID: 1
6577
# Destination Slot for received/transmitted audio frames.
6678
destinationSlot: 1
6779

80+
# Destination Traffic Encryption
81+
dstTek:
82+
# Flag indicating whether or not traffic encryption is enabled.
83+
enable: false
84+
# Traffic Encryption Key Algorithm
85+
# aes - AES-256 Encryption
86+
# arc4 - ARC4/ADP Encryption
87+
tekAlgo: "aes"
88+
# Traffic Encryption Key ID
89+
tekKeyId: 1
90+
6891
# Flag indicating whether or not the patch is two-way.
6992
twoWay: false
7093

94+
# Hostname/IP address of MMDVM gateway to connect to.
95+
mmdvmGatewayAddress: 127.0.0.1
96+
# Port number to connect to.
97+
mmdvmGatewayPort: 42020
98+
# Local port number for gateway to connect to.
99+
localGatewayPort: 32010
100+
71101
system:
72102
# Textual Name
73103
identity: PATCH
74104

105+
# Network ID (WACN).
106+
netId: BB800
107+
# System ID.
108+
sysId: 001
109+
75110
# Digital mode (1 - DMR, 2 - P25).
76111
digiMode: 1
77112

113+
# Flag indicating whether a network grant demand packet will be sent before audio.
114+
grantDemand: false
115+
116+
# Flag indicating whether or not the patch is from/to a MMDVM P25 reflector.
117+
mmdvmP25Reflector: false
118+
78119
# Flag indicating whether or not trace logging is enabled.
79120
trace: false
80121
# Flag indicating whether or not debug logging is enabled.

configs/peer_list.example.dat

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#
22
# This file sets the valid peer IDs allowed on a FNE.
33
#
4-
# Entry Format: "Peer ID,Peer Password,Peer Link (1 = Enabled / 0 = Disabled),Peer Alias (optional),Can Request Keys (1 = Enabled / 0 = Disabled),<newline>"
5-
#1234,,0,,1,
6-
#5678,MYSECUREPASSWORD,0,,0,
7-
#9876,MYSECUREPASSWORD,1,,0,
8-
#5432,MYSECUREPASSWORD,,Peer Alias 1,0,
9-
#1012,MYSECUREPASSWORD,1,Peer Alias 2,1,
4+
# Entry Format: "Peer ID,Peer Password,Peer Link (1 = Enabled / 0 = Disabled),Peer Alias (optional),Can Request Keys (1 = Enabled / 0 = Disabled),Can Issue Inhibit (1 = Enabled / 0 = Disabled)<newline>"
5+
#1234,,0,,1,0,
6+
#5678,MYSECUREPASSWORD,0,,0,0,
7+
#9876,MYSECUREPASSWORD,1,,0,0,
8+
#5432,MYSECUREPASSWORD,,Peer Alias 1,0,0,
9+
#1012,MYSECUREPASSWORD,1,Peer Alias 2,1,0,

src/CMakeLists.txt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ if (ENABLE_SETUP_TUI)
4242
target_link_libraries(dvmhost PRIVATE common ${OPENSSL_LIBRARIES} asio::asio finalcut Threads::Threads util)
4343
else ()
4444
if (COMPILE_WIN32)
45+
target_sources(dvmhost PRIVATE ${dvmhost_RC})
4546
target_link_libraries(dvmhost PRIVATE common ${OPENSSL_LIBRARIES} asio::asio Threads::Threads)
4647
else ()
4748
target_link_libraries(dvmhost PRIVATE common ${OPENSSL_LIBRARIES} asio::asio Threads::Threads util)
@@ -60,7 +61,7 @@ set(CPACK_PACKAGE_VENDOR "DVMProject")
6061

6162
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "The DVM Host software provides the host computer implementation of a mixed-mode DMR, P25 and/or NXDN or dedicated-mode DMR, P25 or NXDN repeater system that talks to the actual modem hardware. The host software; is the portion of a complete Over-The-Air modem implementation that performs the data processing, decision making and FEC correction for a digital repeater.")
6263
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "DVMProject Authors")
63-
set(CPACK_DEBIAN_PACKAGE_VERSION "R04Hxx")
64+
set(CPACK_DEBIAN_PACKAGE_VERSION "R04Jxx")
6465
set(CPACK_DEBIAN_PACKAGE_RELEASE "0")
6566
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/dvmproject")
6667

@@ -76,6 +77,9 @@ include(CPack)
7677
#
7778
include(src/fne/CMakeLists.txt)
7879
add_executable(dvmfne ${common_INCLUDE} ${dvmfne_SRC})
80+
if (COMPILE_WIN32)
81+
target_sources(dvmfne PRIVATE ${dvmfne_RC})
82+
endif (COMPILE_WIN32)
7983
target_link_libraries(dvmfne PRIVATE common ${OPENSSL_LIBRARIES} asio::asio Threads::Threads)
8084
target_include_directories(dvmfne PRIVATE ${OPENSSL_INCLUDE_DIR} src src/fne)
8185

@@ -128,6 +132,9 @@ endif (ENABLE_TUI_SUPPORT AND (NOT DISABLE_TUI_APPS))
128132
#
129133
include(src/remote/CMakeLists.txt)
130134
add_executable(dvmcmd ${common_INCLUDE} ${dvmcmd_SRC})
135+
if (COMPILE_WIN32)
136+
target_sources(dvmcmd PRIVATE ${dvmcmd_RC})
137+
endif (COMPILE_WIN32)
131138
target_link_libraries(dvmcmd PRIVATE common ${OPENSSL_LIBRARIES} asio::asio Threads::Threads)
132139
target_include_directories(dvmcmd PRIVATE ${OPENSSL_INCLUDE_DIR} src src/remote)
133140

@@ -137,6 +144,7 @@ target_include_directories(dvmcmd PRIVATE ${OPENSSL_INCLUDE_DIR} src src/remote)
137144
include(src/bridge/CMakeLists.txt)
138145
add_executable(dvmbridge ${common_INCLUDE} ${bridge_SRC})
139146
if (COMPILE_WIN32)
147+
target_sources(dvmbridge PRIVATE ${bridge_RC})
140148
target_link_libraries(dvmbridge PRIVATE common vocoder ${OPENSSL_LIBRARIES} asio::asio Threads::Threads)
141149
else ()
142150
if (ARCH STREQUAL "arm64" OR ARCH STREQUAL "armhf")
@@ -153,6 +161,7 @@ target_include_directories(dvmbridge PRIVATE ${OPENSSL_INCLUDE_DIR} src src/brid
153161
include(src/patch/CMakeLists.txt)
154162
add_executable(dvmpatch ${common_INCLUDE} ${patch_SRC})
155163
if (COMPILE_WIN32)
164+
target_sources(dvmpatch PRIVATE ${patch_RC})
156165
target_link_libraries(dvmpatch PRIVATE common ${OPENSSL_LIBRARIES} asio::asio Threads::Threads)
157166
else ()
158167
target_link_libraries(dvmpatch PRIVATE common ${OPENSSL_LIBRARIES} dl asio::asio Threads::Threads)

src/CompilerOptions.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ option(DEBUG_NXDN_SACCH "" off)
3535
option(DEBUG_NXDN_UDCH "" off)
3636
option(DEBUG_NXDN_LICH "" off)
3737
option(DEBUG_NXDN_CAC "" off)
38+
option(DEBUG_NXDN_RTCH "" off)
3839
option(DEBUG_P25_PDU_DATA "" off)
3940
option(DEBUG_P25_HDU "" off)
4041
option(DEBUG_P25_LDU1 "" off)
@@ -96,6 +97,10 @@ if (DEBUG_NXDN_CAC)
9697
message(CHECK_START "NXDN CAC Debug")
9798
add_definitions(-DDEBUG_NXDN_CAC)
9899
endif (DEBUG_NXDN_CAC)
100+
if (DEBUG_NXDN_RTCH)
101+
message(CHECK_START "NXDN RTCH Debug")
102+
add_definitions(-DDEBUG_NXDN_RTCH)
103+
endif (DEBUG_NXDN_RTCH)
99104
if (DEBUG_P25_PDU_DATA)
100105
message(CHECK_START "P25 PDU Data Debug")
101106
add_definitions(-DDEBUG_P25_PDU_DATA)

src/bridge/CMakeLists.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# * GPLv2 Open Source. Use is subject to license terms.
55
# * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
66
# *
7-
# * Copyright (C) 2024 Bryan Biedenkapp, N2PLL
7+
# * Copyright (C) 2024,2025 Bryan Biedenkapp, N2PLL
88
# *
99
# */
1010
file(GLOB bridge_SRC
@@ -16,6 +16,14 @@ file(GLOB bridge_SRC
1616

1717
"src/bridge/network/*.h"
1818
"src/bridge/network/*.cpp"
19+
"src/bridge/win32/*.h"
1920
"src/bridge/*.h"
2021
"src/bridge/*.cpp"
2122
)
23+
24+
#
25+
# Windows Resource Scripts
26+
#
27+
file(GLOB bridge_RC
28+
"src/bridge/win32/*.rc"
29+
)

0 commit comments

Comments
 (0)