Commit graph

155 commits

Author SHA1 Message Date
0fc63f5f69 HAM-64 address format implementation 2024-07-01 20:58:20 +02:00
b6f040ebc7 Implement layer 2 header packing and unpacking 2024-06-30 17:39:56 +02:00
cadfd63997 Start defining layer2 structures 2024-06-30 16:18:11 +02:00
2fefbc7f8c doc: ignore generated diagrams 2024-06-30 15:57:47 +02:00
1840b3099c doc: add some message sequence charts
- Connection establishment
- Connection close
- Packet transfer
2024-06-22 01:29:29 +02:00
95d9eda0a0 doc: add introduction + some more ideas 2024-06-08 11:49:43 +02:00
dde4e5ba7d doc: moved CRC from layer 1 to layer 2 2024-06-08 11:34:52 +02:00
c45eb4e334 doc: define connectionless frame type 2024-06-08 11:34:52 +02:00
6fe9fdbe2b doc: minor clarifications 2024-06-08 11:34:52 +02:00
8fb345b27c doc: automatic packet repetition algorithm 2024-06-08 11:34:52 +02:00
6065157023 doc: added Makefile 2024-06-08 11:34:52 +02:00
698cf74f3a doc: document data whitening procedure 2024-06-08 11:34:52 +02:00
ccc4e452ff doc: start defining the layer 2 2024-06-08 11:34:52 +02:00
fe5bcabd14 doc: document burst format 2024-06-08 11:34:52 +02:00
be0cac13c1 Starting to write the documentation with AsciiDoc 2024-06-08 11:34:52 +02:00
fd17ef3c1e Use full preamble for frequency estimation 2024-06-08 01:57:43 +02:00
26a2558535 Add differential part to coarse frequency control 2024-06-08 01:54:42 +02:00
2f2834026e Fix size of transmitted packets 2024-06-01 16:47:10 +02:00
de0f3620e6 Move hexdump() function to utils 2024-06-01 16:04:17 +02:00
692780b313 setup_tundev.sh: fix shebang 2024-05-31 20:09:53 +02:00
24bc1f8140 Fixed packet size with appended CRC 2024-05-31 18:36:16 +02:00
f6404dd0ea Move payload CRC to layer 2
Layer 1 only does decoding of the FEC, but the CRC check for data integrity is
done in layer 2 now.
2024-05-31 17:25:50 +02:00
0e8e049e0a Replace all perror() calls with LOG() 2024-05-30 11:02:08 +02:00
65daa182ef Use the new logging system everywhere 2024-05-30 10:49:43 +02:00
d6eaef91cd Switch to new logging system
The new system supports:

- time-tagging of log messages
- message priority levels with a threshold below which they are not printed
- colored output of the message priority for easy identification
- compile-time disabling of all logging per C module

So far, it is integrated in the main and rx modules which generate most
messages. Other modules will be migrated in the future.
2024-05-28 23:53:11 +02:00
d60788b6ad Config changes known to work with two directly connected HackRFs 2024-05-28 20:00:46 +02:00
91facbf699 rx: reset internal state when restarting after a transmission 2024-05-28 19:55:21 +02:00
d5aeb6c0bc visualizer: make it optional to dup JSON to file 2024-05-28 08:59:06 +02:00
570c379bc5 visualizer: always use === for comparisons 2024-05-28 08:51:56 +02:00
21220deed7 visualizer: draw marker in history plot after selecting a packet 2024-05-28 08:51:56 +02:00
7024964cae visualizer: use multiple plots for history 2024-05-28 08:51:56 +02:00
a2e23fceff visualizer: limit history plot to 300 packets
The drawing gets slow with too many points.
2024-05-28 08:51:56 +02:00
bc2f5ca76c visualizer: assign id to identify packets
The id is displayed in the graph, the packet information and in the
trace (on mouse over).
2024-05-28 08:51:56 +02:00
c5024a0b30 visualizer: skip redraws when they take too long 2024-05-28 08:51:56 +02:00
c63f7e8b57 visualizer: treat -1e38 as NaN
I considered updating jsonlogger.c to represent NaN as "null" in the
JSON. However, this makes the hand-written JSON generator much more
complicated.
2024-05-28 08:51:56 +02:00
53190cd17c visualizer: don't use fixed scales
We might get (unexpected) input which is outside of the usual range.
2024-05-28 08:51:56 +02:00
6fc4df205c Add HTML/JS visualizer with plots and graphs 2024-05-28 08:51:56 +02:00
5fb5a2908d jsonlogger: increase pipe buffer to reduce likelihood of corrupted messages
Our JSON messages can get rather large which can cause a buffer overrun
when the reading program is not scheduled at the same time. When the
kernel returns EAGAIN we abort writing the current JSON message.
However, the unfinished (and thus invalid) JSON message is still in the
pipe and will be processed by the reading program.

Increase the pipe buffer from the default 65536 to reduce the likelihood
of this happening. It's difficult to completely prevent the issue as we
don't want to slow down the main program due to slow logging.
2024-05-28 08:51:56 +02:00
657ac4faa3 test_rx_file: add JSON logging (controllable via JSONLOGGER define) 2024-05-28 08:51:56 +02:00
33df7132ef rx: tag most debug messages with the sample index 2024-05-25 18:24:40 +02:00
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
ca241f266b rx: add monotonic sample counter for debug messages 2024-05-25 18:15:23 +02:00
0237ea6494 tests: fix compile 2024-05-09 18:32:51 +02:00
a4e55f781b Always NUL-terminate path in jsonlogger_init() 2024-05-09 18:32:26 +02:00
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
a42d795002 Dump debug info from the RX via jsonlogger 2024-05-07 21:40:29 +02:00
5bcd3a6933 jsonlogger: add test file and improve open/close behaviour 2024-05-05 18:40:50 +02:00
251aca7738 Basic implementation of a JSON logger module 2024-05-05 18:09:00 +02:00
033c26bcae preamble: invert symbols to match BPSK convention 2024-04-27 22:42:32 +02:00
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