2016-11-20 19:58:51 +00:00
|
|
|
|
|
|
|
/* ax25_link.h */
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef AX25_LINK_H
|
|
|
|
#define AX25_LINK_H 1
|
|
|
|
|
|
|
|
#include "ax25_pad.h" // for AX25_MAX_INFO_LEN
|
|
|
|
|
|
|
|
#include "dlq.h" // for dlq_item_t
|
|
|
|
|
|
|
|
#include "config.h" // for struct misc_config_s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Limits and defaults for parameters.
|
|
|
|
|
|
|
|
|
|
|
|
#define AX25_N1_PACLEN_MIN 1 // Max bytes in Information part of frame.
|
|
|
|
#define AX25_N1_PACLEN_DEFAULT 256 // some v2.0 implementations have 128
|
|
|
|
#define AX25_N1_PACLEN_MAX AX25_MAX_INFO_LEN // from ax25_pad.h
|
|
|
|
|
|
|
|
|
|
|
|
#define AX25_N2_RETRY_MIN 1 // Number of times to retry before giving up.
|
|
|
|
#define AX25_N2_RETRY_DEFAULT 10
|
|
|
|
#define AX25_N2_RETRY_MAX 15
|
|
|
|
|
|
|
|
|
|
|
|
#define AX25_T1V_FRACK_MIN 1 // Number of seconds to wait before retrying.
|
|
|
|
#define AX25_T1V_FRACK_DEFAULT 3 // KPC-3+ has 4. TM-D710A has 3.
|
|
|
|
#define AX25_T1V_FRACK_MAX 15
|
|
|
|
|
|
|
|
|
|
|
|
#define AX25_K_MAXFRAME_BASIC_MIN 1 // Window size - number of I frames to send before waiting for ack.
|
|
|
|
#define AX25_K_MAXFRAME_BASIC_DEFAULT 4
|
|
|
|
#define AX25_K_MAXFRAME_BASIC_MAX 7
|
|
|
|
|
|
|
|
#define AX25_K_MAXFRAME_EXTENDED_MIN 1
|
|
|
|
#define AX25_K_MAXFRAME_EXTENDED_DEFAULT 32
|
|
|
|
#define AX25_K_MAXFRAME_EXTENDED_MAX 63 // In theory 127 but I'm restricting as explained in SREJ handling.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Call once at startup time.
|
|
|
|
|
|
|
|
void ax25_link_init (struct misc_config_s *pconfig);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// IMPORTANT:
|
|
|
|
|
|
|
|
// These functions must be called on a single thread, one at a time.
|
|
|
|
// The Data Link Queue (DLQ) is used to serialize events from multiple sources.
|
|
|
|
|
2018-08-05 15:20:27 +00:00
|
|
|
// Maybe the dispatch switch should be moved to ax25_link.c so they can all
|
|
|
|
// be made static and they can't be called from the wrong place accidentally.
|
2016-11-20 19:58:51 +00:00
|
|
|
|
|
|
|
void dl_connect_request (dlq_item_t *E);
|
|
|
|
|
|
|
|
void dl_disconnect_request (dlq_item_t *E);
|
|
|
|
|
|
|
|
void dl_data_request (dlq_item_t *E);
|
|
|
|
|
|
|
|
void dl_register_callsign (dlq_item_t *E);
|
|
|
|
|
|
|
|
void dl_unregister_callsign (dlq_item_t *E);
|
|
|
|
|
2019-01-06 16:52:45 +00:00
|
|
|
void dl_outstanding_frames_request (dlq_item_t *E);
|
|
|
|
|
2016-11-20 19:58:51 +00:00
|
|
|
void dl_client_cleanup (dlq_item_t *E);
|
|
|
|
|
|
|
|
|
|
|
|
void lm_data_indication (dlq_item_t *E);
|
|
|
|
|
2018-08-05 15:20:27 +00:00
|
|
|
void lm_seize_confirm (dlq_item_t *E);
|
|
|
|
|
2016-11-20 19:58:51 +00:00
|
|
|
void lm_channel_busy (dlq_item_t *E);
|
|
|
|
|
|
|
|
|
|
|
|
void dl_timer_expiry (void);
|
|
|
|
|
|
|
|
|
|
|
|
double ax25_link_get_next_timer_expiry (void);
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* end ax25_link.h */
|