Commit graph

207 commits

Author SHA1 Message Date
Thomas Kolb 02a2afbc5b connection: do not send ACKs for empty packets 2024-12-12 19:44:07 +01:00
Thomas Kolb 307fdc657d connection: handle ACKs from empty packets correctly 2024-12-12 19:44:07 +01:00
Thomas Kolb 547a39508b Handle received packets 2024-12-12 19:44:07 +01:00
Thomas Kolb be607acbc2 connection: use correct addresses for empty packets 2024-12-12 19:44:07 +01:00
Thomas Kolb 729d61feb7 l2udp: Use the new layer2 connection module 2024-12-12 19:44:07 +01:00
Thomas Kolb 3189aac2ab Pass received packets to layer 2 processing 2024-12-12 19:44:07 +01:00
Thomas Kolb 3c7caeda1b Basic infrastructure for layer2-over-udp test 2024-12-12 19:44:07 +01:00
Thomas Kolb a455fac050 connection.h: fix comment 2024-09-20 23:38:54 +02:00
Thomas Kolb 44921bd65d Decrease the AGC bandwidth during signal acquisition
All checks were successful
/ build-hamnet70 (push) Successful in 32s
/ build-doc (push) Successful in 29s
/ deploy-doc (push) Has been skipped
This prevents rapid squelch activation/deactivation if only noise is present.
The AGC bandwidth was tuned such that it still allows preambles to be detected
reliably.
2024-09-20 23:10:49 +02:00
Thomas Kolb ccd9af6664 Delay squelch activation by 2 ms
Delaying the squelch activation by 2 ms helps to avoid dropped samples if the
signal is barely above the squelch threshold.
2024-09-20 23:08:43 +02:00
Thomas Kolb 4dc2c60c8b rx: reduce squelch threshold from 10 to 6 dB
All checks were successful
/ build-hamnet70 (push) Successful in 27s
/ build-doc (push) Successful in 19s
/ deploy-doc (push) Has been skipped
During tests it was determined that this is much more reliable. The theory is
that the first packet of a burst was frequently not detected because the
squelch opened too late if the channel was very noisy.

Unfortunately, the squelch now opens very often even if no signal is present.
This will be improved in the future.
2024-09-12 23:52:33 +02:00
Thomas Kolb 706a1eb437 freq_est: make ramp-up delta phase check more strict
This should help with occasional jumps in the estimated carrier frequency on
receivers running frequency tracking.
2024-09-12 23:49:57 +02:00
Thomas Kolb eb802629a1 layer1/rx: calculate EVM during header and data reception 2024-09-07 00:48:11 +02:00
Thomas Kolb 79c340c20d connection: add state checks 2024-08-25 23:27:22 +02:00
Thomas Kolb fc9e5c5229 Combine layer2_rx and layer2_tx in a new connection module
The new module is not used yet, but this is a preparation for the future
multi-client networking support.
2024-08-25 22:26:56 +02:00
Thomas Kolb 899152a530 Remove config.h from Git; must be adapted by the user
A template for the config file is provided in src/config.h.template. It must be
copied to src/config.h and adapted for force users to set their own station
call sign.
2024-08-25 20:26:41 +02:00
Thomas Kolb c52d0766d7 Remove obsolete compile_flags.txt 2024-08-23 19:52:24 +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
Thomas Kolb 325abdbd02 packet_queue: allow max. 15 packets to be queue (transmit window)
16 is not allowed because it leads to an overflow in sequence numbers, making
them ambiguous.
2024-08-09 22:22:01 +02:00
Thomas Kolb 6d9068f63d define INTERLEAVE_DISTANCE 2024-08-09 22:18:20 +02:00
Thomas Kolb 2ddb8aa18c Randomize retransmit time 2024-08-09 22:16:14 +02:00
Thomas Kolb d2ef6d9741 Remove empty packets from the queue after their first transmission 2024-07-27 00:50:04 +02:00
Thomas Kolb 04dcfff6fd Do not transmit an empty packet if an empty packet was received 2024-07-27 00:33:47 +02:00
Simon Ruderich 9990aa5fbb main: check return value of layer2_tx_fill_packet_queue() 2024-07-24 20:20:36 +02:00
Simon Ruderich 52f45cb433 layer2: check return values when adding empty packets 2024-07-24 20:20:36 +02:00
Simon Ruderich 4e2815923c layer2: handle invalid message types just in case 2024-07-23 09:24:32 +02:00
Simon Ruderich 766caf7e07 layer2/packet_structs: use variable to reduce duplication 2024-07-23 09:15:56 +02:00
Simon Ruderich b3a49fe0ba layer2: update comments, use constant 2024-07-23 09:15:34 +02:00
Simon Ruderich 8aacbaf8c3 layer2/packet_queue: remove unused function packet_queue_can_add_packet() 2024-07-23 08:41:42 +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 10a869d1a2 Layer 2: send Empty Packet acknowledgements if there’s nothing else to transmit 2024-07-22 22:19:23 +02:00
Thomas Kolb c9916c08da Add a simple interleaver implementation (not used yet) 2024-07-21 17:23:15 +02:00
Thomas Kolb 04f29b94bf rx: show AGC gain after preamble, header and data 2024-07-20 22:33:08 +02:00
Thomas Kolb 576cdbfac5 Added ham64.c/.h to CMakeLists.txt 2024-07-20 22:32:01 +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 38010ea672 rx-debugging: always dump symbols on packet boundaries 2024-07-20 22:30:27 +02:00
Thomas Kolb 12e727be00 packet_structs: add function to dump a packet header to the log 2024-07-20 22:29:04 +02:00
Thomas Kolb 3068db1d50 Handle retransmit timeouts 2024-07-20 01:04:03 +02:00
Thomas Kolb fe684f7a1d Fixed stack overflow in transmit() 2024-07-20 01:03:31 +02:00
Thomas Kolb db2700c0f7 layer2_decode_packet_header: fixed rx_seq_nr readout 2024-07-20 01:02:42 +02:00
Thomas Kolb bfe1cce6e3 packet_queue: wrap sequence number in packet_queue_delete() 2024-07-20 01:01:55 +02:00
Thomas Kolb ac0fb54623 layer2_tx: fixed logging 2024-07-20 01:01:35 +02:00
Thomas Kolb 3b7d6baa74 layer2_tx: fixed packet size 2024-07-20 01:01:01 +02:00
Thomas Kolb bcbcf5aeff Layer 2: Added logging for retransmit handling 2024-07-20 00:26:53 +02:00
Thomas Kolb d449e31586 logger: show module name 2024-07-20 00:04:32 +02:00
Thomas Kolb 041255e15f layer2_tx: Fixed stack-use-after-return 2024-07-19 22:26:02 +02:00
Thomas Kolb 725a0ffd21 Ignore the squelch while receiving a packet
Before this commit, samples could be dropped during packet reception, which for
sure destroys the current packet and potentially the following one. Now samples
are stored even if the squelch „closes“, and decoding will potentially fail due
to high noise, but not due to missing samples.
2024-07-19 22:11:29 +02:00
Thomas Kolb 60d7fbf373 setup_tundev: limit TX queue len to 16 2024-07-19 21:59:38 +02:00
Thomas Kolb 48f061e334 Handle sequence numbers
This should enable basic retransmission handling.
2024-07-18 23:26:57 +02:00