<h1>C++ API Documentation<aclass="headerlink"href="#c-api-documentation"title="Permalink to this headline">¶</a></h1>
<p>Similar to the <aclass="reference internal"href="api_docs.html#c-api"><spanclass="std std-ref">C API Documentation</span></a>, the basic application workflow consist of</p>
<divclass="toctree-wrapper compound">
</div>
<ulclass="simple">
<li><p><aclass="reference internal"href="#cpp-init"><spanclass="std std-ref">Construction of the DCE</span></a></p></li>
<spanid="_CPPv310dce_config"></span><spanid="_CPPv210dce_config"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___i_n_i_t___d_t_e_1ga66d8d640adc724af2e6fe9dc7c051afa"></span><spanclass="k"><spanclass="pre">using</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">dce_config</span></span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">::</span></span><aclass="reference internal"href="api_docs.html#_CPPv420esp_modem_dce_config"title="esp_modem_dce_config"><spanclass="n"><spanclass="pre">esp_modem_dce_config</span></span></a><aclass="headerlink"href="#_CPPv410dce_config"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv310dte_config"></span><spanid="_CPPv210dte_config"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___i_n_i_t___d_t_e_1ga741a0f27d09386e4c8844076a8954ac1"></span><spanclass="k"><spanclass="pre">using</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">dte_config</span></span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">::</span></span><aclass="reference internal"href="api_docs.html#_CPPv420esp_modem_dte_config"title="esp_modem_dte_config"><spanclass="n"><spanclass="pre">esp_modem_dte_config</span></span></a><aclass="headerlink"href="#_CPPv410dte_config"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv315create_uart_dtePK10dte_config"></span><spanid="_CPPv215create_uart_dtePK10dte_config"></span><spanid="create_uart_dte__dte_configCP"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___i_n_i_t___d_t_e_1ga4a4f7f00866211c2d390fd3edb282531"></span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">shared_ptr</span></span><spanclass="p"><spanclass="pre"><</span></span><spanclass="n"><spanclass="pre">DTE</span></span><spanclass="p"><spanclass="pre">></span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">create_uart_dte</span></span></span><spanclass="sig-paren">(</span><spanclass="k"><spanclass="pre">const</span></span><spanclass="w"></span><aclass="reference internal"href="#_CPPv410dte_config"title="dte_config"><spanclass="n"><spanclass="pre">dte_config</span></span></a><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">config</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv415create_uart_dtePK10dte_config"title="Permalink to this definition">¶</a><br/></dt>
<ddclass="field-even"><p>shared ptr to <aclass="reference internal"href="internal_docs.html#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a> on success nullptr on failure (either due to insufficient memory or wrong dte configuration) if exceptions are disabled the API abort()’s on error </p>
<spanid="_CPPv314create_vfs_dtePK10dte_config"></span><spanid="_CPPv214create_vfs_dtePK10dte_config"></span><spanid="create_vfs_dte__dte_configCP"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___i_n_i_t___d_t_e_1ga5795216bc8c5a8a3c08e1008c7576253"></span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">shared_ptr</span></span><spanclass="p"><spanclass="pre"><</span></span><spanclass="n"><spanclass="pre">DTE</span></span><spanclass="p"><spanclass="pre">></span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">create_vfs_dte</span></span></span><spanclass="sig-paren">(</span><spanclass="k"><spanclass="pre">const</span></span><spanclass="w"></span><aclass="reference internal"href="#_CPPv410dte_config"title="dte_config"><spanclass="n"><spanclass="pre">dte_config</span></span></a><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">config</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv414create_vfs_dtePK10dte_config"title="Permalink to this definition">¶</a><br/></dt>
<ddclass="field-even"><p>shared ptr to <aclass="reference internal"href="internal_docs.html#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a> on success nullptr on failure (either due to insufficient memory or wrong dte configuration) if exceptions are disabled the API abort()’s on error </p>
<dd><p>ESP_MODEM Initialization API for <aclass="reference internal"href="internal_docs.html#classesp__modem_1_1_d_c_e"><spanclass="std std-ref">DCE</span></a>. </p>
<li><p><strong>dte</strong>– reference to the communicating <aclass="reference internal"href="internal_docs.html#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a></p></li>
<li><p><strong>netif</strong>– reference to the network interface</p></li>
<ddclass="field-even"><p>unique ptr to the created <aclass="reference internal"href="internal_docs.html#classesp__modem_1_1_d_c_e"><spanclass="std std-ref">DCE</span></a> on success nullptr on failure if exceptions are disabled the API abort()’s on error </p>
<spanid="cpp-mode-switch"></span><h2>Mode switching commands<aclass="headerlink"href="#mode-switching-commands"title="Permalink to this headline">¶</a></h2>
<spanid="_CPPv3I0EN9esp_modem5DCE_TE"></span><spanid="_CPPv2I0EN9esp_modem5DCE_TE"></span><spanclass="k"><spanclass="pre">template</span></span><spanclass="p"><spanclass="pre"><</span></span><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">SpecificModule</span></span></span><spanclass="p"><spanclass="pre">></span></span><br/><spanclass="target"id="classesp__modem_1_1_d_c_e___t"></span><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span><spanclass="sig-prename descclassname"><spanclass="n"><spanclass="pre">esp_modem</span></span><spanclass="p"><spanclass="pre">::</span></span></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">DCE_T</span></span></span><aclass="headerlink"href="#_CPPv4I0EN9esp_modem5DCE_TE"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>General <aclass="reference internal"href="internal_docs.html#classesp__modem_1_1_d_c_e"><spanclass="std std-ref">DCE</span></a> class templated on a specific module. It is responsible for all the necessary transactions related to switching modes and consequent synergy with aggregated objects of <aclass="reference internal"href="internal_docs.html#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a>, <aclass="reference internal"href="internal_docs.html#classesp__modem_1_1_netif"><spanclass="std std-ref">Netif</span></a> and a specific Module. </p>
<spanid="_CPPv3N9esp_modem5DCE_T8set_dataEv"></span><spanid="_CPPv2N9esp_modem5DCE_T8set_dataEv"></span><spanid="esp_modem::DCE_T::set_data"></span><spanclass="target"id="classesp__modem_1_1_d_c_e___t_1a0f41a6dbf86ff8058cb3ef727cefdc5f"></span><spanclass="k"><spanclass="pre">inline</span></span><spanclass="w"></span><spanclass="kt"><spanclass="pre">void</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_data</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem5DCE_T8set_dataEv"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Set data mode! </p>
</dd></dl>
</div>
</dd></dl>
</section>
<sectionid="modem-commands">
<spanid="cpp-modem-commands"></span><h2>Modem commands<aclass="headerlink"href="#modem-commands"title="Permalink to this headline">¶</a></h2>
<spanid="cpp-destroy"></span><h2>Destroy the DCE<aclass="headerlink"href="#destroy-the-dce"title="Permalink to this headline">¶</a></h2>
<p>The DCE object is created as <codeclass="docutils literal notranslate"><spanclass="pre">std::unique_ptr</span></code> by default and as such doesn’t have to be explicitly destroyed.
It simply gets destroyed and cleaned-up automatically if the object goes out of the block scope.</p>