Commit graph

93 commits

Author SHA1 Message Date
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
4b46d87edb Add missing variable declaration 2024-03-31 22:26:34 +02:00
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
4f4128fbd3 test: fixed build errors 2024-03-31 18:01:00 +02:00
8441b12fbd rx: delay frequency estimation until history was fully refreshed 2024-03-30 22:10:13 +01:00
171a4a369c rx: fix header checksum verification 2024-03-30 22:07:08 +01:00
79d7f74dfc rx: use different PLL BW for header and data 2024-03-30 22:06:13 +01:00
bbf7bcf2f0 test/freq_est: add channel simulation 2024-03-30 22:05:02 +01:00
66c88bf889 Improvements to debug scripts 2024-03-30 22:04:26 +01:00
d9707ac4a9 test: add test_rx_file 2024-03-30 21:56:00 +01:00
dd5712eada Add options parsing module 2024-03-30 21:51:27 +01:00
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
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
ef25ca2388 Enable Hamming 8/4 code for the header 2024-01-05 21:29:41 +01:00
84c172abc7 Fixed iterative frequency refinement; count header errors 2024-01-05 21:28:38 +01:00
3a4be428b5 sdr: stop reading packets if the TX buffer is too full 2024-01-05 14:13:11 +01:00
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
a6f12d876b sdr: fixed RX sample data conversion 2024-01-05 13:48:41 +01:00
be5fa06950 Handle SIGTERM and SIGINT for graceful shutdown 2024-01-03 22:03:19 +01:00
ee63483b8f sdr: scale sample for HackRF API 2024-01-03 17:41:35 +01:00
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
8689ed5b27 Use fsleep instead of nanosleep 2024-01-03 17:29:51 +01:00
fb9c26ccd5 make.sh: allow passing parameters to make 2024-01-03 17:29:05 +01:00
5564f1751a Fixed TX gain setting 2024-01-03 17:04:47 +01:00
c9d53ed96e Ensure that buffer is full when transmission starts 2024-01-03 00:33:54 +01:00
628659511c sdr: properly flush the transmit buffers 2024-01-03 00:25:55 +01:00
497498acd2 rx: fix overflow in symbol buffer 2024-01-03 00:01:27 +01:00
ef0fad4335 Improved handling of up- and downsampling 2024-01-02 23:49:55 +01:00
d55e3ab902 sdr: release buffered data; set sampling rate 2024-01-02 23:25:14 +01:00
2b741acd8a Use libhackrf directly (not tested yet) 2024-01-02 22:49:16 +01:00
7995f5bef0 Print RX stats periodically instead of debug logging 2024-01-02 19:04:19 +01:00
112a8a1215 Improved logging and soapy stream handling 2023-05-20 22:01:26 +02:00
2b078a4147 Settings updated: 2 Msps, 10 ms TX backoff 2023-05-20 21:59:40 +02:00
a6530da0d0 make.sh: set build type to RelWithDebInfo 2023-05-20 21:58:16 +02:00
f5a367464f Optimized one-shot frequency synchronization
- Ramp-up length increased to 128 symbols (here is room for
  improvement!)
- Try to detect the frequency once during ramp-up. To do so, every
  second symbol is inverted (to remove the +/-1 symbol toggling) and the
  phase difference between neigboring resulting symbols is checked. When
  it is low enough for all symbols, the frequency is estimated and
  corrected. When frequency estimation was done, it is not retried for a
  number of incoming symbols in order to allow the timing estimator to
  converge again.
- This approach was verified in a simulated loopback test with frequency
  offset and AWGN.
2023-05-17 22:28:18 +02:00
b5bae84994 utils: new and improved plotting scripts 2023-05-17 22:27:40 +02:00
a7db93ab9e Added test for frequency estimator 2023-05-17 22:26:46 +02:00
e42602633e freq_est: implement L&R-based symbol-independent frequency estimation
The RX chain uses this to acquire an initial estimate of the carrier frequency. The estimate is adjusted on every incoming symbol until a preamble is found.
2023-05-14 15:53:14 +02:00
3b7628882c utils: open output file in binary mode 2023-05-12 13:49:20 +02:00
d17b7b3309 RX: added some asserts 2023-05-12 13:48:18 +02:00
afb25a69d8 Use dynamic linking for liquid-dsp again 2023-05-12 13:47:05 +02:00
7d5b67a257 Add layer 1 software loopback test 2023-05-12 13:46:02 +02:00
c8e0516e80 Implement time-based carrier sensing
In the following events, the modem cannot switch to transmit mode for the
given time:

- after a preamble has been received, for 500 ms
- after a packet has been successfully decoded, for 1 ms
- after receive mode was initially enabled, for 500 ms

Note that the times are that long to work around the RX/TX switching of
the hackrf and can be hopefully reduced to <10 milliseconds in a later
version.
2022-05-07 21:17:53 +02:00
886a78018f RX: write correct sample rate to debug file 2022-05-07 20:13:01 +02:00
b2d6c713e1 Briefly start in TX mode to ensure correct RX frequency
Obviously SoapyHackRF does not set the correct RX frequency on startup.
This is a crude but effective workaround.
2022-05-07 20:12:03 +02:00
ec99cedaf4 rx: improvements made during on-air testing
- limit frequency adjustment range
- pre-filter the baseband signal to remove out-of-band interference
- reset the frequency acquisition periodically (every 30s) if no preamble is found
2022-04-10 21:58:32 +02:00
2d0bf7eeda sdr: fixed enumeration output 2022-04-08 16:17:17 +02:00
96f10f7fb6 sdr: add gain configuration 2022-04-08 16:17:00 +02:00
715cda83a8 RX: process samples in larger chunks 2022-04-07 21:17:37 +02:00
3e74093fc7 Retry transmitting zeros 2022-04-07 20:58:08 +02:00