RadioLib/class_module.html

1449 wiersze
82 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>RadioLib: Module Class 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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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">RadioLib
</div>
<div id="projectbrief">Universal wireless communication library for Arduino</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>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('class_module.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- 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="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="class_module-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Module Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Implements all common low-level methods to control the wireless module. Every module class contains one private instance of this class.
<a href="class_module.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_module_8h_source.html">Module.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for Module:</div>
<div class="dyncontent">
<div class="center">
<img src="class_module.png" usemap="#Module_map" alt=""/>
<map id="Module_map" name="Module_map">
<area href="class_s_t_m32_w_lx___module.html" alt="STM32WLx_Module" shape="rect" coords="0,56,125,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_module_1_1_rf_switch_mode__t.html">RfSwitchMode_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Description of RF switch pin states for a single mode. See <a class="el" href="class_module.html#ac308fa817a5c36c5dc724a0d15cefd4d">setRfSwitchTable</a> for details. <a href="struct_module_1_1_rf_switch_mode__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a5a67b3a63420d762ecba9448671c99bf"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a5a67b3a63420d762ecba9448671c99bf">OpMode_t</a> { <a class="el" href="class_module.html#a5a67b3a63420d762ecba9448671c99bfa81cdd8986054c2ae5657eb5dfd536770">MODE_END_OF_TABLE</a> = 0
, <a class="el" href="class_module.html#a5a67b3a63420d762ecba9448671c99bfa505acc66c5e0faa83d2216aca5f3e671">MODE_IDLE</a>
, <a class="el" href="class_module.html#a5a67b3a63420d762ecba9448671c99bfa7664838bb0818663f55b3354fec8a18f">MODE_RX</a>
, <a class="el" href="class_module.html#a5a67b3a63420d762ecba9448671c99bfa269f4bc8ba3eb3d8568feb7b2decf571">MODE_TX</a>
}</td></tr>
<tr class="memdesc:a5a67b3a63420d762ecba9448671c99bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constants to use in a mode table set be setRfSwitchTable. These constants work for most radios, but some radios define their own constants to be used instead. <a href="class_module.html#a5a67b3a63420d762ecba9448671c99bf">More...</a><br /></td></tr>
<tr class="separator:a5a67b3a63420d762ecba9448671c99bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9393088249856eab568126aeb2493e4a"><td class="memItemLeft" align="right" valign="top"><a id="a9393088249856eab568126aeb2493e4a"></a>
typedef int16_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a9393088249856eab568126aeb2493e4a">SPIparseStatusCb_t</a>) (uint8_t in)</td></tr>
<tr class="memdesc:a9393088249856eab568126aeb2493e4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI status parsing callback typedef. <br /></td></tr>
<tr class="separator:a9393088249856eab568126aeb2493e4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a817178405f125e068e88bad62aeb6f3b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a817178405f125e068e88bad62aeb6f3b">Module</a> (<a class="el" href="class_radio_lib_hal.html">RadioLibHal</a> *<a class="el" href="class_module.html#a4483f0a39a523dd1b37b467d81418f7d">hal</a>, uint32_t cs, uint32_t irq, uint32_t rst, uint32_t gpio=RADIOLIB_NC)</td></tr>
<tr class="memdesc:a817178405f125e068e88bad62aeb6f3b"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="class_module.html" title="Implements all common low-level methods to control the wireless module. Every module class contains o...">Module</a> constructor. <a href="class_module.html#a817178405f125e068e88bad62aeb6f3b">More...</a><br /></td></tr>
<tr class="separator:a817178405f125e068e88bad62aeb6f3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a919baf2e46c357ebfcdbc1025b6c551e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a919baf2e46c357ebfcdbc1025b6c551e">Module</a> (const <a class="el" href="class_module.html">Module</a> &amp;mod)</td></tr>
<tr class="memdesc:a919baf2e46c357ebfcdbc1025b6c551e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <a href="class_module.html#a919baf2e46c357ebfcdbc1025b6c551e">More...</a><br /></td></tr>
<tr class="separator:a919baf2e46c357ebfcdbc1025b6c551e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ea888758b4a7784082d513a1e7849a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_module.html">Module</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a4ea888758b4a7784082d513a1e7849a4">operator=</a> (const <a class="el" href="class_module.html">Module</a> &amp;mod)</td></tr>
<tr class="memdesc:a4ea888758b4a7784082d513a1e7849a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Overload for assignment operator. <a href="class_module.html#a4ea888758b4a7784082d513a1e7849a4">More...</a><br /></td></tr>
<tr class="separator:a4ea888758b4a7784082d513a1e7849a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1956ac81429ec1f61f83dbc081cf18c"><td class="memItemLeft" align="right" valign="top"><a id="ad1956ac81429ec1f61f83dbc081cf18c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#ad1956ac81429ec1f61f83dbc081cf18c">init</a> ()</td></tr>
<tr class="memdesc:ad1956ac81429ec1f61f83dbc081cf18c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize low-level module control. <br /></td></tr>
<tr class="separator:ad1956ac81429ec1f61f83dbc081cf18c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45bd514a1f2859d9a867c8f9b13eb332"><td class="memItemLeft" align="right" valign="top"><a id="a45bd514a1f2859d9a867c8f9b13eb332"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a45bd514a1f2859d9a867c8f9b13eb332">term</a> ()</td></tr>
<tr class="memdesc:a45bd514a1f2859d9a867c8f9b13eb332"><td class="mdescLeft">&#160;</td><td class="mdescRight">Terminate low-level module control. <br /></td></tr>
<tr class="separator:a45bd514a1f2859d9a867c8f9b13eb332"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01e15988ec448c76142ee5709929be2c"><td class="memItemLeft" align="right" valign="top">int16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a01e15988ec448c76142ee5709929be2c">SPIgetRegValue</a> (uint16_t reg, uint8_t msb=7, uint8_t lsb=0)</td></tr>
<tr class="memdesc:a01e15988ec448c76142ee5709929be2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI read method that automatically masks unused bits. This method is the preferred SPI read mechanism. <a href="class_module.html#a01e15988ec448c76142ee5709929be2c">More...</a><br /></td></tr>
<tr class="separator:a01e15988ec448c76142ee5709929be2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a081191402ad5c49e6c21982fc4587b77"><td class="memItemLeft" align="right" valign="top">int16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a081191402ad5c49e6c21982fc4587b77">SPIsetRegValue</a> (uint16_t reg, uint8_t value, uint8_t msb=7, uint8_t lsb=0, uint8_t checkInterval=2, uint8_t checkMask=0xFF)</td></tr>
<tr class="memdesc:a081191402ad5c49e6c21982fc4587b77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Overwrite-safe SPI write method with verification. This method is the preferred SPI write mechanism. <a href="class_module.html#a081191402ad5c49e6c21982fc4587b77">More...</a><br /></td></tr>
<tr class="separator:a081191402ad5c49e6c21982fc4587b77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a874e030f1931e606e380930d37dd83ee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a874e030f1931e606e380930d37dd83ee">SPIreadRegisterBurst</a> (uint16_t reg, size_t numBytes, uint8_t *inBytes)</td></tr>
<tr class="memdesc:a874e030f1931e606e380930d37dd83ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI burst read method. <a href="class_module.html#a874e030f1931e606e380930d37dd83ee">More...</a><br /></td></tr>
<tr class="separator:a874e030f1931e606e380930d37dd83ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a545e4a001da0d9f6358279ac40d4f0"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a9a545e4a001da0d9f6358279ac40d4f0">SPIreadRegister</a> (uint16_t reg)</td></tr>
<tr class="memdesc:a9a545e4a001da0d9f6358279ac40d4f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI basic read method. Use of this method is reserved for special cases, SPIgetRegValue should be used instead. <a href="class_module.html#a9a545e4a001da0d9f6358279ac40d4f0">More...</a><br /></td></tr>
<tr class="separator:a9a545e4a001da0d9f6358279ac40d4f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af474f82d00fffc1ee0fc8def2c7f220c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#af474f82d00fffc1ee0fc8def2c7f220c">SPIwriteRegisterBurst</a> (uint16_t reg, uint8_t *data, size_t numBytes)</td></tr>
<tr class="memdesc:af474f82d00fffc1ee0fc8def2c7f220c"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI burst write method. <a href="class_module.html#af474f82d00fffc1ee0fc8def2c7f220c">More...</a><br /></td></tr>
<tr class="separator:af474f82d00fffc1ee0fc8def2c7f220c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4437af6552e258e95ed8ed452afa6dd4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a4437af6552e258e95ed8ed452afa6dd4">SPIwriteRegister</a> (uint16_t reg, uint8_t data)</td></tr>
<tr class="memdesc:a4437af6552e258e95ed8ed452afa6dd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI basic write method. Use of this method is reserved for special cases, SPIsetRegValue should be used instead. <a href="class_module.html#a4437af6552e258e95ed8ed452afa6dd4">More...</a><br /></td></tr>
<tr class="separator:a4437af6552e258e95ed8ed452afa6dd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78dd39aa71d97e2220a880df8162fdde"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a78dd39aa71d97e2220a880df8162fdde">SPItransfer</a> (uint8_t cmd, uint16_t reg, uint8_t *dataOut, uint8_t *dataIn, size_t numBytes)</td></tr>
<tr class="memdesc:a78dd39aa71d97e2220a880df8162fdde"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI single transfer method. <a href="class_module.html#a78dd39aa71d97e2220a880df8162fdde">More...</a><br /></td></tr>
<tr class="separator:a78dd39aa71d97e2220a880df8162fdde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5efa7ae78cab1d7f43005e965923f769"><td class="memItemLeft" align="right" valign="top">int16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a5efa7ae78cab1d7f43005e965923f769">SPIcheckStream</a> ()</td></tr>
<tr class="memdesc:a5efa7ae78cab1d7f43005e965923f769"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method to check the result of last SPI stream transfer. <a href="class_module.html#a5efa7ae78cab1d7f43005e965923f769">More...</a><br /></td></tr>
<tr class="separator:a5efa7ae78cab1d7f43005e965923f769"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9fc874adc8dbe7c3f1fd3c267c27708"><td class="memItemLeft" align="right" valign="top">int16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#ab9fc874adc8dbe7c3f1fd3c267c27708">SPIreadStream</a> (uint8_t cmd, uint8_t *data, size_t numBytes, bool waitForGpio=true, bool verify=true)</td></tr>
<tr class="memdesc:ab9fc874adc8dbe7c3f1fd3c267c27708"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method to perform a read transaction with SPI stream. <a href="class_module.html#ab9fc874adc8dbe7c3f1fd3c267c27708">More...</a><br /></td></tr>
<tr class="separator:ab9fc874adc8dbe7c3f1fd3c267c27708"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a085415b49ff72238f118b937ad896cbd"><td class="memItemLeft" align="right" valign="top">int16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a085415b49ff72238f118b937ad896cbd">SPIreadStream</a> (uint8_t *cmd, uint8_t cmdLen, uint8_t *data, size_t numBytes, bool waitForGpio=true, bool verify=true)</td></tr>
<tr class="memdesc:a085415b49ff72238f118b937ad896cbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method to perform a read transaction with SPI stream. <a href="class_module.html#a085415b49ff72238f118b937ad896cbd">More...</a><br /></td></tr>
<tr class="separator:a085415b49ff72238f118b937ad896cbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74ce586afa403130007a474d3295d762"><td class="memItemLeft" align="right" valign="top">int16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a74ce586afa403130007a474d3295d762">SPIwriteStream</a> (uint8_t cmd, uint8_t *data, size_t numBytes, bool waitForGpio=true, bool verify=true)</td></tr>
<tr class="memdesc:a74ce586afa403130007a474d3295d762"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method to perform a write transaction with SPI stream. <a href="class_module.html#a74ce586afa403130007a474d3295d762">More...</a><br /></td></tr>
<tr class="separator:a74ce586afa403130007a474d3295d762"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7acbe601ebe6398781d0f2de5177305e"><td class="memItemLeft" align="right" valign="top">int16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a7acbe601ebe6398781d0f2de5177305e">SPIwriteStream</a> (uint8_t *cmd, uint8_t cmdLen, uint8_t *data, size_t numBytes, bool waitForGpio=true, bool verify=true)</td></tr>
<tr class="memdesc:a7acbe601ebe6398781d0f2de5177305e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method to perform a write transaction with SPI stream. <a href="class_module.html#a7acbe601ebe6398781d0f2de5177305e">More...</a><br /></td></tr>
<tr class="separator:a7acbe601ebe6398781d0f2de5177305e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3586c8d4013cbdd22cf34032632c181"><td class="memItemLeft" align="right" valign="top">int16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#ac3586c8d4013cbdd22cf34032632c181">SPItransferStream</a> (uint8_t *cmd, uint8_t cmdLen, bool write, uint8_t *dataOut, uint8_t *dataIn, size_t numBytes, bool waitForGpio, uint32_t timeout)</td></tr>
<tr class="memdesc:ac3586c8d4013cbdd22cf34032632c181"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI single transfer method for modules with stream-type SPI interface (<a class="el" href="class_s_x126x.html" title="Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...">SX126x</a>, <a class="el" href="class_s_x128x.html" title="Base class for SX128x series. All derived classes for SX128x (e.g. SX1280 or SX1281) inherit from thi...">SX128x</a> etc.). <a href="class_module.html#ac3586c8d4013cbdd22cf34032632c181">More...</a><br /></td></tr>
<tr class="separator:ac3586c8d4013cbdd22cf34032632c181"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6cac04c7cb6d5278a318db0966ad1a7"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#aa6cac04c7cb6d5278a318db0966ad1a7">getCs</a> () const</td></tr>
<tr class="memdesc:aa6cac04c7cb6d5278a318db0966ad1a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access method to get the pin number of SPI chip select. <a href="class_module.html#aa6cac04c7cb6d5278a318db0966ad1a7">More...</a><br /></td></tr>
<tr class="separator:aa6cac04c7cb6d5278a318db0966ad1a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab61bc5066c356e2d0d79f08a2bd0fbc9"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#ab61bc5066c356e2d0d79f08a2bd0fbc9">getIrq</a> () const</td></tr>
<tr class="memdesc:ab61bc5066c356e2d0d79f08a2bd0fbc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access method to get the pin number of interrupt/GPIO. <a href="class_module.html#ab61bc5066c356e2d0d79f08a2bd0fbc9">More...</a><br /></td></tr>
<tr class="separator:ab61bc5066c356e2d0d79f08a2bd0fbc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6cddbf3aebec9717a1a381dd81ad398"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#ad6cddbf3aebec9717a1a381dd81ad398">getRst</a> () const</td></tr>
<tr class="memdesc:ad6cddbf3aebec9717a1a381dd81ad398"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access method to get the pin number of hardware reset pin. <a href="class_module.html#ad6cddbf3aebec9717a1a381dd81ad398">More...</a><br /></td></tr>
<tr class="separator:ad6cddbf3aebec9717a1a381dd81ad398"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ec27f0ba5e0009ea9661a5110526b52"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a4ec27f0ba5e0009ea9661a5110526b52">getGpio</a> () const</td></tr>
<tr class="memdesc:a4ec27f0ba5e0009ea9661a5110526b52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access method to get the pin number of second interrupt/GPIO. <a href="class_module.html#a4ec27f0ba5e0009ea9661a5110526b52">More...</a><br /></td></tr>
<tr class="separator:a4ec27f0ba5e0009ea9661a5110526b52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d3adea64acab11c47c804afc74bd4f3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a7d3adea64acab11c47c804afc74bd4f3">setRfSwitchPins</a> (uint32_t rxEn, uint32_t txEn)</td></tr>
<tr class="memdesc:a7d3adea64acab11c47c804afc74bd4f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Some modules contain external RF switch controlled by pins. This function gives RadioLib control over those pins to automatically switch between various modes: When idle both pins will be LOW, during TX the <code>txEn</code> pin will be HIGH, during RX the <code>rxPin</code> will be HIGH. <a href="class_module.html#a7d3adea64acab11c47c804afc74bd4f3">More...</a><br /></td></tr>
<tr class="separator:a7d3adea64acab11c47c804afc74bd4f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac308fa817a5c36c5dc724a0d15cefd4d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#ac308fa817a5c36c5dc724a0d15cefd4d">setRfSwitchTable</a> (const uint32_t(&amp;pins)[<a class="el" href="class_module.html#a0c11551e12579bbabf57b19e12555b3c">RFSWITCH_MAX_PINS</a>], const <a class="el" href="struct_module_1_1_rf_switch_mode__t.html">RfSwitchMode_t</a> table[])</td></tr>
<tr class="memdesc:ac308fa817a5c36c5dc724a0d15cefd4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Some modules contain external RF switch controlled by pins. This function gives RadioLib control over those pins to automatically switch between various modes. <a href="class_module.html#ac308fa817a5c36c5dc724a0d15cefd4d">More...</a><br /></td></tr>
<tr class="separator:ac308fa817a5c36c5dc724a0d15cefd4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5699a937b62ba41387567b4d679b9377"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="struct_module_1_1_rf_switch_mode__t.html">RfSwitchMode_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a5699a937b62ba41387567b4d679b9377">findRfSwitchMode</a> (uint8_t mode) const</td></tr>
<tr class="memdesc:a5699a937b62ba41387567b4d679b9377"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find a mode in the RfSwitchTable. <a href="class_module.html#a5699a937b62ba41387567b4d679b9377">More...</a><br /></td></tr>
<tr class="separator:a5699a937b62ba41387567b4d679b9377"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbed643f082286012bf44bba22381ae6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#afbed643f082286012bf44bba22381ae6">setRfSwitchState</a> (uint8_t mode)</td></tr>
<tr class="memdesc:afbed643f082286012bf44bba22381ae6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set RF switch state. <a href="class_module.html#afbed643f082286012bf44bba22381ae6">More...</a><br /></td></tr>
<tr class="separator:afbed643f082286012bf44bba22381ae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47978200f7e2e408fb64f506c81cee9f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a47978200f7e2e408fb64f506c81cee9f">waitForMicroseconds</a> (uint32_t start, uint32_t len)</td></tr>
<tr class="memdesc:a47978200f7e2e408fb64f506c81cee9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for time to elapse, either using the microsecond timer, or the TimerFlag. Note that in interrupt timing mode, it is up to the user to set up the timing interrupt! <a href="class_module.html#a47978200f7e2e408fb64f506c81cee9f">More...</a><br /></td></tr>
<tr class="separator:a47978200f7e2e408fb64f506c81cee9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a4add1a875bb88e91da232118201a78a8"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a4add1a875bb88e91da232118201a78a8">reflect</a> (uint32_t in, uint8_t bits)</td></tr>
<tr class="memdesc:a4add1a875bb88e91da232118201a78a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function to reflect bits within a byte. <a href="class_module.html#a4add1a875bb88e91da232118201a78a8">More...</a><br /></td></tr>
<tr class="separator:a4add1a875bb88e91da232118201a78a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a4483f0a39a523dd1b37b467d81418f7d"><td class="memItemLeft" align="right" valign="top"><a id="a4483f0a39a523dd1b37b467d81418f7d"></a>
<a class="el" href="class_radio_lib_hal.html">RadioLibHal</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a4483f0a39a523dd1b37b467d81418f7d">hal</a> = NULL</td></tr>
<tr class="memdesc:a4483f0a39a523dd1b37b467d81418f7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hardware abstraction layer to be used. <br /></td></tr>
<tr class="separator:a4483f0a39a523dd1b37b467d81418f7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a849ad85fc1bc3a7130e660c13973ab26"><td class="memItemLeft" align="right" valign="top"><a id="a849ad85fc1bc3a7130e660c13973ab26"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a849ad85fc1bc3a7130e660c13973ab26">SPIreadCommand</a> = 0b00000000</td></tr>
<tr class="memdesc:a849ad85fc1bc3a7130e660c13973ab26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Basic SPI read command. Defaults to 0x00. <br /></td></tr>
<tr class="separator:a849ad85fc1bc3a7130e660c13973ab26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae89764d15e8df5694a6aec0e18f72d3f"><td class="memItemLeft" align="right" valign="top"><a id="ae89764d15e8df5694a6aec0e18f72d3f"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#ae89764d15e8df5694a6aec0e18f72d3f">SPIwriteCommand</a> = 0b10000000</td></tr>
<tr class="memdesc:ae89764d15e8df5694a6aec0e18f72d3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Basic SPI write command. Defaults to 0x80. <br /></td></tr>
<tr class="separator:ae89764d15e8df5694a6aec0e18f72d3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a466112286d19675ca2dbe481358e4365"><td class="memItemLeft" align="right" valign="top"><a id="a466112286d19675ca2dbe481358e4365"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a466112286d19675ca2dbe481358e4365">SPInopCommand</a> = 0x00</td></tr>
<tr class="memdesc:a466112286d19675ca2dbe481358e4365"><td class="mdescLeft">&#160;</td><td class="mdescRight">Basic SPI no-operation command. Defaults to 0x00. <br /></td></tr>
<tr class="separator:a466112286d19675ca2dbe481358e4365"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06d8d4257c584b57a529fcc405d87c79"><td class="memItemLeft" align="right" valign="top"><a id="a06d8d4257c584b57a529fcc405d87c79"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a06d8d4257c584b57a529fcc405d87c79">SPIstatusCommand</a> = 0x00</td></tr>
<tr class="memdesc:a06d8d4257c584b57a529fcc405d87c79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Basic SPI status read command. Defaults to 0x00. <br /></td></tr>
<tr class="separator:a06d8d4257c584b57a529fcc405d87c79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac19a495026aae62f5c2f089aa1b2b57a"><td class="memItemLeft" align="right" valign="top"><a id="ac19a495026aae62f5c2f089aa1b2b57a"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#ac19a495026aae62f5c2f089aa1b2b57a">SPIaddrWidth</a> = 8</td></tr>
<tr class="memdesc:ac19a495026aae62f5c2f089aa1b2b57a"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI address width. Defaults to 8, currently only supports 8 and 16-bit addresses. <br /></td></tr>
<tr class="separator:ac19a495026aae62f5c2f089aa1b2b57a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34927454be3a34df8a5a586c46c428af"><td class="memItemLeft" align="right" valign="top"><a id="a34927454be3a34df8a5a586c46c428af"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a34927454be3a34df8a5a586c46c428af">SPIstreamType</a> = false</td></tr>
<tr class="memdesc:a34927454be3a34df8a5a586c46c428af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether the SPI interface is stream-type (e.g. <a class="el" href="class_s_x126x.html" title="Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...">SX126x</a>) or register-type (e.g. <a class="el" href="class_s_x127x.html" title="Base class for SX127x series. All derived classes for SX127x (e.g. SX1278 or SX1272) inherit from thi...">SX127x</a>). Defaults to register-type SPI interfaces. <br /></td></tr>
<tr class="separator:a34927454be3a34df8a5a586c46c428af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66b06e69d57b97116bed1c6f185381f1"><td class="memItemLeft" align="right" valign="top"><a id="a66b06e69d57b97116bed1c6f185381f1"></a>
int16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a66b06e69d57b97116bed1c6f185381f1">SPIstreamError</a> = <a class="el" href="group__status__codes.html#gacc0baeb3e5fc99760a07d18ba55531b6">RADIOLIB_ERR_UNKNOWN</a></td></tr>
<tr class="memdesc:a66b06e69d57b97116bed1c6f185381f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">The last recorded SPI stream error. <br /></td></tr>
<tr class="separator:a66b06e69d57b97116bed1c6f185381f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6e89e2bc4976e8c5dc42dedda9fa6a2"><td class="memItemLeft" align="right" valign="top"><a id="af6e89e2bc4976e8c5dc42dedda9fa6a2"></a>
<a class="el" href="class_module.html#a9393088249856eab568126aeb2493e4a">SPIparseStatusCb_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#af6e89e2bc4976e8c5dc42dedda9fa6a2">SPIparseStatusCb</a> = nullptr</td></tr>
<tr class="memdesc:af6e89e2bc4976e8c5dc42dedda9fa6a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback to function that will parse the module-specific status codes to RadioLib status codes. Typically used for modules with SPI stream-type interface (e.g. SX126x/SX128x). <br /></td></tr>
<tr class="separator:af6e89e2bc4976e8c5dc42dedda9fa6a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a0c11551e12579bbabf57b19e12555b3c"><td class="memItemLeft" align="right" valign="top"><a id="a0c11551e12579bbabf57b19e12555b3c"></a>
static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_module.html#a0c11551e12579bbabf57b19e12555b3c">RFSWITCH_MAX_PINS</a> = 3</td></tr>
<tr class="memdesc:a0c11551e12579bbabf57b19e12555b3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum number of pins supported by the RF switch code. Note: It is not recommended to use this constant in your sketch when defining a rfswitch pins array, to prevent issues when this value is ever increased and such an array gets extra zero elements (that will be interpreted as pin 0). <br /></td></tr>
<tr class="separator:a0c11551e12579bbabf57b19e12555b3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implements all common low-level methods to control the wireless module. Every module class contains one private instance of this class. </p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a5a67b3a63420d762ecba9448671c99bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a67b3a63420d762ecba9448671c99bf">&#9670;&nbsp;</a></span>OpMode_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="class_module.html#a5a67b3a63420d762ecba9448671c99bf">Module::OpMode_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Constants to use in a mode table set be setRfSwitchTable. These constants work for most radios, but some radios define their own constants to be used instead. </p>
<p>See <a class="el" href="class_module.html#ac308fa817a5c36c5dc724a0d15cefd4d">setRfSwitchTable</a> for details. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a5a67b3a63420d762ecba9448671c99bfa81cdd8986054c2ae5657eb5dfd536770"></a>MODE_END_OF_TABLE&#160;</td><td class="fielddoc"><p>End of table marker, use END_OF_MODE_TABLE constant instead. Value is zero to ensure zero-initialized mode ends the table. </p>
</td></tr>
<tr><td class="fieldname"><a id="a5a67b3a63420d762ecba9448671c99bfa505acc66c5e0faa83d2216aca5f3e671"></a>MODE_IDLE&#160;</td><td class="fielddoc"><p>Idle mode. </p>
</td></tr>
<tr><td class="fieldname"><a id="a5a67b3a63420d762ecba9448671c99bfa7664838bb0818663f55b3354fec8a18f"></a>MODE_RX&#160;</td><td class="fielddoc"><p>Receive mode. </p>
</td></tr>
<tr><td class="fieldname"><a id="a5a67b3a63420d762ecba9448671c99bfa269f4bc8ba3eb3d8568feb7b2decf571"></a>MODE_TX&#160;</td><td class="fielddoc"><p>Transmission mode. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a817178405f125e068e88bad62aeb6f3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a817178405f125e068e88bad62aeb6f3b">&#9670;&nbsp;</a></span>Module() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Module::Module </td>
<td>(</td>
<td class="paramtype"><a class="el" href="class_radio_lib_hal.html">RadioLibHal</a> *&#160;</td>
<td class="paramname"><em>hal</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>cs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>irq</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>rst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>gpio</em> = <code>RADIOLIB_NC</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="class_module.html" title="Implements all common low-level methods to control the wireless module. Every module class contains o...">Module</a> constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">hal</td><td>A Hardware abstraction layer instance. An ArduinoHal instance for example. </td></tr>
<tr><td class="paramname">cs</td><td>Pin to be used as chip select. </td></tr>
<tr><td class="paramname">irq</td><td>Pin to be used as interrupt/GPIO. </td></tr>
<tr><td class="paramname">rst</td><td>Pin to be used as hardware reset for the module. </td></tr>
<tr><td class="paramname">gpio</td><td>Pin to be used as additional interrupt/GPIO. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a919baf2e46c357ebfcdbc1025b6c551e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a919baf2e46c357ebfcdbc1025b6c551e">&#9670;&nbsp;</a></span>Module() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Module::Module </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="class_module.html">Module</a> &amp;&#160;</td>
<td class="paramname"><em>mod</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mod</td><td><a class="el" href="class_module.html" title="Implements all common low-level methods to control the wireless module. Every module class contains o...">Module</a> instance to copy. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a5699a937b62ba41387567b4d679b9377"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5699a937b62ba41387567b4d679b9377">&#9670;&nbsp;</a></span>findRfSwitchMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="struct_module_1_1_rf_switch_mode__t.html">Module::RfSwitchMode_t</a> * Module::findRfSwitchMode </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>mode</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Find a mode in the RfSwitchTable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mode</td><td>The mode to find. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the <a class="el" href="struct_module_1_1_rf_switch_mode__t.html" title="Description of RF switch pin states for a single mode. See setRfSwitchTable for details.">RfSwitchMode_t</a> struct in the table that matches the passed mode. Returns nullptr if no rfswitch pins are configured, or the passed mode is not listed in the table. </dd></dl>
</div>
</div>
<a id="aa6cac04c7cb6d5278a318db0966ad1a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6cac04c7cb6d5278a318db0966ad1a7">&#9670;&nbsp;</a></span>getCs()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint32_t Module::getCs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Access method to get the pin number of SPI chip select. </p>
<dl class="section return"><dt>Returns</dt><dd>Pin number of SPI chip select configured in the constructor. </dd></dl>
</div>
</div>
<a id="a4ec27f0ba5e0009ea9661a5110526b52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ec27f0ba5e0009ea9661a5110526b52">&#9670;&nbsp;</a></span>getGpio()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint32_t Module::getGpio </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Access method to get the pin number of second interrupt/GPIO. </p>
<dl class="section return"><dt>Returns</dt><dd>Pin number of second interrupt/GPIO configured in the constructor. </dd></dl>
</div>
</div>
<a id="ab61bc5066c356e2d0d79f08a2bd0fbc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab61bc5066c356e2d0d79f08a2bd0fbc9">&#9670;&nbsp;</a></span>getIrq()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint32_t Module::getIrq </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Access method to get the pin number of interrupt/GPIO. </p>
<dl class="section return"><dt>Returns</dt><dd>Pin number of interrupt/GPIO configured in the constructor. </dd></dl>
</div>
</div>
<a id="ad6cddbf3aebec9717a1a381dd81ad398"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6cddbf3aebec9717a1a381dd81ad398">&#9670;&nbsp;</a></span>getRst()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint32_t Module::getRst </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Access method to get the pin number of hardware reset pin. </p>
<dl class="section return"><dt>Returns</dt><dd>Pin number of hardware reset pin configured in the constructor. </dd></dl>
</div>
</div>
<a id="a4ea888758b4a7784082d513a1e7849a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ea888758b4a7784082d513a1e7849a4">&#9670;&nbsp;</a></span>operator=()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="class_module.html">Module</a> &amp; Module::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="class_module.html">Module</a> &amp;&#160;</td>
<td class="paramname"><em>mod</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Overload for assignment operator. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mod</td><td>rvalue <a class="el" href="class_module.html" title="Implements all common low-level methods to control the wireless module. Every module class contains o...">Module</a>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a4add1a875bb88e91da232118201a78a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4add1a875bb88e91da232118201a78a8">&#9670;&nbsp;</a></span>reflect()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint32_t Module::reflect </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Function to reflect bits within a byte. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>The input to reflect. </td></tr>
<tr><td class="paramname">bits</td><td>Number of bits to reflect. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The reflected input. </dd></dl>
</div>
</div>
<a id="a7d3adea64acab11c47c804afc74bd4f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d3adea64acab11c47c804afc74bd4f3">&#9670;&nbsp;</a></span>setRfSwitchPins()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Module::setRfSwitchPins </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>rxEn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>txEn</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Some modules contain external RF switch controlled by pins. This function gives RadioLib control over those pins to automatically switch between various modes: When idle both pins will be LOW, during TX the <code>txEn</code> pin will be HIGH, during RX the <code>rxPin</code> will be HIGH. </p>
<p>Radiolib will automatically set the pin mode and value of these pins, so do not control them from the sketch.</p>
<p>When more than two pins or more control over the output values are needed, use the <a class="el" href="class_module.html#ac308fa817a5c36c5dc724a0d15cefd4d" title="Some modules contain external RF switch controlled by pins. This function gives RadioLib control over...">setRfSwitchTable()</a> function.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">rxEn</td><td>RX enable pin. </td></tr>
<tr><td class="paramname">txEn</td><td>TX enable pin. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="afbed643f082286012bf44bba22381ae6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbed643f082286012bf44bba22381ae6">&#9670;&nbsp;</a></span>setRfSwitchState()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Module::setRfSwitchState </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>mode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set RF switch state. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mode</td><td>The mode to set. This must be one of the MODE_ constants, or a radio-specific constant. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac308fa817a5c36c5dc724a0d15cefd4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac308fa817a5c36c5dc724a0d15cefd4d">&#9670;&nbsp;</a></span>setRfSwitchTable()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Module::setRfSwitchTable </td>
<td>(</td>
<td class="paramtype">const uint32_t(&amp;)&#160;</td>
<td class="paramname"><em>pins</em>[RFSWITCH_MAX_PINS], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="struct_module_1_1_rf_switch_mode__t.html">RfSwitchMode_t</a>&#160;</td>
<td class="paramname"><em>table</em>[]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Some modules contain external RF switch controlled by pins. This function gives RadioLib control over those pins to automatically switch between various modes. </p>
<p>Radiolib will automatically set the pin mode and value of these pins, so do not control them from the sketch.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pins</td><td>A reference to an array of pins to control. This should always be an array of 3 elements. If you need less pins, use RADIOLIB_NC for the unused elements.</td></tr>
<tr><td class="paramname">table</td><td>A reference to an array of pin values to use for each supported mode. Each element is an RfSwitchMode_T struct that lists the mode for which it applies and the values for each of the pins passed in the pins argument respectively.</td></tr>
</table>
</dd>
</dl>
<p>The <code>pins</code> array will be copied into the <a class="el" href="class_module.html" title="Implements all common low-level methods to control the wireless module. Every module class contains o...">Module</a> object, so the original array can be deallocated after this call. However, a reference to the <code>table</code> array will be stored, so that array must remain valid as long RadioLib is being used.</p>
<p>The <code>mode</code> field in each table row should normally use any of the <code>MODE_*</code> constants from the <a class="el" href="class_module.html#a5a67b3a63420d762ecba9448671c99bf" title="Constants to use in a mode table set be setRfSwitchTable. These constants work for most radios,...">Module::OpMode_t</a> enum. However, some radios support additional modes and will define their own OpMode_t enum.</p>
<p>The length of the table is variable (to support radios that add additional modes), so the table must always be terminated with the special END_OF_MODE_TABLE value.</p>
<p>Normally all modes should be listed in the table, but for some radios, modes can be omitted to indicate they are not supported (e.g. when a radio has a high power and low power TX mode but external circuitry only supports low power). If applicable, this is documented in the radio class itself.</p>
<h4>Example</h4>
<p>For example, on a board that has an RF switch with an enable pin connected to PA0 and a TX/RX select pin connected to PA1:</p>
<div class="fragment"><div class="line"><span class="comment">// In global scope, define the pin array and mode table</span></div>
<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> uint32_t rfswitch_pins[] =</div>
<div class="line"> {PA0, PA1, RADIOLIB_NC};</div>
<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="struct_module_1_1_rf_switch_mode__t.html">Module::RfSwitchMode_t</a> rfswitch_table[] = {</div>
<div class="line"> {<a class="code" href="class_module.html#a5a67b3a63420d762ecba9448671c99bfa505acc66c5e0faa83d2216aca5f3e671">Module::MODE_IDLE</a>, {LOW, LOW}},</div>
<div class="line"> {<a class="code" href="class_module.html#a5a67b3a63420d762ecba9448671c99bfa7664838bb0818663f55b3354fec8a18f">Module::MODE_RX</a>, {HIGH, LOW}},</div>
<div class="line"> {<a class="code" href="class_module.html#a5a67b3a63420d762ecba9448671c99bfa269f4bc8ba3eb3d8568feb7b2decf571">Module::MODE_TX</a>, {HIGH, HIGH}},</div>
<div class="line"> Module::END_OF_MODE_TABLE,</div>
<div class="line">};</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> setup() {</div>
<div class="line"> ...</div>
<div class="line"> <span class="comment">// Then somewhere in setup, pass them to radiolib</span></div>
<div class="line"> radio.setRfSwitchTable(rfswitch_pins, rfswitch_table);</div>
<div class="line"> ...</div>
<div class="line">}</div>
<div class="ttc" id="aclass_module_html_a5a67b3a63420d762ecba9448671c99bfa269f4bc8ba3eb3d8568feb7b2decf571"><div class="ttname"><a href="class_module.html#a5a67b3a63420d762ecba9448671c99bfa269f4bc8ba3eb3d8568feb7b2decf571">Module::MODE_TX</a></div><div class="ttdeci">@ MODE_TX</div><div class="ttdoc">Transmission mode.</div><div class="ttdef"><b>Definition:</b> Module.h:76</div></div>
<div class="ttc" id="aclass_module_html_a5a67b3a63420d762ecba9448671c99bfa505acc66c5e0faa83d2216aca5f3e671"><div class="ttname"><a href="class_module.html#a5a67b3a63420d762ecba9448671c99bfa505acc66c5e0faa83d2216aca5f3e671">Module::MODE_IDLE</a></div><div class="ttdeci">@ MODE_IDLE</div><div class="ttdoc">Idle mode.</div><div class="ttdef"><b>Definition:</b> Module.h:70</div></div>
<div class="ttc" id="aclass_module_html_a5a67b3a63420d762ecba9448671c99bfa7664838bb0818663f55b3354fec8a18f"><div class="ttname"><a href="class_module.html#a5a67b3a63420d762ecba9448671c99bfa7664838bb0818663f55b3354fec8a18f">Module::MODE_RX</a></div><div class="ttdeci">@ MODE_RX</div><div class="ttdoc">Receive mode.</div><div class="ttdef"><b>Definition:</b> Module.h:73</div></div>
<div class="ttc" id="astruct_module_1_1_rf_switch_mode__t_html"><div class="ttname"><a href="struct_module_1_1_rf_switch_mode__t.html">Module::RfSwitchMode_t</a></div><div class="ttdoc">Description of RF switch pin states for a single mode. See setRfSwitchTable for details.</div><div class="ttdef"><b>Definition:</b> Module.h:46</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5efa7ae78cab1d7f43005e965923f769"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5efa7ae78cab1d7f43005e965923f769">&#9670;&nbsp;</a></span>SPIcheckStream()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16_t Module::SPIcheckStream </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Method to check the result of last SPI stream transfer. </p>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__status__codes.html">Status Codes</a> </dd></dl>
</div>
</div>
<a id="a01e15988ec448c76142ee5709929be2c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01e15988ec448c76142ee5709929be2c">&#9670;&nbsp;</a></span>SPIgetRegValue()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16_t Module::SPIgetRegValue </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>reg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>msb</em> = <code>7</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>lsb</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>SPI read method that automatically masks unused bits. This method is the preferred SPI read mechanism. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reg</td><td>Address of SPI register to read. </td></tr>
<tr><td class="paramname">msb</td><td>Most significant bit of the register variable. Bits above this one will be masked out. </td></tr>
<tr><td class="paramname">lsb</td><td>Least significant bit of the register variable. Bits below this one will be masked out. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Masked register value or status code. </dd></dl>
</div>
</div>
<a id="a9a545e4a001da0d9f6358279ac40d4f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a545e4a001da0d9f6358279ac40d4f0">&#9670;&nbsp;</a></span>SPIreadRegister()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t Module::SPIreadRegister </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>reg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>SPI basic read method. Use of this method is reserved for special cases, SPIgetRegValue should be used instead. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reg</td><td>Address of SPI register to read. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value that was read from register. </dd></dl>
</div>
</div>
<a id="a874e030f1931e606e380930d37dd83ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a874e030f1931e606e380930d37dd83ee">&#9670;&nbsp;</a></span>SPIreadRegisterBurst()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Module::SPIreadRegisterBurst </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>reg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>numBytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>inBytes</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>SPI burst read method. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reg</td><td>Address of SPI register to read. </td></tr>
<tr><td class="paramname">numBytes</td><td>Number of bytes that will be read. </td></tr>
<tr><td class="paramname">inBytes</td><td>Pointer to array that will hold the read data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a085415b49ff72238f118b937ad896cbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a085415b49ff72238f118b937ad896cbd">&#9670;&nbsp;</a></span>SPIreadStream() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16_t Module::SPIreadStream </td>
<td>(</td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>cmd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>cmdLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>numBytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>waitForGpio</em> = <code>true</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>verify</em> = <code>true</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Method to perform a read transaction with SPI stream. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cmd</td><td>SPI operation command. </td></tr>
<tr><td class="paramname">cmdLen</td><td>SPI command length in bytes. </td></tr>
<tr><td class="paramname">data</td><td>Data that will be transferred from slave to master. </td></tr>
<tr><td class="paramname">numBytes</td><td>Number of bytes to transfer. </td></tr>
<tr><td class="paramname">waitForGpio</td><td>Whether to wait for some GPIO at the end of transfer (e.g. BUSY line on SX126x/SX128x). </td></tr>
<tr><td class="paramname">verify</td><td>Whether to verify the result of the transaction after it is finished. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__status__codes.html">Status Codes</a> </dd></dl>
</div>
</div>
<a id="ab9fc874adc8dbe7c3f1fd3c267c27708"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9fc874adc8dbe7c3f1fd3c267c27708">&#9670;&nbsp;</a></span>SPIreadStream() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16_t Module::SPIreadStream </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>cmd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>numBytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>waitForGpio</em> = <code>true</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>verify</em> = <code>true</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Method to perform a read transaction with SPI stream. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cmd</td><td>SPI operation command. </td></tr>
<tr><td class="paramname">data</td><td>Data that will be transferred from slave to master. </td></tr>
<tr><td class="paramname">numBytes</td><td>Number of bytes to transfer. </td></tr>
<tr><td class="paramname">waitForGpio</td><td>Whether to wait for some GPIO at the end of transfer (e.g. BUSY line on SX126x/SX128x). </td></tr>
<tr><td class="paramname">verify</td><td>Whether to verify the result of the transaction after it is finished. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__status__codes.html">Status Codes</a> </dd></dl>
</div>
</div>
<a id="a081191402ad5c49e6c21982fc4587b77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a081191402ad5c49e6c21982fc4587b77">&#9670;&nbsp;</a></span>SPIsetRegValue()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16_t Module::SPIsetRegValue </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>reg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>msb</em> = <code>7</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>lsb</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>checkInterval</em> = <code>2</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>checkMask</em> = <code>0xFF</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Overwrite-safe SPI write method with verification. This method is the preferred SPI write mechanism. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reg</td><td>Address of SPI register to write. </td></tr>
<tr><td class="paramname">value</td><td>Single byte value that will be written to the SPI register. </td></tr>
<tr><td class="paramname">msb</td><td>Most significant bit of the register variable. Bits above this one will not be affected by the write operation. </td></tr>
<tr><td class="paramname">lsb</td><td>Least significant bit of the register variable. Bits below this one will not be affected by the write operation. </td></tr>
<tr><td class="paramname">checkInterval</td><td>Number of milliseconds between register writing and verification reading. Some registers need up to 10ms to process the change. </td></tr>
<tr><td class="paramname">checkMask</td><td>Mask of bits to check, only bits set to 1 will be verified. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__status__codes.html">Status Codes</a> </dd></dl>
</div>
</div>
<a id="a78dd39aa71d97e2220a880df8162fdde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78dd39aa71d97e2220a880df8162fdde">&#9670;&nbsp;</a></span>SPItransfer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Module::SPItransfer </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>cmd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>reg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>dataOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>dataIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>numBytes</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>SPI single transfer method. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cmd</td><td>SPI access command (read/write/burst/...). </td></tr>
<tr><td class="paramname">reg</td><td>Address of SPI register to transfer to/from. </td></tr>
<tr><td class="paramname">dataOut</td><td>Data that will be transferred from master to slave. </td></tr>
<tr><td class="paramname">dataIn</td><td>Data that was transferred from slave to master. </td></tr>
<tr><td class="paramname">numBytes</td><td>Number of bytes to transfer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac3586c8d4013cbdd22cf34032632c181"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac3586c8d4013cbdd22cf34032632c181">&#9670;&nbsp;</a></span>SPItransferStream()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16_t Module::SPItransferStream </td>
<td>(</td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>cmd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>cmdLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>write</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>dataOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>dataIn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>numBytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>waitForGpio</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>SPI single transfer method for modules with stream-type SPI interface (<a class="el" href="class_s_x126x.html" title="Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...">SX126x</a>, <a class="el" href="class_s_x128x.html" title="Base class for SX128x series. All derived classes for SX128x (e.g. SX1280 or SX1281) inherit from thi...">SX128x</a> etc.). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cmd</td><td>SPI operation command. </td></tr>
<tr><td class="paramname">cmdLen</td><td>SPI command length in bytes. </td></tr>
<tr><td class="paramname">write</td><td>Set to true for write commands, false for read commands. </td></tr>
<tr><td class="paramname">dataOut</td><td>Data that will be transferred from master to slave. </td></tr>
<tr><td class="paramname">dataIn</td><td>Data that was transferred from slave to master. </td></tr>
<tr><td class="paramname">numBytes</td><td>Number of bytes to transfer. </td></tr>
<tr><td class="paramname">waitForGpio</td><td>Whether to wait for some GPIO at the end of transfer (e.g. BUSY line on SX126x/SX128x). </td></tr>
<tr><td class="paramname">timeout</td><td>GPIO wait period timeout in milliseconds. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__status__codes.html">Status Codes</a> </dd></dl>
</div>
</div>
<a id="a4437af6552e258e95ed8ed452afa6dd4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4437af6552e258e95ed8ed452afa6dd4">&#9670;&nbsp;</a></span>SPIwriteRegister()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Module::SPIwriteRegister </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>reg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>SPI basic write method. Use of this method is reserved for special cases, SPIsetRegValue should be used instead. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reg</td><td>Address of SPI register to write. </td></tr>
<tr><td class="paramname">data</td><td>Value that will be written to the register. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af474f82d00fffc1ee0fc8def2c7f220c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af474f82d00fffc1ee0fc8def2c7f220c">&#9670;&nbsp;</a></span>SPIwriteRegisterBurst()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Module::SPIwriteRegisterBurst </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>reg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>numBytes</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>SPI burst write method. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reg</td><td>Address of SPI register to write. </td></tr>
<tr><td class="paramname">data</td><td>Pointer to array that holds the data that will be written. </td></tr>
<tr><td class="paramname">numBytes</td><td>Number of bytes that will be written. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a7acbe601ebe6398781d0f2de5177305e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7acbe601ebe6398781d0f2de5177305e">&#9670;&nbsp;</a></span>SPIwriteStream() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16_t Module::SPIwriteStream </td>
<td>(</td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>cmd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>cmdLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>numBytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>waitForGpio</em> = <code>true</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>verify</em> = <code>true</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Method to perform a write transaction with SPI stream. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cmd</td><td>SPI operation command. </td></tr>
<tr><td class="paramname">cmdLen</td><td>SPI command length in bytes. </td></tr>
<tr><td class="paramname">data</td><td>Data that will be transferred from master to slave. </td></tr>
<tr><td class="paramname">numBytes</td><td>Number of bytes to transfer. </td></tr>
<tr><td class="paramname">waitForGpio</td><td>Whether to wait for some GPIO at the end of transfer (e.g. BUSY line on SX126x/SX128x). </td></tr>
<tr><td class="paramname">verify</td><td>Whether to verify the result of the transaction after it is finished. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__status__codes.html">Status Codes</a> </dd></dl>
</div>
</div>
<a id="a74ce586afa403130007a474d3295d762"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74ce586afa403130007a474d3295d762">&#9670;&nbsp;</a></span>SPIwriteStream() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16_t Module::SPIwriteStream </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>cmd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>numBytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>waitForGpio</em> = <code>true</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>verify</em> = <code>true</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Method to perform a write transaction with SPI stream. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cmd</td><td>SPI operation command. </td></tr>
<tr><td class="paramname">data</td><td>Data that will be transferred from master to slave. </td></tr>
<tr><td class="paramname">numBytes</td><td>Number of bytes to transfer. </td></tr>
<tr><td class="paramname">waitForGpio</td><td>Whether to wait for some GPIO at the end of transfer (e.g. BUSY line on SX126x/SX128x). </td></tr>
<tr><td class="paramname">verify</td><td>Whether to verify the result of the transaction after it is finished. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__status__codes.html">Status Codes</a> </dd></dl>
</div>
</div>
<a id="a47978200f7e2e408fb64f506c81cee9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a47978200f7e2e408fb64f506c81cee9f">&#9670;&nbsp;</a></span>waitForMicroseconds()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Module::waitForMicroseconds </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Wait for time to elapse, either using the microsecond timer, or the TimerFlag. Note that in interrupt timing mode, it is up to the user to set up the timing interrupt! </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">start</td><td>Waiting start timestamp, in microseconds. </td></tr>
<tr><td class="paramname">len</td><td>Waiting duration, in microseconds; </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/<a class="el" href="_module_8h_source.html">Module.h</a></li>
<li>src/Module.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_module.html">Module</a></li>
<li class="footer">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 </li>
</ul>
</div>
</body>
</html>