libctru/uds_8h_source.html
2024-11-03 20:36:34 +00:00

492 lines
88 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libctru: include/3ds/services/uds.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">libctru
&#160;<span id="projectnumber">v2.4.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @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&amp;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_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_d475325f6a9fe3bfc3a495c72a9e475e.html">3ds</a></li><li class="navelem"><a class="el" href="dir_0e005207343684f6967052d1f51a7e66.html">services</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">uds.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="uds_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * @file uds.h</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * @brief UDS(NWMUDS) local-WLAN service. https://3dbrew.org/wiki/NWM_Services</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/// Maximum number of nodes(devices) that can be connected to the network.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="uds_8h.html#af550f39aed337de1ec8f99823c3dc886"> 8</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define UDS_MAXNODES 16</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">/// Broadcast value for NetworkNodeID / alias for all NetworkNodeIDs.</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="uds_8h.html#a0716197ea3205d2c2ad802fd39d64b53"> 11</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define UDS_BROADCAST_NETWORKNODEID 0xFFFF</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">/// NetworkNodeID for the host(the first node).</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="uds_8h.html#a965ac901ed9240377d8fe2e0f223b033"> 14</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define UDS_HOST_NETWORKNODEID 0x1</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">/// Default recv_buffer_size that can be used for udsBind() input / code which uses udsBind() internally.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="uds_8h.html#aaa762c12085c0caf4cc3c380621a66b3"> 17</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define UDS_DEFAULT_RECVBUFSIZE 0x2E30</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">/// Max size of user data-frames.</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="uds_8h.html#a925d4cb65dc18dace5cfbd4115149a70"> 20</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define UDS_DATAFRAME_MAXSIZE 0x5C6</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">/// Check whether a fatal udsSendTo error occured(some error(s) from udsSendTo() can be ignored, but the frame won&#39;t be sent when that happens).</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="uds_8h.html#a95b9889070392e10ed0ce8eaa4680148"> 23</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define UDS_CHECK_SENDTO_FATALERROR(x) (R_FAILED(x) &amp;&amp; x!=0xC86113F0)</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">/// Node info struct.</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="structudsNodeInfo.html"> 26</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> uds_friendcodeseed;<span class="comment">//UDS version of the FriendCodeSeed.</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">union </span>{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> usercfg[0x18];<span class="comment">//This is the first 0x18-bytes from this config block: https://www.3dbrew.org/wiki/Config_Savegame#0x000A0000_Block</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> username[10];</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> unk_x1c;<span class="comment">//Unknown, normally zero. Set to 0x0 with the output from udsScanBeacons().</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> flag;<span class="comment">//&quot;u8 flag, unknown. Originates from the u16 bitmask in the beacon node-list header. This flag is normally 0 since that bitmask is normally 0?&quot;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> pad_x1f;<span class="comment">//Unknown, normally zero.</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; };</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; };</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">//The rest of this is initialized by NWM-module.</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> NetworkNodeID;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> pad_x22;<span class="comment">//Unknown, normally zero?</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> word_x24;<span class="comment">//Normally zero?</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;} <a class="code" href="structudsNodeInfo.html">udsNodeInfo</a>;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">/// Connection status struct.</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structudsConnectionStatus.html"> 48</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> status;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> unk_x4;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> cur_NetworkNodeID;<span class="comment">//&quot;u16 NetworkNodeID for this device.&quot;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> unk_xa;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> unk_xc[0x20&gt;&gt;2];</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> total_nodes;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> max_nodes;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> node_bitmask;<span class="comment">//&quot;This is a bitmask of NetworkNodeIDs: bit0 for NetworkNodeID 0x1(host), bit1 for NetworkNodeID 0x2(first original client), and so on.&quot;</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;} <a class="code" href="structudsConnectionStatus.html">udsConnectionStatus</a>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment">/// Network struct stored as big-endian.</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="structudsNetworkStruct.html"> 61</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> host_macaddress[6];</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> channel;<span class="comment">//Wifi channel for this network. If you want to create a network on a specific channel instead of the system selecting it, you can set this to a non-zero channel value.</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> pad_x7;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> initialized_flag;<span class="comment">//Must be non-zero otherwise NWM-module will use zeros internally instead of the actual field data, for most/all(?) of the fields in this struct.</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> unk_x9[3];</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> oui_value[3];<span class="comment">//&quot;This is the OUI value for use with the beacon tags. Normally this is 001F32.&quot;</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> oui_type;<span class="comment">//&quot;OUI type (21/0x15)&quot;</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> wlancommID;<span class="comment">//Unique local-WLAN communications ID for each application.</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> id8;<span class="comment">//Additional ID that can be used by the application for different types of networks.</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> unk_x15;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> attributes;<span class="comment">//See the UDSNETATTR enum values below.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> networkID;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> total_nodes;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> max_nodes;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> unk_x1e;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> unk_x1f;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> unk_x20[0x1f];</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> appdata_size;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> appdata[0xc8];</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;} <a class="code" href="structudsNetworkStruct.html">udsNetworkStruct</a>;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="structudsBindContext.html"> 91</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> BindNodeID;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a> event;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">bool</span> spectator;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;} <a class="code" href="structudsBindContext.html">udsBindContext</a>;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">/// General NWM input structure used for AP scanning.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="structnwmScanInputStruct.html"> 98</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> unk_x0;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> unk_x2;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> unk_x4;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> unk_x6;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> mac_address[6];</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> unk_xe[0x26];<span class="comment">//Not initialized by dlp.</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;} <a class="code" href="structnwmScanInputStruct.html">nwmScanInputStruct</a>;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">/// General NWM output structure from AP scanning.</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="structnwmBeaconDataReplyHeader.html"> 110</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> maxsize;<span class="comment">//&quot;Max output size, from the command request.&quot;</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> size;<span class="comment">//&quot;Total amount of output data written relative to struct+0. 0xC when there&#39;s no entries.&quot;</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> total_entries;<span class="comment">//&quot;Total entries, 0 for none. &quot;</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">//The entries start here.</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;} <a class="code" href="structnwmBeaconDataReplyHeader.html">nwmBeaconDataReplyHeader</a>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment">/// General NWM output structure from AP scanning, for each entry.</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="structnwmBeaconDataReplyEntry.html"> 119</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> size;<span class="comment">//&quot;Size of this entire entry. The next entry starts at curentry_startoffset+curentry_size.&quot;</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> unk_x4;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> channel;<span class="comment">//Wifi channel for the AP.</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> unk_x6;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> unk_x7;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> mac_address[6];<span class="comment">//&quot;AP MAC address.&quot;</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> unk_xe[6];</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> unk_x14;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> val_x1c;<span class="comment">//&quot;Value 0x1C(size of this header and/or offset to the actual beacon data).&quot;</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; </div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="comment">//The actual beacon data starts here.</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;} <a class="code" href="structnwmBeaconDataReplyEntry.html">nwmBeaconDataReplyEntry</a>;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment">/// Output structure generated from host scanning output.</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="structudsNetworkScanInfo.html"> 134</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="structnwmBeaconDataReplyEntry.html">nwmBeaconDataReplyEntry</a> datareply_entry;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="structudsNetworkStruct.html">udsNetworkStruct</a> network;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="structudsNodeInfo.html">udsNodeInfo</a> nodes[<a class="code" href="uds_8h.html#af550f39aed337de1ec8f99823c3dc886">UDS_MAXNODES</a>];</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;} <a class="code" href="structudsNetworkScanInfo.html">udsNetworkScanInfo</a>;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; </div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="keyword">enum</span> {</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; UDSNETATTR_DisableConnectSpectators = <a class="code" href="types_8h.html#a3a8ea58898cb58fc96013383d39f482c">BIT</a>(0), <span class="comment">//When set new Spectators are not allowed to connect.</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; UDSNETATTR_DisableConnectClients = <a class="code" href="types_8h.html#a3a8ea58898cb58fc96013383d39f482c">BIT</a>(1), <span class="comment">//When set new Clients are not allowed to connect.</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; UDSNETATTR_x4 = <a class="code" href="types_8h.html#a3a8ea58898cb58fc96013383d39f482c">BIT</a>(2), <span class="comment">//Unknown what this bit is for.</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; UDSNETATTR_Default = <a class="code" href="types_8h.html#a3a8ea58898cb58fc96013383d39f482c">BIT</a>(15), <span class="comment">//Unknown what this bit is for.</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;};</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keyword">enum</span> {</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; UDS_SENDFLAG_Default = <a class="code" href="types_8h.html#a3a8ea58898cb58fc96013383d39f482c">BIT</a>(0), <span class="comment">//Unknown what this bit is for.</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; UDS_SENDFLAG_Broadcast = <a class="code" href="types_8h.html#a3a8ea58898cb58fc96013383d39f482c">BIT</a>(1) <span class="comment">//When set, broadcast the data frame via the destination MAC address even when UDS_BROADCAST_NETWORKNODEID isn&#39;t used.</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;};</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> {</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; UDSCONTYPE_Client = 0x1,</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; UDSCONTYPE_Spectator = 0x2</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;} udsConnectionType;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"> * @brief Initializes UDS.</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> * @param sharedmem_size This must be 0x1000-byte aligned.</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> * @param username Optional custom UTF-8 username(converted to UTF-16 internally) that other nodes on the UDS network can use. If not set the username from system-config is used. Max len is 10 characters without NUL-terminator.</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="uds_8h.html#a7b9dd66fad0387daa7cc1a0803093161"> 162</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a7b9dd66fad0387daa7cc1a0803093161">udsInit</a>(<span class="keywordtype">size_t</span> sharedmem_size, <span class="keyword">const</span> <span class="keywordtype">char</span> *username);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">/// Exits UDS.</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="uds_8h.html#a0c4ec11a4ba9281c96528fdd2340e169"> 165</a></span>&#160;<span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="uds_8h.html#a0c4ec11a4ba9281c96528fdd2340e169">udsExit</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"> * @brief Generates a NodeInfo struct with data loaded from system-config.</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"> * @param nodeinfo Output NodeInfo struct.</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> * @param username If set, this is the UTF-8 string to convert for use in the struct. Max len is 10 characters without NUL-terminator.</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="uds_8h.html#adbd391642998a00ba323d2b1cf2c3987"> 172</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#adbd391642998a00ba323d2b1cf2c3987">udsGenerateNodeInfo</a>(<a class="code" href="structudsNodeInfo.html">udsNodeInfo</a> *nodeinfo, <span class="keyword">const</span> <span class="keywordtype">char</span> *username);</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> * @brief Loads the UTF-16 username stored in the input NodeInfo struct, converted to UTF-8.</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> * @param nodeinfo Input NodeInfo struct.</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> * @param username This is the output UTF-8 string. Max len is 10 characters without NUL-terminator.</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="uds_8h.html#aa1a1a204b83acf4615b1d2a870681272"> 179</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#aa1a1a204b83acf4615b1d2a870681272">udsGetNodeInfoUsername</a>(<span class="keyword">const</span> <a class="code" href="structudsNodeInfo.html">udsNodeInfo</a> *nodeinfo, <span class="keywordtype">char</span> *username);</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"> * @brief Checks whether a NodeInfo struct was initialized by NWM-module(not any output from udsGenerateNodeInfo()).</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment"> * @param nodeinfo Input NodeInfo struct.</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="uds_8h.html#a8d326aaf8ff13eb9041730bf86374fe0"> 185</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="uds_8h.html#a8d326aaf8ff13eb9041730bf86374fe0">udsCheckNodeInfoInitialized</a>(<span class="keyword">const</span> <a class="code" href="structudsNodeInfo.html">udsNodeInfo</a> *nodeinfo);</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"> * @brief Generates a default NetworkStruct for creating networks.</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"> * @param network The output struct.</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> * @param wlancommID Unique local-WLAN communications ID for each application.</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"> * @param id8 Additional ID that can be used by the application for different types of networks.</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> * @param max_nodes Maximum number of nodes(devices) that can be connected to the network, including the host.</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="uds_8h.html#ae2bc9475be5af0d5e1ee3a5f98855b89"> 194</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="uds_8h.html#ae2bc9475be5af0d5e1ee3a5f98855b89">udsGenerateDefaultNetworkStruct</a>(<a class="code" href="structudsNetworkStruct.html">udsNetworkStruct</a> *network, <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> wlancommID, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> id8, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> max_nodes);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> * @brief Scans for networks via beacon-scanning.</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> * @param outbuf Buffer which will be used by the beacon-scanning command and for the data parsing afterwards. Normally there&#39;s no need to use the contents of this buffer once this function returns.</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> * @param maxsize Max size of the buffer.</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> * @Param networks Ptr where the allocated udsNetworkScanInfo array buffer is written. The allocsize is sizeof(udsNetworkScanInfo)*total_networks.</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> * @Param total_networks Total number of networks stored under the networks buffer.</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> * @param wlancommID Unique local-WLAN communications ID for each application.</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"> * @param id8 Additional ID that can be used by the application for different types of networks.</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"> * @param host_macaddress When set, this code will only return network info from the specified host MAC address.</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"> * @connected When not connected to a network this *must* be false. When connected to a network this *must* be true.</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="uds_8h.html#a2af058b5911c1755a1d0a486962048c2"> 207</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a2af058b5911c1755a1d0a486962048c2">udsScanBeacons</a>(<span class="keywordtype">void</span> *outbuf, <span class="keywordtype">size_t</span> maxsize, <a class="code" href="structudsNetworkScanInfo.html">udsNetworkScanInfo</a> **networks, <span class="keywordtype">size_t</span> *total_networks, <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> wlancommID, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> id8, <span class="keyword">const</span> <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> *host_macaddress, <span class="keywordtype">bool</span> connected);</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> * @brief This can be used by the host to set the appdata contained in the broadcasted beacons.</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> * @param buf Appdata buffer.</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment"> * @param size Size of the input appdata.</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="uds_8h.html#a6d31b5879de5cec14eff252093d1c88d"> 214</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a6d31b5879de5cec14eff252093d1c88d">udsSetApplicationData</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> size);</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment"> * @brief This can be used while on a network(host/client) to get the appdata from the current beacon.</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment"> * @param buf Appdata buffer.</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment"> * @param size Max size of the output buffer.</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> * @param actual_size If set, the actual size of the appdata written into the buffer is stored here.</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="uds_8h.html#aa10484f4b741649b48633efafdfb8e55"> 222</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#aa10484f4b741649b48633efafdfb8e55">udsGetApplicationData</a>(<span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> size, <span class="keywordtype">size_t</span> *actual_size);</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"> * @brief This can be used with a NetworkStruct, from udsScanBeacons() mainly, for getting the appdata.</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"> * @param buf Appdata buffer.</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment"> * @param size Max size of the output buffer.</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"> * @param actual_size If set, the actual size of the appdata written into the buffer is stored here.</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="uds_8h.html#ab3ffe31c0e34aba040548dc56abb001d"> 230</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#ab3ffe31c0e34aba040548dc56abb001d">udsGetNetworkStructApplicationData</a>(<span class="keyword">const</span> <a class="code" href="structudsNetworkStruct.html">udsNetworkStruct</a> *network, <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> size, <span class="keywordtype">size_t</span> *actual_size);</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"> * @brief Create a bind.</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> * @param bindcontext The output bind context.</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> * @param NetworkNodeID This is the NetworkNodeID which this bind can receive data from.</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> * @param spectator False for a regular bind, true for a spectator.</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> * @param data_channel This is an arbitrary value to use for data-frame filtering. This bind will only receive data frames which contain a matching data_channel value, which was specified by udsSendTo(). The data_channel must be non-zero.</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> * @param recv_buffer_size Size of the buffer under sharedmem used for temporarily storing received data-frames which are then loaded by udsPullPacket(). The system requires this to be &gt;=0x5F4. UDS_DEFAULT_RECVBUFSIZE can be used for this.</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="uds_8h.html#a2ef6ef86df7e0bd4c13441559b376dd8"> 240</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a2ef6ef86df7e0bd4c13441559b376dd8">udsBind</a>(<a class="code" href="structudsBindContext.html">udsBindContext</a> *bindcontext, <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> NetworkNodeID, <span class="keywordtype">bool</span> spectator, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> data_channel, <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> recv_buffer_size);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment"> * @brief Remove a bind.</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment"> * @param bindcontext The bind context.</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="uds_8h.html#a0478019d97df6c5754cae576b2fecbbd"> 246</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a0478019d97df6c5754cae576b2fecbbd">udsUnbind</a>(<a class="code" href="structudsBindContext.html">udsBindContext</a> *bindcontext);</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment"> * @brief Waits for the bind event to occur, or checks if the event was signaled. This event is signaled every time new data is available via udsPullPacket().</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment"> * @return Always true. However if wait=false, this will return false if the event wasn&#39;t signaled.</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment"> * @param bindcontext The bind context.</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"> * @param nextEvent Whether to discard the current event and wait for the next event.</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment"> * @param wait When true this will not return until the event is signaled. When false this checks if the event was signaled without waiting for it.</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="uds_8h.html#a705245e37134aba29af68c8e90b5df32"> 255</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="uds_8h.html#a705245e37134aba29af68c8e90b5df32">udsWaitDataAvailable</a>(<span class="keyword">const</span> <a class="code" href="structudsBindContext.html">udsBindContext</a> *bindcontext, <span class="keywordtype">bool</span> nextEvent, <span class="keywordtype">bool</span> wait);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"> * @brief Receives data over the network. This data is loaded from the recv_buffer setup by udsBind(). When a node disconnects, this will still return data from that node until there&#39;s no more frames from that node in the recv_buffer.</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"> * @param bindcontext Bind context.</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"> * @param buf Output receive buffer.</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"> * @param size Size of the buffer.</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> * @param actual_size If set, the actual size written into the output buffer is stored here. This is zero when no data was received.</span></div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> * @param src_NetworkNodeID If set, the source NetworkNodeID is written here. This is zero when no data was received.</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="uds_8h.html#a15464b1fc2ce4897f352001b59b40597"> 265</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a15464b1fc2ce4897f352001b59b40597">udsPullPacket</a>(<span class="keyword">const</span> <a class="code" href="structudsBindContext.html">udsBindContext</a> *bindcontext, <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> size, <span class="keywordtype">size_t</span> *actual_size, <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> *src_NetworkNodeID);</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"> * @brief Sends data over the network.</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"> * @param dst_NetworkNodeID Destination NetworkNodeID.</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"> * @param data_channel See udsBind().</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"> * @param flags Send flags, see the UDS_SENDFLAG enum values.</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> * @param buf Input send buffer.</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"> * @param size Size of the buffer.</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="uds_8h.html#a2609972c60a77f6cfbd85c4caab93c70"> 275</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a2609972c60a77f6cfbd85c4caab93c70">udsSendTo</a>(<a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> dst_NetworkNodeID, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> data_channel, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> flags, <span class="keyword">const</span> <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> size);</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"> * @brief Gets the wifi channel currently being used.</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> * @param channel Output channel.</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="uds_8h.html#a682ad1bee0b482a496d03a6d88ec5c0c"> 281</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a682ad1bee0b482a496d03a6d88ec5c0c">udsGetChannel</a>(<a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> *channel);</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment"> * @brief Starts hosting a new network.</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment"> * @param network The NetworkStruct, you can use udsGenerateDefaultNetworkStruct() for generating this.</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"> * @param passphrase Raw input passphrase buffer.</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment"> * @param passphrase_size Size of the passphrase buffer.</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"> * @param context Optional output bind context which will be created for this host, with NetworkNodeID=UDS_BROADCAST_NETWORKNODEID.</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment"> * @param data_channel This is the data_channel value which will be passed to udsBind() internally.</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment"> * @param recv_buffer_size This is the recv_buffer_size value which will be passed to udsBind() internally.</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="uds_8h.html#a1975ed5bb92b1a1c87de5bfb41588847"> 292</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a1975ed5bb92b1a1c87de5bfb41588847">udsCreateNetwork</a>(<span class="keyword">const</span> <a class="code" href="structudsNetworkStruct.html">udsNetworkStruct</a> *network, <span class="keyword">const</span> <span class="keywordtype">void</span> *passphrase, <span class="keywordtype">size_t</span> passphrase_size, <a class="code" href="structudsBindContext.html">udsBindContext</a> *context, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> data_channel, <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> recv_buffer_size);</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment"> * @brief Connect to a network.</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"> * @param network The NetworkStruct, you can use udsScanBeacons() for this.</span></div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment"> * @param passphrase Raw input passphrase buffer.</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"> * @param passphrase_size Size of the passphrase buffer.</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"> * @param context Optional output bind context which will be created for this host.</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"> * @param recv_NetworkNodeID This is the NetworkNodeID passed to udsBind() internally.</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"> * @param connection_type Type of connection, see the udsConnectionType enum values.</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> * @param data_channel This is the data_channel value which will be passed to udsBind() internally.</span></div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment"> * @param recv_buffer_size This is the recv_buffer_size value which will be passed to udsBind() internally.</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="uds_8h.html#a667dabaed66dd32770a6ede4fd818019"> 305</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a667dabaed66dd32770a6ede4fd818019">udsConnectNetwork</a>(<span class="keyword">const</span> <a class="code" href="structudsNetworkStruct.html">udsNetworkStruct</a> *network, <span class="keyword">const</span> <span class="keywordtype">void</span> *passphrase, <span class="keywordtype">size_t</span> passphrase_size, <a class="code" href="structudsBindContext.html">udsBindContext</a> *context, <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> recv_NetworkNodeID, udsConnectionType connection_type, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> data_channel, <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> recv_buffer_size);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="comment"> * @brief Stop hosting the network.</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="uds_8h.html#a44092fac3eec0cb9402fd903dc2fff81"> 310</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a44092fac3eec0cb9402fd903dc2fff81">udsDestroyNetwork</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment"> * @brief Disconnect this client device from the network.</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="uds_8h.html#a300ee4358ee07e1b08dea6e1908e72a6"> 315</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a300ee4358ee07e1b08dea6e1908e72a6">udsDisconnectNetwork</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="comment"> * @brief This can be used by the host to force-disconnect client(s).</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="comment"> * @param NetworkNodeID Target NetworkNodeID. UDS_BROADCAST_NETWORKNODEID can be used to disconnect all clients.</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="uds_8h.html#acb11e1259a6f58938f61dc4109554b06"> 321</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#acb11e1259a6f58938f61dc4109554b06">udsEjectClient</a>(<a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> NetworkNodeID);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"> * @brief This can be used by the host to force-disconnect the spectators. Afterwards new spectators will not be allowed to connect until udsAllowSpectators() is used.</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="uds_8h.html#a59af3bb7c72312bd5d54ed1b03f9764f"> 326</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a59af3bb7c72312bd5d54ed1b03f9764f">udsEjectSpectator</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"> * @brief This can be used by the host to update the network attributes. If bitmask 0x4 is clear in the input bitmask, this clears that bit in the value before actually writing the value into state. Normally you should use the below wrapper functions.</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment"> * @param bitmask Bitmask to clear/set in the attributes. See the UDSNETATTR enum values.</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment"> * @param flag When false, bit-clear, otherwise bit-set.</span></div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="uds_8h.html#adffcca2461ecc16db6717442f0a74de4"> 333</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#adffcca2461ecc16db6717442f0a74de4">udsUpdateNetworkAttribute</a>(<a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> bitmask, <span class="keywordtype">bool</span> flag);</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment"> * @brief This uses udsUpdateNetworkAttribute() for (un)blocking new connections to this host.</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment"> * @param block When true, block the specified connection types(bitmask set). Otherwise allow them(bitmask clear).</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment"> * @param clients When true, (un)block regular clients.</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment"> * @param flag When true, update UDSNETATTR_x4. Normally this should be false.</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="uds_8h.html#a579487b86069a0a066bf6973f3d94dd7"> 341</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a579487b86069a0a066bf6973f3d94dd7">udsSetNewConnectionsBlocked</a>(<span class="keywordtype">bool</span> block, <span class="keywordtype">bool</span> clients, <span class="keywordtype">bool</span> flag);</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="comment"> * @brief This uses udsUpdateNetworkAttribute() for unblocking new spectator connections to this host. See udsEjectSpectator() for blocking new spectators.</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="uds_8h.html#a715815015bb8ddf709d3f85553e8ae4a"> 346</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a715815015bb8ddf709d3f85553e8ae4a">udsAllowSpectators</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment"> * @brief This loads the current ConnectionStatus struct.</span></div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment"> * @param output Output ConnectionStatus struct.</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="uds_8h.html#a7fdd55dbeca432e2ad83dccc203d6de4"> 352</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a7fdd55dbeca432e2ad83dccc203d6de4">udsGetConnectionStatus</a>(<a class="code" href="structudsConnectionStatus.html">udsConnectionStatus</a> *output);</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment"> * @brief Waits for the ConnectionStatus event to occur, or checks if the event was signaled. This event is signaled when the data from udsGetConnectionStatus() was updated internally.</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="comment"> * @return Always true. However if wait=false, this will return false if the event wasn&#39;t signaled.</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="comment"> * @param nextEvent Whether to discard the current event and wait for the next event.</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment"> * @param wait When true this will not return until the event is signaled. When false this checks if the event was signaled without waiting for it.</span></div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="uds_8h.html#a3e5c7256539d252195695c5503d64255"> 360</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="uds_8h.html#a3e5c7256539d252195695c5503d64255">udsWaitConnectionStatusEvent</a>(<span class="keywordtype">bool</span> nextEvent, <span class="keywordtype">bool</span> wait);</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> * @brief This loads a NodeInfo struct for the specified NetworkNodeID. The broadcast alias can&#39;t be used with this.</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment"> * @param NetworkNodeID Target NetworkNodeID.</span></div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"> * @param output Output NodeInfo struct.</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="uds_8h.html#a96d9f0e9574e21527b4f258b4a0f54ee"> 367</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="uds_8h.html#a96d9f0e9574e21527b4f258b4a0f54ee">udsGetNodeInformation</a>(<a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> NetworkNodeID, <a class="code" href="structudsNodeInfo.html">udsNodeInfo</a> *output);</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; </div>
<div class="ttc" id="astructnwmBeaconDataReplyEntry_html"><div class="ttname"><a href="structnwmBeaconDataReplyEntry.html">nwmBeaconDataReplyEntry</a></div><div class="ttdoc">General NWM output structure from AP scanning, for each entry.</div><div class="ttdef"><b>Definition:</b> uds.h:119</div></div>
<div class="ttc" id="astructnwmBeaconDataReplyHeader_html"><div class="ttname"><a href="structnwmBeaconDataReplyHeader.html">nwmBeaconDataReplyHeader</a></div><div class="ttdoc">General NWM output structure from AP scanning.</div><div class="ttdef"><b>Definition:</b> uds.h:110</div></div>
<div class="ttc" id="astructnwmScanInputStruct_html"><div class="ttname"><a href="structnwmScanInputStruct.html">nwmScanInputStruct</a></div><div class="ttdoc">General NWM input structure used for AP scanning.</div><div class="ttdef"><b>Definition:</b> uds.h:98</div></div>
<div class="ttc" id="astructudsBindContext_html"><div class="ttname"><a href="structudsBindContext.html">udsBindContext</a></div><div class="ttdef"><b>Definition:</b> uds.h:91</div></div>
<div class="ttc" id="astructudsConnectionStatus_html"><div class="ttname"><a href="structudsConnectionStatus.html">udsConnectionStatus</a></div><div class="ttdoc">Connection status struct.</div><div class="ttdef"><b>Definition:</b> uds.h:48</div></div>
<div class="ttc" id="astructudsNetworkScanInfo_html"><div class="ttname"><a href="structudsNetworkScanInfo.html">udsNetworkScanInfo</a></div><div class="ttdoc">Output structure generated from host scanning output.</div><div class="ttdef"><b>Definition:</b> uds.h:134</div></div>
<div class="ttc" id="astructudsNetworkStruct_html"><div class="ttname"><a href="structudsNetworkStruct.html">udsNetworkStruct</a></div><div class="ttdoc">Network struct stored as big-endian.</div><div class="ttdef"><b>Definition:</b> uds.h:61</div></div>
<div class="ttc" id="astructudsNodeInfo_html"><div class="ttname"><a href="structudsNodeInfo.html">udsNodeInfo</a></div><div class="ttdoc">Node info struct.</div><div class="ttdef"><b>Definition:</b> uds.h:26</div></div>
<div class="ttc" id="atypes_8h_html_a3a8ea58898cb58fc96013383d39f482c"><div class="ttname"><a href="types_8h.html#a3a8ea58898cb58fc96013383d39f482c">BIT</a></div><div class="ttdeci">#define BIT(n)</div><div class="ttdoc">Creates a bitmask from a bit number.</div><div class="ttdef"><b>Definition:</b> types.h:47</div></div>
<div class="ttc" id="atypes_8h_html_a3f7e2bcbb0b4c338f3c4f6c937cd4234"><div class="ttname"><a href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a></div><div class="ttdeci">uint64_t u64</div><div class="ttdoc">64-bit unsigned integer</div><div class="ttdef"><b>Definition:</b> types.h:24</div></div>
<div class="ttc" id="atypes_8h_html_a92c50087ca0e64fa93fc59402c55f8ca"><div class="ttname"><a href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a></div><div class="ttdeci">uint8_t u8</div><div class="ttdoc">would be nice if newlib had this already</div><div class="ttdef"><b>Definition:</b> types.h:21</div></div>
<div class="ttc" id="atypes_8h_html_ab6d744c6b5de129f12937e482dc674fb"><div class="ttname"><a href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a></div><div class="ttdeci">u32 Handle</div><div class="ttdoc">Resource handle.</div><div class="ttdef"><b>Definition:</b> types.h:41</div></div>
<div class="ttc" id="atypes_8h_html_ac830bf5a4f2cf8273f61ab99a46cf163"><div class="ttname"><a href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a></div><div class="ttdeci">s32 Result</div><div class="ttdoc">Function result.</div><div class="ttdef"><b>Definition:</b> types.h:42</div></div>
<div class="ttc" id="atypes_8h_html_ace9d960e74685e2cd84b36132dbbf8aa"><div class="ttname"><a href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a></div><div class="ttdeci">uint16_t u16</div><div class="ttdoc">16-bit unsigned integer</div><div class="ttdef"><b>Definition:</b> types.h:22</div></div>
<div class="ttc" id="atypes_8h_html_afaa62991928fb9fb18ff0db62a040aba"><div class="ttname"><a href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a></div><div class="ttdeci">uint32_t u32</div><div class="ttdoc">32-bit unsigned integer</div><div class="ttdef"><b>Definition:</b> types.h:23</div></div>
<div class="ttc" id="auds_8h_html_a0478019d97df6c5754cae576b2fecbbd"><div class="ttname"><a href="uds_8h.html#a0478019d97df6c5754cae576b2fecbbd">udsUnbind</a></div><div class="ttdeci">Result udsUnbind(udsBindContext *bindcontext)</div><div class="ttdoc">Remove a bind.</div></div>
<div class="ttc" id="auds_8h_html_a0c4ec11a4ba9281c96528fdd2340e169"><div class="ttname"><a href="uds_8h.html#a0c4ec11a4ba9281c96528fdd2340e169">udsExit</a></div><div class="ttdeci">void udsExit(void)</div><div class="ttdoc">Exits UDS.</div></div>
<div class="ttc" id="auds_8h_html_a15464b1fc2ce4897f352001b59b40597"><div class="ttname"><a href="uds_8h.html#a15464b1fc2ce4897f352001b59b40597">udsPullPacket</a></div><div class="ttdeci">Result udsPullPacket(const udsBindContext *bindcontext, void *buf, size_t size, size_t *actual_size, u16 *src_NetworkNodeID)</div><div class="ttdoc">Receives data over the network.</div></div>
<div class="ttc" id="auds_8h_html_a1975ed5bb92b1a1c87de5bfb41588847"><div class="ttname"><a href="uds_8h.html#a1975ed5bb92b1a1c87de5bfb41588847">udsCreateNetwork</a></div><div class="ttdeci">Result udsCreateNetwork(const udsNetworkStruct *network, const void *passphrase, size_t passphrase_size, udsBindContext *context, u8 data_channel, u32 recv_buffer_size)</div><div class="ttdoc">Starts hosting a new network.</div></div>
<div class="ttc" id="auds_8h_html_a2609972c60a77f6cfbd85c4caab93c70"><div class="ttname"><a href="uds_8h.html#a2609972c60a77f6cfbd85c4caab93c70">udsSendTo</a></div><div class="ttdeci">Result udsSendTo(u16 dst_NetworkNodeID, u8 data_channel, u8 flags, const void *buf, size_t size)</div><div class="ttdoc">Sends data over the network.</div></div>
<div class="ttc" id="auds_8h_html_a2af058b5911c1755a1d0a486962048c2"><div class="ttname"><a href="uds_8h.html#a2af058b5911c1755a1d0a486962048c2">udsScanBeacons</a></div><div class="ttdeci">Result udsScanBeacons(void *outbuf, size_t maxsize, udsNetworkScanInfo **networks, size_t *total_networks, u32 wlancommID, u8 id8, const u8 *host_macaddress, bool connected)</div><div class="ttdoc">Scans for networks via beacon-scanning.</div></div>
<div class="ttc" id="auds_8h_html_a2ef6ef86df7e0bd4c13441559b376dd8"><div class="ttname"><a href="uds_8h.html#a2ef6ef86df7e0bd4c13441559b376dd8">udsBind</a></div><div class="ttdeci">Result udsBind(udsBindContext *bindcontext, u16 NetworkNodeID, bool spectator, u8 data_channel, u32 recv_buffer_size)</div><div class="ttdoc">Create a bind.</div></div>
<div class="ttc" id="auds_8h_html_a300ee4358ee07e1b08dea6e1908e72a6"><div class="ttname"><a href="uds_8h.html#a300ee4358ee07e1b08dea6e1908e72a6">udsDisconnectNetwork</a></div><div class="ttdeci">Result udsDisconnectNetwork(void)</div><div class="ttdoc">Disconnect this client device from the network.</div></div>
<div class="ttc" id="auds_8h_html_a3e5c7256539d252195695c5503d64255"><div class="ttname"><a href="uds_8h.html#a3e5c7256539d252195695c5503d64255">udsWaitConnectionStatusEvent</a></div><div class="ttdeci">bool udsWaitConnectionStatusEvent(bool nextEvent, bool wait)</div><div class="ttdoc">Waits for the ConnectionStatus event to occur, or checks if the event was signaled.</div></div>
<div class="ttc" id="auds_8h_html_a44092fac3eec0cb9402fd903dc2fff81"><div class="ttname"><a href="uds_8h.html#a44092fac3eec0cb9402fd903dc2fff81">udsDestroyNetwork</a></div><div class="ttdeci">Result udsDestroyNetwork(void)</div><div class="ttdoc">Stop hosting the network.</div></div>
<div class="ttc" id="auds_8h_html_a579487b86069a0a066bf6973f3d94dd7"><div class="ttname"><a href="uds_8h.html#a579487b86069a0a066bf6973f3d94dd7">udsSetNewConnectionsBlocked</a></div><div class="ttdeci">Result udsSetNewConnectionsBlocked(bool block, bool clients, bool flag)</div><div class="ttdoc">This uses udsUpdateNetworkAttribute() for (un)blocking new connections to this host.</div></div>
<div class="ttc" id="auds_8h_html_a59af3bb7c72312bd5d54ed1b03f9764f"><div class="ttname"><a href="uds_8h.html#a59af3bb7c72312bd5d54ed1b03f9764f">udsEjectSpectator</a></div><div class="ttdeci">Result udsEjectSpectator(void)</div><div class="ttdoc">This can be used by the host to force-disconnect the spectators.</div></div>
<div class="ttc" id="auds_8h_html_a667dabaed66dd32770a6ede4fd818019"><div class="ttname"><a href="uds_8h.html#a667dabaed66dd32770a6ede4fd818019">udsConnectNetwork</a></div><div class="ttdeci">Result udsConnectNetwork(const udsNetworkStruct *network, const void *passphrase, size_t passphrase_size, udsBindContext *context, u16 recv_NetworkNodeID, udsConnectionType connection_type, u8 data_channel, u32 recv_buffer_size)</div><div class="ttdoc">Connect to a network.</div></div>
<div class="ttc" id="auds_8h_html_a682ad1bee0b482a496d03a6d88ec5c0c"><div class="ttname"><a href="uds_8h.html#a682ad1bee0b482a496d03a6d88ec5c0c">udsGetChannel</a></div><div class="ttdeci">Result udsGetChannel(u8 *channel)</div><div class="ttdoc">Gets the wifi channel currently being used.</div></div>
<div class="ttc" id="auds_8h_html_a6d31b5879de5cec14eff252093d1c88d"><div class="ttname"><a href="uds_8h.html#a6d31b5879de5cec14eff252093d1c88d">udsSetApplicationData</a></div><div class="ttdeci">Result udsSetApplicationData(const void *buf, size_t size)</div><div class="ttdoc">This can be used by the host to set the appdata contained in the broadcasted beacons.</div></div>
<div class="ttc" id="auds_8h_html_a705245e37134aba29af68c8e90b5df32"><div class="ttname"><a href="uds_8h.html#a705245e37134aba29af68c8e90b5df32">udsWaitDataAvailable</a></div><div class="ttdeci">bool udsWaitDataAvailable(const udsBindContext *bindcontext, bool nextEvent, bool wait)</div><div class="ttdoc">Waits for the bind event to occur, or checks if the event was signaled.</div></div>
<div class="ttc" id="auds_8h_html_a715815015bb8ddf709d3f85553e8ae4a"><div class="ttname"><a href="uds_8h.html#a715815015bb8ddf709d3f85553e8ae4a">udsAllowSpectators</a></div><div class="ttdeci">Result udsAllowSpectators(void)</div><div class="ttdoc">This uses udsUpdateNetworkAttribute() for unblocking new spectator connections to this host.</div></div>
<div class="ttc" id="auds_8h_html_a7b9dd66fad0387daa7cc1a0803093161"><div class="ttname"><a href="uds_8h.html#a7b9dd66fad0387daa7cc1a0803093161">udsInit</a></div><div class="ttdeci">Result udsInit(size_t sharedmem_size, const char *username)</div><div class="ttdoc">Initializes UDS.</div></div>
<div class="ttc" id="auds_8h_html_a7fdd55dbeca432e2ad83dccc203d6de4"><div class="ttname"><a href="uds_8h.html#a7fdd55dbeca432e2ad83dccc203d6de4">udsGetConnectionStatus</a></div><div class="ttdeci">Result udsGetConnectionStatus(udsConnectionStatus *output)</div><div class="ttdoc">This loads the current ConnectionStatus struct.</div></div>
<div class="ttc" id="auds_8h_html_a8d326aaf8ff13eb9041730bf86374fe0"><div class="ttname"><a href="uds_8h.html#a8d326aaf8ff13eb9041730bf86374fe0">udsCheckNodeInfoInitialized</a></div><div class="ttdeci">bool udsCheckNodeInfoInitialized(const udsNodeInfo *nodeinfo)</div><div class="ttdoc">Checks whether a NodeInfo struct was initialized by NWM-module(not any output from udsGenerateNodeInf...</div></div>
<div class="ttc" id="auds_8h_html_a96d9f0e9574e21527b4f258b4a0f54ee"><div class="ttname"><a href="uds_8h.html#a96d9f0e9574e21527b4f258b4a0f54ee">udsGetNodeInformation</a></div><div class="ttdeci">Result udsGetNodeInformation(u16 NetworkNodeID, udsNodeInfo *output)</div><div class="ttdoc">This loads a NodeInfo struct for the specified NetworkNodeID.</div></div>
<div class="ttc" id="auds_8h_html_aa10484f4b741649b48633efafdfb8e55"><div class="ttname"><a href="uds_8h.html#aa10484f4b741649b48633efafdfb8e55">udsGetApplicationData</a></div><div class="ttdeci">Result udsGetApplicationData(void *buf, size_t size, size_t *actual_size)</div><div class="ttdoc">This can be used while on a network(host/client) to get the appdata from the current beacon.</div></div>
<div class="ttc" id="auds_8h_html_aa1a1a204b83acf4615b1d2a870681272"><div class="ttname"><a href="uds_8h.html#aa1a1a204b83acf4615b1d2a870681272">udsGetNodeInfoUsername</a></div><div class="ttdeci">Result udsGetNodeInfoUsername(const udsNodeInfo *nodeinfo, char *username)</div><div class="ttdoc">Loads the UTF-16 username stored in the input NodeInfo struct, converted to UTF-8.</div></div>
<div class="ttc" id="auds_8h_html_ab3ffe31c0e34aba040548dc56abb001d"><div class="ttname"><a href="uds_8h.html#ab3ffe31c0e34aba040548dc56abb001d">udsGetNetworkStructApplicationData</a></div><div class="ttdeci">Result udsGetNetworkStructApplicationData(const udsNetworkStruct *network, void *buf, size_t size, size_t *actual_size)</div><div class="ttdoc">This can be used with a NetworkStruct, from udsScanBeacons() mainly, for getting the appdata.</div></div>
<div class="ttc" id="auds_8h_html_acb11e1259a6f58938f61dc4109554b06"><div class="ttname"><a href="uds_8h.html#acb11e1259a6f58938f61dc4109554b06">udsEjectClient</a></div><div class="ttdeci">Result udsEjectClient(u16 NetworkNodeID)</div><div class="ttdoc">This can be used by the host to force-disconnect client(s).</div></div>
<div class="ttc" id="auds_8h_html_adbd391642998a00ba323d2b1cf2c3987"><div class="ttname"><a href="uds_8h.html#adbd391642998a00ba323d2b1cf2c3987">udsGenerateNodeInfo</a></div><div class="ttdeci">Result udsGenerateNodeInfo(udsNodeInfo *nodeinfo, const char *username)</div><div class="ttdoc">Generates a NodeInfo struct with data loaded from system-config.</div></div>
<div class="ttc" id="auds_8h_html_adffcca2461ecc16db6717442f0a74de4"><div class="ttname"><a href="uds_8h.html#adffcca2461ecc16db6717442f0a74de4">udsUpdateNetworkAttribute</a></div><div class="ttdeci">Result udsUpdateNetworkAttribute(u16 bitmask, bool flag)</div><div class="ttdoc">This can be used by the host to update the network attributes.</div></div>
<div class="ttc" id="auds_8h_html_ae2bc9475be5af0d5e1ee3a5f98855b89"><div class="ttname"><a href="uds_8h.html#ae2bc9475be5af0d5e1ee3a5f98855b89">udsGenerateDefaultNetworkStruct</a></div><div class="ttdeci">void udsGenerateDefaultNetworkStruct(udsNetworkStruct *network, u32 wlancommID, u8 id8, u8 max_nodes)</div><div class="ttdoc">Generates a default NetworkStruct for creating networks.</div></div>
<div class="ttc" id="auds_8h_html_af550f39aed337de1ec8f99823c3dc886"><div class="ttname"><a href="uds_8h.html#af550f39aed337de1ec8f99823c3dc886">UDS_MAXNODES</a></div><div class="ttdeci">#define UDS_MAXNODES</div><div class="ttdoc">Maximum number of nodes(devices) that can be connected to the network.</div><div class="ttdef"><b>Definition:</b> uds.h:8</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>