ax25.h
Go to the documentation of this file.00001 00046 #ifndef NET_AX25_H 00047 #define NET_AX25_H 00048 00049 #include "cfg/cfg_ax25.h" 00050 00051 #include <cfg/compiler.h> 00052 #include <kern/kfile.h> 00053 00057 #define AX25_MIN_FRAME_LEN 18 00058 00063 #define AX25_CRC_CORRECT 0xF0B8 00064 00065 struct AX25Msg; // fwd declaration 00066 00070 typedef void (*ax25_callback_t)(struct AX25Msg *msg); 00071 00072 00076 typedef struct AX25Ctx 00077 { 00078 uint8_t buf[CONFIG_AX25_FRAME_BUF_LEN]; 00079 KFile *ch; 00080 size_t frm_len; 00081 uint16_t crc_in; 00082 uint16_t crc_out; 00083 ax25_callback_t hook; 00084 bool sync; 00085 bool escape; 00086 } AX25Ctx; 00087 00088 00092 typedef struct AX25Call 00093 { 00094 char call[6]; 00095 uint8_t ssid; 00096 } AX25Call; 00097 00103 #define AX25_CALL(str, id) ({ static const AX25Call _call = { .call = (str), .ssid = (id) }; &_call; }) 00104 00108 #define AX25_MAX_RPT 8 00109 00110 00115 typedef struct AX25Msg 00116 { 00117 AX25Call src; 00118 AX25Call dst; 00119 #if CONFIG_AX25_RPT_LST 00120 AX25Call rpt_lst[AX25_MAX_RPT]; 00121 uint8_t rpt_cnt; 00122 #endif 00123 uint16_t ctrl; 00124 uint8_t pid; 00125 const uint8_t *info; 00126 size_t len; 00127 } AX25Msg; 00128 00129 #define AX25_CTRL_UI 0x03 00130 #define AX25_PID_NOLAYER3 0xF0 00131 00138 #define HDLC_FLAG 0x7E 00139 #define HDLC_RESET 0x7F 00140 #define AX25_ESC 0x1B 00141 /* \} */ 00142 00143 00144 00145 void ax25_poll(AX25Ctx *ctx); 00146 void ax25_send(AX25Ctx *ctx, const AX25Call *dst, const AX25Call *src, const void *_buf, size_t len); 00147 void ax25_init(AX25Ctx *ctx, KFile *channel, ax25_callback_t hook); 00148 00149 int ax25_testSetup(void); 00150 int ax25_testTearDown(void); 00151 int ax25_testRun(void); 00152 00153 #endif /* NET_AX25_H */
