-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_mac_layer_8cpp_source.html
More file actions
253 lines (251 loc) · 263 KB
/
Copy path_mac_layer_8cpp_source.html
File metadata and controls
253 lines (251 loc) · 263 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
<!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/MacLayer.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">MacLayer.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="_mac_layer_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 : LoraWan Mac Layer objets. </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">License : Revised BSD License, see LICENSE.TXT file include in the project</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">Maintainer : Fabien Holin ( SEMTECH)</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">*/</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "<a class="code" href="_mac_layer_8h.html">MacLayer.h</a>"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "<a class="code" href="_lo_ra_mac_crypto_8h.html">LoRaMacCrypto.h</a>"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "<a class="code" href="_lora_wan_process_8h.html">LoraWanProcess.h</a>"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_define_8h.html">Define.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="_phy_layer_8h.html">PhyLayer.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">#include "<a class="code" href="_user_define_8h.html">UserDefine.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "stdio.h"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "math.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">/*************************************************/</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">/* Constructors */</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">/*@note have to check init values */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">/*************************************************/</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="class_lora_wan_container.html">LoraWanContainer <16,SX1276></a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="class_lora_wan_container.html">LoraWanContainer <16,SX126x></a>;</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a44404ff31803a6c55ffc152c023a7db8"> 31</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <a class="code" href="class_lora_wan_container.html#a44404ff31803a6c55ffc152c023a7db8">LoraWanContainer<NBCHANNEL, R>::LoraWanContainer</a>(<a class="code" href="structs_lo_ra_wan_keys.html">sLoRaWanKeys</a> LoRaWanKeys, R * RadioUser,uint32_t FlashAdress)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  :Phy( RadioUser ) { </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="class_lora_wan_container.html#a1fd80f37a0842928631d917de271cfe9">StateTimer</a> = <a class="code" href="_define_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba9dd99043356ca36d6520ce1b7e4c0dca">TIMERSTATE_SLEEP</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_lora_wan_container.html#a736200328d8ff1538edfed3293e02ca9">AvailableRxPacketForUser</a> = <a class="code" href="_define_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da97bb67b41ce2bd4f20bd3318c4c4739a">NO_LORA_RXPACKET_AVAILABLE</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  memcpy( <a class="code" href="class_lora_wan_container.html#abc0d832ba6477333a41e558704acc4e9">appSKey</a>, LoRaWanKeys.<a class="code" href="structs_lo_ra_wan_keys.html#ad6b6c043645eafba66603feca886fb23">LoRaMacAppSKey</a>, 16 );</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  memcpy( <a class="code" href="class_lora_wan_container.html#a93c94009fe081053ce73e0b10e05625b">nwkSKey</a>, LoRaWanKeys.<a class="code" href="structs_lo_ra_wan_keys.html#a3fbacc8200a5720c10745f5eab5c4c7e">LoRaMacNwkSKey</a>, 16 );</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  memcpy( <a class="code" href="class_lora_wan_container.html#a0453cc125759e3b32f8b6e28548dee84">appKey</a>, LoRaWanKeys.<a class="code" href="structs_lo_ra_wan_keys.html#af983e62161d0cef1452d553478e3a540">LoRaMacAppKey</a>, 16 );</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  memcpy( <a class="code" href="class_lora_wan_container.html#ad4daef996cdb75fe3b0d33076b73dd2f">devEui</a>, LoRaWanKeys.<a class="code" href="structs_lo_ra_wan_keys.html#a23f4c2f316fc8355c80f48151c4b6c83">DevEui</a>, 8 );</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  memcpy( <a class="code" href="class_lora_wan_container.html#a4cf3acd6dbeebd4bd11f79326fcf5047">appEui</a>, LoRaWanKeys.<a class="code" href="structs_lo_ra_wan_keys.html#a1f0a69278a218e8f1fde28e16c78b1b0">AppEui</a>, 8 );</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="class_lora_wan_container.html#a41cc43d7525d3c7fca17d06261d3f1f3">otaDevice</a> = LoRaWanKeys.<a class="code" href="structs_lo_ra_wan_keys.html#ac7acae00308fa51301a0b8e21cc1359e">OtaDevice</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_lora_wan_container.html#a57741eeabfb00a58e90368f2134ce7f8">FcntUp</a> = 0;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_lora_wan_container.html#aab64c8697dcf132852ff7f326f2a806a">FcntDwn</a> = 0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_lora_wan_container.html#aae352b955ec64652c64084de67d6309f">DevAddr</a> = LoRaWanKeys.<a class="code" href="structs_lo_ra_wan_keys.html#ad88facd7e11295d549ae4b2789d7d00f">LoRaDevAddr</a> ;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_lora_wan_container.html#aa92da5fb24a992b90c3bf9b1c8974643">AdrAckCnt</a> = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_lora_wan_container.html#a439b4f69a284db6eba911792a41c767a">AdrAckReq</a> = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_lora_wan_container.html#a429285e901085c2f0a9b5ddf59f0dc65">MacNbTrans</a> = 1;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_lora_wan_container.html#af3427d177dc92611f2da1507c147d317">IsFrameToSend</a> = <a class="code" href="_define_8h.html#abed82baf7f470b522273a3e37c24c600a60da90b27343f9b3adfa1d6872cf0a50">NOFRAME_TOSEND</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_lora_wan_container.html#a9b25f6e36173b50f63d594afe560d4d6">RtcNextTimeJoinSecond</a> = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_lora_wan_container.html#aaf9bed2385f02a1396f1e3bf68a71494">RetryJoinCpt</a> = 0 ;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="class_lora_wan_container.html#ab30ac450a53d4591f9555e081c1e6f25">FoptsTxLength</a> = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_lora_wan_container.html#ac9cc778ff97f8fb9182d9b8a99f6d08b">FoptsTxLengthCurrent</a> = 0;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_lora_wan_container.html#ac4263086bb1fcf19feb2fdeeeecac82c">FoptsTxLengthSticky</a> = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  FirstDwn = <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_lora_wan_container.html#a022c395b2c5a3829c14168a52a187a61">Phy</a>.JoinedStatus = ( <a class="code" href="class_lora_wan_container.html#a41cc43d7525d3c7fca17d06261d3f1f3">otaDevice</a> == <a class="code" href="_define_8h.html#a1e0a07faefc3dd68bbdd06f7c856cc74a8aa1f734565ab74af6fa78819959bcd4">APB_DEVICE</a> ) ? <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390aac10d462bda2cb61f848d5b411a45088">JOINED</a> : <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390a13c93a198d97e6601b511be02492a86b">NOT_JOINED</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  UserFlashAdress = FlashAdress;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }; </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#ae1add5f5a0620c3d513737e2e7241575"> 58</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <a class="code" href="class_lora_wan_container.html#ae1add5f5a0620c3d513737e2e7241575">LoraWanContainer<NBCHANNEL, R>::~LoraWanContainer</a>( ) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">/***********************************************************************************************/</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">/* Public Methods */</span></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">//@note Partionning Public/private not yet finalized</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">/**********************************************************************/</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">/* Called During LP.Send () */</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> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a6f0a9f6cddbd54a1fc5dd4c6de790d88"> 71</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#a6f0a9f6cddbd54a1fc5dd4c6de790d88">LoraWanContainer<NBCHANNEL, R>::BuildTxLoraFrame</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span> ( FoptsTxLengthCurrent > 15 ) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> ( <span class="stringliteral">" ERROR FOPTS TOO LONG = %d \n"</span>, FoptsTxLengthCurrent );</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  FoptsTxLengthCurrent = 0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  Fctrl = 0; </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  Fctrl = ( AdrEnable << 7 ) + ( AdrAckReq << 6 ) + ( AckBitForTx << 5 ) + FoptsTxLengthCurrent;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  AckBitForTx = 0;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  SetMacHeader( );</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  SetFrameHeader( );</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  MacPayloadSize = UserPayloadSize + <a class="code" href="_define_8h.html#ae061a743ab0a1f3b7eb4c965c75236e9">FHDROFFSET</a> + FoptsTxLengthCurrent; </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">" Devaddr = %x\n"</span>,DevAddr);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> };</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#ae9bc11031f33b9bc4928b021a6a34cbd"> 86</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#ae9bc11031f33b9bc4928b021a6a34cbd">LoraWanContainer<NBCHANNEL, R>::EncryptTxFrame</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="group___l_o_r_a_m_a_c___c_r_y_p_t_o.html#ga50339e60abea2186ca7e584b489718b1">LoRaMacPayloadEncrypt</a>( &Phy.TxPhyPayload[<a class="code" href="_define_8h.html#ae061a743ab0a1f3b7eb4c965c75236e9">FHDROFFSET</a> + FoptsTxLengthCurrent], UserPayloadSize, (fPort == <a class="code" href="_define_8h.html#a664848fcf514ef28ef599972b68a3b9a">PORTNWK</a>)? nwkSKey :appSKey, DevAddr, <a class="code" href="_define_8h.html#a7e75f3071d6911b19a563d554038f8da">UP_LINK</a>, FcntUp, &Phy.TxPhyPayload[<a class="code" href="_define_8h.html#ae061a743ab0a1f3b7eb4c965c75236e9">FHDROFFSET</a> + FoptsTxLengthCurrent] );</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="_lo_ra_mac_crypto_8h.html#a35ef45aa2ea7a562a7307c3e3a434300">LoRaMacComputeAndAddMic</a>( &Phy.TxPhyPayload[0], MacPayloadSize, nwkSKey, DevAddr, <a class="code" href="_define_8h.html#a7e75f3071d6911b19a563d554038f8da">UP_LINK</a>, FcntUp );</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  MacPayloadSize = MacPayloadSize + 4;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</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="comment">/**********************************************************************/</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">/* Called During LP.Process */</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">/**********************************************************************/</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</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="comment">/* ConfigureRadioAndSend */</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">/* Call in case of state = LWPSTATE_SEND */</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">/************************************************************************************************************************************/</span></div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#ac9a6098c71b551eccdea9b1f29f50c96"> 100</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#ac9a6098c71b551eccdea9b1f29f50c96">LoraWanContainer<NBCHANNEL, R>::ConfigureRadioAndSend</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  RegionGiveNextChannel ( ); </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  Phy.DevAddrIsr = DevAddr ; <span class="comment">//@note copy of the mac devaddr in order to filter it in the radio isr routine.</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Phy.Send(MacTxModulationCurrent, MacTxFrequencyCurrent, MacTxPower, MacTxSfCurrent, MacTxBwCurrent, MacPayloadSize);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  AdrAckCnt ++ ; <span class="comment">// increment adr counter each uplink frame;</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> };</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">/************************************************************************************************************************************/</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">/* ConfigureRadioForRx1 */</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">/* Call in case of state = LWPSTATE_SEND & Isr TX end */</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">/************************************************************************************************************************************/</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a5c438e86f462a461cbc244054a2c27bb"> 113</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#a5c438e86f462a461cbc244054a2c27bb">LoraWanContainer<NBCHANNEL, R>::ConfigureRadioForRx1</a> ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  Phy.SetRxConfig(MacTxModulationCurrent,MacRx1FrequencyCurrent, MacRx1SfCurrent, MacRx1BwCurrent, MacRxWindowMs);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> };</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">/************************************************************************************************************************************/</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment">/* ConfigureRadioForRx2 + ConfigureTimerForRx */</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">/* Call in case of state = LWPSTATE_RX1 & No Receive RX1 Packet */</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment">/************************************************************************************************************************************/</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a9f189640ccae4f4b1e11c4671c88b6c0"> 122</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#a9f189640ccae4f4b1e11c4671c88b6c0">LoraWanContainer<NBCHANNEL, R>::ConfigureRadioForRx2</a> ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  Phy.SetRxConfig(MacTxModulationCurrent, MacRx2Frequency, MacRx2SfCurrent, MacRx2BwCurrent, MacRxWindowMs );</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> };</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a077db278808a15326893610820e26b22"> 127</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#a077db278808a15326893610820e26b22">LoraWanContainer<NBCHANNEL, R>::ConfigureTimerForRx</a> ( <a class="code" href="_define_8h.html#ab894a4c21b8aae9e9c68d8c426a66956">eRxWinType</a> type ) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  uint32_t tCurrentMillisec;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  uint32_t tAlarmMillisec;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  tCurrentMillisec = <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RtcGetTimeMs( );</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span> (type == <a class="code" href="_define_8h.html#ab894a4c21b8aae9e9c68d8c426a66956a56a438ee3630fd80572b82bf5db6ef85">RX1</a>) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  RegionSetRxConfig ( <a class="code" href="_define_8h.html#ab894a4c21b8aae9e9c68d8c426a66956a56a438ee3630fd80572b82bf5db6ef85">RX1</a> );</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  ComputeRxWindowParameters ( MacRx1SfCurrent, MacRx1BwCurrent, <a class="code" href="_user_define_8h.html#ad6b73a2ceac7032b5468420fceb6122b">CRYSTAL_ERROR</a>, MacRx1Delay * 1000 , <a class="code" href="_user_define_8h.html#a65798635bcc2b9f4f44d3ffc37ab0fdf">BOARD_DELAY_RX_SETTING_MS</a> );</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  tAlarmMillisec = ( ( MacRx1Delay * 1000 )+ Phy.TimestampRtcIsr ) - tCurrentMillisec ;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> ( (<span class="keywordtype">int</span>)(tAlarmMillisec - RxOffsetMs) < 0 ) {<span class="comment">// too late to launch a timer</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  Phy.StateRadioProcess = <a class="code" href="_define_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a3db55fb40bb6ed7f2e8a6808aed4d94c">RADIOSTATE_RX1FINISHED</a> ;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  } <span class="keywordflow">else</span> { </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  SetAlarm( tAlarmMillisec - RxOffsetMs , type );</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  Phy.LastTimeRxWindowsMs = ( ( MacRx1Delay * 1000 )+ Phy.TimestampRtcIsr ) - RxOffsetMs + MacRxWindowMs ; <span class="comment">// timestamp of the end of rx1 windows</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  RegionSetRxConfig ( <a class="code" href="_define_8h.html#ab894a4c21b8aae9e9c68d8c426a66956a16d23020bee85c2ada36491598054bab">RX2</a> );</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  ComputeRxWindowParameters ( MacRx2SfCurrent, MacRx2BwCurrent, <a class="code" href="_user_define_8h.html#ad6b73a2ceac7032b5468420fceb6122b">CRYSTAL_ERROR</a>, MacRx1Delay * 1000 + 1000 , <a class="code" href="_user_define_8h.html#a65798635bcc2b9f4f44d3ffc37ab0fdf">BOARD_DELAY_RX_SETTING_MS</a> );</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  tAlarmMillisec = ( MacRx1Delay * 1000 ) + 1000 + Phy.TimestampRtcIsr - tCurrentMillisec ;<span class="comment">// @note Rx2 Dalay is alway RX1DELAY + 1 second</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  if ( (<span class="keywordtype">int</span>)(tAlarmMillisec - RxOffsetMs) < 0 ) {<span class="comment">// too late to launch a timer</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  Phy.StateRadioProcess = <a class="code" href="_define_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a06088d64207e78dc90f284ce590db72c">RADIOSTATE_IDLE</a> ;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>( <span class="stringliteral">" error case negative Timer %d ms\n"</span>, tAlarmMillisec );</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  } <span class="keywordflow">else</span> { </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  SetAlarm( tAlarmMillisec - RxOffsetMs, type );</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  Phy.LastTimeRxWindowsMs = ( MacRx1Delay * 1000 ) + 1000 + Phy.TimestampRtcIsr - RxOffsetMs + MacRxWindowMs ; <span class="comment">// timestamp of the end of rx2 windows</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>( <span class="stringliteral">" Timer will expire in %d ms\n"</span>, ( tAlarmMillisec - RxOffsetMs ) );</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</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="comment">/* DecodeRxFRame */</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">/* Call in case of state = LWPSTATE_PROCESSDOWNLINK */</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">/************************************************************************************************************************************/</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a757fc71b5986280b6702febbf7bd87f3"> 161</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <a class="code" href="_define_8h.html#ac1b1454c99671113bca600652e09e8bd">eRxPacketType</a> <a class="code" href="class_lora_wan_container.html#a757fc71b5986280b6702febbf7bd87f3">LoraWanContainer<NBCHANNEL, R>::DecodeRxFrame</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordtype">int</span> status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a> ;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="_define_8h.html#ac1b1454c99671113bca600652e09e8bd">eRxPacketType</a> RxPacketType = <a class="code" href="_define_8h.html#ac1b1454c99671113bca600652e09e8bdaef3ea05f07ff39af6a1342f92723e15d">NO_MORE_VALID_RX_PACKET</a> ; </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  uint32_t micIn ;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  status += CheckRxPayloadLength ( );</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  status += ExtractRxMhdr ( ) ;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">/************************************************************************/</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">/* Case : the receive packet is a JoinResponse */</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">/************************************************************************/</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span> ( MtypeRx == <a class="code" href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5ae0692e499625566c41ed6d1bbbb76734">JOINACCEPT</a> ) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="group___l_o_r_a_m_a_c___c_r_y_p_t_o.html#gac2379cd7cbeb6febaa2a7be5d9f04b5c">LoRaMacJoinDecrypt</a>( &Phy.RxPhyPayload[1], Phy.RxPhyPayloadSize-1, appKey, &MacRxPayload[1] );</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  MacRxPayload[0] = Phy.RxPhyPayload[0];</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  MacRxPayloadSize = Phy.RxPhyPayloadSize - <a class="code" href="_define_8h.html#afb00d7b403f205e99fe543ed4687ad1c">MICSIZE</a> ;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  memcpy((uint8_t *)&micIn, &MacRxPayload[MacRxPayloadSize], <a class="code" href="_define_8h.html#afb00d7b403f205e99fe543ed4687ad1c">MICSIZE</a>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  status += <a class="code" href="_lo_ra_mac_crypto_8h.html#a759976ba9dbb6009faff8022074992e1">LoRaMacCheckJoinMic</a>( MacRxPayload, MacRxPayloadSize, appKey, micIn);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span> ( status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <a class="code" href="_define_8h.html#ac1b1454c99671113bca600652e09e8bdae2376060a89d610d7e25eda58a1ebe99">JOIN_ACCEPT_PACKET</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">/************************************************************************/</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">/* Case : the receive packet is not a JoinResponse */</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>  uint16_t FcntDownTmp = 0;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  status += ExtractRxFhdr ( &FcntDownTmp) ;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> ( status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  status = AcceptFcntDwn ( FcntDownTmp ) ;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span> ( status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  MacRxPayloadSize = Phy.RxPhyPayloadSize - <a class="code" href="_define_8h.html#afb00d7b403f205e99fe543ed4687ad1c">MICSIZE</a> ;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  memcpy((uint8_t *)&micIn, &Phy.RxPhyPayload[MacRxPayloadSize], <a class="code" href="_define_8h.html#afb00d7b403f205e99fe543ed4687ad1c">MICSIZE</a>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  status += <a class="code" href="_lo_ra_mac_crypto_8h.html#a6045e63e9d0bcd83722aa50fcef0abc5">LoRaMacCheckMic</a>(&Phy.RxPhyPayload[0], MacRxPayloadSize, nwkSKey, DevAddr, FcntDownTmp, micIn ); <span class="comment">// @note api discussion see at the end of this file</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> ( status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>) { </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  AdrAckCnt = 0 ; <span class="comment">// reset adr counter , receive a valid frame.</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  MacNbTransCpt = 1 ; <span class="comment">// reset retransmission counter</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  FoptsTxLengthSticky = 0 ; <span class="comment">// reset the fopts of the sticky cmd receive a valide frame</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> ( <span class="stringliteral">" RESET ADRACKCNT \n"</span>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  MacRxPayloadSize = ( RxEmptyPayload == 0 )? MacRxPayloadSize - <a class="code" href="_define_8h.html#ae061a743ab0a1f3b7eb4c965c75236e9">FHDROFFSET</a> - FoptsLength : 0;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span> ( RxEmptyPayload == 0 ) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> ( FportRx == 0 ) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (FoptsLength == 0) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="group___l_o_r_a_m_a_c___c_r_y_p_t_o.html#ga41f9ba19f61b195420914ed58c8b94c7">LoRaMacPayloadDecrypt</a>( &Phy.RxPhyPayload[<a class="code" href="_define_8h.html#ae061a743ab0a1f3b7eb4c965c75236e9">FHDROFFSET</a> + FoptsLength], MacRxPayloadSize, nwkSKey, DevAddr, 1, FcntDwn, &MacNwkPayload[0] );</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  MacNwkPayloadSize = MacRxPayloadSize;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  RxPacketType = <a class="code" href="_define_8h.html#ac1b1454c99671113bca600652e09e8bda8a88beb4b6371202d48e3142605a1444">NWKRXPACKET</a> ;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="group___l_o_r_a_m_a_c___c_r_y_p_t_o.html#ga41f9ba19f61b195420914ed58c8b94c7">LoRaMacPayloadDecrypt</a>( &Phy.RxPhyPayload[<a class="code" href="_define_8h.html#ae061a743ab0a1f3b7eb4c965c75236e9">FHDROFFSET</a> + FoptsLength], MacRxPayloadSize, appSKey, DevAddr, 1, FcntDwn, &MacRxPayload[0] );</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span> ( FoptsLength != 0 ) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  memcpy ( MacNwkPayload, Fopts, FoptsLength);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  MacNwkPayloadSize = FoptsLength;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  RxPacketType = <a class="code" href="_define_8h.html#ac1b1454c99671113bca600652e09e8bdaab93c24e4575a32534ac32a2351b5a66">USERRX_FOPTSPACKET</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> ( MacRxPayloadSize > 0 ) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  AvailableRxPacketForUser = <a class="code" href="_define_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da7419d99f2624be41983cbb3062b4aa09">LORA_RX_PACKET_AVAILABLE</a>; </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span> ( FoptsLength != 0 ) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  memcpy ( MacNwkPayload, Fopts, FoptsLength);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  MacNwkPayloadSize = FoptsLength;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  RxPacketType = <a class="code" href="_define_8h.html#ac1b1454c99671113bca600652e09e8bdaab93c24e4575a32534ac32a2351b5a66">USERRX_FOPTSPACKET</a> ;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  } </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  AvailableRxPacketForUser = <a class="code" href="_define_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da7419d99f2624be41983cbb3062b4aa09">LORA_RX_PACKET_AVAILABLE</a>; </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">" RxPacketType = %d \n"</span>, RxPacketType );</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span> ( RxPacketType );</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> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</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="comment">/* UPdate Mac Layer */</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="comment">/* Call in case of state = LWPSTATE_UPDATEMAC */</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment">/************************************************************************************************************************************/</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a99e0d080f7a2bd65252d688e2a4befa1"> 239</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#a99e0d080f7a2bd65252d688e2a4befa1">LoraWanContainer<NBCHANNEL, R>::UpdateMacLayer</a> ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  AdrAckLimit = RegionGetAdrAckLimit ( );</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  AdrAckDelay = RegionGetAdrAckDelay ( );</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span> ( Phy.JoinedStatus == <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390a13c93a198d97e6601b511be02492a86b">NOT_JOINED</a> ) {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  RetryJoinCpt ++ ; <span class="comment">// reset when join ok</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">if</span> ( RetryJoinCpt < <a class="code" href="_define_8h.html#a46e5ffc6f8312e44b792dd87bb9223fe">MAX_RETRY_JOIN_DUTY_CYCLE_1000</a> ) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  RtcNextTimeJoinSecond = <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RtcGetTimeSecond( ) + ( ( <a class="code" href="_define_8h.html#af01dd4805e1d664c6f185182c500bc5b">TIMEONAIR_JOIN_SF7_MS</a> << ( MacTxSfCurrent - 7 ) ) )/10 ; <span class="comment">//@note 1/100 duty cycle fix</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  RtcNextTimeJoinSecond = <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RtcGetTimeSecond( ) + ( ( <a class="code" href="_define_8h.html#af01dd4805e1d664c6f185182c500bc5b">TIMEONAIR_JOIN_SF7_MS</a> << ( MacTxSfCurrent - 7 ) ) )/1 ; <span class="comment">//@note 1/1000 duty cycle fix</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">if</span> ( ( AdrAckCnt >= AdrAckLimit) && ( AdrAckCnt < ( AdrAckLimit + AdrAckDelay ) ) ) {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  AdrAckReq = 1 ;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span> ( AdrAckCnt >= ( AdrAckLimit + AdrAckDelay ) ) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  RegionDecreaseDataRate ( ) ;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  AdrAckCnt = AdrAckLimit ;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  AdrAckReq = 1 ;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span> ( AdrAckCnt < AdrAckLimit ) {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  AdrAckReq = 0 ;</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> ( MacNbTransCpt <= 1 ) { <span class="comment">// could also be set to 1 if receive valid ans</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  FcntUp++; </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  MacNbTransCpt = 1 ; <span class="comment">// error case shouldn't exist</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  IsFrameToSend = <a class="code" href="_define_8h.html#abed82baf7f470b522273a3e37c24c600a78c7fbb6ec141b0e1b097fe348cfba44">USRFRAME_TORETRANSMIT</a> ;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  MacNbTransCpt -- ;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="comment">/*Store Context In EEPROM */</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span> (( FcntUp % <a class="code" href="_user_define_8h.html#a177e4c7d734bdcefd2d0abda13f55887">FLASH_UPDATE_PERIOD</a> ) == 0 ){</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  SaveInFlash ( );</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>  <span class="keywordflow">if</span> ( FoptsTxLength > FoptsTxLengthSticky ) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  FoptsTxLengthCurrent = FoptsTxLength;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  memcpy(FoptsTxDataCurrent, FoptsTxData , 15);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  FoptsTxLength = 0;</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>  FoptsTxLengthCurrent = FoptsTxLengthSticky;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  memcpy(FoptsTxDataCurrent, FoptsTxDataSticky , 15);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">switch</span> ( IsFrameToSend ) {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#abed82baf7f470b522273a3e37c24c600a60da90b27343f9b3adfa1d6872cf0a50">NOFRAME_TOSEND</a> :</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="keywordflow">break</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#abed82baf7f470b522273a3e37c24c600a16e5fbd85d85ee3ed46b3868a8a49683">NWKFRAME_TOSEND</a> :</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  RegionGiveNextDataRate ( );</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  memcpy( &Phy.TxPhyPayload[<a class="code" href="_define_8h.html#ae061a743ab0a1f3b7eb4c965c75236e9">FHDROFFSET</a>], MacNwkAns, MacNwkAnsSize );</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  UserPayloadSize = MacNwkAnsSize;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  fPort = <a class="code" href="_define_8h.html#a664848fcf514ef28ef599972b68a3b9a">PORTNWK</a>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  MType = <a class="code" href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5a6b0e555756b3d5210f52cc4f1c7b7f6a">UNCONF_DATA_UP</a>; <span class="comment">//@note Mtype have to be confirm </span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  BuildTxLoraFrame( );</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  EncryptTxFrame( );</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#abed82baf7f470b522273a3e37c24c600aa01cab609dc28309b514617c3e24c6d8">USERACK_TOSEND</a> :</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</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> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="comment">/************************************************************************************************************************************/</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="comment">/* NWK MANAGEMENTS Methods */</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="comment">/* Call in case of state = LWPSTATE_UPDATEMAC & Receive either NWK Payload or Fopts */</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="comment">/************************************************************************************************************************************/</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a8b040b7c680d7fa3998a37cb462c74f7"> 308</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9">eStatusLoRaWan</a> <a class="code" href="class_lora_wan_container.html#a8b040b7c680d7fa3998a37cb462c74f7">LoraWanContainer<NBCHANNEL, R>::ParseManagementPacket</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  uint8_t CmdIdentifier;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</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="l00311"></a><span class="lineno"> 311</span>  NwkPayloadIndex = 0;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  MacNwkAnsSize = 0;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  FoptsTxLength = 0;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  FoptsTxLengthSticky = 0;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  uint8_t NbMultiLinkAdrReq = 0;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  uint8_t MaxCmdNum = 16 ; <span class="comment">//@note security to avoid an infinite While erro </span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">while</span> ( ( MacNwkPayloadSize > NwkPayloadIndex ) && ( MaxCmdNum > 0 ) ) { <span class="comment">//@note MacNwkPayloadSize and MacNwkPayload[0] are updated in Parser's method</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  MaxCmdNum --; </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">if</span> ( MaxCmdNum == 0 ) {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">return</span> ( <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> );</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  CmdIdentifier = MacNwkPayload[NwkPayloadIndex];</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">switch</span> ( CmdIdentifier ) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#a61dadd085c1777f559549e05962b2c9ea78237cbc10496f06e8d7eed241b0f936">LINK_CHECK_ANS</a> : </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  LinkCheckParser( );</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06cae7d3d2a820d5d901a679ee58c41ce959">LINK_ADR_REQ</a> :</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  NbMultiLinkAdrReq = 0;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="comment">/* extract the number of multiple link adr req specification in LoRAWan1.0.2 */</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">while</span> (( MacNwkPayload[NwkPayloadIndex + ( NbMultiLinkAdrReq + 1 ) * <a class="code" href="_define_8h.html#af85d473a2b50a23da13bead914b51d50">LINK_ADR_REQ_SIZE</a> ] == <a class="code" href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06cae7d3d2a820d5d901a679ee58c41ce959">LINK_ADR_REQ</a> ) && ( NwkPayloadIndex + <a class="code" href="_define_8h.html#af85d473a2b50a23da13bead914b51d50">LINK_ADR_REQ_SIZE</a> < MacNwkPayloadSize ) ){</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  NbMultiLinkAdrReq ++;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  LinkADRParser( NbMultiLinkAdrReq );</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06ca30093800ac522251d2c0223aa60f92b1">DUTY_CYCLE_REQ</a> :</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  DutyCycleParser( ); <span class="comment">//@note send answer but do nothing</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06cad3ac9b7397868cda52b2c29c49d9085c">RXPARRAM_SETUP_REQ</a> :</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  RXParamSetupParser( );</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  SaveInFlash ( ); </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06ca0f2fa46759932d1684d91441fb40ca2b">DEV_STATUS_REQ</a> :</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  DevStatusParser( ); <span class="comment">//@note Done but margin have no sense tb implemented</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06caa27325632060e8b473844097097c6fbc">NEW_CHANNEL_REQ</a> :</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  NewChannelParser( );</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  SaveInFlash ( );</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06ca42e572e643cde3e8425989de46533ffd">RXTIMING_SETUP_REQ</a> :</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  RXTimingSetupParser( ); </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  SaveInFlash ( );</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">case</span> <a class="code" href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06cada0414f0b7f4a60be3b28198b304f247">DIC_CHANNEL_REQ</a> :</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  DicChannelParser ( ); </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  SaveInFlash ( );</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">default</span>: </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</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="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</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>  <span class="keywordflow">return</span> ( status ); </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> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="comment">/************************************************************************************************/</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="comment">/* Private NWK MANAGEMENTS Methods */</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="comment">/************************************************************************************************/</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> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::LinkCheckParser</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">" Margin = %d , GwCnt = %d \n"</span>, MacNwkPayload[ NwkPayloadIndex + 1], MacNwkPayload[NwkPayloadIndex + 2]);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  NwkPayloadIndex += <a class="code" href="_define_8h.html#a48ab70afd1a356dd26903f027213f006">LINK_CHECK_ANS_SIZE</a>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="comment">//@NOTE NOT YET IMPLEMENTED</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="comment">/* Private NWK MANAGEMENTS : LinkADR */</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="comment">/* Note : describe multiple adr specification */</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">/* Step 1 : Create a "unwrapped channel mask" in case of multiple adr cmd with both Channem Mask and ChannnelMaskCntl */</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="comment">/* 2 : Extract from the last adr cmd datarate candidate */</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="comment">/* 3 : Extract from the last adr cmd TxPower candidate */</span> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="comment">/* 4 : Extract from the last adr cmd NBRetry candidate */</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="comment">/* 5 : Check errors cases (described below) */</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="comment">/* 6 : If No error Set new channel mask, txpower,datarate and nbretry */</span> </div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="comment">/* 7 : Compute duplicated LinkAdrAns */</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="comment">/* */</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="comment">/* Error cases 1 : Channel Cntl mask RFU for each adr cmd (in case of multiple cmd) */</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="comment">/* 2 : Undefined channel ( freq = 0 ) for active bit in the unwrapped channel mask */</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="comment">/* 3 : Unwrapped channel mask = 0 (none active channel) */</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="comment">/* 4 : For the last adr cmd not valid tx power */</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="comment">/* 5 : For the last adr cmd not valid datarate ( datarate > dRMax or datarate < dRMin for all active channel ) */</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::LinkADRParser</a>( uint8_t NbMultiLinkAdrReq ) {</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>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">" %x %x %x %x \n"</span>, MacNwkPayload[ NwkPayloadIndex + 1], MacNwkPayload[NwkPayloadIndex + 2], MacNwkPayload[NwkPayloadIndex + 3], MacNwkPayload[NwkPayloadIndex + 4] );</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</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="l00398"></a><span class="lineno"> 398</span>  <a class="code" href="_define_8h.html#abbfbf157098d2505c0cf33877b128cc9">eStatusChannel</a> statusChannel = <a class="code" href="_define_8h.html#abbfbf157098d2505c0cf33877b128cc9a3ed30409824cdd570e6e7914e0d6a91b">OKCHANNEL</a> ;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  uint8_t StatusAns = 0x7 ; <span class="comment">// initilised for ans answer ok </span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  uint8_t ChMAstCntlTemp ; </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  uint16_t ChMaskTemp ; </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  uint8_t DataRateTemp;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  uint8_t TxPowerTemp;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  uint8_t NbTransTemp;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordtype">int</span> i ;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="comment">/*Create "Unwrapped" chanel mask */</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  RegionInitChannelMask ( );</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">for</span> ( i = 0 ; i <= NbMultiLinkAdrReq ; i++ ) {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  ChMaskTemp = MacNwkPayload[ NwkPayloadIndex + ( i * <a class="code" href="_define_8h.html#af85d473a2b50a23da13bead914b51d50">LINK_ADR_REQ_SIZE</a> ) + 2 ] + ( MacNwkPayload[ NwkPayloadIndex + ( i * <a class="code" href="_define_8h.html#af85d473a2b50a23da13bead914b51d50">LINK_ADR_REQ_SIZE</a> ) +3 ] << 8 ) ;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  ChMAstCntlTemp = (MacNwkPayload[ NwkPayloadIndex + ( i * <a class="code" href="_define_8h.html#af85d473a2b50a23da13bead914b51d50">LINK_ADR_REQ_SIZE</a> ) + 4] & 0x70 ) >> 4 ;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  statusChannel = RegionBuildChannelMask ( ChMAstCntlTemp, ChMaskTemp ) ; </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">if</span> ( statusChannel == <a class="code" href="_define_8h.html#abbfbf157098d2505c0cf33877b128cc9a10548013022903b1f4d2b96703b4a3fb">ERROR_CHANNEL_CNTL</a> ) { <span class="comment">// Test ChannelCNTL not defined</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  StatusAns &= 0x6 ;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>(<span class="stringliteral">"INVALID CHANNEL CNTL \n"</span>);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  } </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="comment">/* Valid global channel mask */</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">if</span> ( statusChannel == <a class="code" href="_define_8h.html#abbfbf157098d2505c0cf33877b128cc9a0c0d8079276630d54f238d3fc4b594f7">ERROR_CHANNEL_MASK</a> ) { <span class="comment">// Test Channelmask enables a not defined channel or Channelmask = 0</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  StatusAns &= 0x6 ;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>(<span class="stringliteral">"INVALID CHANNEL MASK \n"</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  } </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">/* At This point global temporary channel mask is built and validated */</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="comment">/* Valid the last DataRate */</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  DataRateTemp = ( ( MacNwkPayload[ NwkPayloadIndex + ( NbMultiLinkAdrReq * <a class="code" href="_define_8h.html#af85d473a2b50a23da13bead914b51d50">LINK_ADR_REQ_SIZE</a> ) + 1 ] & 0xF0 ) >> 4 );</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  status = RegionIsAcceptableDataRate( DataRateTemp );</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span> ( status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) { <span class="comment">// Test Channelmask enables a not defined channel</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  StatusAns &= 0x5 ;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>(<span class="stringliteral">"INVALID DATARATE \n"</span>);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  } </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">/* Valid the last TxPower And Prepare Ans */</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  TxPowerTemp = ( MacNwkPayload[ NwkPayloadIndex + ( NbMultiLinkAdrReq * <a class="code" href="_define_8h.html#af85d473a2b50a23da13bead914b51d50">LINK_ADR_REQ_SIZE</a> ) + 1 ] & 0x0F );</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  status = RegionIsValidTxPower( TxPowerTemp );</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">if</span> ( status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) { <span class="comment">// Test tx power</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  StatusAns &= 0x3 ;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>(<span class="stringliteral">"INVALID TXPOWER \n"</span>);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  } </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  NbTransTemp = (MacNwkPayload[ NwkPayloadIndex + ( NbMultiLinkAdrReq * <a class="code" href="_define_8h.html#af85d473a2b50a23da13bead914b51d50">LINK_ADR_REQ_SIZE</a> ) + 4] & 0x0F );</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="comment">/* Update the mac parameters if case of no error */</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">if</span> ( StatusAns == 0x7 ) {</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  RegionSetMask ( ) ;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  RegionSetPower ( TxPowerTemp );</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  MacNbTrans = NbTransTemp ;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  MacTxDataRateAdr = DataRateTemp ;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacNbTrans = %d\n"</span>,MacNbTrans);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacTxDataRateAdr = %d\n"</span>,MacTxDataRateAdr);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacRx2Frequency = %d\n"</span>,MacRx2Frequency);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="comment">/* Prepare repeteated Ans*/</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">for</span> (i = 0 ; i <= NbMultiLinkAdrReq ; i++){</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  FoptsTxData [ FoptsTxLength + ( i * <a class="code" href="_define_8h.html#a4d28f59ee502fc6d9da504849e9e8e3f">LINK_ADR_ANS_SIZE</a> )] = <a class="code" href="_define_8h.html#a61dadd085c1777f559549e05962b2c9ea25c430e719383940012dfe566f878f2e">LINK_ADR_ANS</a> ; <span class="comment">// copy Cid</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  FoptsTxData [ FoptsTxLength + ( i * <a class="code" href="_define_8h.html#a4d28f59ee502fc6d9da504849e9e8e3f">LINK_ADR_ANS_SIZE</a> ) + 1 ] = StatusAns ;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  NwkPayloadIndex += ( NbMultiLinkAdrReq + 1 ) * <a class="code" href="_define_8h.html#af85d473a2b50a23da13bead914b51d50">LINK_ADR_REQ_SIZE</a> ;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  FoptsTxLength += ( NbMultiLinkAdrReq + 1 ) * <a class="code" href="_define_8h.html#a4d28f59ee502fc6d9da504849e9e8e3f">LINK_ADR_ANS_SIZE</a> ;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="comment">/* Private NWK MANAGEMENTS : RXParamSetupParser */</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> </div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::RXParamSetupParser</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">" %x %x %x %x \n"</span>, MacNwkPayload[ NwkPayloadIndex + 1], MacNwkPayload[NwkPayloadIndex + 2], MacNwkPayload[NwkPayloadIndex + 3], MacNwkPayload[NwkPayloadIndex + 4] );</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordtype">int</span> status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  uint8_t StatusAns = 0x7 ; <span class="comment">// initilised for ans answer ok </span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  uint8_t MacRx1DataRateOffsetTemp;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  uint8_t MacRx2DataRateTemp;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  uint32_t MacRx2FrequencyTemp; </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">/* Valid Rx1DrOffset And Prepare Ans */</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  MacRx1DataRateOffsetTemp = ( MacNwkPayload[ NwkPayloadIndex + 1 ] & 0x70 ) >> 4 ;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  status = RegionIsValidRx1DrOffset( MacRx1DataRateOffsetTemp );</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span> (status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  StatusAns &= 0x6 ; </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> (<span class="stringliteral">"INVALID RX1DROFFSET \n"</span>);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="comment">/* Valid MacRx2Dr And Prepare Ans */</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  MacRx2DataRateTemp = ( MacNwkPayload[ NwkPayloadIndex + 1 ] & 0x0F );</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  status = RegionIsValidDataRate( MacRx2DataRateTemp );</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">if</span> (status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  StatusAns &= 0x5 ; </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> (<span class="stringliteral">"INVALID RX2DR \n"</span>);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  </div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="comment">/* Valid MacRx2Frequency And Prepare Ans */</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  MacRx2FrequencyTemp = ( MacNwkPayload[ NwkPayloadIndex + 2 ] ) + ( MacNwkPayload[ NwkPayloadIndex + 3 ] << 8 ) + ( MacNwkPayload[ NwkPayloadIndex + 4 ] << 16 );</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  status = RegionIsValidMacFrequency ( MacRx2FrequencyTemp ) ;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">if</span> (status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  StatusAns &= 0x3 ; </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> (<span class="stringliteral">"INVALID RX2 FREQUENCY \n"</span>);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  </div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">/* Update the mac parameters if case of no error */</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">if</span> ( StatusAns == 0x7 ) {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  MacRx1DataRateOffset = MacRx1DataRateOffsetTemp;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  MacRx2DataRate = MacRx2DataRateTemp;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  MacRx2Frequency = MacRx2FrequencyTemp * 100;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacRx1DataRateOffset = %d\n"</span>,MacRx1DataRateOffset);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacRx2DataRate = %d\n"</span>,MacRx2DataRate);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacRx2Frequency = %d\n"</span>,MacRx2Frequency);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="comment">/* Prepare Ans*/</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> </div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  FoptsTxData [ FoptsTxLength ] = <a class="code" href="_define_8h.html#a61dadd085c1777f559549e05962b2c9eabdb575143df6e66f10fb6d812e7e9f10">RXPARRAM_SETUP_ANS</a> ;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  FoptsTxData [ FoptsTxLength + 1 ] = StatusAns ;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  FoptsTxLength = FoptsTxLength + <a class="code" href="_define_8h.html#a276a5249cf1dca698d5fab26d85601ec">RXPARRAM_SETUP_ANS_SIZE</a>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  FoptsTxDataSticky [ FoptsTxLengthSticky ] = <a class="code" href="_define_8h.html#a61dadd085c1777f559549e05962b2c9eabdb575143df6e66f10fb6d812e7e9f10">RXPARRAM_SETUP_ANS</a> ;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  FoptsTxDataSticky [ FoptsTxLengthSticky + 1 ] = StatusAns ;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  FoptsTxLengthSticky += <a class="code" href="_define_8h.html#a276a5249cf1dca698d5fab26d85601ec">RXPARRAM_SETUP_ANS_SIZE</a>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  NwkPayloadIndex += <a class="code" href="_define_8h.html#a309ec51d7eeeea689a4881397ee79ea2">RXPARRAM_SETUP_REQ_SIZE</a>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> }</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> </div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="comment">/* Private NWK MANAGEMENTS : DutyCycleParser */</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> </div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> </div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::DutyCycleParser</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">" %x \n"</span>, MacNwkPayload[ NwkPayloadIndex + 1]);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="comment">//uint8_t DutyCycleTemp = ( MacNwkPayload[ NwkPayloadIndex + 1] & 0xF );//@ note Duty cycle isn't manage</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="comment">/* Prepare Ans*/</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  FoptsTxData [ FoptsTxLength ] = <a class="code" href="_define_8h.html#a61dadd085c1777f559549e05962b2c9ea5a2927a34ad00a79ecf08222b62d1b8e">DUTY_CYCLE_ANS</a> ; <span class="comment">// copy Cid</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  FoptsTxLength += <a class="code" href="_define_8h.html#a138cd80b68b1486a2165efe3375762cd">DUTY_CYCLE_ANS_SIZE</a> ;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  NwkPayloadIndex += <a class="code" href="_define_8h.html#ad327f6a122c3829e76ab7f51d6423b1c">DUTY_CYCLE_REQ_SIZE</a>;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="comment">/* Private NWK MANAGEMENTS : DevStatusParser */</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::DevStatusParser</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> ( <span class="stringliteral">"Receive a dev status req\n"</span>);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  FoptsTxData [ FoptsTxLength ] = <a class="code" href="_define_8h.html#a61dadd085c1777f559549e05962b2c9eae3e90c3d20fc801cc36ee659cc208080">DEV_STATUS_ANS</a> ; <span class="comment">// copy Cid</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  FoptsTxData [ FoptsTxLength + 1 ] = 0 ;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  FoptsTxData [ FoptsTxLength + 2 ] = 0 ;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  FoptsTxLength += <a class="code" href="_define_8h.html#a79558772c6d693effea073ebe12e30ef">DEV_STATUS_ANS_SIZE</a> ;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  NwkPayloadIndex += <a class="code" href="_define_8h.html#adaf8376153939106ef0e1e5f8f17967d">DEV_STATUS_REQ_SIZE</a>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <span class="comment">/* Private NWK MANAGEMENTS : NewChannelParser */</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::NewChannelParser</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">" %x %x %x %x %x \n"</span>, MacNwkPayload[ NwkPayloadIndex + 1], MacNwkPayload[NwkPayloadIndex + 2], MacNwkPayload[NwkPayloadIndex + 3], MacNwkPayload[NwkPayloadIndex + 4], MacNwkPayload[NwkPayloadIndex + 5]);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordtype">int</span> status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  uint8_t StatusAns = 0x3 ; <span class="comment">// initilised for ans answer ok </span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  uint8_t ChannelIndexTemp;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  uint8_t DataRateRangeMaxTemp;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  uint8_t DataRateRangeMinTemp;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  uint32_t FrequencyTemp; </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="comment">/* Valid Channel Index */</span></div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  ChannelIndexTemp = MacNwkPayload[ NwkPayloadIndex + 1 ] ;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  status = RegionIsValidChannelIndex( ChannelIndexTemp );</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">if</span> (status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  StatusAns &= 0x0 ; </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> (<span class="stringliteral">"INVALID CHANNEL INDEX \n"</span>);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="comment">/* Valid Frequency */</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  FrequencyTemp = ( MacNwkPayload[ NwkPayloadIndex + 2 ] ) + ( MacNwkPayload[ NwkPayloadIndex + 3 ] << 8 ) + ( MacNwkPayload[ NwkPayloadIndex + 4 ] << 16 );</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  status = RegionIsValidMacFrequency ( FrequencyTemp ) ;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span> (status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  StatusAns &= 0x2 ; </div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> (<span class="stringliteral">"INVALID FREQUENCY\n"</span>);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="comment">/* Valid DRMIN/MAX */</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  DataRateRangeMinTemp = MacNwkPayload[ NwkPayloadIndex + 5 ] & 0xF;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  status = RegionIsValidDataRate ( DataRateRangeMinTemp ) ;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">if</span> (status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  StatusAns &= 0x1 ; </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> (<span class="stringliteral">"INVALID DR MIN \n"</span>);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  DataRateRangeMaxTemp = ( MacNwkPayload[ NwkPayloadIndex + 5 ] & 0xF0 ) >> 4;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  status = RegionIsValidDataRate ( DataRateRangeMaxTemp ) ;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">if</span> (status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  StatusAns &= 0x1 ; </div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> (<span class="stringliteral">"INVALID DR MAX \n"</span>);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">if</span> ( DataRateRangeMaxTemp < DataRateRangeMinTemp ) {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  StatusAns &= 0x1 ; </div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> (<span class="stringliteral">"INVALID DR MAX < DR MIN \n"</span>);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="comment">/* Update the mac parameters if case of no error */</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">if</span> ( StatusAns == 0x3 ) {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  MacTxFrequency [ ChannelIndexTemp ] = 100 * FrequencyTemp;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  MacRx1Frequency [ ChannelIndexTemp ] = 100 * FrequencyTemp;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  MacMinDataRateChannel [ ChannelIndexTemp ] = DataRateRangeMinTemp;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  MacMaxDataRateChannel [ ChannelIndexTemp ] = DataRateRangeMaxTemp;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">if</span> ( FrequencyTemp == 0 ) {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  MacChannelIndexEnabled[ ChannelIndexTemp ] = <a class="code" href="_define_8h.html#a726ca809ffd3d67ab4b8476646f26635ac53516a4abf151f572ef7a6ac3323c48">CHANNEL_DISABLED</a>;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  MacChannelIndexEnabled[ ChannelIndexTemp ] = <a class="code" href="_define_8h.html#a726ca809ffd3d67ab4b8476646f26635aa1a84b06e25f52f3eff608a2e1241e3f">CHANNEL_ENABLED</a>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacTxFrequency [ %d ] = %d\n"</span>, ChannelIndexTemp, MacTxFrequency [ ChannelIndexTemp ]);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacMinDataRateChannel [ %d ] = %d\n"</span>, ChannelIndexTemp, MacMinDataRateChannel [ ChannelIndexTemp ]);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacMaxDataRateChannel [ %d ] = %d\n"</span>, ChannelIndexTemp, MacMaxDataRateChannel [ ChannelIndexTemp ]);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  }</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> </div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="comment">/* Prepare Ans*/</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  FoptsTxData [ FoptsTxLength ] = <a class="code" href="_define_8h.html#a61dadd085c1777f559549e05962b2c9eaaedb2a565fab5da3b7675e98f8d006f0">NEW_CHANNEL_ANS</a> ; <span class="comment">// copy Cid</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  FoptsTxData [ FoptsTxLength + 1 ] = StatusAns ;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  FoptsTxLength += <a class="code" href="_define_8h.html#afcb92d5cddc0133a9fac4d4d718374cc">NEW_CHANNEL_ANS_SIZE</a> ;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  NwkPayloadIndex += <a class="code" href="_define_8h.html#a1df95514fdf4314718e2bb04ca1181ee">NEW_CHANNEL_REQ_SIZE</a>;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> }</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="comment">/* Private NWK MANAGEMENTS : RXTimingSetupParser */</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> </div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::RXTimingSetupParser</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">" %x \n"</span>, MacNwkPayload[ NwkPayloadIndex + 1]);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  MacRx1Delay = ( MacNwkPayload[ NwkPayloadIndex + 1] & 0xF );</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="comment">/* Prepare Ans*/</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  FoptsTxData [ FoptsTxLength ] = <a class="code" href="_define_8h.html#a61dadd085c1777f559549e05962b2c9eaf69f5f953cf4c773e86d21a0008772ca">RXTIMING_SETUP_ANS</a> ;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  FoptsTxLength += <a class="code" href="_define_8h.html#ac9adc074555df61af5bff00537a7beca">RXTIMING_SETUP_ANS_SIZE</a>;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  FoptsTxDataSticky [ FoptsTxLengthSticky ] = <a class="code" href="_define_8h.html#a61dadd085c1777f559549e05962b2c9eaf69f5f953cf4c773e86d21a0008772ca">RXTIMING_SETUP_ANS</a> ;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  FoptsTxLengthSticky += <a class="code" href="_define_8h.html#ac9adc074555df61af5bff00537a7beca">RXTIMING_SETUP_ANS_SIZE</a>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  NwkPayloadIndex += <a class="code" href="_define_8h.html#aa4af542cae3f1dd1697822b06bf252c5">RXTIMING_SETUP_REQ_SIZE</a>;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> </div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="comment">/* Private NWK MANAGEMENTS : DicChannelParser */</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> </div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::DicChannelParser</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">" %x %x %x %x \n"</span>, MacNwkPayload[ NwkPayloadIndex + 1], MacNwkPayload[NwkPayloadIndex + 2], MacNwkPayload[NwkPayloadIndex + 3], MacNwkPayload[NwkPayloadIndex + 4]);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordtype">int</span> status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  uint8_t StatusAns = 0x3 ; <span class="comment">// initilised for ans answer ok </span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  uint8_t ChannelIndexTemp;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  uint32_t FrequencyTemp; </div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="comment">/* Valid Channel Index */</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  ChannelIndexTemp = MacNwkPayload[ NwkPayloadIndex + 1 ] ;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">if</span> ( MacTxFrequency[ChannelIndexTemp] == 0 ) {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  StatusAns &= 0x1 ; </div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> (<span class="stringliteral">"INVALID CHANNEL INDEX \n"</span>);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  }</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="comment">/* Valid Frequency */</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  FrequencyTemp = ( MacNwkPayload[ NwkPayloadIndex + 2 ] ) + ( MacNwkPayload[ NwkPayloadIndex + 3 ] << 8 ) + ( MacNwkPayload[ NwkPayloadIndex + 4 ] << 16 );</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  status = RegionIsValidMacFrequency ( FrequencyTemp ) ;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keywordflow">if</span> (status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) {</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  StatusAns &= 0x2 ; </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> (<span class="stringliteral">"INVALID FREQUENCY\n"</span>);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="comment">/* Update the mac parameters if case of no error */</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">if</span> ( StatusAns == 0x3 ) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  MacRx1Frequency [ ChannelIndexTemp ] = 100 * FrequencyTemp;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacRxAFrequency [ %d ] = %d\n"</span>, ChannelIndexTemp, MacRx1Frequency [ ChannelIndexTemp ]);</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="comment">/* Prepare Ans*/</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  FoptsTxData [ FoptsTxLength ] = <a class="code" href="_define_8h.html#a61dadd085c1777f559549e05962b2c9ea21405b9ba654a7ec3352b4cd3941b6ea">DIC_CHANNEL_ANS</a> ;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  FoptsTxData [ FoptsTxLength + 1] = StatusAns ;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  FoptsTxLength += <a class="code" href="_define_8h.html#ab83ad2e5dbd9e122eb853dd29e0d3992">DIC_CHANNEL_ANS_SIZE</a>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  FoptsTxDataSticky [ FoptsTxLengthSticky ] = <a class="code" href="_define_8h.html#a61dadd085c1777f559549e05962b2c9ea21405b9ba654a7ec3352b4cd3941b6ea">DIC_CHANNEL_ANS</a> ;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  FoptsTxDataSticky [ FoptsTxLengthSticky + 1] = StatusAns ;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  FoptsTxLengthSticky += <a class="code" href="_define_8h.html#ab83ad2e5dbd9e122eb853dd29e0d3992">DIC_CHANNEL_ANS_SIZE</a>;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  NwkPayloadIndex += <a class="code" href="_define_8h.html#a9098be39fde160abb5edc12ebc3c087a">DIC_CHANNEL_REQ_SIZE</a>;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="comment">/* Special Case Join OTA */</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="comment">/* Call in case of state = LWPSTATE_UPDATEMAC & Receivea Join Ans */</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="comment">/********************************************************************************************************************************/</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> </div><div class="line"><a name="l00680"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a4e3a03ff91ae1ebca993206fc9d18c2d"> 680</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#a4e3a03ff91ae1ebca993206fc9d18c2d">LoraWanContainer<NBCHANNEL, R>::UpdateJoinProcedure</a> ( <span class="keywordtype">void</span> ) { <span class="comment">//@note tbd add valid test </span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  uint8_t AppNonce[6];</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  memcpy( AppNonce, &MacRxPayload[1], 6 );</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <a class="code" href="group___l_o_r_a_m_a_c___c_r_y_p_t_o.html#gad6fc2ace27fa388ec860fc2e5ae1f544">LoRaMacJoinComputeSKeys</a>(appKey, AppNonce, DevNonce, nwkSKey, appSKey );</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">if</span> ( MacRxPayloadSize > 13 ) { <span class="comment">// cflist are presents</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">for</span>( i = 0 ; i < 16 ; i++) {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  CFList[i] = MacRxPayload[13 + i];</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  RegionGetCFList ( ) ; </div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  DevAddr = MacRxPayload[7] + ( MacRxPayload[8] << 8 ) + ( MacRxPayload[9] << 16 )+ ( MacRxPayload[10] << 24 );</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  Phy.DevAddrIsr = DevAddr ; </div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  MacRx1DataRateOffset = ( MacRxPayload[11] & 0x70 ) >> 4;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  MacRx2DataRate = ( MacRxPayload[11] & 0x0F );</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  MacRx1Delay = MacRxPayload[12];</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"DevAddr= %x\n"</span>,DevAddr);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacRx1DataRateOffset= %d\n"</span>,MacRx1DataRateOffset);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacRx2DataRate= %d\n"</span>,MacRx2DataRate);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">"MacRx1Delay= %d\n"</span>,MacRx1Delay);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  Phy.JoinedStatus = <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390aac10d462bda2cb61f848d5b411a45088">JOINED</a>;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> </div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  FirstDwn = <span class="keyword">true</span>;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  FcntDwn = 0; </div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  FcntUp = 0; </div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  RetryJoinCpt = 0;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  SaveInFlash ( );</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> </div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> <span class="comment">/********************************************************/</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> <span class="comment">/* Called During LP.Join() */</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> <span class="comment">/********************************************************/</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> </div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span> </div><div class="line"><a name="l00714"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a6ae2e50f7bc0eb014745ac1e2f48d0af"> 714</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#a6ae2e50f7bc0eb014745ac1e2f48d0af">LoraWanContainer<NBCHANNEL, R>::BuildJoinLoraFrame</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  DevNonce += 1;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  MType = <a class="code" href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5ad97873f5701286759843188faca9b4f6">JOINREQUEST</a> ;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  SetMacHeader ( );</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i <8; i++){ </div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  Phy.TxPhyPayload[1+i] = appEui[7-i];</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  Phy.TxPhyPayload[9+i] = devEui[7-i];</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  }</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  Phy.TxPhyPayload[17] = ( uint8_t )( ( DevNonce & 0x00FF ) );</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  Phy.TxPhyPayload[18] = ( uint8_t )( ( DevNonce & 0xFF00 ) >> 8 );</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  MacPayloadSize = 19 ;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  uint32_t mic ; </div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="comment">// FcntUp = 1; </span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> </div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <a class="code" href="group___l_o_r_a_m_a_c___c_r_y_p_t_o.html#gac9216af326316c9e7f207d4e73aed199">LoRaMacJoinComputeMic</a>( &Phy.TxPhyPayload[0], MacPayloadSize, appKey, &mic );</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  memcpy(&Phy.TxPhyPayload[MacPayloadSize], (uint8_t *)&mic, 4);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  MacPayloadSize = MacPayloadSize + 4;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> </div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="comment">/************************************************************************************************/</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> <span class="comment">/* Private Methods */</span></div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> <span class="comment">/************************************************************************************************/</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> </div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::SetMacHeader</a>( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  Phy.TxPhyPayload[0] = ( ( MType & 0x7 ) <<5 ) + ( MajorBits & 0x3 );</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> };</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::SetFrameHeader</a>( ) {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> </div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  Phy.TxPhyPayload[1] = ( uint8_t )( ( DevAddr & 0x000000FF ) );</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  Phy.TxPhyPayload[2] = ( uint8_t )( ( DevAddr & 0x0000FF00 ) >> 8 );</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  Phy.TxPhyPayload[3] = ( uint8_t )( ( DevAddr & 0x00FF0000 ) >> 16 );</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  Phy.TxPhyPayload[4] = ( uint8_t )( ( DevAddr & 0xFF000000 ) >> 24 );</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  Phy.TxPhyPayload[5] = Fctrl;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  Phy.TxPhyPayload[6] = ( uint8_t )( ( FcntUp & 0x000000FF ) );</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  Phy.TxPhyPayload[7] = ( uint8_t )( ( FcntUp & 0x0000FF00 ) >> 8 );</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0 ; i < FoptsTxLengthCurrent ; i ++ ) {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  Phy.TxPhyPayload[ 8 + i ] = FoptsTxDataCurrent [ i ];</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  }</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  Phy.TxPhyPayload[ 8 + FoptsTxLengthCurrent ] = fPort;</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> }</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> </div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">int</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::CheckRxPayloadLength</a> ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordtype">int</span> status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">if</span> ( Phy.RxPhyPayloadSize < <a class="code" href="_define_8h.html#aefea158d90f2b9ad2f8015a728d7be8a">MIN_LORAWAN_PAYLOAD_SIZE</a> ) {</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a>;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> ( <span class="stringliteral">" ERROR CheckRxPayloadLength = %d \n"</span>,Phy.RxPhyPayloadSize);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordflow">return</span> (status);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">return</span> (status);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> }</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> </div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">int</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::ExtractRxMhdr</a> ( <span class="keywordtype">void</span> ) {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordtype">int</span> status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>; </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  MtypeRx = Phy.RxPhyPayload[0] >> 5 ;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  MajorRx = Phy.RxPhyPayload[0] & 0x3 ;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordflow">if</span> (( MtypeRx == <a class="code" href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5ad97873f5701286759843188faca9b4f6">JOINREQUEST</a>) || ( MtypeRx == <a class="code" href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5a6b0e555756b3d5210f52cc4f1c7b7f6a">UNCONF_DATA_UP</a> ) || ( MtypeRx == <a class="code" href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5a29fa2679de938b037756c69ea641dc78">CONF_DATA_UP</a>) || ( MtypeRx == <a class="code" href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5a3254cd9451556e8bdd505807682edc2c">REJOIN_REQUEST</a> )) {</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a>;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" BAD RX MHDR\n "</span> );</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  }</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  AckBitForTx = ( MtypeRx == <a class="code" href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5a554b54c648a0d753328018e8f526f24a">CONF_DATA_DOWN</a> ) ? 1 : 0 ;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  </div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">return</span> (status);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> }</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> </div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">int</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::ExtractRxFhdr</a> ( uint16_t *FcntDwnTmp ) { <span class="comment">//@note Not yet at all finalized have to initiate action on each field</span></div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordtype">int</span> status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>; </div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  uint32_t DevAddrtmp = 0 ;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  DevAddrtmp = Phy.RxPhyPayload[1] + ( Phy.RxPhyPayload[2] << 8 ) + ( Phy.RxPhyPayload[3] << 16 )+ ( Phy.RxPhyPayload[4] << 24 );</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  status = (DevAddrtmp == DevAddr) ? <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a> : <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  FctrlRx = Phy.RxPhyPayload[5] ;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  *FcntDwnTmp = Phy.RxPhyPayload[6] + ( Phy.RxPhyPayload[7] << 8 );</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  FoptsLength = FctrlRx & 0x0F;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  memcpy(&Fopts[0], &Phy.RxPhyPayload[8], FoptsLength);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="comment">// case empty payload without fport :</span></div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">if</span> ( Phy.RxPhyPayloadSize > 8 + <a class="code" href="_define_8h.html#afb00d7b403f205e99fe543ed4687ad1c">MICSIZE</a> + FoptsLength){</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  FportRx = Phy.RxPhyPayload[8+FoptsLength];</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  RxEmptyPayload = 0;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  RxEmptyPayload = 1;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>( <span class="stringliteral">" EMPTY MSG \n"</span> ); </div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="comment">/**************************/</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="comment">/* manage Fctrl Byte */</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="comment">/**************************/</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="keywordflow">if</span> (status == <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ) {</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a>(<span class="stringliteral">" ERROR %x\n "</span>, DevAddrtmp );</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keywordflow">return</span> (status);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">int</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::AcceptFcntDwn</a> ( uint16_t FcntDwnTmp ) {</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordtype">int</span> status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a400ceb20987c156a2f988a2fe4702fa0">OKLORAWAN</a>; </div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  uint16_t FcntDwnLsb = ( FcntDwn & 0x0000FFFF );</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  uint16_t FcntDwnMsb = ( FcntDwn & 0xFFFF0000 ) >> 16;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="keywordflow">if</span> ( ( FcntDwnTmp > FcntDwnLsb ) || ( FirstDwn == <span class="keyword">true</span>) ) {</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  FcntDwn = FcntDwnTmp ;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  FirstDwn = false ;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( ( FcntDwnLsb - FcntDwnTmp ) > MAX_FCNT_GAP ) {</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  FcntDwn = ( ( FcntDwnMsb + 1 ) << 16 ) + FcntDwnTmp ;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  status = <a class="code" href="_define_8h.html#a1cea710adbbf5b02bced8f79cd82f7b9a288c866323a148675d7b1ef7604ea96d">ERRORLORAWAN</a> ;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a> (<span class="stringliteral">" ERROR AcceptFcntDwn \n"</span>);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  }</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">return</span> ( status ) ;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> }</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> </div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> </div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> </div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div><div class="line"><a name="l00823"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a91e8c03b02a6672fe5f0342129618bb3"> 823</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#a91e8c03b02a6672fe5f0342129618bb3">LoraWanContainer<NBCHANNEL, R>::SaveInFlash</a> ( ) {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  uint32_t crcLow;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  uint32_t crcHigh;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a408ea06f64214043ee41e5de12cab2eb">MacTxDataRate</a> = MacTxDataRate;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a37e09d6a2caa964e66d5ee8ac5f7e3a0">MacTxPower</a> = MacTxPower;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a4295c7686f916c144783dc2304257338">MacChMask</a> = MacChMask;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a1770888f794fdf84265d196b2e2c8037">MacNbTrans</a> = MacNbTrans; </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aa6053682376d49efcba40e5cc3fd3154">MacRx2Frequency</a> = MacRx2Frequency; </div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a8e1465c70a778678ac22a136bde59966">MacRx2DataRate</a> = MacRx2DataRate;</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a5b5f63bc5dd29b8ccb149e6f20037981">MacRx1DataRateOffset</a> = MacRx1DataRateOffset;</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a1a196e3ae9619759ae25f5b5ccd64099">MacRx1Delay</a> = MacRx1Delay;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aa0c6803486a38093bd0b94cd5853361f">FcntUp</a> = FcntUp;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a56c2f91129afa9d702e322a6af174a85">FcntDwn</a> = FcntDwn;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a2032fb8ac149ddbdd397b070d46c6fda">DevAddr</a> = DevAddr;</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#adb12b0a10e2a8ded5388f251ec4d4c17">DevNonce</a> = DevNonce;</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a294ca0c27de2e0f8b6e0caf67250f419">JoinedStatus</a> = Phy.JoinedStatus;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0 ; i < NUMBER_OF_CHANNEL ; i ++ ) {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aed62b6a6b327e3999d01e7eb21681eb5">MacTxFrequency</a>[i] = MacTxFrequency[i];</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a195dfadb183b5ad2b8990791e2c517c9">MacRx1Frequency</a>[i] = MacRx1Frequency[i];</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aae081cfdc99a8f60da6df8742b7dfda1">MacMaxDataRateChannel</a>[i] = MacMaxDataRateChannel[i];</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a1c212cc8590aa2279d04306b87361bcd">MacMinDataRateChannel</a>[i] = MacMinDataRateChannel[i];</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a8c75ddd0e48e4a9d3f0d8f44b989d10f">MacChannelIndexEnabled</a>[i] = MacChannelIndexEnabled[i];</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  }</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  memcpy( &<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a36e9fab419d7959dbda8c0ca24cdaf06">nwkSKey</a>[0], &nwkSKey[0], 16);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  memcpy( &<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a8b20dcb0b7253b2125d5116ab68b188e">appSKey</a>[0], &appSKey[0], 16);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <a class="code" href="utilities_8cpp.html#a898d75f16cbadd24a57be5523557b393">Crc64</a>((uint8_t * )(&<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>), <span class="keyword">sizeof</span>(<a class="code" href="structs_back_up_flash.html">sBackUpFlash</a>) - 8, &crcLow, &crcHigh );</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a24f57cec1c39d4972d14bfb65212d74c">CrcLow</a> = crcLow;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#afc534d9e7a3e581783489765b52676a0">CrcHigh</a> = crcHigh;</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.StoreContext( &<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>, UserFlashAdress, ( <span class="keyword">sizeof</span>(<a class="code" href="structs_back_up_flash.html">sBackUpFlash</a>) >> 3 ) );</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  wait_ms( 25 ); </div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> }</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> </div><div class="line"><a name="l00855"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a488791458e4b9098607d2f502da9d633"> 855</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#a488791458e4b9098607d2f502da9d633">LoraWanContainer<NBCHANNEL, R>::SetBadCrcInFlash</a> ( ) {</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  uint32_t crcLow;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  uint32_t crcHigh;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a408ea06f64214043ee41e5de12cab2eb">MacTxDataRate</a> = MacTxDataRate;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a37e09d6a2caa964e66d5ee8ac5f7e3a0">MacTxPower</a> = MacTxPower;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a4295c7686f916c144783dc2304257338">MacChMask</a> = MacChMask;</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a1770888f794fdf84265d196b2e2c8037">MacNbTrans</a> = MacNbTrans; </div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aa6053682376d49efcba40e5cc3fd3154">MacRx2Frequency</a> = MacRx2Frequency; </div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a8e1465c70a778678ac22a136bde59966">MacRx2DataRate</a> = MacRx2DataRate;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a5b5f63bc5dd29b8ccb149e6f20037981">MacRx1DataRateOffset</a> = MacRx1DataRateOffset;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a1a196e3ae9619759ae25f5b5ccd64099">MacRx1Delay</a> = MacRx1Delay;</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aa0c6803486a38093bd0b94cd5853361f">FcntUp</a> = FcntUp;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a56c2f91129afa9d702e322a6af174a85">FcntDwn</a> = FcntDwn;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a2032fb8ac149ddbdd397b070d46c6fda">DevAddr</a> = DevAddr;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#adb12b0a10e2a8ded5388f251ec4d4c17">DevNonce</a> = DevNonce;</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a294ca0c27de2e0f8b6e0caf67250f419">JoinedStatus</a> = Phy.JoinedStatus;</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0 ; i < NUMBER_OF_CHANNEL ; i ++ ) {</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aed62b6a6b327e3999d01e7eb21681eb5">MacTxFrequency</a>[i] = MacTxFrequency[i];</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a195dfadb183b5ad2b8990791e2c517c9">MacRx1Frequency</a>[i] = MacRx1Frequency[i];</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aae081cfdc99a8f60da6df8742b7dfda1">MacMaxDataRateChannel</a>[i] = MacMaxDataRateChannel[i];</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a1c212cc8590aa2279d04306b87361bcd">MacMinDataRateChannel</a>[i] = MacMinDataRateChannel[i];</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a8c75ddd0e48e4a9d3f0d8f44b989d10f">MacChannelIndexEnabled</a>[i] = MacChannelIndexEnabled[i];</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  }</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  memcpy( &<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a36e9fab419d7959dbda8c0ca24cdaf06">nwkSKey</a>[0], &nwkSKey[0], 16);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  memcpy( &<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a8b20dcb0b7253b2125d5116ab68b188e">appSKey</a>[0], &appSKey[0], 16);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <a class="code" href="utilities_8cpp.html#a898d75f16cbadd24a57be5523557b393">Crc64</a>((uint8_t * )(&<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>), <span class="keyword">sizeof</span>(<a class="code" href="structs_back_up_flash.html">sBackUpFlash</a>) - 8, &crcLow, &crcHigh );</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a24f57cec1c39d4972d14bfb65212d74c">CrcLow</a> = crcLow + 1; <span class="comment">// bad crc</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#afc534d9e7a3e581783489765b52676a0">CrcHigh</a> = crcHigh + 1;</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.StoreContext( &<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>, UserFlashAdress, ( <span class="keyword">sizeof</span>(<a class="code" href="structs_back_up_flash.html">sBackUpFlash</a>) >> 3 ) );</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  wait_ms( 25 ); </div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> }</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> </div><div class="line"><a name="l00887"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#abc16aeda3958e34b81e72752e6331be3"> 887</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#abc16aeda3958e34b81e72752e6331be3">LoraWanContainer<NBCHANNEL, R>::LoadFromFlash</a> ( ) {</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  uint32_t crcLow;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  uint32_t crcHigh;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.RestoreContext((uint8_t *)(&<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>), UserFlashAdress, <span class="keyword">sizeof</span>(<a class="code" href="structs_back_up_flash.html">sBackUpFlash</a>));</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <a class="code" href="utilities_8cpp.html#a898d75f16cbadd24a57be5523557b393">Crc64</a>((uint8_t * )(&<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>), <span class="keyword">sizeof</span>(<a class="code" href="structs_back_up_flash.html">sBackUpFlash</a>)-8 , &crcLow, &crcHigh ); </div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">if</span> (( crcLow == <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a24f57cec1c39d4972d14bfb65212d74c">CrcLow</a> ) && ( crcHigh == <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#afc534d9e7a3e581783489765b52676a0">CrcHigh</a> ) ) { <span class="comment">// explicit else = factory reset => the default value inside the constructor</span></div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aa0c6803486a38093bd0b94cd5853361f">FcntUp</a> += <a class="code" href="_user_define_8h.html#a177e4c7d734bdcefd2d0abda13f55887">FLASH_UPDATE_PERIOD</a>; <span class="comment">//@note automatic increment</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a6b1fa618b913d529bac5adaf4ec145dc">NbOfReset</a> ++;</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  NbOfReset = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a6b1fa618b913d529bac5adaf4ec145dc">NbOfReset</a>;</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  MacTxDataRate = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a408ea06f64214043ee41e5de12cab2eb">MacTxDataRate</a>;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  MacTxPower = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a37e09d6a2caa964e66d5ee8ac5f7e3a0">MacTxPower</a>;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  MacChMask = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a4295c7686f916c144783dc2304257338">MacChMask</a>;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  MacNbTrans = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a1770888f794fdf84265d196b2e2c8037">MacNbTrans</a>; </div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  MacRx2Frequency = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aa6053682376d49efcba40e5cc3fd3154">MacRx2Frequency</a>; </div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  MacRx2DataRate = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a8e1465c70a778678ac22a136bde59966">MacRx2DataRate</a>;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  MacRx1DataRateOffset = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a5b5f63bc5dd29b8ccb149e6f20037981">MacRx1DataRateOffset</a>;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  MacRx1Delay = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a1a196e3ae9619759ae25f5b5ccd64099">MacRx1Delay</a> ;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  FcntUp = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aa0c6803486a38093bd0b94cd5853361f">FcntUp</a> ;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  FcntDwn = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a56c2f91129afa9d702e322a6af174a85">FcntDwn</a> ;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  DevAddr = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a2032fb8ac149ddbdd397b070d46c6fda">DevAddr</a>;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  DevNonce = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#adb12b0a10e2a8ded5388f251ec4d4c17">DevNonce</a>;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  Phy.JoinedStatus = ( <a class="code" href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390">eJoinStatus</a> ) <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a294ca0c27de2e0f8b6e0caf67250f419">JoinedStatus</a>;</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  for ( <span class="keywordtype">int</span> i = 0 ; i < NUMBER_OF_CHANNEL ; i ++ ) {</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  MacTxFrequency[i] = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aed62b6a6b327e3999d01e7eb21681eb5">MacTxFrequency</a>[i] ;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  MacRx1Frequency[i] = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a195dfadb183b5ad2b8990791e2c517c9">MacRx1Frequency</a>[i] ;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  MacMaxDataRateChannel[i] = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#aae081cfdc99a8f60da6df8742b7dfda1">MacMaxDataRateChannel</a>[i] ;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  MacMinDataRateChannel[i] = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a1c212cc8590aa2279d04306b87361bcd">MacMinDataRateChannel</a>[i];</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  MacChannelIndexEnabled[i] = <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a8c75ddd0e48e4a9d3f0d8f44b989d10f">MacChannelIndexEnabled</a>[i];</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  }</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  memcpy( &nwkSKey[0], &<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a36e9fab419d7959dbda8c0ca24cdaf06">nwkSKey</a>[0], 16);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  memcpy( &appSKey[0], &<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a8b20dcb0b7253b2125d5116ab68b188e">appSKey</a>[0], 16);</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <a class="code" href="utilities_8cpp.html#a898d75f16cbadd24a57be5523557b393">Crc64</a>((uint8_t * )(&<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>), <span class="keyword">sizeof</span>(<a class="code" href="structs_back_up_flash.html">sBackUpFlash</a>) - 8, &crcLow, &crcHigh );</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a24f57cec1c39d4972d14bfb65212d74c">CrcLow</a> = crcLow;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#afc534d9e7a3e581783489765b52676a0">CrcHigh</a> = crcHigh;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.StoreContext( &<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>, UserFlashAdress, ( <span class="keyword">sizeof</span>(<a class="code" href="structs_back_up_flash.html">sBackUpFlash</a>) >> 3 ) ); </div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacTxDataRate = %d "</span>, MacTxDataRate ) ;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacTxPower = %d "</span>, MacTxPower ) ;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacChMask = 0x%x "</span>, MacChMask ) ;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacRx2Frequency = %d "</span>, MacRx2Frequency ) ;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacRx2DataRate = %d "</span>, MacRx2DataRate ) ;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacRx1DataRateOffset = %d "</span>, MacRx1DataRateOffset ) ;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacRx1Delay = %d "</span>, MacRx1Delay ) ;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n FcntUp = %d "</span>, FcntUp ) ;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n FcntDwn = %d "</span>, FcntDwn ) ;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n DevAddr = 0x%x "</span>, DevAddr ) ;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n DevNonce = 0x%x "</span>, DevNonce ) ;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n JoinedStatus = %d "</span>,Phy.JoinedStatus ) ;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n NbOfReset = %d "</span>,<a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a6b1fa618b913d529bac5adaf4ec145dc">NbOfReset</a> ) ;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0 ; i < NUMBER_OF_CHANNEL ; i ++ ) {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacTxFrequency[%d]= %d "</span>, i, MacTxFrequency[i] ) ;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacRx1Frequency[%d]= %d "</span>, i, MacRx1Frequency[i] ) ;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacMaxDataRateChannel[%d] = %d "</span>, i, MacMaxDataRateChannel[i] ) ;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacMinDataRateChannel[%d] = %d "</span>, i, MacMinDataRateChannel[i] ) ;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacChannelIndexEnabled[%d] = %d \n"</span>, i, MacChannelIndexEnabled[i] );</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  }</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> </div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a>.<a class="code" href="structs_back_up_flash.html#a6b1fa618b913d529bac5adaf4ec145dc">NbOfReset</a> = 0;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  SaveInFlash ( );</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <a class="code" href="_define_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1">DEBUG_MSG</a>(<span class="stringliteral">"WRONG CRC \n"</span>);</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  NVIC_SystemReset();</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  }</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> }</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> </div><div class="line"><a name="l00951"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#a8d38cb16e6bf161520e396457d7194c4"> 951</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html#a8d38cb16e6bf161520e396457d7194c4">LoraWanContainer<NBCHANNEL, R>::PrintMacContext</a> ( ) {</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacTxDataRate = %d "</span>, MacTxDataRate ) ;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacTxPower = %d "</span>, MacTxPower ) ;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacChMask = 0x%x "</span>, MacChMask ) ;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacRx2Frequency = %d "</span>, MacRx2Frequency ) ;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacRx2DataRate = %d "</span>, MacRx2DataRate ) ;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacRx1DataRateOffset = %d "</span>, MacRx1DataRateOffset ) ;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacRx1Delay = %d "</span>, MacRx1Delay ) ;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n FcntUp = %d "</span>, FcntUp ) ;</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n FcntDwn = %d "</span>, FcntDwn ) ;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n DevAddr = 0x%x "</span>, DevAddr ) ;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n JoinedStatus = %d "</span>,Phy.JoinedStatus ) ;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0 ; i < NUMBER_OF_CHANNEL ; i ++ ) {</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacTxFrequency[%d]= %d "</span>, i, MacTxFrequency[i] ) ;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacRx1Frequency[%d]= %d "</span>, i, MacRx1Frequency[i] ) ;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacMaxDataRateChannel[%d] = %d "</span>, i, MacMaxDataRateChannel[i] ) ;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacMinDataRateChannel[%d] = %d "</span>, i, MacMinDataRateChannel[i] ) ;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <a class="code" href="_define_8h.html#a0be11ce2e33906806ac4e521781809c0">DEBUG_PRINTF</a> (<span class="stringliteral">"\n MacChannelIndexEnabled[%d] = %d \n"</span>, i, MacChannelIndexEnabled[i] );</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  }</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> }</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span> </div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> <span class="comment">/**************************************TIMER PART**********************************************************/</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> <span class="comment">/**********************************************************************************************************/</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> </div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> </div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  </div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="comment">/* Timer Isr Routine */</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> <span class="comment">/* Called when Alarm expires */</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="comment">/************************************************************************************/</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::SetAlarm</a> (uint32_t alarmInMs, <a class="code" href="_define_8h.html#ab894a4c21b8aae9e9c68d8c426a66956">eRxWinType</a> type ) {</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordflow">if</span> ( type == <a class="code" href="_define_8h.html#ab894a4c21b8aae9e9c68d8c426a66956a56a438ee3630fd80572b82bf5db6ef85">RX1</a> ) {</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.StartTimerMsecond( &<a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::CallbackIsrTimerRx1</a>,<span class="keyword">this</span>, alarmInMs);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <a class="code" href="_api_mcu_8h.html#aa87430f83eb1f3f004ab4ec725f8b8a9">mcu</a>.StartTimerMsecond( &<a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::CallbackIsrTimerRx2</a>,<span class="keyword">this</span>, alarmInMs);</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  }</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> }</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> </div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> <span class="comment">/*********************************************************************************/</span></div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="comment">/* Protected Methods */</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span> <span class="comment">/*********************************************************************************/</span></div><div class="line"><a name="l00993"></a><span class="lineno"><a class="line" href="class_lora_wan_container.html#af7ea3417212b3e06475635e3d392baf2"> 993</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">int</span> <a class="code" href="class_lora_wan_container.html#af7ea3417212b3e06475635e3d392baf2">LoraWanContainer<NBCHANNEL, R>::FindEnabledChannel</a>( uint8_t Index) {</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keywordtype">int</span> i = 0;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keywordtype">int</span> cpt = 0;</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <span class="keywordflow">for</span> ( i = 0 ; i < NUMBER_OF_CHANNEL; i ++ ) {</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="keywordflow">if</span> ( MacChannelIndexEnabled [ i ] == <a class="code" href="_define_8h.html#a726ca809ffd3d67ab4b8476646f26635aa1a84b06e25f52f3eff608a2e1241e3f">CHANNEL_ENABLED</a> ) {</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  cpt ++;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  } </div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <span class="keywordflow">if</span> (cpt == ( Index + 1 ) ) {</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordflow">return</span> ( i );</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  }</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keywordflow">return</span> (-1) ; <span class="comment">// for error case </span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> };</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="keyword">template</span> <<span class="keywordtype">int</span> NBCHANNEL, <span class="keyword">class</span> R> <span class="keywordtype">void</span> <a class="code" href="class_lora_wan_container.html">LoraWanContainer<NBCHANNEL, R>::ComputeRxWindowParameters</a>( uint8_t SF, <a class="code" href="_define_8h.html#a6cbb491180e131f374cdbe63880c85e1">eBandWidth</a> BW, uint32_t ClockAccuracy, uint32_t RxDelayMs, uint8_t BoardDelayRxMs) {</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="comment">// ClockAccuracy is set in Define.h, it is board dependent. It must be equal to error in per thousand</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  uint32_t RxErrorMs= ( ClockAccuracy * RxDelayMs ) / 1000; <span class="comment">// for example with an clockaccuracy = 30 (3%) and a rx windows set to 5s => rxerror = 150 ms </span></div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordtype">int</span> bwTemp = 125* ( BW + 1 );</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordtype">double</span> tSymbol = (double) (1<<SF) / (double) bwTemp; </div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  Phy.SymbolDuration = (uint32_t) tSymbol ;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  uint8_t minRxSymbols = 6;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  MacRxWindowSymb = (uint16_t) (<a class="code" href="utilities_8h.html#afa99ec4acc4ecb2dc3c2d05da15d0e3f">MAX</a>( ( 2 * minRxSymbols - 8 ) + (2 * RxErrorMs * bwTemp >> SF) + 1 , minRxSymbols ));</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  RxOffsetMs = ( int32_t )((ceil( ( 4.0 * tSymbol ) - ( ( MacRxWindowSymb * tSymbol ) / 2.0 ) - BoardDelayRxMs ))*(-1));</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  MacRxWindowMs = MacRxWindowSymb * tSymbol ;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</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="structs_back_up_flash_html_a1770888f794fdf84265d196b2e2c8037"><div class="ttname"><a href="structs_back_up_flash.html#a1770888f794fdf84265d196b2e2c8037">sBackUpFlash::MacNbTrans</a></div><div class="ttdeci">uint8_t MacNbTrans</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00033">LoraMacDataStoreInFlash.h:33</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_ac1b1454c99671113bca600652e09e8bd"><div class="ttname"><a href="_define_8h.html#ac1b1454c99671113bca600652e09e8bd">eRxPacketType</a></div><div class="ttdeci">eRxPacketType</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00221">Define.h:221</a></div></div>
<div class="ttc" id="_define_8h_html_adc29c2ff13d900c2f185ee95427fb06ca30093800ac522251d2c0223aa60f92b1"><div class="ttname"><a href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06ca30093800ac522251d2c0223aa60f92b1">DUTY_CYCLE_REQ</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00111">Define.h:111</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a4e3a03ff91ae1ebca993206fc9d18c2d"><div class="ttname"><a href="class_lora_wan_container.html#a4e3a03ff91ae1ebca993206fc9d18c2d">LoraWanContainer::UpdateJoinProcedure</a></div><div class="ttdeci">void UpdateJoinProcedure(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00680">MacLayer.cpp:680</a></div></div>
<div class="ttc" id="_define_8h_html_a61dadd085c1777f559549e05962b2c9eaf69f5f953cf4c773e86d21a0008772ca"><div class="ttname"><a href="_define_8h.html#a61dadd085c1777f559549e05962b2c9eaf69f5f953cf4c773e86d21a0008772ca">RXTIMING_SETUP_ANS</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00126">Define.h:126</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_a61dadd085c1777f559549e05962b2c9eae3e90c3d20fc801cc36ee659cc208080"><div class="ttname"><a href="_define_8h.html#a61dadd085c1777f559549e05962b2c9eae3e90c3d20fc801cc36ee659cc208080">DEV_STATUS_ANS</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00124">Define.h:124</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a5b5f63bc5dd29b8ccb149e6f20037981"><div class="ttname"><a href="structs_back_up_flash.html#a5b5f63bc5dd29b8ccb149e6f20037981">sBackUpFlash::MacRx1DataRateOffset</a></div><div class="ttdeci">uint8_t MacRx1DataRateOffset</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00039">LoraMacDataStoreInFlash.h:39</a></div></div>
<div class="ttc" id="_define_8h_html_a99fb83031ce9923c84392b4e92f956b5ae0692e499625566c41ed6d1bbbb76734"><div class="ttname"><a href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5ae0692e499625566c41ed6d1bbbb76734">JOINACCEPT</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00090">Define.h:90</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a195dfadb183b5ad2b8990791e2c517c9"><div class="ttname"><a href="structs_back_up_flash.html#a195dfadb183b5ad2b8990791e2c517c9">sBackUpFlash::MacRx1Frequency</a></div><div class="ttdeci">uint32_t MacRx1Frequency[16]</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00044">LoraMacDataStoreInFlash.h:44</a></div></div>
<div class="ttc" id="_define_8h_html_a99fb83031ce9923c84392b4e92f956b5a3254cd9451556e8bdd505807682edc2c"><div class="ttname"><a href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5a3254cd9451556e8bdd505807682edc2c">REJOIN_REQUEST</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00095">Define.h:95</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a56c2f91129afa9d702e322a6af174a85"><div class="ttname"><a href="structs_back_up_flash.html#a56c2f91129afa9d702e322a6af174a85">sBackUpFlash::FcntDwn</a></div><div class="ttdeci">uint32_t FcntDwn</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00057">LoraMacDataStoreInFlash.h:57</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a0453cc125759e3b32f8b6e28548dee84"><div class="ttname"><a href="class_lora_wan_container.html#a0453cc125759e3b32f8b6e28548dee84">LoraWanContainer::appKey</a></div><div class="ttdeci">uint8_t appKey[16]</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00094">MacLayer.h:94</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a9b25f6e36173b50f63d594afe560d4d6"><div class="ttname"><a href="class_lora_wan_container.html#a9b25f6e36173b50f63d594afe560d4d6">LoraWanContainer::RtcNextTimeJoinSecond</a></div><div class="ttdeci">uint32_t RtcNextTimeJoinSecond</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00159">MacLayer.h:159</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_ad4daef996cdb75fe3b0d33076b73dd2f"><div class="ttname"><a href="class_lora_wan_container.html#ad4daef996cdb75fe3b0d33076b73dd2f">LoraWanContainer::devEui</a></div><div class="ttdeci">uint8_t devEui[8]</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00095">MacLayer.h:95</a></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="class_lora_wan_container_html_a8d38cb16e6bf161520e396457d7194c4"><div class="ttname"><a href="class_lora_wan_container.html#a8d38cb16e6bf161520e396457d7194c4">LoraWanContainer::PrintMacContext</a></div><div class="ttdeci">void PrintMacContext(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00951">MacLayer.cpp:951</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="structs_back_up_flash_html_a37e09d6a2caa964e66d5ee8ac5f7e3a0"><div class="ttname"><a href="structs_back_up_flash.html#a37e09d6a2caa964e66d5ee8ac5f7e3a0">sBackUpFlash::MacTxPower</a></div><div class="ttdeci">uint8_t MacTxPower</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00031">LoraMacDataStoreInFlash.h:31</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_ac4263086bb1fcf19feb2fdeeeecac82c"><div class="ttname"><a href="class_lora_wan_container.html#ac4263086bb1fcf19feb2fdeeeecac82c">LoraWanContainer::FoptsTxLengthSticky</a></div><div class="ttdeci">uint8_t FoptsTxLengthSticky</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00112">MacLayer.h:112</a></div></div>
<div class="ttc" id="_lora_mac_data_store_in_flash_8h_html_af39987ed395cff959b6956b3452952be"><div class="ttname"><a href="_lora_mac_data_store_in_flash_8h.html#af39987ed395cff959b6956b3452952be">BackUpFlash</a></div><div class="ttdeci">struct sBackUpFlash BackUpFlash</div><div class="ttdoc">BackUpFlash The LoraWan structure parameters save into the flash memory for failsafe restauration...</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00033">main.cpp:33</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a439b4f69a284db6eba911792a41c767a"><div class="ttname"><a href="class_lora_wan_container.html#a439b4f69a284db6eba911792a41c767a">LoraWanContainer::AdrAckReq</a></div><div class="ttdeci">uint8_t AdrAckReq</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00144">MacLayer.h:144</a></div></div>
<div class="ttc" id="_define_8h_html_a4d28f59ee502fc6d9da504849e9e8e3f"><div class="ttname"><a href="_define_8h.html#a4d28f59ee502fc6d9da504849e9e8e3f">LINK_ADR_ANS_SIZE</a></div><div class="ttdeci">#define LINK_ADR_ANS_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00134">Define.h:134</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_abed82baf7f470b522273a3e37c24c600aa01cab609dc28309b514617c3e24c6d8"><div class="ttname"><a href="_define_8h.html#abed82baf7f470b522273a3e37c24c600aa01cab609dc28309b514617c3e24c6d8">USERACK_TOSEND</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00247">Define.h:247</a></div></div>
<div class="ttc" id="structs_lo_ra_wan_keys_html_ad88facd7e11295d549ae4b2789d7d00f"><div class="ttname"><a href="structs_lo_ra_wan_keys.html#ad88facd7e11295d549ae4b2789d7d00f">sLoRaWanKeys::LoRaDevAddr</a></div><div class="ttdeci">uint32_t LoRaDevAddr</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00273">Define.h:273</a></div></div>
<div class="ttc" id="_define_8h_html_a726ca809ffd3d67ab4b8476646f26635ac53516a4abf151f572ef7a6ac3323c48"><div class="ttname"><a href="_define_8h.html#a726ca809ffd3d67ab4b8476646f26635ac53516a4abf151f572ef7a6ac3323c48">CHANNEL_DISABLED</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00193">Define.h:193</a></div></div>
<div class="ttc" id="structs_lo_ra_wan_keys_html_ad6b6c043645eafba66603feca886fb23"><div class="ttname"><a href="structs_lo_ra_wan_keys.html#ad6b6c043645eafba66603feca886fb23">sLoRaWanKeys::LoRaMacAppSKey</a></div><div class="ttdeci">uint8_t * LoRaMacAppSKey</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00269">Define.h:269</a></div></div>
<div class="ttc" id="_define_8h_html_adc29c2ff13d900c2f185ee95427fb06ca42e572e643cde3e8425989de46533ffd"><div class="ttname"><a href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06ca42e572e643cde3e8425989de46533ffd">RXTIMING_SETUP_REQ</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00115">Define.h:115</a></div></div>
<div class="ttc" id="_define_8h_html_a138cd80b68b1486a2165efe3375762cd"><div class="ttname"><a href="_define_8h.html#a138cd80b68b1486a2165efe3375762cd">DUTY_CYCLE_ANS_SIZE</a></div><div class="ttdeci">#define DUTY_CYCLE_ANS_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00136">Define.h:136</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_aa0c6803486a38093bd0b94cd5853361f"><div class="ttname"><a href="structs_back_up_flash.html#aa0c6803486a38093bd0b94cd5853361f">sBackUpFlash::FcntUp</a></div><div class="ttdeci">uint32_t FcntUp</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00056">LoraMacDataStoreInFlash.h:56</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a4295c7686f916c144783dc2304257338"><div class="ttname"><a href="structs_back_up_flash.html#a4295c7686f916c144783dc2304257338">sBackUpFlash::MacChMask</a></div><div class="ttdeci">uint16_t MacChMask</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00032">LoraMacDataStoreInFlash.h:32</a></div></div>
<div class="ttc" id="_define_8h_html_af85d473a2b50a23da13bead914b51d50"><div class="ttname"><a href="_define_8h.html#af85d473a2b50a23da13bead914b51d50">LINK_ADR_REQ_SIZE</a></div><div class="ttdeci">#define LINK_ADR_REQ_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00133">Define.h:133</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_aa92da5fb24a992b90c3bf9b1c8974643"><div class="ttname"><a href="class_lora_wan_container.html#aa92da5fb24a992b90c3bf9b1c8974643">LoraWanContainer::AdrAckCnt</a></div><div class="ttdeci">int AdrAckCnt</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00141">MacLayer.h:141</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_adb12b0a10e2a8ded5388f251ec4d4c17"><div class="ttname"><a href="structs_back_up_flash.html#adb12b0a10e2a8ded5388f251ec4d4c17">sBackUpFlash::DevNonce</a></div><div class="ttdeci">uint16_t DevNonce</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00062">LoraMacDataStoreInFlash.h:62</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="_define_8h_html_adc29c2ff13d900c2f185ee95427fb06ca0f2fa46759932d1684d91441fb40ca2b"><div class="ttname"><a href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06ca0f2fa46759932d1684d91441fb40ca2b">DEV_STATUS_REQ</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00113">Define.h:113</a></div></div>
<div class="ttc" id="_phy_layer_8h_html"><div class="ttname"><a href="_phy_layer_8h.html">PhyLayer.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="class_lora_wan_container_html_a8b040b7c680d7fa3998a37cb462c74f7"><div class="ttname"><a href="class_lora_wan_container.html#a8b040b7c680d7fa3998a37cb462c74f7">LoraWanContainer::ParseManagementPacket</a></div><div class="ttdeci">eStatusLoRaWan ParseManagementPacket(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00308">MacLayer.cpp:308</a></div></div>
<div class="ttc" id="_define_8h_html_a61dadd085c1777f559549e05962b2c9eaaedb2a565fab5da3b7675e98f8d006f0"><div class="ttname"><a href="_define_8h.html#a61dadd085c1777f559549e05962b2c9eaaedb2a565fab5da3b7675e98f8d006f0">NEW_CHANNEL_ANS</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00125">Define.h:125</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a1fd80f37a0842928631d917de271cfe9"><div class="ttname"><a href="class_lora_wan_container.html#a1fd80f37a0842928631d917de271cfe9">LoraWanContainer::StateTimer</a></div><div class="ttdeci">int StateTimer</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00156">MacLayer.h:156</a></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="structs_back_up_flash_html_a6b1fa618b913d529bac5adaf4ec145dc"><div class="ttname"><a href="structs_back_up_flash.html#a6b1fa618b913d529bac5adaf4ec145dc">sBackUpFlash::NbOfReset</a></div><div class="ttdeci">uint8_t NbOfReset</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00063">LoraMacDataStoreInFlash.h:63</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_aae081cfdc99a8f60da6df8742b7dfda1"><div class="ttname"><a href="structs_back_up_flash.html#aae081cfdc99a8f60da6df8742b7dfda1">sBackUpFlash::MacMaxDataRateChannel</a></div><div class="ttdeci">uint8_t MacMaxDataRateChannel[16]</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00046">LoraMacDataStoreInFlash.h:46</a></div></div>
<div class="ttc" id="structs_lo_ra_wan_keys_html_a3fbacc8200a5720c10745f5eab5c4c7e"><div class="ttname"><a href="structs_lo_ra_wan_keys.html#a3fbacc8200a5720c10745f5eab5c4c7e">sLoRaWanKeys::LoRaMacNwkSKey</a></div><div class="ttdeci">uint8_t * LoRaMacNwkSKey</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00268">Define.h:268</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a2032fb8ac149ddbdd397b070d46c6fda"><div class="ttname"><a href="structs_back_up_flash.html#a2032fb8ac149ddbdd397b070d46c6fda">sBackUpFlash::DevAddr</a></div><div class="ttdeci">uint32_t DevAddr</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00058">LoraMacDataStoreInFlash.h:58</a></div></div>
<div class="ttc" id="class_lora_wan_container_html"><div class="ttname"><a href="class_lora_wan_container.html">LoraWanContainer</a></div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00034">MacLayer.h:34</a></div></div>
<div class="ttc" id="structs_back_up_flash_html"><div class="ttname"><a href="structs_back_up_flash.html">sBackUpFlash</a></div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00026">LoraMacDataStoreInFlash.h:26</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a022c395b2c5a3829c14168a52a187a61"><div class="ttname"><a href="class_lora_wan_container.html#a022c395b2c5a3829c14168a52a187a61">LoraWanContainer::Phy</a></div><div class="ttdeci">RadioContainer< R > Phy</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00149">MacLayer.h:149</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a757fc71b5986280b6702febbf7bd87f3"><div class="ttname"><a href="class_lora_wan_container.html#a757fc71b5986280b6702febbf7bd87f3">LoraWanContainer::DecodeRxFrame</a></div><div class="ttdeci">eRxPacketType DecodeRxFrame(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00161">MacLayer.cpp:161</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a488791458e4b9098607d2f502da9d633"><div class="ttname"><a href="class_lora_wan_container.html#a488791458e4b9098607d2f502da9d633">LoraWanContainer::SetBadCrcInFlash</a></div><div class="ttdeci">void SetBadCrcInFlash(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00855">MacLayer.cpp:855</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_ab83ad2e5dbd9e122eb853dd29e0d3992"><div class="ttname"><a href="_define_8h.html#ab83ad2e5dbd9e122eb853dd29e0d3992">DIC_CHANNEL_ANS_SIZE</a></div><div class="ttdeci">#define DIC_CHANNEL_ANS_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00146">Define.h:146</a></div></div>
<div class="ttc" id="_define_8h_html_a7e75f3071d6911b19a563d554038f8da"><div class="ttname"><a href="_define_8h.html#a7e75f3071d6911b19a563d554038f8da">UP_LINK</a></div><div class="ttdeci">#define UP_LINK</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00179">Define.h:179</a></div></div>
<div class="ttc" id="_define_8h_html_a309ec51d7eeeea689a4881397ee79ea2"><div class="ttname"><a href="_define_8h.html#a309ec51d7eeeea689a4881397ee79ea2">RXPARRAM_SETUP_REQ_SIZE</a></div><div class="ttdeci">#define RXPARRAM_SETUP_REQ_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00137">Define.h:137</a></div></div>
<div class="ttc" id="group___l_o_r_a_m_a_c___c_r_y_p_t_o_html_ga50339e60abea2186ca7e584b489718b1"><div class="ttname"><a href="group___l_o_r_a_m_a_c___c_r_y_p_t_o.html#ga50339e60abea2186ca7e584b489718b1">LoRaMacPayloadEncrypt</a></div><div class="ttdeci">void LoRaMacPayloadEncrypt(const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint8_t dir, uint32_t sequenceCounter, uint8_t *encBuffer)</div><div class="ttdef"><b>Definition:</b> <a href="_lo_ra_mac_crypto_mini_mouse_8cpp_source.html#l00111">LoRaMacCryptoMiniMouse.cpp:111</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a1a196e3ae9619759ae25f5b5ccd64099"><div class="ttname"><a href="structs_back_up_flash.html#a1a196e3ae9619759ae25f5b5ccd64099">sBackUpFlash::MacRx1Delay</a></div><div class="ttdeci">int MacRx1Delay</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00052">LoraMacDataStoreInFlash.h:52</a></div></div>
<div class="ttc" id="_define_8h_html_a726ca809ffd3d67ab4b8476646f26635aa1a84b06e25f52f3eff608a2e1241e3f"><div class="ttname"><a href="_define_8h.html#a726ca809ffd3d67ab4b8476646f26635aa1a84b06e25f52f3eff608a2e1241e3f">CHANNEL_ENABLED</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00194">Define.h:194</a></div></div>
<div class="ttc" id="_mac_layer_8h_html"><div class="ttname"><a href="_mac_layer_8h.html">MacLayer.h</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a6ae2e50f7bc0eb014745ac1e2f48d0af"><div class="ttname"><a href="class_lora_wan_container.html#a6ae2e50f7bc0eb014745ac1e2f48d0af">LoraWanContainer::BuildJoinLoraFrame</a></div><div class="ttdeci">void BuildJoinLoraFrame(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00714">MacLayer.cpp:714</a></div></div>
<div class="ttc" id="utilities_8h_html_afa99ec4acc4ecb2dc3c2d05da15d0e3f"><div class="ttname"><a href="utilities_8h.html#afa99ec4acc4ecb2dc3c2d05da15d0e3f">MAX</a></div><div class="ttdeci">#define MAX(a, b)</div><div class="ttdoc">Returns the maximum value between a and b. </div><div class="ttdef"><b>Definition:</b> <a href="utilities_8h_source.html#l00042">utilities.h:42</a></div></div>
<div class="ttc" id="group___l_o_r_a_m_a_c___c_r_y_p_t_o_html_ga41f9ba19f61b195420914ed58c8b94c7"><div class="ttname"><a href="group___l_o_r_a_m_a_c___c_r_y_p_t_o.html#ga41f9ba19f61b195420914ed58c8b94c7">LoRaMacPayloadDecrypt</a></div><div class="ttdeci">void LoRaMacPayloadDecrypt(const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint8_t dir, uint32_t sequenceCounter, uint8_t *decBuffer)</div><div class="ttdef"><b>Definition:</b> <a href="_lo_ra_mac_crypto_mini_mouse_8cpp_source.html#l00156">LoRaMacCryptoMiniMouse.cpp:156</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_ac9adc074555df61af5bff00537a7beca"><div class="ttname"><a href="_define_8h.html#ac9adc074555df61af5bff00537a7beca">RXTIMING_SETUP_ANS_SIZE</a></div><div class="ttdeci">#define RXTIMING_SETUP_ANS_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00144">Define.h:144</a></div></div>
<div class="ttc" id="_define_8h_html_afcb92d5cddc0133a9fac4d4d718374cc"><div class="ttname"><a href="_define_8h.html#afcb92d5cddc0133a9fac4d4d718374cc">NEW_CHANNEL_ANS_SIZE</a></div><div class="ttdeci">#define NEW_CHANNEL_ANS_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00142">Define.h:142</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_aae352b955ec64652c64084de67d6309f"><div class="ttname"><a href="class_lora_wan_container.html#aae352b955ec64652c64084de67d6309f">LoraWanContainer::DevAddr</a></div><div class="ttdeci">uint32_t DevAddr</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00091">MacLayer.h:91</a></div></div>
<div class="ttc" id="_define_8h_html_ab894a4c21b8aae9e9c68d8c426a66956"><div class="ttname"><a href="_define_8h.html#ab894a4c21b8aae9e9c68d8c426a66956">eRxWinType</a></div><div class="ttdeci">eRxWinType</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00227">Define.h:227</a></div></div>
<div class="ttc" id="structs_lo_ra_wan_keys_html_a23f4c2f316fc8355c80f48151c4b6c83"><div class="ttname"><a href="structs_lo_ra_wan_keys.html#a23f4c2f316fc8355c80f48151c4b6c83">sLoRaWanKeys::DevEui</a></div><div class="ttdeci">uint8_t * DevEui</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00272">Define.h:272</a></div></div>
<div class="ttc" id="structs_lo_ra_wan_keys_html_a1f0a69278a218e8f1fde28e16c78b1b0"><div class="ttname"><a href="structs_lo_ra_wan_keys.html#a1f0a69278a218e8f1fde28e16c78b1b0">sLoRaWanKeys::AppEui</a></div><div class="ttdeci">uint8_t * AppEui</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00271">Define.h:271</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_af7ea3417212b3e06475635e3d392baf2"><div class="ttname"><a href="class_lora_wan_container.html#af7ea3417212b3e06475635e3d392baf2">LoraWanContainer::FindEnabledChannel</a></div><div class="ttdeci">int FindEnabledChannel(uint8_t Index)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00993">MacLayer.cpp:993</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_a0411cd49bb5b71852cecd93bcbf0ca2da7419d99f2624be41983cbb3062b4aa09"><div class="ttname"><a href="_define_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da7419d99f2624be41983cbb3062b4aa09">LORA_RX_PACKET_AVAILABLE</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00236">Define.h:236</a></div></div>
<div class="ttc" id="_define_8h_html_abbfbf157098d2505c0cf33877b128cc9a0c0d8079276630d54f238d3fc4b594f7"><div class="ttname"><a href="_define_8h.html#abbfbf157098d2505c0cf33877b128cc9a0c0d8079276630d54f238d3fc4b594f7">ERROR_CHANNEL_MASK</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00218">Define.h:218</a></div></div>
<div class="ttc" id="_define_8h_html_ad327f6a122c3829e76ab7f51d6423b1c"><div class="ttname"><a href="_define_8h.html#ad327f6a122c3829e76ab7f51d6423b1c">DUTY_CYCLE_REQ_SIZE</a></div><div class="ttdeci">#define DUTY_CYCLE_REQ_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00135">Define.h:135</a></div></div>
<div class="ttc" id="_define_8h_html_a61dadd085c1777f559549e05962b2c9ea78237cbc10496f06e8d7eed241b0f936"><div class="ttname"><a href="_define_8h.html#a61dadd085c1777f559549e05962b2c9ea78237cbc10496f06e8d7eed241b0f936">LINK_CHECK_ANS</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00120">Define.h:120</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="_define_8h_html_adc29c2ff13d900c2f185ee95427fb06cae7d3d2a820d5d901a679ee58c41ce959"><div class="ttname"><a href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06cae7d3d2a820d5d901a679ee58c41ce959">LINK_ADR_REQ</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00110">Define.h:110</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_abc0d832ba6477333a41e558704acc4e9"><div class="ttname"><a href="class_lora_wan_container.html#abc0d832ba6477333a41e558704acc4e9">LoraWanContainer::appSKey</a></div><div class="ttdeci">uint8_t appSKey[16]</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00093">MacLayer.h:93</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_ae1add5f5a0620c3d513737e2e7241575"><div class="ttname"><a href="class_lora_wan_container.html#ae1add5f5a0620c3d513737e2e7241575">LoraWanContainer::~LoraWanContainer</a></div><div class="ttdeci">~LoraWanContainer()</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00058">MacLayer.cpp:58</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_ab30ac450a53d4591f9555e081c1e6f25"><div class="ttname"><a href="class_lora_wan_container.html#ab30ac450a53d4591f9555e081c1e6f25">LoraWanContainer::FoptsTxLength</a></div><div class="ttdeci">uint8_t FoptsTxLength</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00110">MacLayer.h:110</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_a06fc87d81c62e9abb8790b6e5713c55ba9dd99043356ca36d6520ce1b7e4c0dca"><div class="ttname"><a href="_define_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba9dd99043356ca36d6520ce1b7e4c0dca">TIMERSTATE_SLEEP</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00068">Define.h:68</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a429285e901085c2f0a9b5ddf59f0dc65"><div class="ttname"><a href="class_lora_wan_container.html#a429285e901085c2f0a9b5ddf59f0dc65">LoraWanContainer::MacNbTrans</a></div><div class="ttdeci">uint8_t MacNbTrans</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00064">MacLayer.h:64</a></div></div>
<div class="ttc" id="_define_8h_html_abbfbf157098d2505c0cf33877b128cc9a3ed30409824cdd570e6e7914e0d6a91b"><div class="ttname"><a href="_define_8h.html#abbfbf157098d2505c0cf33877b128cc9a3ed30409824cdd570e6e7914e0d6a91b">OKCHANNEL</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00219">Define.h:219</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a8c75ddd0e48e4a9d3f0d8f44b989d10f"><div class="ttname"><a href="structs_back_up_flash.html#a8c75ddd0e48e4a9d3f0d8f44b989d10f">sBackUpFlash::MacChannelIndexEnabled</a></div><div class="ttdeci">uint8_t MacChannelIndexEnabled[16]</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00047">LoraMacDataStoreInFlash.h:47</a></div></div>
<div class="ttc" id="_define_8h_html_a46e5ffc6f8312e44b792dd87bb9223fe"><div class="ttname"><a href="_define_8h.html#a46e5ffc6f8312e44b792dd87bb9223fe">MAX_RETRY_JOIN_DUTY_CYCLE_1000</a></div><div class="ttdeci">#define MAX_RETRY_JOIN_DUTY_CYCLE_1000</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00148">Define.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="structs_back_up_flash_html_a294ca0c27de2e0f8b6e0caf67250f419"><div class="ttname"><a href="structs_back_up_flash.html#a294ca0c27de2e0f8b6e0caf67250f419">sBackUpFlash::JoinedStatus</a></div><div class="ttdeci">uint8_t JoinedStatus</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00061">LoraMacDataStoreInFlash.h:61</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_afc534d9e7a3e581783489765b52676a0"><div class="ttname"><a href="structs_back_up_flash.html#afc534d9e7a3e581783489765b52676a0">sBackUpFlash::CrcHigh</a></div><div class="ttdeci">uint32_t CrcHigh</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00065">LoraMacDataStoreInFlash.h:65</a></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="group___l_o_r_a_m_a_c___c_r_y_p_t_o_html_gac2379cd7cbeb6febaa2a7be5d9f04b5c"><div class="ttname"><a href="group___l_o_r_a_m_a_c___c_r_y_p_t_o.html#gac2379cd7cbeb6febaa2a7be5d9f04b5c">LoRaMacJoinDecrypt</a></div><div class="ttdeci">void LoRaMacJoinDecrypt(const uint8_t *buffer, uint16_t size, const uint8_t *key, uint8_t *decBuffer)</div><div class="ttdef"><b>Definition:</b> <a href="_lo_ra_mac_crypto_mini_mouse_8cpp_source.html#l00175">LoRaMacCryptoMiniMouse.cpp:175</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a24f57cec1c39d4972d14bfb65212d74c"><div class="ttname"><a href="structs_back_up_flash.html#a24f57cec1c39d4972d14bfb65212d74c">sBackUpFlash::CrcLow</a></div><div class="ttdeci">uint32_t CrcLow</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00066">LoraMacDataStoreInFlash.h:66</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a36e9fab419d7959dbda8c0ca24cdaf06"><div class="ttname"><a href="structs_back_up_flash.html#a36e9fab419d7959dbda8c0ca24cdaf06">sBackUpFlash::nwkSKey</a></div><div class="ttdeci">uint8_t nwkSKey[16]</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00059">LoraMacDataStoreInFlash.h:59</a></div></div>
<div class="ttc" id="group___l_o_r_a_m_a_c___c_r_y_p_t_o_html_gad6fc2ace27fa388ec860fc2e5ae1f544"><div class="ttname"><a href="group___l_o_r_a_m_a_c___c_r_y_p_t_o.html#gad6fc2ace27fa388ec860fc2e5ae1f544">LoRaMacJoinComputeSKeys</a></div><div class="ttdeci">void LoRaMacJoinComputeSKeys(const uint8_t *key, const uint8_t *appNonce, uint16_t devNonce, uint8_t *nwkSKey, uint8_t *appSKey)</div><div class="ttdef"><b>Definition:</b> <a href="_lo_ra_mac_crypto_mini_mouse_8cpp_source.html#l00187">LoRaMacCryptoMiniMouse.cpp:187</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a99e0d080f7a2bd65252d688e2a4befa1"><div class="ttname"><a href="class_lora_wan_container.html#a99e0d080f7a2bd65252d688e2a4befa1">LoraWanContainer::UpdateMacLayer</a></div><div class="ttdeci">void UpdateMacLayer(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00239">MacLayer.cpp:239</a></div></div>
<div class="ttc" id="_lo_ra_mac_crypto_8h_html_a35ef45aa2ea7a562a7307c3e3a434300"><div class="ttname"><a href="_lo_ra_mac_crypto_8h.html#a35ef45aa2ea7a562a7307c3e3a434300">LoRaMacComputeAndAddMic</a></div><div class="ttdeci">void LoRaMacComputeAndAddMic(uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint8_t dir, uint32_t sequenceCounter)</div><div class="ttdef"><b>Definition:</b> <a href="_lo_ra_mac_crypto_mini_mouse_8cpp_source.html#l00209">LoRaMacCryptoMiniMouse.cpp:209</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a8e1465c70a778678ac22a136bde59966"><div class="ttname"><a href="structs_back_up_flash.html#a8e1465c70a778678ac22a136bde59966">sBackUpFlash::MacRx2DataRate</a></div><div class="ttdeci">uint8_t MacRx2DataRate</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00038">LoraMacDataStoreInFlash.h:38</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a1c212cc8590aa2279d04306b87361bcd"><div class="ttname"><a href="structs_back_up_flash.html#a1c212cc8590aa2279d04306b87361bcd">sBackUpFlash::MacMinDataRateChannel</a></div><div class="ttdeci">uint8_t MacMinDataRateChannel[16]</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00045">LoraMacDataStoreInFlash.h:45</a></div></div>
<div class="ttc" id="_define_8h_html_a9098be39fde160abb5edc12ebc3c087a"><div class="ttname"><a href="_define_8h.html#a9098be39fde160abb5edc12ebc3c087a">DIC_CHANNEL_REQ_SIZE</a></div><div class="ttdeci">#define DIC_CHANNEL_REQ_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00145">Define.h:145</a></div></div>
<div class="ttc" id="_define_8h_html_a61dadd085c1777f559549e05962b2c9ea5a2927a34ad00a79ecf08222b62d1b8e"><div class="ttname"><a href="_define_8h.html#a61dadd085c1777f559549e05962b2c9ea5a2927a34ad00a79ecf08222b62d1b8e">DUTY_CYCLE_ANS</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00122">Define.h:122</a></div></div>
<div class="ttc" id="_define_8h_html_a6cbb491180e131f374cdbe63880c85e1"><div class="ttname"><a href="_define_8h.html#a6cbb491180e131f374cdbe63880c85e1">eBandWidth</a></div><div class="ttdeci">eBandWidth</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00186">Define.h:186</a></div></div>
<div class="ttc" id="_define_8h_html_a276a5249cf1dca698d5fab26d85601ec"><div class="ttname"><a href="_define_8h.html#a276a5249cf1dca698d5fab26d85601ec">RXPARRAM_SETUP_ANS_SIZE</a></div><div class="ttdeci">#define RXPARRAM_SETUP_ANS_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00138">Define.h:138</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a736200328d8ff1538edfed3293e02ca9"><div class="ttname"><a href="class_lora_wan_container.html#a736200328d8ff1538edfed3293e02ca9">LoraWanContainer::AvailableRxPacketForUser</a></div><div class="ttdeci">uint8_t AvailableRxPacketForUser</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00126">MacLayer.h:126</a></div></div>
<div class="ttc" id="structs_lo_ra_wan_keys_html_ac7acae00308fa51301a0b8e21cc1359e"><div class="ttname"><a href="structs_lo_ra_wan_keys.html#ac7acae00308fa51301a0b8e21cc1359e">sLoRaWanKeys::OtaDevice</a></div><div class="ttdeci">eDeviceTypeOTA_APB OtaDevice</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00274">Define.h:274</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="class_lora_wan_container_html_a6f0a9f6cddbd54a1fc5dd4c6de790d88"><div class="ttname"><a href="class_lora_wan_container.html#a6f0a9f6cddbd54a1fc5dd4c6de790d88">LoraWanContainer::BuildTxLoraFrame</a></div><div class="ttdeci">void BuildTxLoraFrame(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00071">MacLayer.cpp:71</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_ac9cc778ff97f8fb9182d9b8a99f6d08b"><div class="ttname"><a href="class_lora_wan_container.html#ac9cc778ff97f8fb9182d9b8a99f6d08b">LoraWanContainer::FoptsTxLengthCurrent</a></div><div class="ttdeci">uint8_t FoptsTxLengthCurrent</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00114">MacLayer.h:114</a></div></div>
<div class="ttc" id="utilities_8cpp_html_a898d75f16cbadd24a57be5523557b393"><div class="ttname"><a href="utilities_8cpp.html#a898d75f16cbadd24a57be5523557b393">Crc64</a></div><div class="ttdeci">void Crc64(uint8_t *dataIn, int size, uint32_t *crcLow, uint32_t *crcHigh)</div><div class="ttdef"><b>Definition:</b> <a href="utilities_8cpp_source.html#l00092">utilities.cpp:92</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_a61dadd085c1777f559549e05962b2c9ea21405b9ba654a7ec3352b4cd3941b6ea"><div class="ttname"><a href="_define_8h.html#a61dadd085c1777f559549e05962b2c9ea21405b9ba654a7ec3352b4cd3941b6ea">DIC_CHANNEL_ANS</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00128">Define.h:128</a></div></div>
<div class="ttc" id="_lo_ra_mac_crypto_8h_html_a6045e63e9d0bcd83722aa50fcef0abc5"><div class="ttname"><a href="_lo_ra_mac_crypto_8h.html#a6045e63e9d0bcd83722aa50fcef0abc5">LoRaMacCheckMic</a></div><div class="ttdeci">int LoRaMacCheckMic(uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint32_t sequenceCounter, uint32_t micIn)</div><div class="ttdef"><b>Definition:</b> <a href="_lo_ra_mac_crypto_mini_mouse_8cpp_source.html#l00216">LoRaMacCryptoMiniMouse.cpp:216</a></div></div>
<div class="ttc" id="_define_8h_html_a61dadd085c1777f559549e05962b2c9eabdb575143df6e66f10fb6d812e7e9f10"><div class="ttname"><a href="_define_8h.html#a61dadd085c1777f559549e05962b2c9eabdb575143df6e66f10fb6d812e7e9f10">RXPARRAM_SETUP_ANS</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00123">Define.h:123</a></div></div>
<div class="ttc" id="_define_8h_html_adaf8376153939106ef0e1e5f8f17967d"><div class="ttname"><a href="_define_8h.html#adaf8376153939106ef0e1e5f8f17967d">DEV_STATUS_REQ_SIZE</a></div><div class="ttdeci">#define DEV_STATUS_REQ_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00139">Define.h:139</a></div></div>
<div class="ttc" id="_define_8h_html_a1df95514fdf4314718e2bb04ca1181ee"><div class="ttname"><a href="_define_8h.html#a1df95514fdf4314718e2bb04ca1181ee">NEW_CHANNEL_REQ_SIZE</a></div><div class="ttdeci">#define NEW_CHANNEL_REQ_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00141">Define.h:141</a></div></div>
<div class="ttc" id="_define_8h_html_af01dd4805e1d664c6f185182c500bc5b"><div class="ttname"><a href="_define_8h.html#af01dd4805e1d664c6f185182c500bc5b">TIMEONAIR_JOIN_SF7_MS</a></div><div class="ttdeci">#define TIMEONAIR_JOIN_SF7_MS</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00147">Define.h:147</a></div></div>
<div class="ttc" id="_define_8h_html_abbfbf157098d2505c0cf33877b128cc9a10548013022903b1f4d2b96703b4a3fb"><div class="ttname"><a href="_define_8h.html#abbfbf157098d2505c0cf33877b128cc9a10548013022903b1f4d2b96703b4a3fb">ERROR_CHANNEL_CNTL</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00217">Define.h:217</a></div></div>
<div class="ttc" id="_define_8h_html_a79558772c6d693effea073ebe12e30ef"><div class="ttname"><a href="_define_8h.html#a79558772c6d693effea073ebe12e30ef">DEV_STATUS_ANS_SIZE</a></div><div class="ttdeci">#define DEV_STATUS_ANS_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00140">Define.h:140</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="class_lora_wan_container_html_abc16aeda3958e34b81e72752e6331be3"><div class="ttname"><a href="class_lora_wan_container.html#abc16aeda3958e34b81e72752e6331be3">LoraWanContainer::LoadFromFlash</a></div><div class="ttdeci">void LoadFromFlash(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00887">MacLayer.cpp:887</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a57741eeabfb00a58e90368f2134ce7f8"><div class="ttname"><a href="class_lora_wan_container.html#a57741eeabfb00a58e90368f2134ce7f8">LoraWanContainer::FcntUp</a></div><div class="ttdeci">uint32_t FcntUp</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00089">MacLayer.h:89</a></div></div>
<div class="ttc" id="group___l_o_r_a_m_a_c___c_r_y_p_t_o_html_gac9216af326316c9e7f207d4e73aed199"><div class="ttname"><a href="group___l_o_r_a_m_a_c___c_r_y_p_t_o.html#gac9216af326316c9e7f207d4e73aed199">LoRaMacJoinComputeMic</a></div><div class="ttdeci">void LoRaMacJoinComputeMic(const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t *mic)</div><div class="ttdef"><b>Definition:</b> <a href="_lo_ra_mac_crypto_mini_mouse_8cpp_source.html#l00161">LoRaMacCryptoMiniMouse.cpp:161</a></div></div>
<div class="ttc" id="_define_8h_html_a48ab70afd1a356dd26903f027213f006"><div class="ttname"><a href="_define_8h.html#a48ab70afd1a356dd26903f027213f006">LINK_CHECK_ANS_SIZE</a></div><div class="ttdeci">#define LINK_CHECK_ANS_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00132">Define.h:132</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_aab64c8697dcf132852ff7f326f2a806a"><div class="ttname"><a href="class_lora_wan_container.html#aab64c8697dcf132852ff7f326f2a806a">LoraWanContainer::FcntDwn</a></div><div class="ttdeci">uint32_t FcntDwn</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00090">MacLayer.h:90</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_ae9bc11031f33b9bc4928b021a6a34cbd"><div class="ttname"><a href="class_lora_wan_container.html#ae9bc11031f33b9bc4928b021a6a34cbd">LoraWanContainer::EncryptTxFrame</a></div><div class="ttdeci">void EncryptTxFrame(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00086">MacLayer.cpp:86</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_a99fb83031ce9923c84392b4e92f956b5a6b0e555756b3d5210f52cc4f1c7b7f6a"><div class="ttname"><a href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5a6b0e555756b3d5210f52cc4f1c7b7f6a">UNCONF_DATA_UP</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00091">Define.h:91</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a91e8c03b02a6672fe5f0342129618bb3"><div class="ttname"><a href="class_lora_wan_container.html#a91e8c03b02a6672fe5f0342129618bb3">LoraWanContainer::SaveInFlash</a></div><div class="ttdeci">void SaveInFlash(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00823">MacLayer.cpp:823</a></div></div>
<div class="ttc" id="_lo_ra_mac_crypto_8h_html"><div class="ttname"><a href="_lo_ra_mac_crypto_8h.html">LoRaMacCrypto.h</a></div><div class="ttdoc">LoRa MAC layer cryptography implementation. </div></div>
<div class="ttc" id="class_lora_wan_container_html_a9f189640ccae4f4b1e11c4671c88b6c0"><div class="ttname"><a href="class_lora_wan_container.html#a9f189640ccae4f4b1e11c4671c88b6c0">LoraWanContainer::ConfigureRadioForRx2</a></div><div class="ttdeci">void ConfigureRadioForRx2(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00122">MacLayer.cpp:122</a></div></div>
<div class="ttc" id="_define_8h_html_abe3daafdb4fec314926c12003b3ad390aac10d462bda2cb61f848d5b411a45088"><div class="ttname"><a href="_define_8h.html#abe3daafdb4fec314926c12003b3ad390aac10d462bda2cb61f848d5b411a45088">JOINED</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00241">Define.h:241</a></div></div>
<div class="ttc" id="_define_8h_html_aefea158d90f2b9ad2f8015a728d7be8a"><div class="ttname"><a href="_define_8h.html#aefea158d90f2b9ad2f8015a728d7be8a">MIN_LORAWAN_PAYLOAD_SIZE</a></div><div class="ttdeci">#define MIN_LORAWAN_PAYLOAD_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00150">Define.h:150</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a077db278808a15326893610820e26b22"><div class="ttname"><a href="class_lora_wan_container.html#a077db278808a15326893610820e26b22">LoraWanContainer::ConfigureTimerForRx</a></div><div class="ttdeci">void ConfigureTimerForRx(eRxWinType type)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00127">MacLayer.cpp:127</a></div></div>
<div class="ttc" id="_define_8h_html_adc29c2ff13d900c2f185ee95427fb06caa27325632060e8b473844097097c6fbc"><div class="ttname"><a href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06caa27325632060e8b473844097097c6fbc">NEW_CHANNEL_REQ</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00114">Define.h:114</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a41cc43d7525d3c7fca17d06261d3f1f3"><div class="ttname"><a href="class_lora_wan_container.html#a41cc43d7525d3c7fca17d06261d3f1f3">LoraWanContainer::otaDevice</a></div><div class="ttdeci">bool otaDevice</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00097">MacLayer.h:97</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a8b20dcb0b7253b2125d5116ab68b188e"><div class="ttname"><a href="structs_back_up_flash.html#a8b20dcb0b7253b2125d5116ab68b188e">sBackUpFlash::appSKey</a></div><div class="ttdeci">uint8_t appSKey[16]</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00060">LoraMacDataStoreInFlash.h:60</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a93c94009fe081053ce73e0b10e05625b"><div class="ttname"><a href="class_lora_wan_container.html#a93c94009fe081053ce73e0b10e05625b">LoraWanContainer::nwkSKey</a></div><div class="ttdeci">uint8_t nwkSKey[16]</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00092">MacLayer.h:92</a></div></div>
<div class="ttc" id="_define_8h_html_abbfbf157098d2505c0cf33877b128cc9"><div class="ttname"><a href="_define_8h.html#abbfbf157098d2505c0cf33877b128cc9">eStatusChannel</a></div><div class="ttdeci">eStatusChannel</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00216">Define.h:216</a></div></div>
<div class="ttc" id="_user_define_8h_html_a65798635bcc2b9f4f44d3ffc37ab0fdf"><div class="ttname"><a href="_user_define_8h.html#a65798635bcc2b9f4f44d3ffc37ab0fdf">BOARD_DELAY_RX_SETTING_MS</a></div><div class="ttdeci">#define BOARD_DELAY_RX_SETTING_MS</div><div class="ttdef"><b>Definition:</b> <a href="_user_define_8h_source.html#l00057">UserDefine.h:57</a></div></div>
<div class="ttc" id="_define_8h_html_adc29c2ff13d900c2f185ee95427fb06cad3ac9b7397868cda52b2c29c49d9085c"><div class="ttname"><a href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06cad3ac9b7397868cda52b2c29c49d9085c">RXPARRAM_SETUP_REQ</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00112">Define.h:112</a></div></div>
<div class="ttc" id="_define_8h_html_a99fb83031ce9923c84392b4e92f956b5a554b54c648a0d753328018e8f526f24a"><div class="ttname"><a href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5a554b54c648a0d753328018e8f526f24a">CONF_DATA_DOWN</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00094">Define.h:94</a></div></div>
<div class="ttc" id="_user_define_8h_html"><div class="ttname"><a href="_user_define_8h.html">UserDefine.h</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_aed62b6a6b327e3999d01e7eb21681eb5"><div class="ttname"><a href="structs_back_up_flash.html#aed62b6a6b327e3999d01e7eb21681eb5">sBackUpFlash::MacTxFrequency</a></div><div class="ttdeci">uint32_t MacTxFrequency[16]</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00043">LoraMacDataStoreInFlash.h:43</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="class_lora_wan_container_html_af3427d177dc92611f2da1507c147d317"><div class="ttname"><a href="class_lora_wan_container.html#af3427d177dc92611f2da1507c147d317">LoraWanContainer::IsFrameToSend</a></div><div class="ttdeci">uint8_t IsFrameToSend</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00049">MacLayer.h:49</a></div></div>
<div class="ttc" id="_define_8h_html_a61dadd085c1777f559549e05962b2c9ea25c430e719383940012dfe566f878f2e"><div class="ttname"><a href="_define_8h.html#a61dadd085c1777f559549e05962b2c9ea25c430e719383940012dfe566f878f2e">LINK_ADR_ANS</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00121">Define.h:121</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_aaf9bed2385f02a1396f1e3bf68a71494"><div class="ttname"><a href="class_lora_wan_container.html#aaf9bed2385f02a1396f1e3bf68a71494">LoraWanContainer::RetryJoinCpt</a></div><div class="ttdeci">uint32_t RetryJoinCpt</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00160">MacLayer.h:160</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a4cf3acd6dbeebd4bd11f79326fcf5047"><div class="ttname"><a href="class_lora_wan_container.html#a4cf3acd6dbeebd4bd11f79326fcf5047">LoraWanContainer::appEui</a></div><div class="ttdeci">uint8_t appEui[8]</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8h_source.html#l00096">MacLayer.h:96</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_afb00d7b403f205e99fe543ed4687ad1c"><div class="ttname"><a href="_define_8h.html#afb00d7b403f205e99fe543ed4687ad1c">MICSIZE</a></div><div class="ttdeci">#define MICSIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00174">Define.h:174</a></div></div>
<div class="ttc" id="_define_8h_html_aa4af542cae3f1dd1697822b06bf252c5"><div class="ttname"><a href="_define_8h.html#aa4af542cae3f1dd1697822b06bf252c5">RXTIMING_SETUP_REQ_SIZE</a></div><div class="ttdeci">#define RXTIMING_SETUP_REQ_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00143">Define.h:143</a></div></div>
<div class="ttc" id="_lo_ra_mac_crypto_8h_html_a759976ba9dbb6009faff8022074992e1"><div class="ttname"><a href="_lo_ra_mac_crypto_8h.html#a759976ba9dbb6009faff8022074992e1">LoRaMacCheckJoinMic</a></div><div class="ttdeci">int LoRaMacCheckJoinMic(const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t micIn)</div><div class="ttdef"><b>Definition:</b> <a href="_lo_ra_mac_crypto_mini_mouse_8cpp_source.html#l00225">LoRaMacCryptoMiniMouse.cpp:225</a></div></div>
<div class="ttc" id="_define_8h_html_a664848fcf514ef28ef599972b68a3b9a"><div class="ttname"><a href="_define_8h.html#a664848fcf514ef28ef599972b68a3b9a">PORTNWK</a></div><div class="ttdeci">#define PORTNWK</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00151">Define.h:151</a></div></div>
<div class="ttc" id="_user_define_8h_html_ad6b73a2ceac7032b5468420fceb6122b"><div class="ttname"><a href="_user_define_8h.html#ad6b73a2ceac7032b5468420fceb6122b">CRYSTAL_ERROR</a></div><div class="ttdeci">#define CRYSTAL_ERROR</div><div class="ttdef"><b>Definition:</b> <a href="_user_define_8h_source.html#l00056">UserDefine.h:56</a></div></div>
<div class="ttc" id="structs_lo_ra_wan_keys_html_af983e62161d0cef1452d553478e3a540"><div class="ttname"><a href="structs_lo_ra_wan_keys.html#af983e62161d0cef1452d553478e3a540">sLoRaWanKeys::LoRaMacAppKey</a></div><div class="ttdeci">uint8_t * LoRaMacAppKey</div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00270">Define.h:270</a></div></div>
<div class="ttc" id="_define_8h_html_adc29c2ff13d900c2f185ee95427fb06cada0414f0b7f4a60be3b28198b304f247"><div class="ttname"><a href="_define_8h.html#adc29c2ff13d900c2f185ee95427fb06cada0414f0b7f4a60be3b28198b304f247">DIC_CHANNEL_REQ</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00117">Define.h:117</a></div></div>
<div class="ttc" id="_user_define_8h_html_a177e4c7d734bdcefd2d0abda13f55887"><div class="ttname"><a href="_user_define_8h.html#a177e4c7d734bdcefd2d0abda13f55887">FLASH_UPDATE_PERIOD</a></div><div class="ttdeci">#define FLASH_UPDATE_PERIOD</div><div class="ttdef"><b>Definition:</b> <a href="_user_define_8h_source.html#l00060">UserDefine.h:60</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a5c438e86f462a461cbc244054a2c27bb"><div class="ttname"><a href="class_lora_wan_container.html#a5c438e86f462a461cbc244054a2c27bb">LoraWanContainer::ConfigureRadioForRx1</a></div><div class="ttdeci">void ConfigureRadioForRx1(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00113">MacLayer.cpp:113</a></div></div>
<div class="ttc" id="structs_back_up_flash_html_a408ea06f64214043ee41e5de12cab2eb"><div class="ttname"><a href="structs_back_up_flash.html#a408ea06f64214043ee41e5de12cab2eb">sBackUpFlash::MacTxDataRate</a></div><div class="ttdeci">uint8_t MacTxDataRate</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00030">LoraMacDataStoreInFlash.h:30</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 class="ttc" id="structs_back_up_flash_html_aa6053682376d49efcba40e5cc3fd3154"><div class="ttname"><a href="structs_back_up_flash.html#aa6053682376d49efcba40e5cc3fd3154">sBackUpFlash::MacRx2Frequency</a></div><div class="ttdeci">uint32_t MacRx2Frequency</div><div class="ttdef"><b>Definition:</b> <a href="_lora_mac_data_store_in_flash_8h_source.html#l00037">LoraMacDataStoreInFlash.h:37</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_ac9a6098c71b551eccdea9b1f29f50c96"><div class="ttname"><a href="class_lora_wan_container.html#ac9a6098c71b551eccdea9b1f29f50c96">LoraWanContainer::ConfigureRadioAndSend</a></div><div class="ttdeci">void ConfigureRadioAndSend(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00100">MacLayer.cpp:100</a></div></div>
<div class="ttc" id="_define_8h_html_a99fb83031ce9923c84392b4e92f956b5ad97873f5701286759843188faca9b4f6"><div class="ttname"><a href="_define_8h.html#a99fb83031ce9923c84392b4e92f956b5ad97873f5701286759843188faca9b4f6">JOINREQUEST</a></div><div class="ttdef"><b>Definition:</b> <a href="_define_8h_source.html#l00089">Define.h:89</a></div></div>
<div class="ttc" id="class_lora_wan_container_html_a44404ff31803a6c55ffc152c023a7db8"><div class="ttname"><a href="class_lora_wan_container.html#a44404ff31803a6c55ffc152c023a7db8">LoraWanContainer::LoraWanContainer</a></div><div class="ttdeci">LoraWanContainer(sLoRaWanKeys LoRaWanKeys, R *RadioUser, uint32_t FlashAdress)</div><div class="ttdef"><b>Definition:</b> <a href="_mac_layer_8cpp_source.html#l00031">MacLayer.cpp:31</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>