mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-11-06 17:41:39 +01:00
302 lines
31 KiB
HTML
302 lines
31 KiB
HTML
|
||
<!DOCTYPE html>
|
||
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||
|
||
<title>Advanced esp-modem use cases — esp-modem documentation</title>
|
||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||
<link rel="stylesheet" type="text/css" href="_static/alabaster.css" />
|
||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||
<script src="_static/jquery.js"></script>
|
||
<script src="_static/underscore.js"></script>
|
||
<script src="_static/doctools.js"></script>
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
<link rel="next" title="Internal design" href="internal_design.html" />
|
||
<link rel="prev" title="C++ API Documentation" href="cxx_api_docs.html" />
|
||
|
||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||
|
||
</head><body>
|
||
|
||
|
||
<div class="document">
|
||
<div class="documentwrapper">
|
||
<div class="bodywrapper">
|
||
|
||
|
||
<div class="body" role="main">
|
||
|
||
<section id="advanced-esp-modem-use-cases">
|
||
<h1>Advanced esp-modem use cases<a class="headerlink" href="#advanced-esp-modem-use-cases" title="Permalink to this headline">¶</a></h1>
|
||
<p>This chapter outlines basic extensibility of the esp-modem component.</p>
|
||
<section id="custom-instantiation-with-dce-factory">
|
||
<span id="dce-factory"></span><h2>Custom instantiation with DCE factory<a class="headerlink" href="#custom-instantiation-with-dce-factory" title="Permalink to this headline">¶</a></h2>
|
||
<p>It is possible to create a modem handle in many different ways:</p>
|
||
<ul class="simple">
|
||
<li><p>Build a DCE on top a generic module, user defined module or build the module only (in case the application will only use AT command interface)</p></li>
|
||
<li><p>Create the DCE as a shared, unique or a vanilla pointer</p></li>
|
||
<li><p>Create a generic DCE or a templated DCE_T of a specific module (this could be one of the supported modules or a user defined module)</p></li>
|
||
</ul>
|
||
<p>All the functionality is provided by the DCE factory</p>
|
||
<dl>
|
||
<dt class="sig sig-object cpp">
|
||
<span class="target" id="group___e_s_p___m_o_d_e_m___d_c_e___f_a_c_t_o_r_y"></span><em><span class="pre">group</span></em> <span class="sig-name descname"><span class="pre">ESP_MODEM_DCE_FACTORY</span></span></dt>
|
||
<dd><p><a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> modem factory. </p>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-enums">Enums</p>
|
||
<dl class="cpp enum-class">
|
||
<dt class="sig sig-object cpp" id="_CPPv49ModemType">
|
||
<span id="_CPPv39ModemType"></span><span id="_CPPv29ModemType"></span><span class="target" id="group___e_s_p___m_o_d_e_m___d_c_e___f_a_c_t_o_r_y_1ga34f5bd407ce186b43f44b5c8cfbf2fd9"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ModemType</span></span></span><a class="headerlink" href="#_CPPv49ModemType" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><p>Specific modem choice when creating by the <a class="reference internal" href="#classesp__modem_1_1dce__factory_1_1_factory"><span class="std std-ref">Factory</span></a>. </p>
|
||
<p><em>Values:</em></p>
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9ModemType13GenericModuleE">
|
||
<span id="_CPPv3N9ModemType13GenericModuleE"></span><span id="_CPPv2N9ModemType13GenericModuleE"></span><span class="target" id="group___e_s_p___m_o_d_e_m___d_c_e___f_a_c_t_o_r_y_1gga34f5bd407ce186b43f44b5c8cfbf2fd9aa8bf3237121049ad32b6caa9e888a248"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GenericModule</span></span></span><a class="headerlink" href="#_CPPv4N9ModemType13GenericModuleE" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><p>Default generic module with the most common commands </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9ModemType7SIM7600E">
|
||
<span id="_CPPv3N9ModemType7SIM7600E"></span><span id="_CPPv2N9ModemType7SIM7600E"></span><span class="target" id="group___e_s_p___m_o_d_e_m___d_c_e___f_a_c_t_o_r_y_1gga34f5bd407ce186b43f44b5c8cfbf2fd9aa0e5dcb06d41510dde0b20f2e59e75a2"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SIM7600</span></span></span><a class="headerlink" href="#_CPPv4N9ModemType7SIM7600E" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><p>Derived from the <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_generic_module"><span class="std std-ref">GenericModule</span></a>, specifics applied to <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_s_i_m7600"><span class="std std-ref">SIM7600</span></a> model </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9ModemType7SIM7070E">
|
||
<span id="_CPPv3N9ModemType7SIM7070E"></span><span id="_CPPv2N9ModemType7SIM7070E"></span><span class="target" id="group___e_s_p___m_o_d_e_m___d_c_e___f_a_c_t_o_r_y_1gga34f5bd407ce186b43f44b5c8cfbf2fd9a17612eb64619563fb0b5c35d046d419d"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SIM7070</span></span></span><a class="headerlink" href="#_CPPv4N9ModemType7SIM7070E" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><p>Derived from the <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_generic_module"><span class="std std-ref">GenericModule</span></a>, specifics applied to <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_s_i_m7070"><span class="std std-ref">SIM7070</span></a> model </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9ModemType7SIM7000E">
|
||
<span id="_CPPv3N9ModemType7SIM7000E"></span><span id="_CPPv2N9ModemType7SIM7000E"></span><span class="target" id="group___e_s_p___m_o_d_e_m___d_c_e___f_a_c_t_o_r_y_1gga34f5bd407ce186b43f44b5c8cfbf2fd9a719215eb78ae5f264bb9af70af9aedaa"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SIM7000</span></span></span><a class="headerlink" href="#_CPPv4N9ModemType7SIM7000E" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><p>Derived from the <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_generic_module"><span class="std std-ref">GenericModule</span></a>, specifics applied to <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_s_i_m7000"><span class="std std-ref">SIM7000</span></a> model </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9ModemType4BG96E">
|
||
<span id="_CPPv3N9ModemType4BG96E"></span><span id="_CPPv2N9ModemType4BG96E"></span><span class="target" id="group___e_s_p___m_o_d_e_m___d_c_e___f_a_c_t_o_r_y_1gga34f5bd407ce186b43f44b5c8cfbf2fd9a80e1af61101ed94123673230a16bdbe0"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BG96</span></span></span><a class="headerlink" href="#_CPPv4N9ModemType4BG96E" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><p>Derived from the <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_generic_module"><span class="std std-ref">GenericModule</span></a>, specifics applied to BG69 model </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9ModemType6SIM800E">
|
||
<span id="_CPPv3N9ModemType6SIM800E"></span><span id="_CPPv2N9ModemType6SIM800E"></span><span class="target" id="group___e_s_p___m_o_d_e_m___d_c_e___f_a_c_t_o_r_y_1gga34f5bd407ce186b43f44b5c8cfbf2fd9a6705b747abfe5514ac06e14ef95ebc44"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SIM800</span></span></span><a class="headerlink" href="#_CPPv4N9ModemType6SIM800E" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><p>Derived from the <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_generic_module"><span class="std std-ref">GenericModule</span></a> with specifics applied to <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_s_i_m800"><span class="std std-ref">SIM800</span></a> model </p>
|
||
</dd></dl>
|
||
|
||
</dd></dl>
|
||
|
||
</div>
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9esp_modem11dce_factory13FactoryHelperE">
|
||
<span id="_CPPv3N9esp_modem11dce_factory13FactoryHelperE"></span><span id="_CPPv2N9esp_modem11dce_factory13FactoryHelperE"></span><span id="esp_modem::dce_factory::FactoryHelper"></span><span class="target" id="classesp__modem_1_1dce__factory_1_1_factory_helper"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FactoryHelper</span></span></span><a class="headerlink" href="#_CPPv4N9esp_modem11dce_factory13FactoryHelperE" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><div class="docutils container">
|
||
<em>#include <esp_modem_dce_factory.hpp></em></div>
|
||
<p>Helper class for creating a user define pointer in a specific way, either as a plain pointer, shared_ptr or unique_ptr. </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4I0EN9esp_modem11dce_factory7CreatorE">
|
||
<span id="_CPPv3I0EN9esp_modem11dce_factory7CreatorE"></span><span id="_CPPv2I0EN9esp_modem11dce_factory7CreatorE"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre"><</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T_Module</span></span></span><span class="p"><span class="pre">></span></span><br /><span class="target" id="classesp__modem_1_1dce__factory_1_1_creator"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Creator</span></span></span><a class="headerlink" href="#_CPPv4I0EN9esp_modem11dce_factory7CreatorE" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><div class="docutils container">
|
||
<em>#include <esp_modem_dce_factory.hpp></em></div>
|
||
<p><a class="reference internal" href="#classesp__modem_1_1dce__factory_1_1_creator"><span class="std std-ref">Creator</span></a> class for building a DCE_T<Module> in a specific way, either from a Module object or by default from the <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_t_e"><span class="std std-ref">DTE</span></a> and netif. </p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Throws </dt>
|
||
<dd class="field-odd"><p></p></dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9esp_modem11dce_factory7FactoryE">
|
||
<span id="_CPPv3N9esp_modem11dce_factory7FactoryE"></span><span id="_CPPv2N9esp_modem11dce_factory7FactoryE"></span><span id="esp_modem::dce_factory::Factory"></span><span class="target" id="classesp__modem_1_1dce__factory_1_1_factory"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">esp_modem</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">dce_factory</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">Factory</span></span></span><a class="headerlink" href="#_CPPv4N9esp_modem11dce_factory7FactoryE" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><div class="docutils container">
|
||
<em>#include <esp_modem_dce_factory.hpp></em></div>
|
||
<p><a class="reference internal" href="#classesp__modem_1_1dce__factory_1_1_factory"><span class="std std-ref">Factory</span></a> class for creating virtual <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> objects based on the configuration of the supplied module. This could also be used to create a custom module or a DCE_T<module>, provided user app derives from this factory. </p>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args">
|
||
<span id="_CPPv3IDpEN9esp_modem11dce_factory7Factory12build_uniqueEPK6configDpRR4Args"></span><span id="_CPPv2IDpEN9esp_modem11dce_factory7Factory12build_uniqueEPK6configDpRR4Args"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre"><</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="p"><span class="pre">...</span></span><span class="sig-name descname"><span class="n"><span class="pre">Args</span></span></span><span class="p"><span class="pre">></span></span><br /><span class="target" id="classesp__modem_1_1dce__factory_1_1_factory_1a5fd0210522a31e645f28c0b0f23ffb67"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="internal_docs.html#_CPPv4N9esp_modem3DCEE" title="esp_modem::DCE"><span class="n"><span class="pre">DCE</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">build_unique</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">config</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cfg</span></span>, <a class="reference internal" href="#_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args" title="esp_modem::dce_factory::Factory::build_unique::Args"><span class="n"><span class="pre">Args</span></span></a><span class="p"><span class="pre">&</span></span><span class="p"><span class="pre">&</span></span><span class="p"><span class="pre">...</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">args</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><p>Create a default unique_ptr <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> generically, with the chosen module derived from the <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_generic_module"><span class="std std-ref">GenericModule</span></a>. </p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Template Parameters</dt>
|
||
<dd class="field-odd"><p><strong>Args</strong> – Arguments to the builder, i.e. constructor of <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e___t"><span class="std std-ref">esp_modem::DCE_T</span></a> class </p>
|
||
</dd>
|
||
<dt class="field-even">Parameters</dt>
|
||
<dd class="field-even"><ul class="simple">
|
||
<li><p><strong>cfg</strong> – <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> configuration structure <a class="reference internal" href="api_docs.html#structesp__modem__dte__config"><span class="std std-ref">esp_modem_dte_config</span></a> </p></li>
|
||
<li><p><strong>args</strong> – typically a <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_t_e"><span class="std std-ref">DTE</span></a> object and a netif handle for PPP network </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-odd">Returns</dt>
|
||
<dd class="field-odd"><p>unique_ptr <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> of the created <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> on success </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args">
|
||
<span id="_CPPv3I0DpEN9esp_modem11dce_factory7Factory12build_uniqueEPK6configDpRR4Args"></span><span id="_CPPv2I0DpEN9esp_modem11dce_factory7Factory12build_uniqueEPK6configDpRR4Args"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre"><</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T_Module</span></span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="p"><span class="pre">...</span></span><span class="sig-name descname"><span class="n"><span class="pre">Args</span></span></span><span class="p"><span class="pre">></span></span><br /><span class="target" id="classesp__modem_1_1dce__factory_1_1_factory_1a2a4686de666658fb89a8d80ce2935bf2"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="internal_docs.html#_CPPv4N9esp_modem3DCEE" title="esp_modem::DCE"><span class="n"><span class="pre">DCE</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">build_unique</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">config</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cfg</span></span>, <a class="reference internal" href="#_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args" title="esp_modem::dce_factory::Factory::build_unique::Args"><span class="n"><span class="pre">Args</span></span></a><span class="p"><span class="pre">&</span></span><span class="p"><span class="pre">&</span></span><span class="p"><span class="pre">...</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">args</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><p>Create a default unique_ptr <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> in a specific way (from the module) </p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Template Parameters</dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>Module</strong> – Specific Module used in this <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> </p></li>
|
||
<li><p><strong>Args</strong> – Arguments to the builder, i.e. constructor of <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e___t"><span class="std std-ref">esp_modem::DCE_T</span></a> class </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Parameters</dt>
|
||
<dd class="field-even"><ul class="simple">
|
||
<li><p><strong>cfg</strong> – <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> configuration structure <a class="reference internal" href="api_docs.html#structesp__modem__dte__config"><span class="std std-ref">esp_modem_dte_config</span></a> </p></li>
|
||
<li><p><strong>args</strong> – typically a <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_t_e"><span class="std std-ref">DTE</span></a> object and a netif handle for PPP network </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-odd">Returns</dt>
|
||
<dd class="field-odd"><p>unique_ptr <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> of the created <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> on success </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args">
|
||
<span id="_CPPv3I0DpEN9esp_modem11dce_factory7Factory5buildEPK6configDpRR4Args"></span><span id="_CPPv2I0DpEN9esp_modem11dce_factory7Factory5buildEPK6configDpRR4Args"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre"><</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T_Module</span></span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="p"><span class="pre">...</span></span><span class="sig-name descname"><span class="n"><span class="pre">Args</span></span></span><span class="p"><span class="pre">></span></span><br /><span class="target" id="classesp__modem_1_1dce__factory_1_1_factory_1a2dfb050a53429bb651fb58de5841c04d"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="internal_docs.html#_CPPv4N9esp_modem3DCEE" title="esp_modem::DCE"><span class="n"><span class="pre">DCE</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">build</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">config</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cfg</span></span>, <a class="reference internal" href="#_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args" title="esp_modem::dce_factory::Factory::build::Args"><span class="n"><span class="pre">Args</span></span></a><span class="p"><span class="pre">&</span></span><span class="p"><span class="pre">&</span></span><span class="p"><span class="pre">...</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">args</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args" title="Permalink to this definition">¶</a><br /></dt>
|
||
<dd><p>Create a <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a>. </p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Template Parameters</dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>Module</strong> – Specific Module used in this <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> </p></li>
|
||
<li><p><strong>Args</strong> – Arguments to the builder, i.e. constructor of <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e___t"><span class="std std-ref">esp_modem::DCE_T</span></a> class </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Parameters</dt>
|
||
<dd class="field-even"><ul class="simple">
|
||
<li><p><strong>cfg</strong> – <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> configuration structure <a class="reference internal" href="api_docs.html#structesp__modem__dte__config"><span class="std std-ref">esp_modem_dte_config</span></a> </p></li>
|
||
<li><p><strong>args</strong> – typically a <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_t_e"><span class="std std-ref">DTE</span></a> object and a netif handle for PPP network </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-odd">Returns</dt>
|
||
<dd class="field-odd"><p><a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> pointer the created <a class="reference internal" href="internal_docs.html#classesp__modem_1_1_d_c_e"><span class="std std-ref">DCE</span></a> on success </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="create-custom-module">
|
||
<span id="id1"></span><h2>Create custom module<a class="headerlink" href="#create-custom-module" title="Permalink to this headline">¶</a></h2>
|
||
<p>Creating a custom module is necessary if the application needs to use a specific device that is not supported
|
||
and their commands differ from any of the supported devices. In this case it is recommended to define a new class
|
||
representing this specific device and derive from the <a class="reference internal" href="internal_docs.html#_CPPv4N9esp_modem13GenericModuleE" title="esp_modem::GenericModule"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">esp_modem::GenericModule</span></code></a>. In order to instantiate
|
||
the appropriate DCE of this module, application could use <a class="reference internal" href="#dce-factory"><span class="std std-ref">the DCE factory</span></a>, and build the DCE with
|
||
the specific module, using <a class="reference internal" href="#_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args" title="esp_modem::dce_factory::Factory::build"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">esp_modem::dce_factory::Factory::build()</span></code></a>.</p>
|
||
<p>Please refer to the implementation of the existing modules.</p>
|
||
<p>Please note that the <code class="docutils literal notranslate"><span class="pre">modem_console</span></code> example defines a trivial custom modem DCE which overrides one command,
|
||
for demonstration purposes only.</p>
|
||
</section>
|
||
<section id="create-new-communication-interface">
|
||
<h2>Create new communication interface<a class="headerlink" href="#create-new-communication-interface" title="Permalink to this headline">¶</a></h2>
|
||
<p>In order to connect to a device using an unsupported interface (e.g. SPI or I2C), it is necessary to implement
|
||
a custom DTE object and supply it into <a class="reference internal" href="#dce-factory"><span class="std std-ref">the DCE factory</span></a>. The DCE is typically created in two steps:</p>
|
||
<ul class="simple">
|
||
<li><p>Define and create the corresponding terminal, which communicates on the custom interface. This terminal should support basic IO methods defined in <a class="reference internal" href="internal_docs.html#_CPPv4N9esp_modem8TerminalE" title="esp_modem::Terminal"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">esp_modem::Terminal</span></code></a> and derive from it.</p></li>
|
||
<li><p>Create the DTE which uses the custom Terminal</p></li>
|
||
</ul>
|
||
<p>Please refer to the implementation of the existing UART DTE.</p>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||
<div class="sphinxsidebarwrapper">
|
||
<h1 class="logo"><a href="index.html">esp-modem</a></h1>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3>Navigation</h3>
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="README.html">Brief intro</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="api_docs.html">C interface</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="cxx_api_docs.html">C++ interface</a></li>
|
||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Advanced use cases</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="#custom-instantiation-with-dce-factory">Custom instantiation with DCE factory</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#create-custom-module">Create custom module</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#create-new-communication-interface">Create new communication interface</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="internal_design.html">Internal design</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="internal_docs.html">Internal implementation</a></li>
|
||
</ul>
|
||
|
||
<div class="relations">
|
||
<h3>Related Topics</h3>
|
||
<ul>
|
||
<li><a href="index.html">Documentation overview</a><ul>
|
||
<li>Previous: <a href="cxx_api_docs.html" title="previous chapter">C++ API Documentation</a></li>
|
||
<li>Next: <a href="internal_design.html" title="next chapter">Internal design</a></li>
|
||
</ul></li>
|
||
</ul>
|
||
</div>
|
||
<div id="searchbox" style="display: none" role="search">
|
||
<h3 id="searchlabel">Quick search</h3>
|
||
<div class="searchformwrapper">
|
||
<form class="search" action="search.html" method="get">
|
||
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
||
<input type="submit" value="Go" />
|
||
</form>
|
||
</div>
|
||
</div>
|
||
<script>$('#searchbox').show(0);</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="clearer"></div>
|
||
</div>
|
||
<div class="footer">
|
||
©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd.
|
||
|
||
|
|
||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.5.0</a>
|
||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.13</a>
|
||
|
||
|
|
||
<a href="_sources/advanced_api.rst.txt"
|
||
rel="nofollow">Page source</a>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
</body>
|
||
</html> |