Commit graph

16 commits

Author SHA1 Message Date
Thomas Kolb d60788b6ad Config changes known to work with two directly connected HackRFs 2024-05-28 20:00:46 +02:00
Thomas Kolb ef25ca2388 Enable Hamming 8/4 code for the header 2024-01-05 21:29:41 +01:00
Thomas Kolb 5564f1751a Fixed TX gain setting 2024-01-03 17:04:47 +01:00
Thomas Kolb 2b078a4147 Settings updated: 2 Msps, 10 ms TX backoff 2023-05-20 21:59:40 +02: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 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
Thomas Kolb 96f10f7fb6 sdr: add gain configuration 2022-04-08 16:17:00 +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 890baf577f Moved config.h to src/ top level 2022-02-27 18:41:16 +01:00
Thomas Kolb 513a399ae4 Refactoring: moved layer1-related stuff to subdirectory 2022-02-13 20:05:47 +01:00
Thomas Kolb 87b844a2da Implement CRC check and phase tracking 2022-02-12 21:58:53 +01:00
Thomas Kolb b6713909f7 Make initial frequency sync much faster
The NCO frequency is now only adjusted every 8 symbols. That means that
the frequency error over the last 8 symbols before the adjustment is
(almost) constant, giving a good estimation result. Therefore, the
adjustment factor can be much larger than previously, leading to faster
acquisition time.
2022-01-30 20:23:41 +01:00
Thomas Kolb c1dd039d6b First shot at frequency synchronization
Supports only the BPSK part so far (ramp-up, preamble).
2022-01-30 20:05:20 +01:00
Thomas Kolb d522a1d6bd Implemented pulse shaping
The pulse shaper currently uses an RRC filter with beta=0.2.
2022-01-29 22:05:17 +01:00
Thomas Kolb 9ba470adeb Initial implementation of packet modulation
Not really tested yet…
2021-10-17 19:26:38 +02:00