-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_lora_wan_process_8cpp_source.html
More file actions
133 lines (131 loc) · 97.8 KB
/
Copy path_lora_wan_process_8cpp_source.html
File metadata and controls
133 lines (131 loc) · 97.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<!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.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MiniMouse Stack: C:/GITEXT/githubdoc/LoRaWanMiniMouse.github.io/MMstack/MinimouseSrc/LoraWanProcess.cpp 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="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="projectlogo"><img alt="Logo" src="lora.bmp"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">MiniMouse Stack
 <span id="projectnumber">V1.0.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- 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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_4479a50ac3338962579017839c6d11ac.html">GITEXT</a></li><li class="navelem"><a class="el" href="dir_313566ed96e2d68b7746be4483e9b217.html">githubdoc</a></li><li class="navelem"><a class="el" href="dir_a1fe12ccd40675146f9c8376113c041e.html">LoRaWanMiniMouse.github.io</a></li><li class="navelem"><a class="el" href="dir_502a2e6a450cda7c1e5931c413e42c70.html">MMstack</a></li><li class="navelem"><a class="el" href="dir_5b21abe8128a6a1751494d478df76c40.html">MinimouseSrc</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">LoraWanProcess.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="_lora_wan_process_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> __ __ _ _ </span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> | \/ (_) (_) </span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> | \ / |_ _ __ _ _ __ ___ ___ _ _ ___ ___ </span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> | |\/| | | '_ \| | '_ ` _ \ / _ \| | | / __|/ _ \</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> | | | | | | | | | | | | | | (_) | |_| \__ \ __/ </span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> |_| |_|_|_| |_|_|_| |_| |_|\___/ \__,_|___/\___| </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> </span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">Description : LoraWanProcess Class definition. </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"></span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"></span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">License : Revised BSD License, see LICENSE.TXT file include in the project</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"></span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">Maintainer : Fabien Holin (SEMTECH)</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">*/</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_lora_wan_process_8h.html">LoraWanProcess.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="utilities_8h.html">utilities.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_define_8h.html">Define.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_api_mcu_8h.html">ApiMcu.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#if DEBUG_TRACE == 1</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  Serial pcf( <a class="code" href="_class_s_t_m32_l0_8h.html#a5ceb873075d76667eb54dc6a7d2734d1aeabfc02d4ccd637570870381394b0bbd">SERIAL_TX</a>, <a class="code" href="_class_s_t_m32_l0_8h.html#a5ceb873075d76667eb54dc6a7d2734d1aba1ef9d1ebae9877675c542721c5de02">SERIAL_RX</a> );</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif</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="keyword">template</span> <span class="keyword">class </span><a class="code" href="class_lora_wan_object.html">LoraWanObject< LoraRegionsEU, SX1276 ></a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="class_lora_wan_object.html">LoraWanObject< LoraRegionsEU, SX126x ></a>;</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="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#a87c736c95588e388ae5c2475220827c4"> 30</a></span> <a class="code" href="class_lora_wan_object.html#a87c736c95588e388ae5c2475220827c4">LoraWanObject<T,RADIOTYPE>::LoraWanObject</a>( <a class="code" href="structs_lo_ra_wan_keys.html">sLoRaWanKeys</a> LoRaWanKeys, RADIOTYPE * RadioUser,uint32_t FlashAdress ):packet( LoRaWanKeys, RadioUser,FlashAdress ) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  StateLoraWanProcess=<a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a8bd48a2deed5279c6bf53c9448af5ef0">LWPSTATE_IDLE</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  packet.MajorBits= <a class="code" href="_define_8h.html#abc6126af1d45847bc59afa0aa3216b04a0a5a738d2d9b9f6beb195a6683b1703d">LORAWANR1</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  FailSafeTimestamp = <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RtcGetTimeSecond( );</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> }; </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#a9607905d493f2dee3273264b801aae6d"> 36</a></span> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::~LoraWanObject() {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> };</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">/************************************************************************************************/</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">/* Public Methods */</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">/************************************************************************************************/</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">/***********************************************************************************************/</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">/* LoraWanProcess Method */</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">/***********************************************************************************************/</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#aa833aaa609033491d4b8566bc93851cf"> 48</a></span> <a class="code" href="_define_8h.html#acabcd539e4bcc6575c90bd7d857b21f4">eLoraWan_Process_States</a> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::LoraWanProcess( uint8_t* AvailableRxPacket ) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  *AvailableRxPacket = <a class="code" href="_define_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da97bb67b41ce2bd4f20bd3318c4c4739a">NO_LORA_RXPACKET_AVAILABLE</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"> #if LOW_POWER_MODE == 1</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span> ( ( IsJoined ( ) == <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390a13c93a198d97e6601b511be02492a86b">NOT_JOINED</a> ) && ( <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RtcGetTimeSecond( ) < packet.RtcNextTimeJoinSecond ) ){</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"TOO SOON TO JOIN time is %d time target is : %d \n"</span>,<a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RtcGetTimeSecond( ), packet.RtcNextTimeJoinSecond);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a8bd48a2deed5279c6bf53c9448af5ef0">LWPSTATE_IDLE</a> ;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  } </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span> ( ( <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RtcGetTimeSecond( ) - FailSafeTimestamp ) > 120 ) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  RadioReset ( ) ;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4ab9aa8615258fbb9c33ade69e303c4d9d">LWPSTATE_ERROR</a> ;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> ( <span class="stringliteral">"ERROR : FAILSAFE EVENT OCCUR \n"</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// NVIC_SystemReset() move into the user main;</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  } </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">switch</span> ( StateLoraWanProcess ) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">/* STATE IDLE */</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a8bd48a2deed5279c6bf53c9448af5ef0">LWPSTATE_IDLE</a> :</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">/* STATE TX */</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4adca8bdd08d3655fcaf97181d28d849d2">LWPSTATE_SEND</a>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">switch</span> ( GetRadioState( ) ) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a06088d64207e78dc90f284ce590db72c">RADIOSTATE_IDLE</a> :</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  AttachRadioIsr ( ); </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  packet.ConfigureRadioAndSend( );</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">"\n"</span> );</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" * Send Payload *\n "</span> );</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  break ; </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a568fdab697236b10631b5b2591a9fd79">RADIOSTATE_TXFINISHED</a> : </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  packet.ConfigureTimerForRx ( <a class="code" href="_define_8h.html#ab894a4c21b8aae9e9c68d8c426a66956a56a438ee3630fd80572b82bf5db6ef85">RX1</a> );</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a22596686bf19b0d02e860cf9bfa2963f">LWPSTATE_RX1</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  break ;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  default :</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">/* STATE RX1 */</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">/* RX1DELAY is defined in ms */</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a22596686bf19b0d02e860cf9bfa2963f">LWPSTATE_RX1</a>:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span> ( GetRadioState( ) == <a class="code" href="_define_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a3db55fb40bb6ed7f2e8a6808aed4d94c">RADIOSTATE_RX1FINISHED</a> ) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> ( GetRadioIrqFlag ( ) == <a class="code" href="_define_8h.html#ab50e1f84d728c6ede52a9606a2a262d5a87a27068f5ce93c240d9289532568e7b">RECEIVE_PACKET_IRQ_FLAG</a>) {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">"\n"</span> );</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" * Receive a downlink RX1 *\n "</span> );</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4abd39ae3792d8b9299c71ee885423c8c4">LWPSTATE_PROCESSDOWNLINK</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  } <span class="keywordflow">else</span> { </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">"\n"</span> );</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" * RX1 Timeout *\n "</span> );</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  packet.ConfigureTimerForRx ( <a class="code" href="_define_8h.html#ab894a4c21b8aae9e9c68d8c426a66956a16d23020bee85c2ada36491598054bab">RX2</a> );</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4ad192deffa53bfbd5e898b1589f0bf644">LWPSTATE_RX2</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">/* STATE RX2 */</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4ad192deffa53bfbd5e898b1589f0bf644">LWPSTATE_RX2</a>:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span> ( GetRadioState( ) == <a class="code" href="_define_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a06088d64207e78dc90f284ce590db72c">RADIOSTATE_IDLE</a> ) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span> ( GetRadioIrqFlag ( ) == <a class="code" href="_define_8h.html#ab50e1f84d728c6ede52a9606a2a262d5a87a27068f5ce93c240d9289532568e7b">RECEIVE_PACKET_IRQ_FLAG</a>) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">"\n"</span> );</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" * Receive a downlink RX2 *\n "</span> );</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4abd39ae3792d8b9299c71ee885423c8c4">LWPSTATE_PROCESSDOWNLINK</a>; </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">"\n"</span> );</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" * RX2 Timeout *\n "</span> );</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a8076f3dea202a2cc1a6753ba77375263">LWPSTATE_UPDATEMAC</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">/* STATE PROCESS DOWNLINK */</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">/* At this step crc is valid */</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">/* Step 1 : CheckRxPayloadLength */</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">/* Step 2 : ExtractRxMhdr */</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">/* Step 3 : ExtractRxFhdr */</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">/* Step 4 : Check Mic */</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">/* Step 5 : Decrypt Payload */</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">/* Step 6 : Extract Fport to select Between App/nwm Payload */</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4abd39ae3792d8b9299c71ee885423c8c4">LWPSTATE_PROCESSDOWNLINK</a>:</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">"\n"</span> );</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" * Process Downlink *\n "</span> );</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  ValidRxPacket = packet.DecodeRxFrame( ); <span class="comment">// return NOVALIDRXPACKET or USERRX_FOPTSPACKET or NWKRXPACKET or JOIN_ACCEPT_PACKET.</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a8076f3dea202a2cc1a6753ba77375263">LWPSTATE_UPDATEMAC</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">/* STATE UPDATE MAC */</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a8076f3dea202a2cc1a6753ba77375263">LWPSTATE_UPDATEMAC</a>:</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  DetachRadioIsr ( );</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  packet.Phy.StateRadioProcess = <a class="code" href="_define_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a06088d64207e78dc90f284ce590db72c">RADIOSTATE_IDLE</a>; </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">"\n"</span> );</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" * UpdateMac *\n "</span> );</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" **************************\n "</span> );</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> ( ValidRxPacket == <a class="code" href="_define_8h.html#ac1b1454c99671113bca600652e09e8bdae2376060a89d610d7e25eda58a1ebe99">JOIN_ACCEPT_PACKET</a>){</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  packet.UpdateJoinProcedure( );</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  packet.RegionSetDataRateDistribution( packet.AdrModeSelect);<span class="comment">//@note because datarate Distribution has been changed during join</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span> ( ( ValidRxPacket == <a class="code" href="_define_8h.html#ac1b1454c99671113bca600652e09e8bda8a88beb4b6371202d48e3142605a1444">NWKRXPACKET</a>) || ( ValidRxPacket == <a class="code" href="_define_8h.html#ac1b1454c99671113bca600652e09e8bdaab93c24e4575a32534ac32a2351b5a66">USERRX_FOPTSPACKET</a>) ) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  packet.ParseManagementPacket( );</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  packet.UpdateMacLayer();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  *AvailableRxPacket = packet.AvailableRxPacketForUser;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span> ( ( packet.IsFrameToSend == <a class="code" href="_define_8h.html#abed82baf7f470b522273a3e37c24c600a16e5fbd85d85ee3ed46b3868a8a49683">NWKFRAME_TOSEND</a> ) || ( packet.IsFrameToSend == <a class="code" href="_define_8h.html#abed82baf7f470b522273a3e37c24c600a78c7fbb6ec141b0e1b097fe348cfba44">USRFRAME_TORETRANSMIT</a>) ) {<span class="comment">// @note ack send during the next tx|| ( packet.IsFrameToSend == USERACK_TOSEND ) ) {</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  packet.IsFrameToSend = <a class="code" href="_define_8h.html#abed82baf7f470b522273a3e37c24c600a60da90b27343f9b3adfa1d6872cf0a50">NOFRAME_TOSEND</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  RtcTargetTimer = <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RtcGetTimeSecond( ) + <a class="code" href="utilities_8cpp.html#af5d8ad6dae489ac64821e7d4f004595d">randr</a>( 2, 6 ); </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4aa8f0e13128d7ea647ee74017da6d8bf0">LWPSTATE_TXwait</a>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  RadioReset ( ) ; </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a8bd48a2deed5279c6bf53c9448af5ef0">LWPSTATE_IDLE</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  ValidRxPacket = <a class="code" href="_define_8h.html#ac1b1454c99671113bca600652e09e8bdaef3ea05f07ff39af6a1342f92723e15d">NO_MORE_VALID_RX_PACKET</a>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">/* STATE TXwait MAC */</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4aa8f0e13128d7ea647ee74017da6d8bf0">LWPSTATE_TXwait</a>:</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>(<span class="stringliteral">"."</span>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span> ( <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RtcGetTimeSecond( ) > RtcTargetTimer) {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4adca8bdd08d3655fcaf97181d28d849d2">LWPSTATE_SEND</a>; <span class="comment">//@note the frame have already been prepare in Upadate Mac Layer</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">default</span>: </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" Illegal state\n "</span> );</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> ( StateLoraWanProcess );</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="comment">/***********************************************************************************************/</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="comment">/* End Of LoraWanProcess Method */</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment">/***********************************************************************************************/</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="comment">/* LoraWan Join Method */</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#a4585cc16886b0dc622ce768184d2d5e0"> 209</a></span> <a class="code" href="_define_8h.html#acabcd539e4bcc6575c90bd7d857b21f4">eLoraWan_Process_States</a> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::Join ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">if</span> ( StateLoraWanProcess != <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a8bd48a2deed5279c6bf53c9448af5ef0">LWPSTATE_IDLE</a> ) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" ERROR : LP STATE NOT EQUAL TO IDLE \n"</span> );</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">return</span> ( <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4ab9aa8615258fbb9c33ade69e303c4d9d">LWPSTATE_ERROR</a> );</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">if</span> ( GetIsOtaDevice ( ) == <a class="code" href="_define_8h.html#a1e0a07faefc3dd68bbdd06f7c856cc74a8aa1f734565ab74af6fa78819959bcd4">APB_DEVICE</a> ) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" ERROR : APB DEVICE CAN'T PROCCED A JOIN REQUEST\n"</span> );</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> ( <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4ab9aa8615258fbb9c33ade69e303c4d9d">LWPSTATE_ERROR</a> );</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  FailSafeTimestamp = <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RtcGetTimeSecond( ) ;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  packet.Phy.JoinedStatus = <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390a13c93a198d97e6601b511be02492a86b">NOT_JOINED</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  packet.MacNbTransCpt = packet.MacNbTrans = 1;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  packet.RegionSetDataRateDistribution( <a class="code" href="_define_8h.html#a1287040ce87452e6c780ec0917441aeaa87bc2eb3b85f4eac3137dcf4b5403b0c">JOIN_DR_DISTRIBUTION</a> ); </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  packet.RegionGiveNextDataRate ( );</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  packet.BuildJoinLoraFrame( );</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  packet.MacRx2DataRate = packet.RX2DR_INIT;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  packet.MacRx1Delay = packet.JOIN_ACCEPT_DELAY1;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4adca8bdd08d3655fcaf97181d28d849d2">LWPSTATE_SEND</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span>( StateLoraWanProcess );</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> };</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="comment">/* LoraWan IsJoined Method */</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#a0dc910d02d115bea5900567001fd2b77"> 235</a></span> <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390">eJoinStatus</a> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::IsJoined( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390">eJoinStatus</a> status = <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390a13c93a198d97e6601b511be02492a86b">NOT_JOINED</a>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  status = packet.Phy.JoinedStatus;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> ( status );</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="comment">/* LoraWan IsJoined Method */</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#adf904fdda3d554b8759258be6d93d902"> 245</a></span> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::NewJoin ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  packet.Phy.JoinedStatus = <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390a13c93a198d97e6601b511be02492a86b">NOT_JOINED</a>; </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="comment">/* LoraWan SendPayload Method */</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#af5ed07270b8db6c03b6afeb9265fd2c1"> 252</a></span> <a class="code" href="_define_8h.html#acabcd539e4bcc6575c90bd7d857b21f4">eLoraWan_Process_States</a> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::SendPayload ( uint8_t fPort, <span class="keyword">const</span> uint8_t* dataIn, <span class="keyword">const</span> uint8_t sizeIn, uint8_t PacketType ) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9">eStatusLoRaWan</a> status;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  FailSafeTimestamp = <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RtcGetTimeSecond( ) ;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  packet.RegionGiveNextDataRate ( ); <span class="comment">// both choose the next tx data rate but also compute the Sf and Bw (region )</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  status = packet.RegionMaxPayloadSize ( sizeIn );</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span> ( status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" ERROR : PAYLOAD SIZE TOO HIGH \n"</span> );</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">return</span> ( <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4ab9aa8615258fbb9c33ade69e303c4d9d">LWPSTATE_ERROR</a> );</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span> ( GetIsOtaDevice ( ) == <a class="code" href="_define_8h.html#a1e0a07faefc3dd68bbdd06f7c856cc74ae38e7cd490c6c7efecee77617004e358">OTA_DEVICE</a> ) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span> ( packet.Phy.JoinedStatus == <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390a13c93a198d97e6601b511be02492a86b">NOT_JOINED</a> ) {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" ERROR : OTA DEVICE NOT JOINED YET\n"</span> );</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> ( <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4ab9aa8615258fbb9c33ade69e303c4d9d">LWPSTATE_ERROR</a> );</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  RadioReset ( ) ; </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  CopyUserPayload( dataIn,sizeIn );</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  packet.UserPayloadSize = sizeIn;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  packet.fPort = fPort;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  packet.MType = PacketType;</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>  packet.BuildTxLoraFrame( );</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  packet.EncryptTxFrame( );</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span> (PacketType == <a class="code" href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5a29fa2679de938b037756c69ea641dc78">CONF_DATA_UP</a>){</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  packet.MacNbTransCpt = <a class="code" href="_define_8h.html#a71551491e78ffcefdb254c00fb8bcc06">MAX_CONFUP_MSG</a>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  packet.MacNbTransCpt = packet.MacNbTrans;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  StateLoraWanProcess = <a class="code" href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4adca8bdd08d3655fcaf97181d28d849d2">LWPSTATE_SEND</a>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span>( StateLoraWanProcess );</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> };</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="comment">/* LoraWan Receive Method */</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#ad78f345b6a38581433b4193df9c7d5f7"> 288</a></span> <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9">eStatusLoRaWan</a> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::ReceivePayload ( uint8_t* UserRxFport, uint8_t* UserRxPayload, uint8_t* UserRxPayloadSize ) {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9">eStatusLoRaWan</a> status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>; </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span> (packet.AvailableRxPacketForUser == <a class="code" href="_define_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da97bb67b41ce2bd4f20bd3318c4c4739a">NO_LORA_RXPACKET_AVAILABLE</a>) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  *UserRxPayloadSize = packet.MacRxPayloadSize;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  *UserRxFport = packet.FportRx;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  memcpy( UserRxPayload, &packet.MacRxPayload[0], packet.MacRxPayloadSize);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  packet.AvailableRxPacketForUser = <a class="code" href="_define_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da97bb67b41ce2bd4f20bd3318c4c4739a">NO_LORA_RXPACKET_AVAILABLE</a> ;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span>( status );</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> };</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="comment">/* LoraWan AdrModeSelect Method */</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE></div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#abcb65e077d41cd395030e7679d8c4e3c"> 305</a></span> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::SetDataRateStrategy( <a class="code" href="_define_8h.html#a1287040ce87452e6c780ec0917441aea">eDataRateStrategy</a> adrModeSelect ) {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  packet.AdrModeSelect = adrModeSelect;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  packet.RegionSetDataRateDistribution( adrModeSelect );</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> };</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="comment">/* LoraWan GetDevAddr Method */</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#ac6cb84ba9ccb3197382280abc72d453c"> 315</a></span> uint32_t <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::GetDevAddr ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">return</span>(packet.DevAddr);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="comment">/* LoraWan GetNextPower Method */</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE></div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#ac833ad6ffd937e093709f6fc309e2276"> 323</a></span> uint8_t <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::GetNextPower ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">return</span>(packet.MacTxPower);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="comment">/* LoraWan GetLorawanProcessState Method */</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#add21dc9bc142938b0b37f958f6874100"> 331</a></span> <a class="code" href="_define_8h.html#acabcd539e4bcc6575c90bd7d857b21f4">eLoraWan_Process_States</a> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::GetLorawanProcessState ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">return</span>(StateLoraWanProcess);</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>  </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="comment">/* LoraWan RestoreContext Method */</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#a29662757556ca754ab1b314efd350a6c"> 339</a></span> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::RestoreContext ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  packet.LoadFromFlash ( );</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> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </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="comment">/**************************************************/</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="comment">/* LoraWan GetNextMaxPayloadLength Method */</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE></div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#a5a43bf270bf1b0b3642d7989d8746023"> 350</a></span> uint32_t <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::GetNextMaxPayloadLength ( <span class="keywordtype">void</span> ) {<span class="comment">// error return during tx send to be replace by get datarate?</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">return</span>(0);<span class="comment">//@NOTE NOT YET IMPLEMENTED</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> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="comment">/* LoraWan GetNextDataRate Method */</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="comment">/**************************************************/</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#a4e9211e749e9d12bc6a044a7381efcb8"> 359</a></span> uint8_t <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::GetNextDataRate ( <span class="keywordtype">void</span> ) { <span class="comment">// note return datareate in case of adr</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">return</span>(0);<span class="comment">//@NOTE NOT YET IMPLEMENTED</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#ae3a51c4f4f4e9cbac50f65f77ad8b9cc"> 365</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> :: FactoryReset ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  packet.SetBadCrcInFlash ( ) ;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#a15850f3c7c700edaed5f780d34bff4a8"> 370</a></span> <a class="code" href="_define_8h.html#a1e0a07faefc3dd68bbdd06f7c856cc74">eDeviceTypeOTA_APB</a> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::GetIsOtaDevice (<span class="keywordtype">void</span>){</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">return</span> (<a class="code" href="_define_8h.html#a1e0a07faefc3dd68bbdd06f7c856cc74">eDeviceTypeOTA_APB</a>)packet.otaDevice;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#a0a8c97531cab1e5610e54f9c1c416185"> 374</a></span> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::SetOtaDevice (<a class="code" href="_define_8h.html#a1e0a07faefc3dd68bbdd06f7c856cc74">eDeviceTypeOTA_APB</a> deviceType){</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  packet.otaDevice = deviceType;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="comment">/************************************************************************************************/</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="comment">/* Private Methods */</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="comment">/************************************************************************************************/</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::CopyUserPayload( <span class="keyword">const</span> uint8_t* dataIn, <span class="keyword">const</span> uint8_t sizeIn ) {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  memcpy( &packet.Phy.TxPhyPayload[ <a class="code" href="_define_8h.html#ae061a743ab0a1f3b7eb4c965c75236e9">FHDROFFSET</a> + packet.FoptsTxLengthCurrent ], dataIn, sizeIn );</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> };</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> uint8_t <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::GetStateTimer(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">return</span> (packet.StateTimer);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#a3f4c1635a946635fdffa4af569ce5f27"> 392</a></span> uint8_t <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::GetRadioState ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> packet.Phy.<a class="code" href="class_lora_wan_object.html#a3f4c1635a946635fdffa4af569ce5f27">GetRadioState</a>( );</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> };</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  </div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> uint8_t <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::GetRadioIrqFlag ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">return</span> packet.Phy.RegIrqFlag;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> };</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::RadioReset ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  packet.Phy.Radio->Reset();</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span> R> <span class="keyword">class </span>T, <span class="keyword">class </span>RADIOTYPE> </div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="class_lora_wan_object.html#a3432781cfedda764c71fa2839c54a9bd"> 405</a></span> uint8_t <a class="code" href="class_lora_wan_object.html">LoraWanObject <T,RADIOTYPE></a> ::GetNbOfReset (<span class="keywordtype">void</span>){</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">return</span> packet.NbOfReset;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> }</div><div class="ttc" id="structs_lo_ra_wan_keys_html"><div class="ttname"><a href="structs_lo_ra_wan_keys.html">sLoRaWanKeys</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00266">Define.h:266</a></div></div>
<div class="ttc" id="_define_8h_html_ae061a743ab0a1f3b7eb4c965c75236e9"><div class="ttname"><a href="_define_8h.html#ae061a743ab0a1f3b7eb4c965c75236e9">FHDROFFSET</a></div><div class="ttdeci">#define FHDROFFSET</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00173">Define.h:173</a></div></div>
<div class="ttc" id="_define_8h_html_af1206b4d3bda8c4c8c9257f369a9e9e1"><div class="ttname"><a href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a></div><div class="ttdeci">#define DEBUG_MSG(str)</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00043">Define.h:43</a></div></div>
<div class="ttc" id="_define_8h_html_a1e0a07faefc3dd68bbdd06f7c856cc74"><div class="ttname"><a href="_define_8h.html#a1e0a07faefc3dd68bbdd06f7c856cc74">eDeviceTypeOTA_APB</a></div><div class="ttdeci">eDeviceTypeOTA_APB</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00104">Define.h:104</a></div></div>
<div class="ttc" id="_define_8h_html_acabcd539e4bcc6575c90bd7d857b21f4"><div class="ttname"><a href="_define_8h.html#acabcd539e4bcc6575c90bd7d857b21f4">eLoraWan_Process_States</a></div><div class="ttdeci">enum LoraWan_Process_States eLoraWan_Process_States</div></div>
<div class="ttc" id="_define_8h_html_a99fb83031ce9923c84392b4e92f956b5a29fa2679de938b037756c69ea641dc78"><div class="ttname"><a href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5a29fa2679de938b037756c69ea641dc78">CONF_DATA_UP</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00093">Define.h:93</a></div></div>
<div class="ttc" id="_define_8h_html_ab894a4c21b8aae9e9c68d8c426a66956a16d23020bee85c2ada36491598054bab"><div class="ttname"><a href="_define_8h.html#ab894a4c21b8aae9e9c68d8c426a66956a16d23020bee85c2ada36491598054bab">RX2</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00229">Define.h:229</a></div></div>
<div class="ttc" id="_define_8h_html_a1cea710adbbf5b02bced8f79cd82f7b9"><div class="ttname"><a href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9">eStatusLoRaWan</a></div><div class="ttdeci">eStatusLoRaWan</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00211">Define.h:211</a></div></div>
<div class="ttc" id="utilities_8h_html"><div class="ttname"><a href="utilities_8h.html">utilities.h</a></div></div>
<div class="ttc" id="_define_8h_html_a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d"><div class="ttname"><a href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00212">Define.h:212</a></div></div>
<div class="ttc" id="_define_8h_html_adf764cbdea00d65edcd07bb9953ad2b7a568fdab697236b10631b5b2591a9fd79"><div class="ttname"><a href="_define_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a568fdab697236b10631b5b2591a9fd79">RADIOSTATE_TXFINISHED</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00079">Define.h:79</a></div></div>
<div class="ttc" id="_define_8h_html_a9aa4864b327c9be843762dbedf6419e4adca8bdd08d3655fcaf97181d28d849d2"><div class="ttname"><a href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4adca8bdd08d3655fcaf97181d28d849d2">LWPSTATE_SEND</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00056">Define.h:56</a></div></div>
<div class="ttc" id="_define_8h_html_a1e0a07faefc3dd68bbdd06f7c856cc74ae38e7cd490c6c7efecee77617004e358"><div class="ttname"><a href="_define_8h.html#a1e0a07faefc3dd68bbdd06f7c856cc74ae38e7cd490c6c7efecee77617004e358">OTA_DEVICE</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00105">Define.h:105</a></div></div>
<div class="ttc" id="_api_mcu_8h_html"><div class="ttname"><a href="_api_mcu_8h.html">ApiMcu.h</a></div></div>
<div class="ttc" id="_api_mcu_8h_html_aa87430f83eb1f3f004ab4ec725f8b8a9"><div class="ttname"><a href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a></div><div class="ttdeci">McuXX< McuSTM32L4 > mcu</div><div class="ttdoc">Radio Interrupt Pin declarations. </div></div>
<div class="ttc" id="_define_8h_html_adf764cbdea00d65edcd07bb9953ad2b7a06088d64207e78dc90f284ce590db72c"><div class="ttname"><a href="_define_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a06088d64207e78dc90f284ce590db72c">RADIOSTATE_IDLE</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00077">Define.h:77</a></div></div>
<div class="ttc" id="_define_8h_html_a9aa4864b327c9be843762dbedf6419e4ad192deffa53bfbd5e898b1589f0bf644"><div class="ttname"><a href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4ad192deffa53bfbd5e898b1589f0bf644">LWPSTATE_RX2</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00058">Define.h:58</a></div></div>
<div class="ttc" id="class_lora_wan_object_html_a3f4c1635a946635fdffa4af569ce5f27"><div class="ttname"><a href="class_lora_wan_object.html#a3f4c1635a946635fdffa4af569ce5f27">LoraWanObject::GetRadioState</a></div><div class="ttdeci">uint8_t GetRadioState(void)</div><div class="ttdoc">Return the state of the Radio. </div><div class="ttdef"><b>Definition:</b> <a href="_lora_wan_process_8cpp_source.html#l00392">LoraWanProcess.cpp:392</a></div></div>
<div class="ttc" id="_define_8h_html_a0411cd49bb5b71852cecd93bcbf0ca2da97bb67b41ce2bd4f20bd3318c4c4739a"><div class="ttname"><a href="_define_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da97bb67b41ce2bd4f20bd3318c4c4739a">NO_LORA_RXPACKET_AVAILABLE</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00235">Define.h:235</a></div></div>
<div class="ttc" id="_define_8h_html_a1287040ce87452e6c780ec0917441aea"><div class="ttname"><a href="_define_8h.html#a1287040ce87452e6c780ec0917441aea">eDataRateStrategy</a></div><div class="ttdeci">eDataRateStrategy</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00203">Define.h:203</a></div></div>
<div class="ttc" id="_define_8h_html_ab894a4c21b8aae9e9c68d8c426a66956a56a438ee3630fd80572b82bf5db6ef85"><div class="ttname"><a href="_define_8h.html#ab894a4c21b8aae9e9c68d8c426a66956a56a438ee3630fd80572b82bf5db6ef85">RX1</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00228">Define.h:228</a></div></div>
<div class="ttc" id="_define_8h_html_a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0"><div class="ttname"><a href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00213">Define.h:213</a></div></div>
<div class="ttc" id="_define_8h_html_abc6126af1d45847bc59afa0aa3216b04a0a5a738d2d9b9f6beb195a6683b1703d"><div class="ttname"><a href="_define_8h.html#abc6126af1d45847bc59afa0aa3216b04a0a5a738d2d9b9f6beb195a6683b1703d">LORAWANR1</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00100">Define.h:100</a></div></div>
<div class="ttc" id="_lora_wan_process_8h_html"><div class="ttname"><a href="_lora_wan_process_8h.html">LoraWanProcess.h</a></div><div class="ttdoc">Minimalistic LoRaWAN stack implementation. </div></div>
<div class="ttc" id="class_lora_wan_object_html_a87c736c95588e388ae5c2475220827c4"><div class="ttname"><a href="class_lora_wan_object.html#a87c736c95588e388ae5c2475220827c4">LoraWanObject::LoraWanObject</a></div><div class="ttdeci">LoraWanObject(sLoRaWanKeys LoRaWanKeys, RADIOTYPE *RadioUser, uint32_t FlashAdress)</div><div class="ttdoc">LoraWanObject class constructor. </div><div class="ttdef"><b>Definition:</b> <a href="_lora_wan_process_8cpp_source.html#l00030">LoraWanProcess.cpp:30</a></div></div>
<div class="ttc" id="_define_8h_html_ac1b1454c99671113bca600652e09e8bdae2376060a89d610d7e25eda58a1ebe99"><div class="ttname"><a href="_define_8h.html#ac1b1454c99671113bca600652e09e8bdae2376060a89d610d7e25eda58a1ebe99">JOIN_ACCEPT_PACKET</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00225">Define.h:225</a></div></div>
<div class="ttc" id="_define_8h_html_a1287040ce87452e6c780ec0917441aeaa87bc2eb3b85f4eac3137dcf4b5403b0c"><div class="ttname"><a href="_define_8h.html#a1287040ce87452e6c780ec0917441aeaa87bc2eb3b85f4eac3137dcf4b5403b0c">JOIN_DR_DISTRIBUTION</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00207">Define.h:207</a></div></div>
<div class="ttc" id="_class_s_t_m32_l0_8h_html_a5ceb873075d76667eb54dc6a7d2734d1aeabfc02d4ccd637570870381394b0bbd"><div class="ttname"><a href="_class_s_t_m32_l0_8h.html#a5ceb873075d76667eb54dc6a7d2734d1aeabfc02d4ccd637570870381394b0bbd">SERIAL_TX</a></div><div class="ttdef"><b>Definition:</b> <a href="_class_s_t_m32_l0_8h_source.html#l00148">ClassSTM32L0.h:148</a></div></div>
<div class="ttc" id="_define_8h_html_abed82baf7f470b522273a3e37c24c600a16e5fbd85d85ee3ed46b3868a8a49683"><div class="ttname"><a href="_define_8h.html#abed82baf7f470b522273a3e37c24c600a16e5fbd85d85ee3ed46b3868a8a49683">NWKFRAME_TOSEND</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00246">Define.h:246</a></div></div>
<div class="ttc" id="_define_8h_html_a0be11ce2e33906806ac4e521781809c0"><div class="ttname"><a href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a></div><div class="ttdeci">#define DEBUG_PRINTF(fmt, args...)</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00044">Define.h:44</a></div></div>
<div class="ttc" id="_define_8h_html_abed82baf7f470b522273a3e37c24c600a60da90b27343f9b3adfa1d6872cf0a50"><div class="ttname"><a href="_define_8h.html#abed82baf7f470b522273a3e37c24c600a60da90b27343f9b3adfa1d6872cf0a50">NOFRAME_TOSEND</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00245">Define.h:245</a></div></div>
<div class="ttc" id="_define_8h_html"><div class="ttname"><a href="_define_8h.html">Define.h</a></div><div class="ttdoc">LoRaWan Mac parameters. </div></div>
<div class="ttc" id="_define_8h_html_a1e0a07faefc3dd68bbdd06f7c856cc74a8aa1f734565ab74af6fa78819959bcd4"><div class="ttname"><a href="_define_8h.html#a1e0a07faefc3dd68bbdd06f7c856cc74a8aa1f734565ab74af6fa78819959bcd4">APB_DEVICE</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00106">Define.h:106</a></div></div>
<div class="ttc" id="_define_8h_html_a9aa4864b327c9be843762dbedf6419e4ab9aa8615258fbb9c33ade69e303c4d9d"><div class="ttname"><a href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4ab9aa8615258fbb9c33ade69e303c4d9d">LWPSTATE_ERROR</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00062">Define.h:62</a></div></div>
<div class="ttc" id="_define_8h_html_ac1b1454c99671113bca600652e09e8bdaab93c24e4575a32534ac32a2351b5a66"><div class="ttname"><a href="_define_8h.html#ac1b1454c99671113bca600652e09e8bdaab93c24e4575a32534ac32a2351b5a66">USERRX_FOPTSPACKET</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00223">Define.h:223</a></div></div>
<div class="ttc" id="_define_8h_html_adf764cbdea00d65edcd07bb9953ad2b7a3db55fb40bb6ed7f2e8a6808aed4d94c"><div class="ttname"><a href="_define_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a3db55fb40bb6ed7f2e8a6808aed4d94c">RADIOSTATE_RX1FINISHED</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00080">Define.h:80</a></div></div>
<div class="ttc" id="_define_8h_html_a9aa4864b327c9be843762dbedf6419e4a8076f3dea202a2cc1a6753ba77375263"><div class="ttname"><a href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a8076f3dea202a2cc1a6753ba77375263">LWPSTATE_UPDATEMAC</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00060">Define.h:60</a></div></div>
<div class="ttc" id="_define_8h_html_a9aa4864b327c9be843762dbedf6419e4abd39ae3792d8b9299c71ee885423c8c4"><div class="ttname"><a href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4abd39ae3792d8b9299c71ee885423c8c4">LWPSTATE_PROCESSDOWNLINK</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00059">Define.h:59</a></div></div>
<div class="ttc" id="_define_8h_html_a9aa4864b327c9be843762dbedf6419e4a8bd48a2deed5279c6bf53c9448af5ef0"><div class="ttname"><a href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a8bd48a2deed5279c6bf53c9448af5ef0">LWPSTATE_IDLE</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00055">Define.h:55</a></div></div>
<div class="ttc" id="_define_8h_html_abe3daafdb4fec314926c12003b3ad390a13c93a198d97e6601b511be02492a86b"><div class="ttname"><a href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390a13c93a198d97e6601b511be02492a86b">NOT_JOINED</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00240">Define.h:240</a></div></div>
<div class="ttc" id="_define_8h_html_a9aa4864b327c9be843762dbedf6419e4aa8f0e13128d7ea647ee74017da6d8bf0"><div class="ttname"><a href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4aa8f0e13128d7ea647ee74017da6d8bf0">LWPSTATE_TXwait</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00061">Define.h:61</a></div></div>
<div class="ttc" id="_class_s_t_m32_l0_8h_html_a5ceb873075d76667eb54dc6a7d2734d1aba1ef9d1ebae9877675c542721c5de02"><div class="ttname"><a href="_class_s_t_m32_l0_8h.html#a5ceb873075d76667eb54dc6a7d2734d1aba1ef9d1ebae9877675c542721c5de02">SERIAL_RX</a></div><div class="ttdef"><b>Definition:</b> <a href="_class_s_t_m32_l0_8h_source.html#l00149">ClassSTM32L0.h:149</a></div></div>
<div class="ttc" id="_define_8h_html_a9aa4864b327c9be843762dbedf6419e4a22596686bf19b0d02e860cf9bfa2963f"><div class="ttname"><a href="_define_8h.html#a9aa4864b327c9be843762dbedf6419e4a22596686bf19b0d02e860cf9bfa2963f">LWPSTATE_RX1</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00057">Define.h:57</a></div></div>
<div class="ttc" id="_define_8h_html_ac1b1454c99671113bca600652e09e8bdaef3ea05f07ff39af6a1342f92723e15d"><div class="ttname"><a href="_define_8h.html#ac1b1454c99671113bca600652e09e8bdaef3ea05f07ff39af6a1342f92723e15d">NO_MORE_VALID_RX_PACKET</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00222">Define.h:222</a></div></div>
<div class="ttc" id="_define_8h_html_ab50e1f84d728c6ede52a9606a2a262d5a87a27068f5ce93c240d9289532568e7b"><div class="ttname"><a href="_define_8h.html#ab50e1f84d728c6ede52a9606a2a262d5a87a27068f5ce93c240d9289532568e7b">RECEIVE_PACKET_IRQ_FLAG</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00161">Define.h:161</a></div></div>
<div class="ttc" id="utilities_8cpp_html_af5d8ad6dae489ac64821e7d4f004595d"><div class="ttname"><a href="utilities_8cpp.html#af5d8ad6dae489ac64821e7d4f004595d">randr</a></div><div class="ttdeci">int32_t randr(int32_t min, int32_t max)</div><div class="ttdoc">Computes a random number between min and max. </div><div class="ttdef"><b>Definition:</b> <a href="utilities_8cpp_source.html#l00041">utilities.cpp:41</a></div></div>
<div class="ttc" id="class_lora_wan_object_html"><div class="ttname"><a href="class_lora_wan_object.html">LoraWanObject</a></div><div class="ttdoc">An absolutely minimalistic LoRaWAN Class A stack implementation . </div><div class="ttdef"><b>Definition:</b> <a href="_lora_wan_process_8h_source.html#l00038">LoraWanProcess.h:38</a></div></div>
<div class="ttc" id="_define_8h_html_a71551491e78ffcefdb254c00fb8bcc06"><div class="ttname"><a href="_define_8h.html#a71551491e78ffcefdb254c00fb8bcc06">MAX_CONFUP_MSG</a></div><div class="ttdeci">#define MAX_CONFUP_MSG</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00153">Define.h:153</a></div></div>
<div class="ttc" id="_define_8h_html_ac1b1454c99671113bca600652e09e8bda8a88beb4b6371202d48e3142605a1444"><div class="ttname"><a href="_define_8h.html#ac1b1454c99671113bca600652e09e8bda8a88beb4b6371202d48e3142605a1444">NWKRXPACKET</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00224">Define.h:224</a></div></div>
<div class="ttc" id="_define_8h_html_abe3daafdb4fec314926c12003b3ad390"><div class="ttname"><a href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390">eJoinStatus</a></div><div class="ttdeci">eJoinStatus</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00239">Define.h:239</a></div></div>
<div class="ttc" id="_define_8h_html_abed82baf7f470b522273a3e37c24c600a78c7fbb6ec141b0e1b097fe348cfba44"><div class="ttname"><a href="_define_8h.html#abed82baf7f470b522273a3e37c24c600a78c7fbb6ec141b0e1b097fe348cfba44">USRFRAME_TORETRANSMIT</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00248">Define.h:248</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>