Commit graph

12 commits

Author SHA1 Message Date
Thomas Kolb 48f061e334 Handle sequence numbers
This should enable basic retransmission handling.
2024-07-18 23:26:57 +02:00
Thomas Kolb a6464a28b8 Layer 2 received packet handling 2024-07-18 22:56:42 +02:00
Thomas Kolb 65daa182ef Use the new logging system everywhere 2024-05-30 10:49:43 +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
Thomas Kolb 2b741acd8a Use libhackrf directly (not tested yet) 2024-01-02 22:49:16 +01:00
Thomas Kolb 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
Thomas Kolb 85663d5304 Added SDR abstraction layer 2022-03-03 22:19:03 +01:00
Thomas Kolb 934b18e382 Integrate TUN device interface
Packets are now read from the TUN device and transmitted. The signal
goes through a channel emulator and is then received + decoded. If
decoding is successful, the result is written back to the TUN device
(which does not make much sense, but works for testing).

Unfortunately, there still seems to be a problem in the receiver: packet
loss is very high even at extremely high SNRs.
2022-02-27 20:21:14 +01:00
Thomas Kolb 8a8ddc5ea3 rx: integrate AGC 2022-02-27 16:59:14 +01:00
Thomas Kolb a60b8b1f87 Moved results.h to src/ top level 2022-02-27 16:02:51 +01:00
Thomas Kolb 513a399ae4 Refactoring: moved layer1-related stuff to subdirectory 2022-02-13 20:05:47 +01:00
Thomas Kolb 9ba470adeb Initial implementation of packet modulation
Not really tested yet…
2021-10-17 19:26:38 +02:00