Thomas Kolb
5f8346d290
agc: update squelch threshold more often
...
This fixes the noise level tracking in test cases like the loopback
test where the signal has already ramped up before the first noise level
update.
2024-05-25 18:16:24 +02:00
Thomas Kolb
ca241f266b
rx: add monotonic sample counter for debug messages
2024-05-25 18:15:23 +02:00
Simon Ruderich
0237ea6494
tests: fix compile
2024-05-09 18:32:51 +02:00
Simon Ruderich
a4e55f781b
Always NUL-terminate path in jsonlogger_init()
2024-05-09 18:32:26 +02:00
Simon Ruderich
f689c4ec15
Fix compiler warnings
...
- implicit declaration of built-in function 'strncpy'
- control reaches end of non-void function
- assignment to 'void (*)(int, siginfo_t *, void *)' from incompatible pointer type 'void (*)(int)'
2024-05-09 14:37:39 +02:00
Thomas Kolb
a42d795002
Dump debug info from the RX via jsonlogger
2024-05-07 21:40:29 +02:00
Thomas Kolb
5bcd3a6933
jsonlogger: add test file and improve open/close behaviour
2024-05-05 18:40:50 +02:00
Thomas Kolb
251aca7738
Basic implementation of a JSON logger module
2024-05-05 18:09:00 +02:00
Thomas Kolb
033c26bcae
preamble: invert symbols to match BPSK convention
2024-04-27 22:42:32 +02:00
Thomas Kolb
c6ea578808
sdr: fix loss of samples due to unaligned buffer reads
...
sdr_rf_to_baseband() processes samples in blocks of size SDR_OVERSAMPLING. If
the total number of samples does not align with this block size, the leftover
samples are lost and phase and timing glitches result.
To mitigate this, sdr_receive() now has an additional parameter that specifies
the alignment of the returned data. The number of samples returned is always a
multiple of this alignment factor. This feature is used to ensure that the
number of returned samples is a multiple of SDR_OVERSAMPLING and therefore no
samples are lost in sdr_rf_to_baseband().
sdr_rf_to_baseband() now has an additional check that makes the function fail
if the alignment is incorrect.
2024-04-27 20:08:04 +02:00
Simon Ruderich
a3928d0ad0
Fix compiler warnings
...
- passing argument 2 of 'crc_generate_key' discards ‘const’ qualifier;
a bit ugly but signature of crc_generate_key() is wrong
- variable 'linearized_history' set but not used
- typedef is unused
- superfluous arguments to DEBUG_LOG() and fprintf()
- implicit declaration of function 'memset'
- unused arguments
2024-04-27 12:22:33 +02:00
Simon Ruderich
b3ceb50b23
Fix one-byte buffer-overflow in layer1_rx_process()
2024-04-27 12:17:58 +02:00
Thomas Kolb
c250944d79
transmission: fix ramp-down length calculation
2024-04-26 22:40:41 +02:00
Thomas Kolb
e22b9ed4c5
rx: fix squelch level tracking
...
Thanks to rudi_s for reporting this.
2024-04-26 21:50:07 +02:00
Thomas Kolb
d3b0ac1e0a
rx: signal busy as long as squelch is open
2024-04-26 21:47:41 +02:00
Thomas Kolb
90ed7dc0a8
Re-add accidentally removed constants
2024-04-20 01:31:21 +02:00
Simon Ruderich
2768e21849
test_rx_file: set nco frequency
2024-04-20 01:14:17 +02:00
Simon Ruderich
79fc1c4f59
utils: fix numpy deprecation warnings
2024-04-20 01:14:17 +02:00
Thomas Kolb
7d1a927425
Calculate HackRF center frequency correctly
2024-04-20 01:07:21 +02:00
Thomas Kolb
32632914df
Prevent TX exception in QPSK mode
...
QPSK-modulated packets require more samples, which must be available in the TX
buffer. Therefore we increase the required free space.
2024-04-20 01:04:13 +02:00
Thomas Kolb
11f19c03a0
Fix TX handling for multiple packets
...
- (only) time-based end-of-transmission tracking
- removed tx_done flag
- count zero-buffers correctly in time-tracking
- add 10 ms of headroom so the transmission does not stop before buffer was
completely transmitted (race condition)
- fix race condition with tx_start_time in sdr_start_tx()
- simplified packet queuing (no chunking)
- read multiple packets before starting transmission (to fill buffers initially)
Thanks to rudi_s!
2024-04-20 00:55:39 +02:00
Thomas Kolb
1f5f922cdf
Adjust squelch level and rampup
2024-04-12 21:50:49 +02:00
Thomas Kolb
91db4e1f75
rx: implement squelch + symsync reset
...
Whenever the squelch opens, the symsync is reset to prevent lock-up in
that module due to noise.
2024-04-08 22:03:09 +02:00
Thomas Kolb
4b46d87edb
Add missing variable declaration
2024-03-31 22:26:34 +02:00
Thomas Kolb
93fd8aebbc
Lock TX to RX frequency for clients
...
Central nodes (“base stations”) do no longer do coarse frequency estimation,
but do only use the preamble + PLL for fine offset tracking.
2024-03-31 22:23:04 +02:00
Thomas Kolb
4f4128fbd3
test: fixed build errors
2024-03-31 18:01:00 +02:00
Thomas Kolb
8441b12fbd
rx: delay frequency estimation until history was fully refreshed
2024-03-30 22:10:13 +01:00
Thomas Kolb
171a4a369c
rx: fix header checksum verification
2024-03-30 22:07:08 +01:00
Thomas Kolb
79d7f74dfc
rx: use different PLL BW for header and data
2024-03-30 22:06:13 +01:00
Thomas Kolb
bbf7bcf2f0
test/freq_est: add channel simulation
2024-03-30 22:05:02 +01:00
Thomas Kolb
66c88bf889
Improvements to debug scripts
2024-03-30 22:04:26 +01:00
Thomas Kolb
d9707ac4a9
test: add test_rx_file
2024-03-30 21:56:00 +01:00
Thomas Kolb
dd5712eada
Add options parsing module
2024-03-30 21:51:27 +01:00
Thomas Kolb
07555edfdf
Add CRC8 to the header
...
This should prevent wrong decodings of modcod and packet length, which may disrupt decoding of directly following packets.
2024-01-07 00:02:26 +01:00
Thomas Kolb
16aa2ce92c
correlator: improved phase estimation
...
The phase is now calculated based on the preamble correlation directly instead
of the method of the frequency estimator.
2024-01-06 23:54:41 +01:00
Thomas Kolb
ef25ca2388
Enable Hamming 8/4 code for the header
2024-01-05 21:29:41 +01:00
Thomas Kolb
84c172abc7
Fixed iterative frequency refinement; count header errors
2024-01-05 21:28:38 +01:00
Thomas Kolb
3a4be428b5
sdr: stop reading packets if the TX buffer is too full
2024-01-05 14:13:11 +01:00
Thomas Kolb
e807f0617b
rx: skip zero-length packets
...
If passed on, these cause a segmentation fault in the channel decoder. As
zero-length packets currently make no real sense in this protocol, they are
ignored now.
2024-01-05 13:49:50 +01:00
Thomas Kolb
a6f12d876b
sdr: fixed RX sample data conversion
2024-01-05 13:48:41 +01:00
Thomas Kolb
be5fa06950
Handle SIGTERM and SIGINT for graceful shutdown
2024-01-03 22:03:19 +01:00
Thomas Kolb
ee63483b8f
sdr: scale sample for HackRF API
2024-01-03 17:41:35 +01:00
Thomas Kolb
ac087634dd
sdr: ensure that all samples were transmitted before TX is stopped
...
This is done by tracking the time that the transmitter must stay on based on
the number of samples to be transmitted and the sampling rate.
2024-01-03 17:32:51 +01:00
Thomas Kolb
8689ed5b27
Use fsleep instead of nanosleep
2024-01-03 17:29:51 +01:00
Thomas Kolb
fb9c26ccd5
make.sh: allow passing parameters to make
2024-01-03 17:29:05 +01:00
Thomas Kolb
5564f1751a
Fixed TX gain setting
2024-01-03 17:04:47 +01:00
Thomas Kolb
c9d53ed96e
Ensure that buffer is full when transmission starts
2024-01-03 00:33:54 +01:00
Thomas Kolb
628659511c
sdr: properly flush the transmit buffers
2024-01-03 00:25:55 +01:00
Thomas Kolb
497498acd2
rx: fix overflow in symbol buffer
2024-01-03 00:01:27 +01:00
Thomas Kolb
ef0fad4335
Improved handling of up- and downsampling
2024-01-02 23:49:55 +01:00