Thomas Kolb
627eed7426
Remove data callbacks in connection and digipeater modules
/ 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
e3a06685e4
digipeater: rename interval to cycle
...
Interval suggests a regular timing structure which is not intended in this
construct and therefore is misleading.
2024-11-17 17:05:07 +01:00
Thomas Kolb
c5aa117240
digipeater: improve beacon handling
2024-11-17 17:03:20 +01:00
Thomas Kolb
8a4619bb0b
digipeater: enqueue packets in the correct connection queue
...
/ build-hamnet70 (push) Failing after 17s
/ build-doc (push) Successful in 18s
/ deploy-doc (push) Has been skipped
So far, only IPv6 is supported.
2024-11-14 22:28:59 +01:00
Thomas Kolb
c1af786a70
WIP: handle packets from the TUN device in digipeater
...
/ 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
61814584a2
tundev: remove IFF_NO_PI
...
/ build-hamnet70 (push) Failing after 18s
/ build-doc (push) Successful in 17s
/ deploy-doc (push) Has been skipped
Without this flag the kernel adds packet information to each packet. The
interesting part of that information is the EtherType of the packet, which
simplifies handling.
2024-11-10 23:10:32 +01:00
Thomas Kolb
49fe1fff29
l2udptest_client: fix compilation
/ 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
4862c09bdd
connection: calculate IPv6 address for peer
2024-11-10 21:39:15 +01:00
Thomas Kolb
e44cfb722d
Add missing call to digipeater_end_interval()
/ build-hamnet70 (push) Failing after 17s
/ build-doc (push) Successful in 17s
/ deploy-doc (push) Has been skipped
2024-11-10 21:01:13 +01:00
Thomas Kolb
3a8f469e8e
digipeater: add one-shot packet queue and interval handling
...
/ build-hamnet70 (push) Failing after 18s
/ build-doc (push) Successful in 17s
/ deploy-doc (push) Has been skipped
The oneshot queue is for connection management frames that are only sent once,
at the beginning of the next burst. An example is the Connection Reset packet.
Intervals define the boundary between the handling of different connections.
The interval can be either ended by a packet with TX Request set, or by a
timeout. In either case, forwarding of packets to the current connection stops
and the connection is re-scheduled to a later point in time.
2024-11-10 20:18:10 +01:00
Thomas Kolb
93d74be000
WIP: managing multiple connections
...
/ 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
31a627d434
WIP: digipeater module managing multiple connections
...
/ build-hamnet70 (push) Failing after 18s
/ build-doc (push) Successful in 17s
/ deploy-doc (push) Has been skipped
Backup commit. This is a basic setup with lots of TODOs and errors. Will not
compile yet.
2024-11-03 14:40:11 +01:00
Thomas Kolb
bfdb174324
l2/connection: refactoring
...
/ build-hamnet70 (push) Failing after 18s
/ build-doc (push) Successful in 18s
/ deploy-doc (push) Has been skipped
- split handle_packet() in two functions: the first does basic checks and calls
the second one. This allows to do the basic checks externally (in the
multi-connection management module) without duplicating them.
- use the new layer2_encode_packet() function.
2024-11-03 14:35:01 +01:00
Thomas Kolb
0345dc589b
l2/packet_structs: add function to encode a complete packet
2024-11-03 14:34:03 +01:00
Thomas Kolb
8c79185df6
Handle retransmits inside the connection module
2024-11-02 20:20:39 +01:00
Thomas Kolb
c4e6028d42
Add a module to manage a list of connections
2024-11-02 18:30:25 +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
/ 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
8c3eca658c
connection: do not send ACKs for empty packets
/ build-hamnet70 (push) Failing after 27s
/ build-doc (push) Successful in 15s
/ deploy-doc (push) Has been skipped
2024-09-22 15:56:43 +02:00
Thomas Kolb
dedad8b81f
connection: handle ACKs from empty packets correctly
/ build-hamnet70 (push) Failing after 29s
/ build-doc (push) Successful in 16s
/ deploy-doc (push) Has been skipped
2024-09-22 15:52:44 +02:00
Thomas Kolb
f0770baf31
Handle received packets
/ 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
a07ffa265e
connection: use correct addresses for empty packets
/ build-hamnet70 (push) Failing after 28s
/ build-doc (push) Successful in 15s
/ deploy-doc (push) Has been skipped
2024-09-22 15:28:24 +02:00
Thomas Kolb
0a77109ab5
l2udp: Use the new layer2 connection module
/ 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
/ 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
/ 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
a455fac050
connection.h: fix comment
2024-09-20 23:38:54 +02:00
Thomas Kolb
44921bd65d
Decrease the AGC bandwidth during signal acquisition
...
/ 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
...
/ 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