1 2 /* ax25_link.h */ 3 4 5 #ifndef AX25_LINK_H 6 #define AX25_LINK_H 1 7 8 #include "ax25_pad.h" // for AX25_MAX_INFO_LEN 9 10 #include "dlq.h" // for dlq_item_t 11 12 #include "config.h" // for struct misc_config_s 13 14 15 16 // Limits and defaults for parameters. 17 18 19 #define AX25_N1_PACLEN_MIN 1 // Max bytes in Information part of frame. 20 #define AX25_N1_PACLEN_DEFAULT 256 // some v2.0 implementations have 128 21 #define AX25_N1_PACLEN_MAX AX25_MAX_INFO_LEN // from ax25_pad.h 22 23 24 #define AX25_N2_RETRY_MIN 1 // Number of times to retry before giving up. 25 #define AX25_N2_RETRY_DEFAULT 10 26 #define AX25_N2_RETRY_MAX 15 27 28 29 #define AX25_T1V_FRACK_MIN 1 // Number of seconds to wait before retrying. 30 #define AX25_T1V_FRACK_DEFAULT 3 // KPC-3+ has 4. TM-D710A has 3. 31 #define AX25_T1V_FRACK_MAX 15 32 33 34 #define AX25_K_MAXFRAME_BASIC_MIN 1 // Window size - number of I frames to send before waiting for ack. 35 #define AX25_K_MAXFRAME_BASIC_DEFAULT 4 36 #define AX25_K_MAXFRAME_BASIC_MAX 7 37 38 #define AX25_K_MAXFRAME_EXTENDED_MIN 1 39 #define AX25_K_MAXFRAME_EXTENDED_DEFAULT 32 40 #define AX25_K_MAXFRAME_EXTENDED_MAX 63 // In theory 127 but I'm restricting as explained in SREJ handling. 41 42 43 44 // Call once at startup time. 45 46 void ax25_link_init (struct misc_config_s *pconfig); 47 48 49 50 // IMPORTANT: 51 52 // These functions must be called on a single thread, one at a time. 53 // The Data Link Queue (DLQ) is used to serialize events from multiple sources. 54 55 // Maybe the dispatch switch should be moved to ax25_link.c so they can all 56 // be made static and they can't be called from the wrong place accidentally. 57 58 void dl_connect_request (dlq_item_t *E); 59 60 void dl_disconnect_request (dlq_item_t *E); 61 62 void dl_data_request (dlq_item_t *E); 63 64 void dl_register_callsign (dlq_item_t *E); 65 66 void dl_unregister_callsign (dlq_item_t *E); 67 68 void dl_outstanding_frames_request (dlq_item_t *E); 69 70 void dl_client_cleanup (dlq_item_t *E); 71 72 73 void lm_data_indication (dlq_item_t *E); 74 75 void lm_seize_confirm (dlq_item_t *E); 76 77 void lm_channel_busy (dlq_item_t *E); 78 79 80 void dl_timer_expiry (void); 81 82 83 double ax25_link_get_next_timer_expiry (void); 84 85 86 #endif 87 88 /* end ax25_link.h */