mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +02:00
253 lines
19 KiB
HTML
253 lines
19 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" lang="en-US">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
|
<meta name="generator" content="Doxygen 1.9.8"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>libnx: include/switch/runtime/devices/usb_comms.h File Reference</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 id="projectrow">
|
|
<td id="projectalign">
|
|
<div id="projectname">libnx<span id="projectnumber"> v4.9.0</span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.9.8 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
var searchBox = new SearchBox("searchBox", "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:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(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">
|
|
<div id="MSearchResults">
|
|
<div class="SRPage">
|
|
<div id="SRIndex">
|
|
<div id="SRResults"></div>
|
|
<div class="SRStatus" id="Loading">Loading...</div>
|
|
<div class="SRStatus" id="Searching">Searching...</div>
|
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</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_42bea3d40f1f1694e41a8f3166c98108.html">switch</a></li><li class="navelem"><a class="el" href="dir_afd0453aeaaca58db0f3a26ffe540381.html">runtime</a></li><li class="navelem"><a class="el" href="dir_8e84a2b4adc47392539d92413dc3768e.html">devices</a></li> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#nested-classes">Data Structures</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle"><div class="title">usb_comms.h File Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>USB comms.
|
|
<a href="#details">More...</a></p>
|
|
<div class="textblock"><code>#include "<a class="el" href="types_8h_source.html">../../types.h</a>"</code><br />
|
|
</div>
|
|
<p><a href="usb__comms_8h_source.html">Go to the source code of this file.</a></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
|
Data Structures</h2></td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUsbCommsInterfaceInfo.html">UsbCommsInterfaceInfo</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:aa8f2d4a9954d0892784109bb9389fb05" id="r_aa8f2d4a9954d0892784109bb9389fb05"><td class="memItemLeft" align="right" valign="top"><a id="aa8f2d4a9954d0892784109bb9389fb05" name="aa8f2d4a9954d0892784109bb9389fb05"></a>
|
|
<a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> </td><td class="memItemRight" valign="bottom"><b>usbCommsInitialize</b> (void)</td></tr>
|
|
<tr class="memdesc:aa8f2d4a9954d0892784109bb9389fb05"><td class="mdescLeft"> </td><td class="mdescRight">Initializes usbComms with the default number of interfaces (1) <br /></td></tr>
|
|
<tr class="separator:aa8f2d4a9954d0892784109bb9389fb05"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a85e3ab1ff5f0c5614313a01158784213" id="r_a85e3ab1ff5f0c5614313a01158784213"><td class="memItemLeft" align="right" valign="top"><a id="a85e3ab1ff5f0c5614313a01158784213" name="a85e3ab1ff5f0c5614313a01158784213"></a>
|
|
<a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> </td><td class="memItemRight" valign="bottom"><b>usbCommsInitializeEx</b> (<a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> num_interfaces, const <a class="el" href="structUsbCommsInterfaceInfo.html">UsbCommsInterfaceInfo</a> *infos, <a class="el" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> idVendor, <a class="el" href="types_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> idProduct)</td></tr>
|
|
<tr class="memdesc:a85e3ab1ff5f0c5614313a01158784213"><td class="mdescLeft"> </td><td class="mdescRight">Initializes usbComms with a specific number of interfaces. <br /></td></tr>
|
|
<tr class="separator:a85e3ab1ff5f0c5614313a01158784213"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a661732ff6cb51c41ffe8b190d34b591f" id="r_a661732ff6cb51c41ffe8b190d34b591f"><td class="memItemLeft" align="right" valign="top"><a id="a661732ff6cb51c41ffe8b190d34b591f" name="a661732ff6cb51c41ffe8b190d34b591f"></a>
|
|
void </td><td class="memItemRight" valign="bottom"><b>usbCommsExit</b> (void)</td></tr>
|
|
<tr class="memdesc:a661732ff6cb51c41ffe8b190d34b591f"><td class="mdescLeft"> </td><td class="mdescRight">Exits usbComms. <br /></td></tr>
|
|
<tr class="separator:a661732ff6cb51c41ffe8b190d34b591f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac54b0218545914b00f7268621634a6b1" id="r_ac54b0218545914b00f7268621634a6b1"><td class="memItemLeft" align="right" valign="top"><a id="ac54b0218545914b00f7268621634a6b1" name="ac54b0218545914b00f7268621634a6b1"></a>
|
|
void </td><td class="memItemRight" valign="bottom"><b>usbCommsSetErrorHandling</b> (bool flag)</td></tr>
|
|
<tr class="memdesc:ac54b0218545914b00f7268621634a6b1"><td class="mdescLeft"> </td><td class="mdescRight">Sets whether to throw a fatal error in usbComms{Read/Write}* on failure, or just return the transferred size. By default (false) the latter is used. <br /></td></tr>
|
|
<tr class="separator:ac54b0218545914b00f7268621634a6b1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr><td colspan="2"><div class="groupHeader">Synchronous API</div></td></tr>
|
|
<tr class="memitem:ad0afcef31f349b2af30394bb1046ea2f" id="r_ad0afcef31f349b2af30394bb1046ea2f"><td class="memItemLeft" align="right" valign="top"><a id="ad0afcef31f349b2af30394bb1046ea2f" name="ad0afcef31f349b2af30394bb1046ea2f"></a>
|
|
size_t </td><td class="memItemRight" valign="bottom"><b>usbCommsRead</b> (void *buffer, size_t size)</td></tr>
|
|
<tr class="memdesc:ad0afcef31f349b2af30394bb1046ea2f"><td class="mdescLeft"> </td><td class="mdescRight">Read data with the default interface. <br /></td></tr>
|
|
<tr class="separator:ad0afcef31f349b2af30394bb1046ea2f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a976679b6d30249eeb80aa5a705ba00d6" id="r_a976679b6d30249eeb80aa5a705ba00d6"><td class="memItemLeft" align="right" valign="top"><a id="a976679b6d30249eeb80aa5a705ba00d6" name="a976679b6d30249eeb80aa5a705ba00d6"></a>
|
|
size_t </td><td class="memItemRight" valign="bottom"><b>usbCommsWrite</b> (const void *buffer, size_t size)</td></tr>
|
|
<tr class="memdesc:a976679b6d30249eeb80aa5a705ba00d6"><td class="mdescLeft"> </td><td class="mdescRight">Write data with the default interface. <br /></td></tr>
|
|
<tr class="separator:a976679b6d30249eeb80aa5a705ba00d6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8eb178fca78435a609f43ec11cefc63f" id="r_a8eb178fca78435a609f43ec11cefc63f"><td class="memItemLeft" align="right" valign="top"><a id="a8eb178fca78435a609f43ec11cefc63f" name="a8eb178fca78435a609f43ec11cefc63f"></a>
|
|
size_t </td><td class="memItemRight" valign="bottom"><b>usbCommsReadEx</b> (void *buffer, size_t size, <a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> interface)</td></tr>
|
|
<tr class="memdesc:a8eb178fca78435a609f43ec11cefc63f"><td class="mdescLeft"> </td><td class="mdescRight">Same as usbCommsRead except with the specified interface. <br /></td></tr>
|
|
<tr class="separator:a8eb178fca78435a609f43ec11cefc63f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a49c58efba9d91f0e794faa361d18bd06" id="r_a49c58efba9d91f0e794faa361d18bd06"><td class="memItemLeft" align="right" valign="top"><a id="a49c58efba9d91f0e794faa361d18bd06" name="a49c58efba9d91f0e794faa361d18bd06"></a>
|
|
size_t </td><td class="memItemRight" valign="bottom"><b>usbCommsWriteEx</b> (const void *buffer, size_t size, <a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> interface)</td></tr>
|
|
<tr class="memdesc:a49c58efba9d91f0e794faa361d18bd06"><td class="mdescLeft"> </td><td class="mdescRight">Same as usbCommsWrite except with the specified interface. <br /></td></tr>
|
|
<tr class="separator:a49c58efba9d91f0e794faa361d18bd06"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr><td colspan="2"><div class="groupHeader">Asynchronous API</div></td></tr>
|
|
<tr class="memitem:aaeddd9f643a28712612aa68b26fe023d" id="r_aaeddd9f643a28712612aa68b26fe023d"><td class="memItemLeft" align="right" valign="top"><a id="aaeddd9f643a28712612aa68b26fe023d" name="aaeddd9f643a28712612aa68b26fe023d"></a>
|
|
<a class="el" href="structEvent.html">Event</a> * </td><td class="memItemRight" valign="bottom"><b>usbCommsGetReadCompletionEvent</b> (<a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> interface)</td></tr>
|
|
<tr class="memdesc:aaeddd9f643a28712612aa68b26fe023d"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve event used for read completion with the given interface. <br /></td></tr>
|
|
<tr class="separator:aaeddd9f643a28712612aa68b26fe023d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aeed1f572cf53ad084c109d5661e2df6f" id="r_aeed1f572cf53ad084c109d5661e2df6f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="usb__comms_8h.html#aeed1f572cf53ad084c109d5661e2df6f">usbCommsReadAsync</a> (void *buffer, size_t size, <a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> *urbId, <a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> interface)</td></tr>
|
|
<tr class="memdesc:aeed1f572cf53ad084c109d5661e2df6f"><td class="mdescLeft"> </td><td class="mdescRight">Start an asynchronous read. <br /></td></tr>
|
|
<tr class="separator:aeed1f572cf53ad084c109d5661e2df6f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a55a0822139e94df825c9af40b4260618" id="r_a55a0822139e94df825c9af40b4260618"><td class="memItemLeft" align="right" valign="top"><a id="a55a0822139e94df825c9af40b4260618" name="a55a0822139e94df825c9af40b4260618"></a>
|
|
<a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> </td><td class="memItemRight" valign="bottom"><b>usbCommsGetReadResult</b> (<a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> urbId, <a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> *transferredSize, <a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> interface)</td></tr>
|
|
<tr class="memdesc:a55a0822139e94df825c9af40b4260618"><td class="mdescLeft"> </td><td class="mdescRight">Complete an asynchronous read, clearing the completion event, and return the amount of data which was read. <br /></td></tr>
|
|
<tr class="separator:a55a0822139e94df825c9af40b4260618"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6a5f58372d021d0ccfef134bc01cba65" id="r_a6a5f58372d021d0ccfef134bc01cba65"><td class="memItemLeft" align="right" valign="top"><a id="a6a5f58372d021d0ccfef134bc01cba65" name="a6a5f58372d021d0ccfef134bc01cba65"></a>
|
|
<a class="el" href="structEvent.html">Event</a> * </td><td class="memItemRight" valign="bottom"><b>usbCommsGetWriteCompletionEvent</b> (<a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> interface)</td></tr>
|
|
<tr class="memdesc:a6a5f58372d021d0ccfef134bc01cba65"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve event used for write completion with the given interface. <br /></td></tr>
|
|
<tr class="separator:a6a5f58372d021d0ccfef134bc01cba65"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a1ba2b3c0ed228d07f9cca74e7570448b" id="r_a1ba2b3c0ed228d07f9cca74e7570448b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="usb__comms_8h.html#a1ba2b3c0ed228d07f9cca74e7570448b">usbCommsWriteAsync</a> (void *buffer, size_t size, <a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> *urbId, <a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> interface)</td></tr>
|
|
<tr class="memdesc:a1ba2b3c0ed228d07f9cca74e7570448b"><td class="mdescLeft"> </td><td class="mdescRight">Start an asynchronous write. <br /></td></tr>
|
|
<tr class="separator:a1ba2b3c0ed228d07f9cca74e7570448b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a16082120803fd35313b3b30ececac6b2" id="r_a16082120803fd35313b3b30ececac6b2"><td class="memItemLeft" align="right" valign="top"><a id="a16082120803fd35313b3b30ececac6b2" name="a16082120803fd35313b3b30ececac6b2"></a>
|
|
<a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> </td><td class="memItemRight" valign="bottom"><b>usbCommsGetWriteResult</b> (<a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> urbId, <a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> *transferredSize, <a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> interface)</td></tr>
|
|
<tr class="memdesc:a16082120803fd35313b3b30ececac6b2"><td class="mdescLeft"> </td><td class="mdescRight">Complete an asynchronous write, clearing the completion event, and return the amount of data which was written. <br /></td></tr>
|
|
<tr class="separator:a16082120803fd35313b3b30ececac6b2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>USB comms. </p>
|
|
<dl class="section author"><dt>Author</dt><dd>yellows8 </dd>
|
|
<dd>
|
|
plutoo </dd></dl>
|
|
<dl class="section copyright"><dt>Copyright</dt><dd>libnx Authors </dd></dl>
|
|
</div><h2 class="groupheader">Function Documentation</h2>
|
|
<a id="aeed1f572cf53ad084c109d5661e2df6f" name="aeed1f572cf53ad084c109d5661e2df6f"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aeed1f572cf53ad084c109d5661e2df6f">◆ </a></span>usbCommsReadAsync()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> usbCommsReadAsync </td>
|
|
<td>(</td>
|
|
<td class="paramtype">void * </td>
|
|
<td class="paramname"><em>buffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>size</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> * </td>
|
|
<td class="paramname"><em>urbId</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> </td>
|
|
<td class="paramname"><em>interface</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Start an asynchronous read. </p>
|
|
<p>The completion event will be signaled when the read completes. The buffer must be page-aligned and no larger than one page. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a1ba2b3c0ed228d07f9cca74e7570448b" name="a1ba2b3c0ed228d07f9cca74e7570448b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a1ba2b3c0ed228d07f9cca74e7570448b">◆ </a></span>usbCommsWriteAsync()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> usbCommsWriteAsync </td>
|
|
<td>(</td>
|
|
<td class="paramtype">void * </td>
|
|
<td class="paramname"><em>buffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>size</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> * </td>
|
|
<td class="paramname"><em>urbId</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> </td>
|
|
<td class="paramname"><em>interface</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Start an asynchronous write. </p>
|
|
<p>The completion event will be signaled when the write completes. The buffer must be page-aligned and no larger than one page. </p>
|
|
|
|
</div>
|
|
</div>
|
|
</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.8
|
|
</small></address>
|
|
</body>
|
|
</html>
|