- add and handle layer 2 packet type correctly in data packets
- don't produce garbage packets if a packet could not be decoded or was not a
data packet
- handle beacon/connection request/connection parameters handshake
- digipeater cycle timeout does not reset beacon timer anymore. This prevented
any beacon transmission.
- Reset the connection timeout when empty packets are received
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.
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.
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.
- 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.
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).
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.
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.
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.