556 lines
64 KiB
HTML
556 lines
64 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: network/uds/source/uds.c</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
|
|
 <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&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&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>
|
|
</div><!-- top -->
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">network/uds/source/uds.c</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="fragment"><div class="line"><span class="preprocessor">#include <stdio.h></span></div>
|
|
<div class="line"><span class="preprocessor">#include <stdlib.h></span></div>
|
|
<div class="line"><span class="preprocessor">#include <string.h></span></div>
|
|
<div class="line"><span class="preprocessor">#include <malloc.h></span></div>
|
|
<div class="line"><span class="preprocessor">#include <errno.h></span></div>
|
|
<div class="line"><span class="preprocessor">#include <stdarg.h></span></div>
|
|
<div class="line"><span class="preprocessor">#include <unistd.h></span></div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="preprocessor">#include <<a class="code" href="3ds_8h.html">3ds.h</a>></span></div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordtype">void</span> print_constatus()</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> ret=0;</div>
|
|
<div class="line"> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> pos;</div>
|
|
<div class="line"> <a name="_a0"></a><a class="code" href="structudsConnectionStatus.html">udsConnectionStatus</a> constatus;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">//By checking the output of udsGetConnectionStatus you can check for nodes (including the current one) which just (dis)connected, etc.</span></div>
|
|
<div class="line"> ret = <a name="a1"></a><a class="code" href="uds_8h.html#a7fdd55dbeca432e2ad83dccc203d6de4">udsGetConnectionStatus</a>(&constatus);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a name="a2"></a><a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsGetConnectionStatus() returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <span class="keywordflow">else</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"constatus:\nstatus=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)constatus.<a name="a3"></a>status);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"1=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)constatus.<a name="a4"></a>unk_x4);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"cur_NetworkNodeID=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)constatus.<a name="a5"></a>cur_NetworkNodeID);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"unk_xa=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)constatus.<a name="a6"></a>unk_xa);</div>
|
|
<div class="line"> <span class="keywordflow">for</span>(pos=0; pos<(0x20>>2); pos++)printf(<span class="stringliteral">"%u=0x%x "</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)pos+3, (<span class="keywordtype">unsigned</span> int)constatus.<a name="a7"></a>unk_xc[pos]);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"\ntotal_nodes=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)constatus.<a name="a8"></a>total_nodes);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"max_nodes=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)constatus.<a name="a9"></a>max_nodes);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"node_bitmask=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)constatus.total_nodes);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line">}</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordtype">void</span> uds_test()</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> ret=0;</div>
|
|
<div class="line"> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> con_type=0;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> *tmpbuf;</div>
|
|
<div class="line"> <span class="keywordtype">size_t</span> tmpbuf_size;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> data_channel = 1;</div>
|
|
<div class="line"> <a name="_a10"></a><a class="code" href="structudsNetworkStruct.html">udsNetworkStruct</a> networkstruct;</div>
|
|
<div class="line"> <a name="_a11"></a><a class="code" href="structudsBindContext.html">udsBindContext</a> bindctx;</div>
|
|
<div class="line"> <a name="_a12"></a><a class="code" href="structudsNetworkScanInfo.html">udsNetworkScanInfo</a> *networks = NULL;</div>
|
|
<div class="line"> <a class="code" href="structudsNetworkScanInfo.html">udsNetworkScanInfo</a> *network = NULL;</div>
|
|
<div class="line"> <span class="keywordtype">size_t</span> total_networks = 0;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> recv_buffer_size = <a name="a13"></a><a class="code" href="uds_8h.html#aaa762c12085c0caf4cc3c380621a66b3">UDS_DEFAULT_RECVBUFSIZE</a>;</div>
|
|
<div class="line"> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> wlancommID = 0x48425710;<span class="comment">//Unique ID, change this to your own.</span></div>
|
|
<div class="line"> <span class="keywordtype">char</span> *passphrase = <span class="stringliteral">"udsdemo passphrase c186093cd2652741"</span>;<span class="comment">//Change this passphrase to your own. The input you use for the passphrase doesn't matter since it's a raw buffer.</span></div>
|
|
<div class="line"> </div>
|
|
<div class="line"> udsConnectionType conntype = UDSCONTYPE_Client;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> transfer_data, prev_transfer_data = 0;</div>
|
|
<div class="line"> <span class="keywordtype">size_t</span> actual_size;</div>
|
|
<div class="line"> <a class="code" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> src_NetworkNodeID;</div>
|
|
<div class="line"> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> tmp=0;</div>
|
|
<div class="line"> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> pos;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <a name="_a14"></a><a class="code" href="structudsNodeInfo.html">udsNodeInfo</a> tmpnode;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> appdata[0x14] = {0x69, 0x8a, 0x05, 0x5c};</div>
|
|
<div class="line"> <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> out_appdata[0x14];</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordtype">char</span> tmpstr[256];</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> strncpy((<span class="keywordtype">char</span>*)&appdata[4], <span class="stringliteral">"Test appdata."</span>, <span class="keyword">sizeof</span>(appdata)-4);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> printf(<span class="stringliteral">"Successfully initialized.\n"</span>);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> tmpbuf_size = 0x4000;</div>
|
|
<div class="line"> tmpbuf = malloc(tmpbuf_size);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(tmpbuf==NULL)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"Failed to allocate tmpbuf for beacon data.\n"</span>);</div>
|
|
<div class="line"> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">//With normal client-side handling you'd keep running network-scanning until the user chooses to stops scanning or selects a network to connect to. This example just scans a maximum of 10 times until at least one network is found.</span></div>
|
|
<div class="line"> <span class="keywordflow">for</span>(pos=0; pos<10; pos++)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> total_networks = 0;</div>
|
|
<div class="line"> memset(tmpbuf, 0, <span class="keyword">sizeof</span>(tmpbuf_size));</div>
|
|
<div class="line"> ret = <a name="a15"></a><a class="code" href="uds_8h.html#a2af058b5911c1755a1d0a486962048c2">udsScanBeacons</a>(tmpbuf, tmpbuf_size, &networks, &total_networks, wlancommID, 0, NULL, <span class="keyword">false</span>);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsScanBeacons() returned 0x%08x.\ntotal_networks=%u.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)total_networks);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(total_networks)<span class="keywordflow">break</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> free(tmpbuf);</div>
|
|
<div class="line"> tmpbuf = NULL;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(total_networks)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <span class="comment">//At this point you'd let the user select which network to connect to and optionally display the first node's username(the host), along with the parsed appdata if you want. For this example this just uses the first detected network and then displays the username of each node.</span></div>
|
|
<div class="line"> <span class="comment">//If appdata isn't enough, you can do what DLP does loading the icon data etc: connect to the network as a spectator temporarily for receiving broadcasted data frames.</span></div>
|
|
<div class="line"> </div>
|
|
<div class="line"> network = &networks[0];</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> printf(<span class="stringliteral">"network: total nodes = %u.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)network-><a name="a16"></a>network.<a name="a17"></a>total_nodes);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">for</span>(pos=0; pos<<a name="a18"></a><a class="code" href="uds_8h.html#af550f39aed337de1ec8f99823c3dc886">UDS_MAXNODES</a>; pos++)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(!<a name="a19"></a><a class="code" href="uds_8h.html#a8d326aaf8ff13eb9041730bf86374fe0">udsCheckNodeInfoInitialized</a>(&network-><a name="a20"></a>nodes[pos]))<span class="keywordflow">continue</span>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> memset(tmpstr, 0, <span class="keyword">sizeof</span>(tmpstr));</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> ret = <a name="a21"></a><a class="code" href="uds_8h.html#aa1a1a204b83acf4615b1d2a870681272">udsGetNodeInfoUsername</a>(&network->nodes[pos], tmpstr);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsGetNodeInfoUsername() returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> free(networks);</div>
|
|
<div class="line"> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> printf(<span class="stringliteral">"node%u username: %s\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)pos, tmpstr);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">//You can load appdata from the scanned beacon data here if you want.</span></div>
|
|
<div class="line"> actual_size = 0;</div>
|
|
<div class="line"> ret = <a name="a22"></a><a class="code" href="uds_8h.html#ab3ffe31c0e34aba040548dc56abb001d">udsGetNetworkStructApplicationData</a>(&network->network, out_appdata, <span class="keyword">sizeof</span>(out_appdata), &actual_size);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret) || actual_size!=<span class="keyword">sizeof</span>(out_appdata))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsGetNetworkStructApplicationData() returned 0x%08x. actual_size = 0x%x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret, actual_size);</div>
|
|
<div class="line"> free(networks);</div>
|
|
<div class="line"> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> memset(tmpstr, 0, <span class="keyword">sizeof</span>(tmpstr));</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(memcmp(out_appdata, appdata, 4)!=0)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"The first 4-bytes of appdata is invalid.\n"</span>);</div>
|
|
<div class="line"> free(networks);</div>
|
|
<div class="line"> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> strncpy(tmpstr, (<span class="keywordtype">char</span>*)&out_appdata[4], <span class="keyword">sizeof</span>(out_appdata)-5);</div>
|
|
<div class="line"> tmpstr[<span class="keyword">sizeof</span>(out_appdata)-6]=<span class="charliteral">'\0'</span>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> printf(<span class="stringliteral">"String from network appdata: %s\n"</span>, (<span class="keywordtype">char</span>*)&out_appdata[4]);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <a name="a23"></a><a class="code" href="hid_8h.html#abbbf0e1f3a79a75e459e19f85a66bee6">hidScanInput</a>();<span class="comment">//Normally you would only connect as a regular client.</span></div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a name="a24"></a><a class="code" href="hid_8h.html#a68e8fd75a99650db835f045676a47949">hidKeysHeld</a>() & <a name="a25"></a><a class="code" href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493aece16de35a5ea11f9b228c9376bebc62">KEY_L</a>)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> conntype = UDSCONTYPE_Spectator;</div>
|
|
<div class="line"> printf(<span class="stringliteral">"Connecting to the network as a spectator...\n"</span>);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <span class="keywordflow">else</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"Connecting to the network as a client...\n"</span>);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">for</span>(pos=0; pos<10; pos++)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> ret = <a name="a26"></a><a class="code" href="uds_8h.html#a667dabaed66dd32770a6ede4fd818019">udsConnectNetwork</a>(&network->network, passphrase, strlen(passphrase)+1, &bindctx, <a name="a27"></a><a class="code" href="uds_8h.html#a0716197ea3205d2c2ad802fd39d64b53">UDS_BROADCAST_NETWORKNODEID</a>, conntype, data_channel, recv_buffer_size);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsConnectNetwork() returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <span class="keywordflow">else</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <span class="keywordflow">break</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> free(networks);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(pos==10)<span class="keywordflow">return</span>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> printf(<span class="stringliteral">"Connected.\n"</span>);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> tmp = 0;</div>
|
|
<div class="line"> ret = <a name="a28"></a><a class="code" href="uds_8h.html#a682ad1bee0b482a496d03a6d88ec5c0c">udsGetChannel</a>((<a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a>*)&tmp);<span class="comment">//Normally you don't need to use this.</span></div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsGetChannel() returned 0x%08x. channel = %u.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)tmp);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">//You can load the appdata with this once connected to the network, if you want.</span></div>
|
|
<div class="line"> memset(out_appdata, 0, <span class="keyword">sizeof</span>(out_appdata));</div>
|
|
<div class="line"> actual_size = 0;</div>
|
|
<div class="line"> ret = <a name="a29"></a><a class="code" href="uds_8h.html#aa10484f4b741649b48633efafdfb8e55">udsGetApplicationData</a>(out_appdata, <span class="keyword">sizeof</span>(out_appdata), &actual_size);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret) || actual_size!=<span class="keyword">sizeof</span>(out_appdata))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsGetApplicationData() returned 0x%08x. actual_size = 0x%x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret, actual_size);</div>
|
|
<div class="line"> <a name="a30"></a><a class="code" href="uds_8h.html#a300ee4358ee07e1b08dea6e1908e72a6">udsDisconnectNetwork</a>();</div>
|
|
<div class="line"> <a name="a31"></a><a class="code" href="uds_8h.html#a0478019d97df6c5754cae576b2fecbbd">udsUnbind</a>(&bindctx);</div>
|
|
<div class="line"> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> memset(tmpstr, 0, <span class="keyword">sizeof</span>(tmpstr));</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(memcmp(out_appdata, appdata, 4)!=0)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"The first 4-bytes of appdata is invalid.\n"</span>);</div>
|
|
<div class="line"> <a class="code" href="uds_8h.html#a300ee4358ee07e1b08dea6e1908e72a6">udsDisconnectNetwork</a>();</div>
|
|
<div class="line"> <a class="code" href="uds_8h.html#a0478019d97df6c5754cae576b2fecbbd">udsUnbind</a>(&bindctx);</div>
|
|
<div class="line"> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> strncpy(tmpstr, (<span class="keywordtype">char</span>*)&out_appdata[4], <span class="keyword">sizeof</span>(out_appdata)-5);</div>
|
|
<div class="line"> tmpstr[<span class="keyword">sizeof</span>(out_appdata)-6]=<span class="charliteral">'\0'</span>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> printf(<span class="stringliteral">"String from appdata: %s\n"</span>, (<span class="keywordtype">char</span>*)&out_appdata[4]);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> con_type = 1;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <span class="keywordflow">else</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <a name="a32"></a><a class="code" href="uds_8h.html#ae2bc9475be5af0d5e1ee3a5f98855b89">udsGenerateDefaultNetworkStruct</a>(&networkstruct, wlancommID, 0, <a class="code" href="uds_8h.html#af550f39aed337de1ec8f99823c3dc886">UDS_MAXNODES</a>);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> printf(<span class="stringliteral">"Creating the network...\n"</span>);</div>
|
|
<div class="line"> ret = <a name="a33"></a><a class="code" href="uds_8h.html#a1975ed5bb92b1a1c87de5bfb41588847">udsCreateNetwork</a>(&networkstruct, passphrase, strlen(passphrase)+1, &bindctx, data_channel, recv_buffer_size);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsCreateNetwork() returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> ret = <a name="a34"></a><a class="code" href="uds_8h.html#a6d31b5879de5cec14eff252093d1c88d">udsSetApplicationData</a>(appdata, <span class="keyword">sizeof</span>(appdata));<span class="comment">//If you want to use appdata, you can set the appdata whenever you want after creating the network. If you need more space for appdata, you can set different chunks of appdata over time.</span></div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsSetApplicationData() returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> <a name="a35"></a><a class="code" href="uds_8h.html#a44092fac3eec0cb9402fd903dc2fff81">udsDestroyNetwork</a>();</div>
|
|
<div class="line"> <a class="code" href="uds_8h.html#a0478019d97df6c5754cae576b2fecbbd">udsUnbind</a>(&bindctx);</div>
|
|
<div class="line"> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> tmp = 0;</div>
|
|
<div class="line"> ret = <a class="code" href="uds_8h.html#a682ad1bee0b482a496d03a6d88ec5c0c">udsGetChannel</a>((<a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a>*)&tmp);<span class="comment">//Normally you don't need to use this.</span></div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsGetChannel() returned 0x%08x. channel = %u.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)tmp);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <a class="code" href="uds_8h.html#a44092fac3eec0cb9402fd903dc2fff81">udsDestroyNetwork</a>();</div>
|
|
<div class="line"> <a class="code" href="uds_8h.html#a0478019d97df6c5754cae576b2fecbbd">udsUnbind</a>(&bindctx);</div>
|
|
<div class="line"> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> con_type = 0;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a name="a36"></a><a class="code" href="uds_8h.html#a3e5c7256539d252195695c5503d64255">udsWaitConnectionStatusEvent</a>(<span class="keyword">false</span>, <span class="keyword">false</span>))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"Constatus event signaled.\n"</span>);</div>
|
|
<div class="line"> print_constatus();</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> printf(<span class="stringliteral">"Press A to stop data transfer.\n"</span>);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> tmpbuf_size = <a name="a37"></a><a class="code" href="uds_8h.html#a925d4cb65dc18dace5cfbd4115149a70">UDS_DATAFRAME_MAXSIZE</a>;</div>
|
|
<div class="line"> tmpbuf = malloc(tmpbuf_size);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(tmpbuf==NULL)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"Failed to allocate tmpbuf for receiving data.\n"</span>);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(con_type)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <a class="code" href="uds_8h.html#a44092fac3eec0cb9402fd903dc2fff81">udsDestroyNetwork</a>();</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <span class="keywordflow">else</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <a class="code" href="uds_8h.html#a300ee4358ee07e1b08dea6e1908e72a6">udsDisconnectNetwork</a>();</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <a class="code" href="uds_8h.html#a0478019d97df6c5754cae576b2fecbbd">udsUnbind</a>(&bindctx);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">while</span>(1)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <a name="a38"></a><a class="code" href="gspgpu_8h.html#abf0a992835649b5fe90e95d8a58b8c45">gspWaitForVBlank</a>();</div>
|
|
<div class="line"> <a class="code" href="hid_8h.html#abbbf0e1f3a79a75e459e19f85a66bee6">hidScanInput</a>();</div>
|
|
<div class="line"> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> kDown = <a name="a39"></a><a class="code" href="hid_8h.html#aa2cababf764bf0b4297dc2e2fffe2a76">hidKeysDown</a>();</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(kDown & <a name="a40"></a><a class="code" href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493aa7b3a3d0503a46bec51c6e3da95747cc">KEY_A</a>)<span class="keywordflow">break</span>;</div>
|
|
<div class="line"> prev_transfer_data = transfer_data;</div>
|
|
<div class="line"> transfer_data = <a class="code" href="hid_8h.html#a68e8fd75a99650db835f045676a47949">hidKeysHeld</a>();</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">//When the output from hidKeysHeld() changes, send it over the network.</span></div>
|
|
<div class="line"> <span class="keywordflow">if</span>(transfer_data != prev_transfer_data && conntype!=UDSCONTYPE_Spectator)<span class="comment">//Spectators aren't allowed to send data.</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> ret = <a name="a41"></a><a class="code" href="uds_8h.html#a2609972c60a77f6cfbd85c4caab93c70">udsSendTo</a>(<a class="code" href="uds_8h.html#a0716197ea3205d2c2ad802fd39d64b53">UDS_BROADCAST_NETWORKNODEID</a>, data_channel, UDS_SENDFLAG_Default, &transfer_data, <span class="keyword">sizeof</span>(transfer_data));</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a name="a42"></a><a class="code" href="uds_8h.html#a95b9889070392e10ed0ce8eaa4680148">UDS_CHECK_SENDTO_FATALERROR</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsSendTo() returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> <span class="keywordflow">break</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">//if(udsWaitDataAvailable(&bindctx, false, false))//Check whether data is available via udsPullPacket().</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> memset(tmpbuf, 0, tmpbuf_size);</div>
|
|
<div class="line"> actual_size = 0;</div>
|
|
<div class="line"> src_NetworkNodeID = 0;</div>
|
|
<div class="line"> ret = <a name="a43"></a><a class="code" href="uds_8h.html#a15464b1fc2ce4897f352001b59b40597">udsPullPacket</a>(&bindctx, tmpbuf, tmpbuf_size, &actual_size, &src_NetworkNodeID);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsPullPacket() returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> <span class="keywordflow">break</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(actual_size)<span class="comment">//If no data frame is available, udsPullPacket() will return actual_size=0.</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"Received 0x%08x size=0x%08x from node 0x%x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)tmpbuf[0], actual_size, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)src_NetworkNodeID);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(kDown & <a name="a44"></a><a class="code" href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493a5d44524b2a6090fa97aa9353d69f67a3">KEY_Y</a>)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> ret = <a name="a45"></a><a class="code" href="uds_8h.html#a96d9f0e9574e21527b4f258b4a0f54ee">udsGetNodeInformation</a>(0x2, &tmpnode);<span class="comment">//This can be used to get the NodeInfo for a node which just connected, for example.</span></div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsGetNodeInformation() returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <span class="keywordflow">else</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> memset(tmpstr, 0, <span class="keyword">sizeof</span>(tmpstr));</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> ret = <a class="code" href="uds_8h.html#aa1a1a204b83acf4615b1d2a870681272">udsGetNodeInfoUsername</a>(&tmpnode, tmpstr);</div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsGetNodeInfoUsername() returned 0x%08x for udsGetNodeInfoUsername.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <span class="keywordflow">else</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"node username: %s\n"</span>, tmpstr);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"node unk_x1c=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)tmpnode.<a name="a46"></a>unk_x1c);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"node flag=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)tmpnode.<a name="a47"></a>flag);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"node pad_x1f=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)tmpnode.<a name="a48"></a>pad_x1f);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"node NetworkNodeID=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)tmpnode.<a name="a49"></a>NetworkNodeID);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"node word_x24=0x%x\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)tmpnode.<a name="a50"></a>word_x24);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(kDown & <a name="a51"></a><a class="code" href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493a480a807305121d41673b8c208898f497">KEY_X</a>)<span class="comment">//Block new regular clients from connecting.</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> ret = <a name="a52"></a><a class="code" href="uds_8h.html#a579487b86069a0a066bf6973f3d94dd7">udsSetNewConnectionsBlocked</a>(<span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">false</span>);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsSetNewConnectionsBlocked() for enabling blocking returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(kDown & <a name="a53"></a><a class="code" href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493a10072b5ee7aa1faf316434ecc9e2bb3a">KEY_B</a>)<span class="comment">//Unblock new regular clients from connecting.</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> ret = <a class="code" href="uds_8h.html#a579487b86069a0a066bf6973f3d94dd7">udsSetNewConnectionsBlocked</a>(<span class="keyword">false</span>, <span class="keyword">true</span>, <span class="keyword">false</span>);</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsSetNewConnectionsBlocked() for disabling blocking returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(kDown & <a name="a54"></a><a class="code" href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493aa3ec8a2ffd5b0e200db5ebe7b65515ff">KEY_R</a>)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> ret = <a name="a55"></a><a class="code" href="uds_8h.html#a59af3bb7c72312bd5d54ed1b03f9764f">udsEjectSpectator</a>();</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsEjectSpectator() returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(kDown & <a class="code" href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493aece16de35a5ea11f9b228c9376bebc62">KEY_L</a>)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> ret = <a name="a56"></a><a class="code" href="uds_8h.html#a715815015bb8ddf709d3f85553e8ae4a">udsAllowSpectators</a>();</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsAllowSpectators() returned 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="uds_8h.html#a3e5c7256539d252195695c5503d64255">udsWaitConnectionStatusEvent</a>(<span class="keyword">false</span>, <span class="keyword">false</span>))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"Constatus event signaled.\n"</span>);</div>
|
|
<div class="line"> print_constatus();</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> free(tmpbuf);</div>
|
|
<div class="line"> tmpbuf = NULL;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordflow">if</span>(con_type)</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <a class="code" href="uds_8h.html#a44092fac3eec0cb9402fd903dc2fff81">udsDestroyNetwork</a>();</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <span class="keywordflow">else</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <a class="code" href="uds_8h.html#a300ee4358ee07e1b08dea6e1908e72a6">udsDisconnectNetwork</a>();</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <a class="code" href="uds_8h.html#a0478019d97df6c5754cae576b2fecbbd">udsUnbind</a>(&bindctx);</div>
|
|
<div class="line">}</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordtype">int</span> main()</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> ret=0;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <a name="a57"></a><a class="code" href="gfx_8h.html#a236a005ae029247c8bfe4a4a649206fc">gfxInitDefault</a>();</div>
|
|
<div class="line"> <a name="a58"></a><a class="code" href="console_8h.html#a8e014e84f81ff901ca62d7669a8c8de8">consoleInit</a>(<a name="a59"></a><a class="code" href="gfx_8h.html#a356112d87f5cf6bbba3ea3b6b010e09caf9d44178134d07cf9c5923200e14af09">GFX_TOP</a>, NULL);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> printf(<span class="stringliteral">"libctru UDS local-WLAN demo.\n"</span>);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> ret = <a name="a60"></a><a class="code" href="uds_8h.html#a7b9dd66fad0387daa7cc1a0803093161">udsInit</a>(0x3000, NULL);<span class="comment">//The sharedmem size only needs to be slightly larger than the total recv_buffer_size for all binds, with page-alignment.</span></div>
|
|
<div class="line"> <span class="keywordflow">if</span>(<a class="code" href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a>(ret))</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> printf(<span class="stringliteral">"udsInit failed: 0x%08x.\n"</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)ret);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <span class="keywordflow">else</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> uds_test();</div>
|
|
<div class="line"> <a name="a61"></a><a class="code" href="uds_8h.html#a0c4ec11a4ba9281c96528fdd2340e169">udsExit</a>();</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> printf(<span class="stringliteral">"Press START to exit.\n"</span>);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Main loop</span></div>
|
|
<div class="line"> <span class="keywordflow">while</span> (<a name="a62"></a><a class="code" href="apt_8h.html#a84808c36d9a8c389896ecf241c7f89cb">aptMainLoop</a>())</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <a class="code" href="gspgpu_8h.html#abf0a992835649b5fe90e95d8a58b8c45">gspWaitForVBlank</a>();</div>
|
|
<div class="line"> <a class="code" href="hid_8h.html#abbbf0e1f3a79a75e459e19f85a66bee6">hidScanInput</a>();</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> kDown = <a class="code" href="hid_8h.html#aa2cababf764bf0b4297dc2e2fffe2a76">hidKeysDown</a>();</div>
|
|
<div class="line"> <span class="keywordflow">if</span> (kDown & <a name="a63"></a><a class="code" href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493a616a1f5c4ed36080ca954453084aea3b">KEY_START</a>)</div>
|
|
<div class="line"> <span class="keywordflow">break</span>; <span class="comment">// break in order to return to hbmenu</span></div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Flush and swap framebuffers</span></div>
|
|
<div class="line"> <a name="a64"></a><a class="code" href="gfx_8h.html#aea1808bd74fe0c00f9794e455fc8499b">gfxFlushBuffers</a>();</div>
|
|
<div class="line"> <a name="a65"></a><a class="code" href="gfx_8h.html#a0f338920111994110975dc0d1360bb1f">gfxSwapBuffers</a>();</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <a name="a66"></a><a class="code" href="gfx_8h.html#aa446ccfdfdd4c575e648956ae96f2a3b">gfxExit</a>();</div>
|
|
<div class="line"> <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="a3ds_8h_html"><div class="ttname"><a href="3ds_8h.html">3ds.h</a></div><div class="ttdoc">Central 3DS header.</div></div>
|
|
<div class="ttc" id="aapt_8h_html_a84808c36d9a8c389896ecf241c7f89cb"><div class="ttname"><a href="apt_8h.html#a84808c36d9a8c389896ecf241c7f89cb">aptMainLoop</a></div><div class="ttdeci">bool aptMainLoop(void)</div><div class="ttdoc">Main function which handles sleep mode and HOME/power buttons - call this at the beginning of every f...</div></div>
|
|
<div class="ttc" id="aconsole_8h_html_a8e014e84f81ff901ca62d7669a8c8de8"><div class="ttname"><a href="console_8h.html#a8e014e84f81ff901ca62d7669a8c8de8">consoleInit</a></div><div class="ttdeci">PrintConsole * consoleInit(gfxScreen_t screen, PrintConsole *console)</div><div class="ttdoc">Initialise the console.</div></div>
|
|
<div class="ttc" id="agfx_8h_html_a0f338920111994110975dc0d1360bb1f"><div class="ttname"><a href="gfx_8h.html#a0f338920111994110975dc0d1360bb1f">gfxSwapBuffers</a></div><div class="ttdeci">void gfxSwapBuffers(void)</div><div class="ttdoc">Updates the configuration of both screens.</div></div>
|
|
<div class="ttc" id="agfx_8h_html_a236a005ae029247c8bfe4a4a649206fc"><div class="ttname"><a href="gfx_8h.html#a236a005ae029247c8bfe4a4a649206fc">gfxInitDefault</a></div><div class="ttdeci">void gfxInitDefault(void)</div><div class="ttdoc">Initializes the LCD framebuffers with default parameters This is equivalent to calling:</div></div>
|
|
<div class="ttc" id="agfx_8h_html_a356112d87f5cf6bbba3ea3b6b010e09caf9d44178134d07cf9c5923200e14af09"><div class="ttname"><a href="gfx_8h.html#a356112d87f5cf6bbba3ea3b6b010e09caf9d44178134d07cf9c5923200e14af09">GFX_TOP</a></div><div class="ttdeci">@ GFX_TOP</div><div class="ttdoc">Top screen.</div><div class="ttdef"><b>Definition:</b> gfx.h:26</div></div>
|
|
<div class="ttc" id="agfx_8h_html_aa446ccfdfdd4c575e648956ae96f2a3b"><div class="ttname"><a href="gfx_8h.html#aa446ccfdfdd4c575e648956ae96f2a3b">gfxExit</a></div><div class="ttdeci">void gfxExit(void)</div><div class="ttdoc">Deinitializes and frees the LCD framebuffers.</div></div>
|
|
<div class="ttc" id="agfx_8h_html_aea1808bd74fe0c00f9794e455fc8499b"><div class="ttname"><a href="gfx_8h.html#aea1808bd74fe0c00f9794e455fc8499b">gfxFlushBuffers</a></div><div class="ttdeci">void gfxFlushBuffers(void)</div><div class="ttdoc">Flushes the data cache for the current framebuffers.</div></div>
|
|
<div class="ttc" id="agspgpu_8h_html_abf0a992835649b5fe90e95d8a58b8c45"><div class="ttname"><a href="gspgpu_8h.html#abf0a992835649b5fe90e95d8a58b8c45">gspWaitForVBlank</a></div><div class="ttdeci">#define gspWaitForVBlank()</div><div class="ttdoc">Waits for VBlank.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:151</div></div>
|
|
<div class="ttc" id="ahid_8h_html_a531c35e38ede3ea4e5ba5afb24b29493a10072b5ee7aa1faf316434ecc9e2bb3a"><div class="ttname"><a href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493a10072b5ee7aa1faf316434ecc9e2bb3a">KEY_B</a></div><div class="ttdeci">@ KEY_B</div><div class="ttdoc">B.</div><div class="ttdef"><b>Definition:</b> hid.h:13</div></div>
|
|
<div class="ttc" id="ahid_8h_html_a531c35e38ede3ea4e5ba5afb24b29493a480a807305121d41673b8c208898f497"><div class="ttname"><a href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493a480a807305121d41673b8c208898f497">KEY_X</a></div><div class="ttdeci">@ KEY_X</div><div class="ttdoc">X.</div><div class="ttdef"><b>Definition:</b> hid.h:22</div></div>
|
|
<div class="ttc" id="ahid_8h_html_a531c35e38ede3ea4e5ba5afb24b29493a5d44524b2a6090fa97aa9353d69f67a3"><div class="ttname"><a href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493a5d44524b2a6090fa97aa9353d69f67a3">KEY_Y</a></div><div class="ttdeci">@ KEY_Y</div><div class="ttdoc">Y.</div><div class="ttdef"><b>Definition:</b> hid.h:23</div></div>
|
|
<div class="ttc" id="ahid_8h_html_a531c35e38ede3ea4e5ba5afb24b29493a616a1f5c4ed36080ca954453084aea3b"><div class="ttname"><a href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493a616a1f5c4ed36080ca954453084aea3b">KEY_START</a></div><div class="ttdeci">@ KEY_START</div><div class="ttdoc">Start.</div><div class="ttdef"><b>Definition:</b> hid.h:15</div></div>
|
|
<div class="ttc" id="ahid_8h_html_a531c35e38ede3ea4e5ba5afb24b29493aa3ec8a2ffd5b0e200db5ebe7b65515ff"><div class="ttname"><a href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493aa3ec8a2ffd5b0e200db5ebe7b65515ff">KEY_R</a></div><div class="ttdeci">@ KEY_R</div><div class="ttdoc">R.</div><div class="ttdef"><b>Definition:</b> hid.h:20</div></div>
|
|
<div class="ttc" id="ahid_8h_html_a531c35e38ede3ea4e5ba5afb24b29493aa7b3a3d0503a46bec51c6e3da95747cc"><div class="ttname"><a href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493aa7b3a3d0503a46bec51c6e3da95747cc">KEY_A</a></div><div class="ttdeci">@ KEY_A</div><div class="ttdoc">A.</div><div class="ttdef"><b>Definition:</b> hid.h:12</div></div>
|
|
<div class="ttc" id="ahid_8h_html_a531c35e38ede3ea4e5ba5afb24b29493aece16de35a5ea11f9b228c9376bebc62"><div class="ttname"><a href="hid_8h.html#a531c35e38ede3ea4e5ba5afb24b29493aece16de35a5ea11f9b228c9376bebc62">KEY_L</a></div><div class="ttdeci">@ KEY_L</div><div class="ttdoc">L.</div><div class="ttdef"><b>Definition:</b> hid.h:21</div></div>
|
|
<div class="ttc" id="ahid_8h_html_a68e8fd75a99650db835f045676a47949"><div class="ttname"><a href="hid_8h.html#a68e8fd75a99650db835f045676a47949">hidKeysHeld</a></div><div class="ttdeci">u32 hidKeysHeld(void)</div><div class="ttdoc">Returns a bitmask of held buttons.</div></div>
|
|
<div class="ttc" id="ahid_8h_html_aa2cababf764bf0b4297dc2e2fffe2a76"><div class="ttname"><a href="hid_8h.html#aa2cababf764bf0b4297dc2e2fffe2a76">hidKeysDown</a></div><div class="ttdeci">u32 hidKeysDown(void)</div><div class="ttdoc">Returns a bitmask of newly pressed buttons, this frame.</div></div>
|
|
<div class="ttc" id="ahid_8h_html_abbbf0e1f3a79a75e459e19f85a66bee6"><div class="ttname"><a href="hid_8h.html#abbbf0e1f3a79a75e459e19f85a66bee6">hidScanInput</a></div><div class="ttdeci">void hidScanInput(void)</div><div class="ttdoc">Scans HID for input data.</div></div>
|
|
<div class="ttc" id="aresult_8h_html_a0040b35f38c0d2fef6766d5b284fefc7"><div class="ttname"><a href="result_8h.html#a0040b35f38c0d2fef6766d5b284fefc7">R_FAILED</a></div><div class="ttdeci">#define R_FAILED(res)</div><div class="ttdoc">Checks whether a result code indicates failure.</div><div class="ttdef"><b>Definition:</b> result.h:11</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_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_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_a0716197ea3205d2c2ad802fd39d64b53"><div class="ttname"><a href="uds_8h.html#a0716197ea3205d2c2ad802fd39d64b53">UDS_BROADCAST_NETWORKNODEID</a></div><div class="ttdeci">#define UDS_BROADCAST_NETWORKNODEID</div><div class="ttdoc">Broadcast value for NetworkNodeID / alias for all NetworkNodeIDs.</div><div class="ttdef"><b>Definition:</b> uds.h:11</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_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_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_a925d4cb65dc18dace5cfbd4115149a70"><div class="ttname"><a href="uds_8h.html#a925d4cb65dc18dace5cfbd4115149a70">UDS_DATAFRAME_MAXSIZE</a></div><div class="ttdeci">#define UDS_DATAFRAME_MAXSIZE</div><div class="ttdoc">Max size of user data-frames.</div><div class="ttdef"><b>Definition:</b> uds.h:20</div></div>
|
|
<div class="ttc" id="auds_8h_html_a95b9889070392e10ed0ce8eaa4680148"><div class="ttname"><a href="uds_8h.html#a95b9889070392e10ed0ce8eaa4680148">UDS_CHECK_SENDTO_FATALERROR</a></div><div class="ttdeci">#define UDS_CHECK_SENDTO_FATALERROR(x)</div><div class="ttdoc">Check whether a fatal udsSendTo error occured(some error(s) from udsSendTo() can be ignored,...</div><div class="ttdef"><b>Definition:</b> uds.h:23</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_aaa762c12085c0caf4cc3c380621a66b3"><div class="ttname"><a href="uds_8h.html#aaa762c12085c0caf4cc3c380621a66b3">UDS_DEFAULT_RECVBUFSIZE</a></div><div class="ttdeci">#define UDS_DEFAULT_RECVBUFSIZE</div><div class="ttdoc">Default recv_buffer_size that can be used for udsBind() input / code which uses udsBind() internally.</div><div class="ttdef"><b>Definition:</b> uds.h:17</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_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 <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>
|