122 lines
42 KiB
HTML
122 lines
42 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.13"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>RadioLib: src/protocols/AX25/AX25.h Source File</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(initResizable);
|
|
</script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">RadioLib
|
|
</div>
|
|
<div id="projectbrief">Universal wireless communication library for Arduino</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.13 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
$(document).ready(function(){initNavTree('_a_x25_8h_source.html','');});
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">AX25.h</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#if !defined(_RADIOLIB_AX25_H)</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define _RADIOLIB_AX25_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "../../TypeDef.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#if !defined(RADIOLIB_EXCLUDE_AX25)</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "../PhysicalLayer/PhysicalLayer.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "../AFSK/AFSK.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// macros to access bits in byte array, from http://www.mathcs.emory.edu/~cheung/Courses/255/Syllabus/1-C-intro/bit-array.html</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#define SET_BIT_IN_ARRAY(A, k) ( A[(k/8)] |= (1 << (k%8)) )</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#define CLEAR_BIT_IN_ARRAY(A, k) ( A[(k/8)] &= ~(1 << (k%8)) )</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define TEST_BIT_IN_ARRAY(A, k) ( A[(k/8)] & (1 << (k%8)) )</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#define GET_BIT_IN_ARRAY(A, k) ( (A[(k/8)] & (1 << (k%8))) ? 1 : 0 )</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// CRC-CCITT calculation macros</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define XOR(A, B) ( ((A) || (B)) && !((A) && (B)) )</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CRC_CCITT_POLY 0x1021 // generator polynomial</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define CRC_CCITT_POLY_REVERSED 0x8408 // CRC_CCITT_POLY in reversed bit order</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#define CRC_CCITT_INIT 0xFFFF // initial value</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// maximum callsign length in bytes</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#define AX25_MAX_CALLSIGN_LEN 6</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// flag field MSB LSB DESCRIPTION</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#define AX25_FLAG 0b01111110 // 7 0 AX.25 frame start/end flag</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// address field</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define AX25_SSID_COMMAND_DEST 0b10000000 // 7 7 frame type: command (set in destination SSID)</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define AX25_SSID_COMMAND_SOURCE 0b00000000 // 7 7 command (set in source SSID)</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define AX25_SSID_RESPONSE_DEST 0b00000000 // 7 7 response (set in destination SSID)</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define AX25_SSID_RESPONSE_SOURCE 0b10000000 // 7 7 response (set in source SSID)</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define AX25_SSID_HAS_NOT_BEEN_REPEATED 0b00000000 // 7 7 not repeated yet (set in repeater SSID)</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define AX25_SSID_HAS_BEEN_REPEATED 0b10000000 // 7 7 repeated (set in repeater SSID)</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#define AX25_SSID_RESERVED_BITS 0b01100000 // 6 5 reserved bits in SSID</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define AX25_SSID_HDLC_EXTENSION_CONTINUE 0b00000000 // 0 0 HDLC extension bit: next octet contains more address information</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#define AX25_SSID_HDLC_EXTENSION_END 0b00000001 // 0 0 address field end</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// control field</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define AX25_CONTROL_U_SET_ASYNC_BAL_MODE 0b01101100 // 7 2 U frame type: set asynchronous balanced mode (connect request)</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define AX25_CONTROL_U_SET_ASYNC_BAL_MODE_EXT 0b00101100 // 7 2 set asynchronous balanced mode extended (connect request with module 128)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define AX25_CONTROL_U_DISCONNECT 0b01000000 // 7 2 disconnect request</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#define AX25_CONTROL_U_DISCONNECT_MODE 0b00001100 // 7 2 disconnect mode (system busy or disconnected)</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#define AX25_CONTROL_U_UNNUMBERED_ACK 0b01100000 // 7 2 unnumbered acknowledge</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#define AX25_CONTROL_U_FRAME_REJECT 0b10000100 // 7 2 frame reject</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#define AX25_CONTROL_U_UNNUMBERED_INFORMATION 0b00000000 // 7 2 unnumbered information</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#define AX25_CONTROL_U_EXHANGE_IDENTIFICATION 0b10101100 // 7 2 exchange ID</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#define AX25_CONTROL_U_TEST 0b11100000 // 7 2 test</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#define AX25_CONTROL_POLL_FINAL_ENABLED 0b00010000 // 4 4 control field poll/final bit: enabled</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define AX25_CONTROL_POLL_FINAL_DISABLED 0b00000000 // 4 4 disabled</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#define AX25_CONTROL_S_RECEIVE_READY 0b00000000 // 3 2 S frame type: receive ready (system ready to receive)</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#define AX25_CONTROL_S_RECEIVE_NOT_READY 0b00000100 // 3 2 receive not ready (TNC buffer full)</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define AX25_CONTROL_S_REJECT 0b00001000 // 3 2 reject (out of sequence or duplicate)</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define AX25_CONTROL_S_SELECTIVE_REJECT 0b00001100 // 3 2 selective reject (single frame repeat request)</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define AX25_CONTROL_INFORMATION_FRAME 0b00000000 // 0 0 frame type: information (I frame)</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#define AX25_CONTROL_SUPERVISORY_FRAME 0b00000001 // 1 0 supervisory (S frame)</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#define AX25_CONTROL_UNNUMBERED_FRAME 0b00000011 // 1 0 unnumbered (U frame)</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// protocol identifier field</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#define AX25_PID_ISO_8208 0x01</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#define AX25_PID_TCP_IP_COMPRESSED 0x06</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#define AX25_PID_TCP_IP_UNCOMPRESSED 0x07</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#define AX25_PID_SEGMENTATION_FRAGMENT 0x08</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#define AX25_PID_TEXNET_DATAGRAM_PROTOCOL 0xC3</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#define AX25_PID_LINK_QUALITY_PROTOCOL 0xC4</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#define AX25_PID_APPLETALK 0xCA</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#define AX25_PID_APPLETALK_ARP 0xCB</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#define AX25_PID_ARPA_INTERNET_PROTOCOL 0xCC</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#define AX25_PID_ARPA_ADDRESS_RESOLUTION 0xCD</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#define AX25_PID_FLEXNET 0xCE</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#define AX25_PID_NET_ROM 0xCF</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#define AX25_PID_NO_LAYER_3 0xF0</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#define AX25_PID_ESCAPE_CHARACTER 0xFF</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// AFSK tones in Hz</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#define AX25_AFSK_MARK 1200</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#define AX25_AFSK_SPACE 2200</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// tone duration in us (for 1200 baud AFSK)</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#define AX25_AFSK_TONE_DURATION 833</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html"> 88</a></span> <span class="keyword">class </span><a class="code" href="class_a_x25_frame.html">AX25Frame</a> {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#a78e72871e3a9370675318876f4a4b432"> 93</a></span>  <span class="keywordtype">char</span> <a class="code" href="class_a_x25_frame.html#a78e72871e3a9370675318876f4a4b432">destCallsign</a>[AX25_MAX_CALLSIGN_LEN + 1];</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#af62935e56dc24bca5d2e2aeb932b63f8"> 98</a></span>  uint8_t <a class="code" href="class_a_x25_frame.html#af62935e56dc24bca5d2e2aeb932b63f8">destSSID</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#ab76eaa8445e7953059a46bb78082dd5a"> 103</a></span>  <span class="keywordtype">char</span> <a class="code" href="class_a_x25_frame.html#ab76eaa8445e7953059a46bb78082dd5a">srcCallsign</a>[AX25_MAX_CALLSIGN_LEN + 1];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#a50c63276facf8126f0f8555b1fc6b2c9"> 108</a></span>  uint8_t <a class="code" href="class_a_x25_frame.html#a50c63276facf8126f0f8555b1fc6b2c9">srcSSID</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#ad27453a838ba90f917a1a9853358bb9a"> 113</a></span>  uint8_t <a class="code" href="class_a_x25_frame.html#ad27453a838ba90f917a1a9853358bb9a">numRepeaters</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#a5b196079b539dc417ca65dd4ad622f8f"> 118</a></span>  uint8_t <a class="code" href="class_a_x25_frame.html#a5b196079b539dc417ca65dd4ad622f8f">control</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#aa8895fea37220c82f68bd320331595c8"> 123</a></span>  uint8_t <a class="code" href="class_a_x25_frame.html#aa8895fea37220c82f68bd320331595c8">protocolID</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#a75e8ad33c2540ede5bb130050f6ffc41"> 128</a></span>  uint16_t <a class="code" href="class_a_x25_frame.html#a75e8ad33c2540ede5bb130050f6ffc41">infoLen</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#adce5294af25f09df752997d33ac0e87f"> 133</a></span>  uint8_t <a class="code" href="class_a_x25_frame.html#adce5294af25f09df752997d33ac0e87f">rcvSeqNumber</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#a4c0fdf148d3b779d48441d45af87add2"> 138</a></span>  uint16_t <a class="code" href="class_a_x25_frame.html#a4c0fdf148d3b779d48441d45af87add2">sendSeqNumber</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor"> #ifndef RADIOLIB_STATIC_ONLY</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#aa82f006b84b71b9c5d036a4946a65988"> 144</a></span>  uint8_t* <a class="code" href="class_a_x25_frame.html#aa82f006b84b71b9c5d036a4946a65988">info</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#a29eb08c9e72bbaced8d37dcb2343ee94"> 149</a></span>  <span class="keywordtype">char</span>** <a class="code" href="class_a_x25_frame.html#a29eb08c9e72bbaced8d37dcb2343ee94">repeaterCallsigns</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="class_a_x25_frame.html#a5b63c6b6f69e0ac47ba9230ad39c6830"> 154</a></span>  uint8_t* <a class="code" href="class_a_x25_frame.html#a5b63c6b6f69e0ac47ba9230ad39c6830">repeaterSSIDs</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor"> #else</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  uint8_t info[RADIOLIB_STATIC_ARRAY_SIZE];</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">char</span> repeaterCallsigns[8][AX25_MAX_CALLSIGN_LEN + 1];</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  uint8_t repeaterSSIDs[8];</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="class_a_x25_frame.html#a138d97d90a371bef7ebd86cce1cc4979">AX25Frame</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* destCallsign, uint8_t destSSID, <span class="keyword">const</span> <span class="keywordtype">char</span>* srcCallsign, uint8_t srcSSID, uint8_t control);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="class_a_x25_frame.html#a138d97d90a371bef7ebd86cce1cc4979">AX25Frame</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* destCallsign, uint8_t destSSID, <span class="keyword">const</span> <span class="keywordtype">char</span>* srcCallsign, uint8_t srcSSID, uint8_t control, uint8_t protocolID, <span class="keyword">const</span> <span class="keywordtype">char</span>* info);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="class_a_x25_frame.html#a138d97d90a371bef7ebd86cce1cc4979">AX25Frame</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* destCallsign, uint8_t destSSID, <span class="keyword">const</span> <span class="keywordtype">char</span>* srcCallsign, uint8_t srcSSID, uint8_t control, uint8_t protocolID, uint8_t* info, uint16_t infoLen);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="class_a_x25_frame.html#a138d97d90a371bef7ebd86cce1cc4979">AX25Frame</a>(<span class="keyword">const</span> <a class="code" href="class_a_x25_frame.html">AX25Frame</a>& frame);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="class_a_x25_frame.html#ab84a13f720ada37aee6201a560d9dc5a">~AX25Frame</a>();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="class_a_x25_frame.html">AX25Frame</a>& <a class="code" href="class_a_x25_frame.html#a52e7e5f6f48c3e62544721d2a5e00640">operator=</a>(<span class="keyword">const</span> <a class="code" href="class_a_x25_frame.html">AX25Frame</a>& frame);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  int16_t <a class="code" href="class_a_x25_frame.html#a7f2d9f4f1ba29d0fd9f9f3f2cf03f797">setRepeaters</a>(<span class="keywordtype">char</span>** repeaterCallsigns, uint8_t* repeaterSSIDs, uint8_t numRepeaters);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordtype">void</span> <a class="code" href="class_a_x25_frame.html#a4696a8eede8bac85f0ee6de6fee79ea8">setRecvSequence</a>(uint8_t seqNumber);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordtype">void</span> <a class="code" href="class_a_x25_frame.html#a026e9b96fa69018590fcf6842df8be70">setSendSequence</a>(uint8_t seqNumber);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> };</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="class_a_x25_client.html"> 279</a></span> <span class="keyword">class </span><a class="code" href="class_a_x25_client.html">AX25Client</a> {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keyword">explicit</span> <a class="code" href="class_a_x25_client.html">AX25Client</a>(<a class="code" href="class_physical_layer.html">PhysicalLayer</a>* phy);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="preprocessor"> #if !defined(RADIOLIB_EXCLUDE_AFSK)</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keyword">explicit</span> <a class="code" href="class_a_x25_client.html">AX25Client</a>(<a class="code" href="class_a_f_s_k_client.html">AFSKClient</a>* audio);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">// basic methods</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  int16_t begin(<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="class_a_x25_frame.html#ab76eaa8445e7953059a46bb78082dd5a">srcCallsign</a>, uint8_t <a class="code" href="class_a_x25_frame.html#a50c63276facf8126f0f8555b1fc6b2c9">srcSSID</a> = 0x00, uint8_t preambleLen = 8);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  int16_t transmit(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="class_a_x25_frame.html#a78e72871e3a9370675318876f4a4b432">destCallsign</a>, uint8_t <a class="code" href="class_a_x25_frame.html#af62935e56dc24bca5d2e2aeb932b63f8">destSSID</a> = 0x00);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  int16_t sendFrame(<a class="code" href="class_a_x25_frame.html">AX25Frame</a>* frame);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="preprocessor">#ifndef RADIOLIB_GODMODE</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="class_physical_layer.html">PhysicalLayer</a>* _phy;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor"> #if !defined(RADIOLIB_EXCLUDE_AFSK)</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="class_a_f_s_k_client.html">AFSKClient</a>* _audio;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordtype">char</span> _srcCallsign[AX25_MAX_CALLSIGN_LEN + 1] = {0, 0, 0, 0, 0, 0, 0};</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  uint8_t _srcSSID = 0;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  uint16_t _preambleLen = 0;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keyword">static</span> uint16_t getFrameCheckSequence(uint8_t* buff, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keyword">static</span> uint8_t flipBits(uint8_t b);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keyword">static</span> uint16_t flipBits16(uint16_t i);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> };</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="class_a_x25_frame_html_ab84a13f720ada37aee6201a560d9dc5a"><div class="ttname"><a href="class_a_x25_frame.html#ab84a13f720ada37aee6201a560d9dc5a">AX25Frame::~AX25Frame</a></div><div class="ttdeci">~AX25Frame()</div><div class="ttdoc">Default destructor. </div><div class="ttdef"><b>Definition:</b> AX25.cpp:56</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a52e7e5f6f48c3e62544721d2a5e00640"><div class="ttname"><a href="class_a_x25_frame.html#a52e7e5f6f48c3e62544721d2a5e00640">AX25Frame::operator=</a></div><div class="ttdeci">AX25Frame & operator=(const AX25Frame &frame)</div><div class="ttdoc">Overload for assignment operator. </div><div class="ttdef"><b>Definition:</b> AX25.cpp:74</div></div>
|
|
<div class="ttc" id="class_a_f_s_k_client_html"><div class="ttname"><a href="class_a_f_s_k_client.html">AFSKClient</a></div><div class="ttdoc">Client for audio-based transmissions. Requires Arduino tone() function, and a module capable of direc...</div><div class="ttdef"><b>Definition:</b> AFSK.h:17</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a29eb08c9e72bbaced8d37dcb2343ee94"><div class="ttname"><a href="class_a_x25_frame.html#a29eb08c9e72bbaced8d37dcb2343ee94">AX25Frame::repeaterCallsigns</a></div><div class="ttdeci">char ** repeaterCallsigns</div><div class="ttdoc">Array of repeater callsigns. </div><div class="ttdef"><b>Definition:</b> AX25.h:149</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_ad27453a838ba90f917a1a9853358bb9a"><div class="ttname"><a href="class_a_x25_frame.html#ad27453a838ba90f917a1a9853358bb9a">AX25Frame::numRepeaters</a></div><div class="ttdeci">uint8_t numRepeaters</div><div class="ttdoc">Number of repeaters to be used. </div><div class="ttdef"><b>Definition:</b> AX25.h:113</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a7f2d9f4f1ba29d0fd9f9f3f2cf03f797"><div class="ttname"><a href="class_a_x25_frame.html#a7f2d9f4f1ba29d0fd9f9f3f2cf03f797">AX25Frame::setRepeaters</a></div><div class="ttdeci">int16_t setRepeaters(char **repeaterCallsigns, uint8_t *repeaterSSIDs, uint8_t numRepeaters)</div><div class="ttdoc">Method to set the repeater callsigns and SSIDs. </div><div class="ttdef"><b>Definition:</b> AX25.cpp:109</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_aa8895fea37220c82f68bd320331595c8"><div class="ttname"><a href="class_a_x25_frame.html#aa8895fea37220c82f68bd320331595c8">AX25Frame::protocolID</a></div><div class="ttdeci">uint8_t protocolID</div><div class="ttdoc">The protocol identifier (PID) field. </div><div class="ttdef"><b>Definition:</b> AX25.h:123</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a75e8ad33c2540ede5bb130050f6ffc41"><div class="ttname"><a href="class_a_x25_frame.html#a75e8ad33c2540ede5bb130050f6ffc41">AX25Frame::infoLen</a></div><div class="ttdeci">uint16_t infoLen</div><div class="ttdoc">Number of bytes in the information field. </div><div class="ttdef"><b>Definition:</b> AX25.h:128</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a4696a8eede8bac85f0ee6de6fee79ea8"><div class="ttname"><a href="class_a_x25_frame.html#a4696a8eede8bac85f0ee6de6fee79ea8">AX25Frame::setRecvSequence</a></div><div class="ttdeci">void setRecvSequence(uint8_t seqNumber)</div><div class="ttdoc">Method to set receive sequence number. </div><div class="ttdef"><b>Definition:</b> AX25.cpp:144</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html"><div class="ttname"><a href="class_a_x25_frame.html">AX25Frame</a></div><div class="ttdoc">Abstraction of AX.25 frame format. </div><div class="ttdef"><b>Definition:</b> AX25.h:88</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_af62935e56dc24bca5d2e2aeb932b63f8"><div class="ttname"><a href="class_a_x25_frame.html#af62935e56dc24bca5d2e2aeb932b63f8">AX25Frame::destSSID</a></div><div class="ttdeci">uint8_t destSSID</div><div class="ttdoc">SSID of the destination station. </div><div class="ttdef"><b>Definition:</b> AX25.h:98</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_aa82f006b84b71b9c5d036a4946a65988"><div class="ttname"><a href="class_a_x25_frame.html#aa82f006b84b71b9c5d036a4946a65988">AX25Frame::info</a></div><div class="ttdeci">uint8_t * info</div><div class="ttdoc">The info field. </div><div class="ttdef"><b>Definition:</b> AX25.h:144</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a5b196079b539dc417ca65dd4ad622f8f"><div class="ttname"><a href="class_a_x25_frame.html#a5b196079b539dc417ca65dd4ad622f8f">AX25Frame::control</a></div><div class="ttdeci">uint8_t control</div><div class="ttdoc">The control field. </div><div class="ttdef"><b>Definition:</b> AX25.h:118</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a50c63276facf8126f0f8555b1fc6b2c9"><div class="ttname"><a href="class_a_x25_frame.html#a50c63276facf8126f0f8555b1fc6b2c9">AX25Frame::srcSSID</a></div><div class="ttdeci">uint8_t srcSSID</div><div class="ttdoc">SSID of the source station. </div><div class="ttdef"><b>Definition:</b> AX25.h:108</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_ab76eaa8445e7953059a46bb78082dd5a"><div class="ttname"><a href="class_a_x25_frame.html#ab76eaa8445e7953059a46bb78082dd5a">AX25Frame::srcCallsign</a></div><div class="ttdeci">char srcCallsign[AX25_MAX_CALLSIGN_LEN+1]</div><div class="ttdoc">Callsign of the source station. </div><div class="ttdef"><b>Definition:</b> AX25.h:103</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a78e72871e3a9370675318876f4a4b432"><div class="ttname"><a href="class_a_x25_frame.html#a78e72871e3a9370675318876f4a4b432">AX25Frame::destCallsign</a></div><div class="ttdeci">char destCallsign[AX25_MAX_CALLSIGN_LEN+1]</div><div class="ttdoc">Callsign of the destination station. </div><div class="ttdef"><b>Definition:</b> AX25.h:93</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a4c0fdf148d3b779d48441d45af87add2"><div class="ttname"><a href="class_a_x25_frame.html#a4c0fdf148d3b779d48441d45af87add2">AX25Frame::sendSeqNumber</a></div><div class="ttdeci">uint16_t sendSeqNumber</div><div class="ttdoc">Send sequence number. </div><div class="ttdef"><b>Definition:</b> AX25.h:138</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a138d97d90a371bef7ebd86cce1cc4979"><div class="ttname"><a href="class_a_x25_frame.html#a138d97d90a371bef7ebd86cce1cc4979">AX25Frame::AX25Frame</a></div><div class="ttdeci">AX25Frame(const char *destCallsign, uint8_t destSSID, const char *srcCallsign, uint8_t srcSSID, uint8_t control)</div><div class="ttdoc">Overloaded constructor, for frames without info field. </div><div class="ttdef"><b>Definition:</b> AX25.cpp:4</div></div>
|
|
<div class="ttc" id="class_physical_layer_html"><div class="ttname"><a href="class_physical_layer.html">PhysicalLayer</a></div><div class="ttdoc">Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN...</div><div class="ttdef"><b>Definition:</b> PhysicalLayer.h:13</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a5b63c6b6f69e0ac47ba9230ad39c6830"><div class="ttname"><a href="class_a_x25_frame.html#a5b63c6b6f69e0ac47ba9230ad39c6830">AX25Frame::repeaterSSIDs</a></div><div class="ttdeci">uint8_t * repeaterSSIDs</div><div class="ttdoc">Array of repeater SSIDs. </div><div class="ttdef"><b>Definition:</b> AX25.h:154</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_a026e9b96fa69018590fcf6842df8be70"><div class="ttname"><a href="class_a_x25_frame.html#a026e9b96fa69018590fcf6842df8be70">AX25Frame::setSendSequence</a></div><div class="ttdeci">void setSendSequence(uint8_t seqNumber)</div><div class="ttdoc">Method to set send sequence number. </div><div class="ttdef"><b>Definition:</b> AX25.cpp:148</div></div>
|
|
<div class="ttc" id="class_a_x25_frame_html_adce5294af25f09df752997d33ac0e87f"><div class="ttname"><a href="class_a_x25_frame.html#adce5294af25f09df752997d33ac0e87f">AX25Frame::rcvSeqNumber</a></div><div class="ttdeci">uint8_t rcvSeqNumber</div><div class="ttdoc">Receive sequence number. </div><div class="ttdef"><b>Definition:</b> AX25.h:133</div></div>
|
|
<div class="ttc" id="class_a_x25_client_html"><div class="ttname"><a href="class_a_x25_client.html">AX25Client</a></div><div class="ttdoc">Client for AX25 communication. </div><div class="ttdef"><b>Definition:</b> AX25.h:279</div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_79690749eba542503bb1a9a3dbb495e1.html">protocols</a></li><li class="navelem"><a class="el" href="dir_2d04440730a0443b949b3f3ffedccfc3.html">AX25</a></li><li class="navelem"><b>AX25.h</b></li>
|
|
<li class="footer">Generated by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|