Commit graph

44 commits

Author SHA1 Message Date
Thomas Kolb e66dae48a7 connection: process beacons and send connection requests
Some checks failed
/ build-hamnet70 (push) Failing after 17s
/ build-doc (push) Successful in 17s
/ deploy-doc (push) Has been skipped
2024-12-10 22:39:26 +01:00
Thomas Kolb ce55b34929 Fixed all warnings
Some checks failed
/ build-hamnet70 (push) Failing after 17s
/ build-doc (push) Successful in 16s
/ deploy-doc (push) Has been skipped
2024-12-07 20:39:16 +01:00
Thomas Kolb 1c8d652e01 layer2: Remove event callbacks
Some checks failed
/ build-hamnet70 (push) Failing after 23s
/ build-doc (push) Successful in 29s
/ deploy-doc (push) Has been skipped
Instead, connection and digipeater now update a event code passed by reference
to the maintain() function. This was the only place where the callback was
called before.

Minor side effect: maintain must be called multiple times if multiple events
trigger at the same time.
2024-12-03 22:18:46 +01:00
Thomas Kolb aa5ffee872 digipeater: remove empty packet from current connection after burst 2024-12-03 21:37:29 +01:00
Thomas Kolb 627eed7426 Remove data callbacks in connection and digipeater modules
Some checks failed
/ build-hamnet70 (push) Failing after 31s
/ build-doc (push) Successful in 49s
/ deploy-doc (push) Has been skipped
2024-11-17 18:26:18 +01:00
Thomas Kolb c1af786a70 WIP: handle packets from the TUN device in digipeater
Some checks failed
/ build-hamnet70 (push) Failing after 18s
/ build-doc (push) Successful in 17s
/ deploy-doc (push) Has been skipped
This is only a backup commit.
2024-11-10 23:13:54 +01:00
Thomas Kolb 49fe1fff29 l2udptest_client: fix compilation
Some checks failed
/ build-hamnet70 (push) Failing after 17s
/ build-doc (push) Successful in 17s
/ deploy-doc (push) Has been skipped
2024-11-10 21:40:07 +01:00
Thomas Kolb 93d74be000 WIP: managing multiple connections
Some checks failed
/ build-hamnet70 (push) Failing after 18s
/ build-doc (push) Successful in 20s
/ deploy-doc (push) Has been skipped
Working towards handling multiple connections. A lot is still missing.
2024-11-10 17:02:14 +01:00
Thomas Kolb 03912a6185 Do all time calculations in uint64_t
This prevents loss of precision that occurs with double-precision floats if
timestamps become very large. Timestamps are already large if they contain a
UNIX time value (requires 60 bits; double has 53 bit resolution).
2024-11-02 16:17:52 +01:00
Thomas Kolb 4281ae4be7 l2udptest: replace by two programs: client and digipeater
Both are identical so far, this is just an infrastructure commit.
2024-11-02 16:07:25 +01:00
Thomas Kolb 04397c2c95 Remove empty packet from queue after burst was transmitted
Some checks failed
/ build-hamnet70 (push) Failing after 28s
/ build-doc (push) Successful in 15s
/ deploy-doc (push) Has been skipped
2024-09-22 18:46:32 +02:00
Thomas Kolb f0770baf31 Handle received packets
Some checks failed
/ build-hamnet70 (push) Failing after 29s
/ build-doc (push) Successful in 16s
/ deploy-doc (push) Has been skipped
2024-09-22 15:34:50 +02:00
Thomas Kolb 0a77109ab5 l2udp: Use the new layer2 connection module
Some checks failed
/ build-hamnet70 (push) Failing after 29s
/ build-doc (push) Successful in 16s
/ deploy-doc (push) Has been skipped
2024-09-22 15:24:20 +02:00
Thomas Kolb 85ec105d0f Pass received packets to layer 2 processing
All checks were successful
/ build-hamnet70 (push) Successful in 29s
/ build-doc (push) Successful in 16s
/ deploy-doc (push) Has been skipped
2024-09-22 14:45:24 +02:00
Thomas Kolb ec6dd92444 Basic infrastructure for layer2-over-udp test
All checks were successful
/ build-hamnet70 (push) Successful in 29s
/ build-doc (push) Successful in 17s
/ deploy-doc (push) Has been skipped
2024-09-22 14:32:49 +02:00
Thomas Kolb 2e91fd7c42 Apply free software+documentation licenses
All code is now licensed under GPLv3+. The documentation is licensed under
CC BY-SA 4.0.

This is now officially free software! \o/
2024-08-23 11:53:40 +02:00
Thomas Kolb 017eb221f1 Integrate the interleaver 2024-08-16 22:14:07 +02:00
Simon Ruderich 9845514a46 layer2/packet_queue: permit using full queue size
Previously, only PACKET_QUEUE_SIZE - 1 elements could be stored.
2024-07-23 08:41:25 +02:00
Thomas Kolb c9916c08da Add a simple interleaver implementation (not used yet) 2024-07-21 17:23:15 +02:00
Thomas Kolb 77b24cf591 tests: Added variant of rx_file test for layer2 debugging 2024-07-20 22:31:13 +02:00
Thomas Kolb 2348cd0c88 Implement a packet queue (incl. tests) 2024-07-11 23:23:18 +02:00
Simon Ruderich 62d81fc2cc test_ham64: check results using assertions 2024-07-04 21:16:20 +02:00
Thomas Kolb 4bb4017623 HAM-64 address format implementation 2024-07-01 21:03:43 +02:00
Thomas Kolb de0f3620e6 Move hexdump() function to utils 2024-06-01 16:04:17 +02:00
Thomas Kolb 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
Thomas Kolb 0e8e049e0a Replace all perror() calls with LOG() 2024-05-30 11:02:08 +02:00
Thomas Kolb 65daa182ef Use the new logging system everywhere 2024-05-30 10:49:43 +02:00
Thomas Kolb 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
Simon Ruderich 657ac4faa3 test_rx_file: add JSON logging (controllable via JSONLOGGER define) 2024-05-28 08:51:56 +02:00
Simon Ruderich 0237ea6494 tests: fix compile 2024-05-09 18:32:51 +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
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 2768e21849 test_rx_file: set nco frequency 2024-04-20 01:14:17 +02:00
Thomas Kolb 4f4128fbd3 test: fixed build errors 2024-03-31 18:01:00 +02:00
Thomas Kolb bbf7bcf2f0 test/freq_est: add channel simulation 2024-03-30 22:05:02 +01:00
Thomas Kolb d9707ac4a9 test: add test_rx_file 2024-03-30 21:56:00 +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 a7db93ab9e Added test for frequency estimator 2023-05-17 22:26:46 +02:00
Thomas Kolb 7d5b67a257 Add layer 1 software loopback test 2023-05-12 13:46:02 +02:00
Thomas Kolb 513a399ae4 Refactoring: moved layer1-related stuff to subdirectory 2022-02-13 20:05:47 +01:00
Thomas Kolb f2c95a125d Use new frequency+phase estimation method for preamble 2022-02-06 18:04:31 +01:00
Thomas Kolb 9a1107ff38 Added correlator + small test program 2022-01-22 22:42:05 +01:00