1 #if !defined(_RADIOLIB_AX25_H)
2 #define _RADIOLIB_AX25_H
4 #include "../../TypeDef.h"
6 #if !RADIOLIB_EXCLUDE_AX25
8 #include "../PhysicalLayer/PhysicalLayer.h"
9 #include "../AFSK/AFSK.h"
10 #include "../BellModem/BellModem.h"
11 #include "../../utils/CRC.h"
12 #include "../../utils/FEC.h"
15 #define RADIOLIB_AX25_MAX_CALLSIGN_LEN 6
18 #define RADIOLIB_AX25_FLAG 0b01111110
21 #define RADIOLIB_AX25_SSID_COMMAND_DEST 0b10000000
22 #define RADIOLIB_AX25_SSID_COMMAND_SOURCE 0b00000000
23 #define RADIOLIB_AX25_SSID_RESPONSE_DEST 0b00000000
24 #define RADIOLIB_AX25_SSID_RESPONSE_SOURCE 0b10000000
25 #define RADIOLIB_AX25_SSID_HAS_NOT_BEEN_REPEATED 0b00000000
26 #define RADIOLIB_AX25_SSID_HAS_BEEN_REPEATED 0b10000000
27 #define RADIOLIB_AX25_SSID_RESERVED_BITS 0b01100000
28 #define RADIOLIB_AX25_SSID_HDLC_EXTENSION_CONTINUE 0b00000000
29 #define RADIOLIB_AX25_SSID_HDLC_EXTENSION_END 0b00000001
32 #define RADIOLIB_AX25_CONTROL_U_SET_ASYNC_BAL_MODE 0b01101100
33 #define RADIOLIB_AX25_CONTROL_U_SET_ASYNC_BAL_MODE_EXT 0b00101100
34 #define RADIOLIB_AX25_CONTROL_U_DISCONNECT 0b01000000
35 #define RADIOLIB_AX25_CONTROL_U_DISCONNECT_MODE 0b00001100
36 #define RADIOLIB_AX25_CONTROL_U_UNNUMBERED_ACK 0b01100000
37 #define RADIOLIB_AX25_CONTROL_U_FRAME_REJECT 0b10000100
38 #define RADIOLIB_AX25_CONTROL_U_UNNUMBERED_INFORMATION 0b00000000
39 #define RADIOLIB_AX25_CONTROL_U_EXHANGE_IDENTIFICATION 0b10101100
40 #define RADIOLIB_AX25_CONTROL_U_TEST 0b11100000
41 #define RADIOLIB_AX25_CONTROL_POLL_FINAL_ENABLED 0b00010000
42 #define RADIOLIB_AX25_CONTROL_POLL_FINAL_DISABLED 0b00000000
43 #define RADIOLIB_AX25_CONTROL_S_RECEIVE_READY 0b00000000
44 #define RADIOLIB_AX25_CONTROL_S_RECEIVE_NOT_READY 0b00000100
45 #define RADIOLIB_AX25_CONTROL_S_REJECT 0b00001000
46 #define RADIOLIB_AX25_CONTROL_S_SELECTIVE_REJECT 0b00001100
47 #define RADIOLIB_AX25_CONTROL_INFORMATION_FRAME 0b00000000
48 #define RADIOLIB_AX25_CONTROL_SUPERVISORY_FRAME 0b00000001
49 #define RADIOLIB_AX25_CONTROL_UNNUMBERED_FRAME 0b00000011
52 #define RADIOLIB_AX25_PID_ISO_8208 0x01
53 #define RADIOLIB_AX25_PID_TCP_IP_COMPRESSED 0x06
54 #define RADIOLIB_AX25_PID_TCP_IP_UNCOMPRESSED 0x07
55 #define RADIOLIB_AX25_PID_SEGMENTATION_FRAGMENT 0x08
56 #define RADIOLIB_AX25_PID_TEXNET_DATAGRAM_PROTOCOL 0xC3
57 #define RADIOLIB_AX25_PID_LINK_QUALITY_PROTOCOL 0xC4
58 #define RADIOLIB_AX25_PID_APPLETALK 0xCA
59 #define RADIOLIB_AX25_PID_APPLETALK_ARP 0xCB
60 #define RADIOLIB_AX25_PID_ARPA_INTERNET_PROTOCOL 0xCC
61 #define RADIOLIB_AX25_PID_ARPA_ADDRESS_RESOLUTION 0xCD
62 #define RADIOLIB_AX25_PID_FLEXNET 0xCE
63 #define RADIOLIB_AX25_PID_NET_ROM 0xCF
64 #define RADIOLIB_AX25_PID_NO_LAYER_3 0xF0
65 #define RADIOLIB_AX25_PID_ESCAPE_CHARACTER 0xFF
123 #if !RADIOLIB_STATIC_ONLY
142 uint8_t
info[RADIOLIB_STATIC_ARRAY_SIZE];
241 #if !RADIOLIB_EXCLUDE_AFSK
268 int16_t
setCorrection(int16_t mark, int16_t space,
float length = 1.0f);
282 int16_t
begin(
const char* srcCallsign, uint8_t srcSSID = 0x00, uint8_t preLen = 8);
284 #if defined(RADIOLIB_BUILD_ARDUINO)
293 int16_t
transmit(String& str,
const char* destCallsign, uint8_t destSSID = 0x00);
304 int16_t
transmit(
const char* str,
const char* destCallsign, uint8_t destSSID = 0x00);
313 #if !RADIOLIB_GODMODE
319 #if !RADIOLIB_EXCLUDE_AFSK
324 char sourceCallsign[RADIOLIB_AX25_MAX_CALLSIGN_LEN + 1] = { 0 };
325 uint8_t sourceSSID = 0;
326 uint16_t preambleLen = 0;
328 void getCallsign(
char* buff);
Client for audio-based transmissions. Requires Arduino tone() function, and a module capable of direc...
Definition: AFSK.h:16
Client for APRS communication.
Definition: APRS.h:85
Client for AX25 communication.
Definition: AX25.h:233
int16_t sendFrame(AX25Frame *frame)
Transmit arbitrary AX.25 frame.
Definition: AX25.cpp:283
int16_t setCorrection(int16_t mark, int16_t space, float length=1.0f)
Set AFSK tone correction offset. On some platforms, this is required to get the audio produced by the...
Definition: AX25.cpp:232
int16_t transmit(const char *str, const char *destCallsign, uint8_t destSSID=0x00)
Transmit unnumbered information (UI) frame.
Definition: AX25.cpp:270
AX25Client & operator=(const AX25Client &ax25)
Overload for assignment operator.
Definition: AX25.cpp:216
int16_t begin(const char *srcCallsign, uint8_t srcSSID=0x00, uint8_t preLen=8)
Initialization method.
Definition: AX25.cpp:244
AX25Client(PhysicalLayer *phy)
Constructor for 2-FSK mode.
Definition: AX25.cpp:187
Abstraction of AX.25 frame format.
Definition: AX25.h:71
void setSendSequence(uint8_t seqNumber)
Method to set send sequence number.
Definition: AX25.cpp:183
AX25Frame(const char *destCallsign, uint8_t destSSID, const char *srcCallsign, uint8_t srcSSID, uint8_t control)
Overloaded constructor, for frames without info field.
Definition: AX25.cpp:5
char ** repeaterCallsigns
Array of repeater callsigns.
Definition: AX25.h:132
char srcCallsign[RADIOLIB_AX25_MAX_CALLSIGN_LEN+1]
Callsign of the source station.
Definition: AX25.h:86
void setRecvSequence(uint8_t seqNumber)
Method to set receive sequence number.
Definition: AX25.cpp:179
uint16_t sendSeqNumber
Send sequence number.
Definition: AX25.h:121
uint8_t srcSSID
SSID of the source station.
Definition: AX25.h:91
AX25Frame & operator=(const AX25Frame &frame)
Overload for assignment operator.
Definition: AX25.cpp:108
uint8_t control
The control field.
Definition: AX25.h:101
uint8_t * repeaterSSIDs
Array of repeater SSIDs.
Definition: AX25.h:137
uint16_t infoLen
Number of bytes in the information field.
Definition: AX25.h:111
int16_t setRepeaters(char **repeaterCallsigns, uint8_t *repeaterSSIDs, uint8_t numRepeaters)
Method to set the repeater callsigns and SSIDs.
Definition: AX25.cpp:143
char destCallsign[RADIOLIB_AX25_MAX_CALLSIGN_LEN+1]
Callsign of the destination station.
Definition: AX25.h:76
uint8_t * info
The info field.
Definition: AX25.h:127
uint8_t protocolID
The protocol identifier (PID) field.
Definition: AX25.h:106
~AX25Frame()
Default destructor.
Definition: AX25.cpp:90
uint8_t numRepeaters
Number of repeaters to be used.
Definition: AX25.h:96
uint8_t rcvSeqNumber
Receive sequence number.
Definition: AX25.h:116
uint8_t destSSID
SSID of the destination station.
Definition: AX25.h:81
Client for Bell modem communication. The public interface is the same as Arduino Serial.
Definition: BellModem.h:57
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN....
Definition: PhysicalLayer.h:135