<h1>DCE Internal implementation<aclass="headerlink"href="#dce-internal-implementation"title="Permalink to this headline">¶</a></h1>
<p>This chapter provides a detailed description of the classes and building blocks of the esp-modem component and their responsibilities.</p>
<p>The esp-modem actually implements the DCE class, which in turn aggregates these thee units:</p>
<ulclass="simple">
<li><p><aclass="reference internal"href="#dte-impl"><spanclass="std std-ref">DTE</span></a> to communicate with the device on a specific Terminal interface such as UART.</p></li>
<li><p><aclass="reference internal"href="#netif-impl"><spanclass="std std-ref">Netif</span></a> to provide the network connectivity</p></li>
<li><p><aclass="reference internal"href="#module-impl"><spanclass="std std-ref">Module</span></a> to define the specific command library</p></li>
</ul>
<p>Developers would typically have to</p>
<ulclass="simple">
<li><p>Add support for a new module</p></li>
<li><p>Implement a generic (common for all modules) AT command</p></li>
</ul>
<p>This is explained in the <aclass="reference internal"href="#module-impl"><spanclass="std std-ref">Module</span></a> section, as <aclass="reference internal"href="#module-addition"><spanclass="std std-ref">Adding new module or command</span></a></p>
<spanid="_CPPv3N9esp_modem8DCE_ModeE"></span><spanid="_CPPv2N9esp_modem8DCE_ModeE"></span><spanid="esp_modem::DCE_Mode"></span><spanclass="target"id="classesp__modem_1_1_d_c_e___mode"></span><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">DCE_Mode</span></span></span><aclass="headerlink"href="#_CPPv4N9esp_modem8DCE_ModeE"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_dce.hpp></em><p>Helper class responsible for switching modes of the <aclass="reference internal"href="#classesp__modem_1_1_d_c_e"><spanclass="std std-ref">DCE</span></a>’s. </p>
<dd><em>#include <esp_modem_dce.hpp></em><p>General <aclass="reference internal"href="#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="#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a>, <aclass="reference internal"href="#classesp__modem_1_1_netif"><spanclass="std std-ref">Netif</span></a> and a specific Module. </p>
<spanid="_CPPv3N9esp_modem3DCEE"></span><spanid="_CPPv2N9esp_modem3DCEE"></span><spanid="esp_modem::DCE"></span><spanclass="target"id="classesp__modem_1_1_d_c_e"></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</span></span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">public</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">esp_modem</span></span><spanclass="p"><spanclass="pre">::</span></span><aclass="reference internal"href="cxx_api_docs.html#_CPPv4I0EN9esp_modem5DCE_TE"title="esp_modem::DCE_T"><spanclass="n"><spanclass="pre">DCE_T</span></span></a><spanclass="p"><spanclass="pre"><</span></span><aclass="reference internal"href="#_CPPv4N9esp_modem13GenericModuleE"title="esp_modem::GenericModule"><spanclass="n"><spanclass="pre">GenericModule</span></span></a><spanclass="p"><spanclass="pre">></span></span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCEE"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_dce.hpp></em><p>Common abstraction of the modem <aclass="reference internal"href="#classesp__modem_1_1_d_c_e"><spanclass="std std-ref">DCE</span></a>, specialized by the <aclass="reference internal"href="#classesp__modem_1_1_generic_module"><spanclass="std std-ref">GenericModule</span></a> which is a parent class for the supported devices and most common modems, as well. </p>
<spanid="_CPPv3N9esp_modem3DCE4syncEv"></span><spanid="_CPPv2N9esp_modem3DCE4syncEv"></span><spanid="esp_modem::DCE::sync"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1ab46b147d37e882c18cdaec7527b82e99"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">sync</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE4syncEv"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Sends the initial AT sequence to sync up with the device. </p>
<spanid="_CPPv3N9esp_modem3DCE17get_operator_nameERNSt6stringE"></span><spanid="_CPPv2N9esp_modem3DCE17get_operator_nameERNSt6stringE"></span><spanid="esp_modem::DCE::get_operator_name__ssR"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1aa05c40e6c6559f23de1d3905e63e0197"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">get_operator_name</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">string</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">&</span></span><spanclass="n sig-param"><spanclass="pre">name</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE17get_operator_nameERNSt6stringE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE13store_profileEv"></span><spanid="_CPPv2N9esp_modem3DCE13store_profileEv"></span><spanid="esp_modem::DCE::store_profile"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a82c8adc3a6d48f7a10a637d0feb90bac"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">store_profile</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE13store_profileEv"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE7set_pinERKNSt6stringE"></span><spanid="_CPPv2N9esp_modem3DCE7set_pinERKNSt6stringE"></span><spanid="esp_modem::DCE::set_pin__ssCR"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1aa45248169c7ab1979fca17035db57062"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_pin</span></span></span><spanclass="sig-paren">(</span><spanclass="k"><spanclass="pre">const</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">string</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">&</span></span><spanclass="n sig-param"><spanclass="pre">pin</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE7set_pinERKNSt6stringE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE8read_pinERb"></span><spanid="_CPPv2N9esp_modem3DCE8read_pinERb"></span><spanid="esp_modem::DCE::read_pin__bR"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a9055f8d714ba23adba7be5acf58f8136"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">read_pin</span></span></span><spanclass="sig-paren">(</span><spanclass="kt"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">&</span></span><spanclass="n sig-param"><spanclass="pre">pin_ok</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE8read_pinERb"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE8set_echoEKb"></span><spanid="_CPPv2N9esp_modem3DCE8set_echoEKb"></span><spanid="esp_modem::DCE::set_echo__bC"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1afe90115748d693a13cf9184d2280b0db"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_echo</span></span></span><spanclass="sig-paren">(</span><spanclass="k"><spanclass="pre">const</span></span><spanclass="w"></span><spanclass="kt"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">echo_on</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE8set_echoEKb"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE12sms_txt_modeEKb"></span><spanid="_CPPv2N9esp_modem3DCE12sms_txt_modeEKb"></span><spanid="esp_modem::DCE::sms_txt_mode__bC"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a016f25608788ab1487bb062c109dc046"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">sms_txt_mode</span></span></span><spanclass="sig-paren">(</span><spanclass="k"><spanclass="pre">const</span></span><spanclass="w"></span><spanclass="kt"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">txt</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE12sms_txt_modeEKb"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Sets the Txt or Pdu mode for SMS (only txt is supported) </p>
<spanid="_CPPv3N9esp_modem3DCE17sms_character_setEv"></span><spanid="_CPPv2N9esp_modem3DCE17sms_character_setEv"></span><spanid="esp_modem::DCE::sms_character_set"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a3b4b1fc2126e0d5c7926f87a64bac37d"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">sms_character_set</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE17sms_character_setEv"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE8send_smsERKNSt6stringERKNSt6stringE"></span><spanid="_CPPv2N9esp_modem3DCE8send_smsERKNSt6stringERKNSt6stringE"></span><spanid="esp_modem::DCE::send_sms__ssCR.ssCR"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1ae33cfaae15a74414039d4c8a865dded3"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">send_sms</span></span></span><spanclass="sig-paren">(</span><spanclass="k"><spanclass="pre">const</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">string</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">&</span></span><spanclass="n sig-param"><spanclass="pre">number</span></span>, <spanclass="k"><spanclass="pre">const</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">string</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">&</span></span><spanclass="n sig-param"><spanclass="pre">message</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE8send_smsERKNSt6stringERKNSt6stringE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE16resume_data_modeEv"></span><spanid="_CPPv2N9esp_modem3DCE16resume_data_modeEv"></span><spanid="esp_modem::DCE::resume_data_mode"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1aa136b9f3d9ada787535f6df8ed81be0f"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">resume_data_mode</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE16resume_data_modeEv"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Resumes data mode (Switches back to th data mode, which was temporarily suspended) </p>
<spanid="_CPPv3N9esp_modem3DCE15set_pdp_contextER10PdpContext"></span><spanid="_CPPv2N9esp_modem3DCE15set_pdp_contextER10PdpContext"></span><spanid="esp_modem::DCE::set_pdp_context__PdpContextR"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a9e58a4197f2b8d34be49dc1b6505f55f"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_pdp_context</span></span></span><spanclass="sig-paren">(</span><aclass="reference internal"href="#_CPPv4N9esp_modem10PdpContextE"title="esp_modem::PdpContext"><spanclass="n"><spanclass="pre">PdpContext</span></span></a><spanclass="w"></span><spanclass="p"><spanclass="pre">&</span></span><spanclass="n sig-param"><spanclass="pre">p1</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE15set_pdp_contextER10PdpContext"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE16set_command_modeEv"></span><spanid="_CPPv2N9esp_modem3DCE16set_command_modeEv"></span><spanid="esp_modem::DCE::set_command_mode"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a4118fbfe223e9aef81aa083c993f4277"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_command_mode</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE16set_command_modeEv"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE8set_cmuxEv"></span><spanid="_CPPv2N9esp_modem3DCE8set_cmuxEv"></span><spanid="esp_modem::DCE::set_cmux"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a2ce1f9df5431f7c6f9c76e38929a866a"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_cmux</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE8set_cmuxEv"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE8get_imsiERNSt6stringE"></span><spanid="_CPPv2N9esp_modem3DCE8get_imsiERNSt6stringE"></span><spanid="esp_modem::DCE::get_imsi__ssR"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1ab03c9675819fe550b174a1f40a122b0a"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">get_imsi</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">string</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">&</span></span><spanclass="n sig-param"><spanclass="pre">imsi</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE8get_imsiERNSt6stringE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE8get_imeiERNSt6stringE"></span><spanid="_CPPv2N9esp_modem3DCE8get_imeiERNSt6stringE"></span><spanid="esp_modem::DCE::get_imei__ssR"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1abc0e081ce74bc4f20e4699faaa674966"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">get_imei</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">string</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">&</span></span><spanclass="n sig-param"><spanclass="pre">imei</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE8get_imeiERNSt6stringE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE15get_module_nameERNSt6stringE"></span><spanid="_CPPv2N9esp_modem3DCE15get_module_nameERNSt6stringE"></span><spanid="esp_modem::DCE::get_module_name__ssR"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1af5763fd6bcdea19f4bca750d387f45c0"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">get_module_name</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">string</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">&</span></span><spanclass="n sig-param"><spanclass="pre">name</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE15get_module_nameERNSt6stringE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE13set_data_modeEv"></span><spanid="_CPPv2N9esp_modem3DCE13set_data_modeEv"></span><spanid="esp_modem::DCE::set_data_mode"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a2efaf3c37dbc8e6f0d5b27552e8522b6"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_data_mode</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE13set_data_modeEv"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE18get_signal_qualityERiRi"></span><spanid="_CPPv2N9esp_modem3DCE18get_signal_qualityERiRi"></span><spanid="esp_modem::DCE::get_signal_quality__iR.iR"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1ad55babb50dc8394420c9ca2fc1282b4e"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">get_signal_quality</span></span></span><spanclass="sig-paren">(</span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">&</span></span><spanclass="n sig-param"><spanclass="pre">rssi</span></span>, <spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">&</span></span><spanclass="n sig-param"><spanclass="pre">ber</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE18get_signal_qualityERiRi"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE16set_flow_controlEii"></span><spanid="_CPPv2N9esp_modem3DCE16set_flow_controlEii"></span><spanid="esp_modem::DCE::set_flow_control__i.i"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a23effa5d3b7f650b7a7874651d16bb42"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_flow_control</span></span></span><spanclass="sig-paren">(</span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">dce_flow</span></span>, <spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">dte_flow</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE16set_flow_controlEii"title="Permalink to this definition">¶</a><br/></dt>
<li><p><strong>dce_flow</strong>–<strong>[in]</strong> 0=none, 2=RTS hw flow control of <aclass="reference internal"href="#classesp__modem_1_1_d_c_e"><spanclass="std std-ref">DCE</span></a></p></li>
<li><p><strong>dte_flow</strong>–<strong>[in]</strong> 0=none, 2=CTS hw flow control of <aclass="reference internal"href="#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a></p></li>
<spanid="_CPPv3N9esp_modem3DCE7hang_upEv"></span><spanid="_CPPv2N9esp_modem3DCE7hang_upEv"></span><spanid="esp_modem::DCE::hang_up"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a34b9ac1588b27849f0d1b06ffdc61354"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">hang_up</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE7hang_upEv"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE10power_downEv"></span><spanid="_CPPv2N9esp_modem3DCE10power_downEv"></span><spanid="esp_modem::DCE::power_down"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a0712ea72939e6b864b22f34c441ac950"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">power_down</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE10power_downEv"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE5resetEv"></span><spanid="_CPPv2N9esp_modem3DCE5resetEv"></span><spanid="esp_modem::DCE::reset"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a8dac3544f73414b1df69040542451c79"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">reset</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE5resetEv"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DCE8set_baudEi"></span><spanid="_CPPv2N9esp_modem3DCE8set_baudEi"></span><spanid="esp_modem::DCE::set_baud__i"></span><spanclass="target"id="classesp__modem_1_1_d_c_e_1a579851a45d862c4400a68183efdd1c7f"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_baud</span></span></span><spanclass="sig-paren">(</span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">baud</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DCE8set_baudEi"title="Permalink to this definition">¶</a><br/></dt>
<ddclass="field-odd"><p><strong>baud</strong>–<strong>[in]</strong> Desired baud rate of the <aclass="reference internal"href="#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a></p>
<spanid="_CPPv3N9esp_modem3DTEE"></span><spanid="_CPPv2N9esp_modem3DTEE"></span><spanid="esp_modem::DTE"></span><spanclass="target"id="classesp__modem_1_1_d_t_e"></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">DTE</span></span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">public</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">esp_modem</span></span><spanclass="p"><spanclass="pre">::</span></span><aclass="reference internal"href="#_CPPv4N9esp_modem13CommandableIfE"title="esp_modem::CommandableIf"><spanclass="n"><spanclass="pre">CommandableIf</span></span></a><aclass="headerlink"href="#_CPPv4N9esp_modem3DTEE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DTE3DTEEPK20esp_modem_dte_configNSt10unique_ptrI8TerminalEE"></span><spanid="_CPPv2N9esp_modem3DTE3DTEEPK20esp_modem_dte_configNSt10unique_ptrI8TerminalEE"></span><spanid="esp_modem::DTE::DTE__esp_modem_dte_configCP.std::unique_ptr:Terminal:"></span><spanclass="target"id="classesp__modem_1_1_d_t_e_1abcf1d191be79fc6a993077d52203122c"></span><spanclass="k"><spanclass="pre">explicit</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">DTE</span></span></span><spanclass="sig-paren">(</span><spanclass="k"><spanclass="pre">const</span></span><spanclass="w"></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><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">config</span></span>, <spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">unique_ptr</span></span><spanclass="p"><spanclass="pre"><</span></span><aclass="reference internal"href="#_CPPv4N9esp_modem8TerminalE"title="esp_modem::Terminal"><spanclass="n"><spanclass="pre">Terminal</span></span></a><spanclass="p"><spanclass="pre">></span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">t</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DTE3DTEEPK20esp_modem_dte_configNSt10unique_ptrI8TerminalEE"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Creates a <aclass="reference internal"href="#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a> instance from the terminal. </p>
<spanid="_CPPv3N9esp_modem3DTE5writeEP7uint8_t6size_t"></span><spanid="_CPPv2N9esp_modem3DTE5writeEP7uint8_t6size_t"></span><spanid="esp_modem::DTE::write__uint8_tP.s"></span><spanclass="target"id="classesp__modem_1_1_d_t_e_1a51c11d82d5dec6c502d2f32ffc96d928"></span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">write</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">uint8_t</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">data</span></span>, <spanclass="n"><spanclass="pre">size_t</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">len</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DTE5writeEP7uint8_t6size_t"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DTE4readEPP7uint8_t6size_t"></span><spanid="_CPPv2N9esp_modem3DTE4readEPP7uint8_t6size_t"></span><spanid="esp_modem::DTE::read__uint8_tPP.s"></span><spanclass="target"id="classesp__modem_1_1_d_t_e_1a9cf529ece97b282ce02b00c0f4720868"></span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">read</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">uint8_t</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">d</span></span>, <spanclass="n"><spanclass="pre">size_t</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">len</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DTE4readEPP7uint8_t6size_t"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem3DTE11set_read_cbENSt8functionIFbP7uint8_t6size_tEEE"></span><spanid="_CPPv2N9esp_modem3DTE11set_read_cbENSt8functionIFbP7uint8_t6size_tEEE"></span><spanclass="target"id="classesp__modem_1_1_d_t_e_1a956860c6925bddbd89aa0c7e3121eaa3"></span><spanclass="kt"><spanclass="pre">void</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_read_cb</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">function</span></span><spanclass="p"><spanclass="pre"><</span></span><spanclass="kt"><spanclass="pre">bool</span></span><spanclass="p"><spanclass="pre">(</span></span><spanclass="n"><spanclass="pre">uint8_t</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">data</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">size_t</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">len</span></span><spanclass="p"><spanclass="pre">)</span></span><spanclass="p"><spanclass="pre">></span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">f</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DTE11set_read_cbENSt8functionIFbP7uint8_t6size_tEEE"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Sets read callback with valid data and length. </p>
<spanid="_CPPv3N9esp_modem3DTE8set_modeE10modem_mode"></span><spanid="_CPPv2N9esp_modem3DTE8set_modeE10modem_mode"></span><spanid="esp_modem::DTE::set_mode__modem_mode"></span><spanclass="target"id="classesp__modem_1_1_d_t_e_1af832ec4696cd797148edbedd7e95fa5e"></span><spanclass="kt"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_mode</span></span></span><spanclass="sig-paren">(</span><aclass="reference internal"href="#_CPPv410modem_mode"title="modem_mode"><spanclass="n"><spanclass="pre">modem_mode</span></span></a><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">m</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem3DTE8set_modeE10modem_mode"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Sets the <aclass="reference internal"href="#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a> to desired mode (Command/Data/Cmux) </p>
<dd><p>Definition of an abstract terminal to be attached to <aclass="reference internal"href="#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a> class. </p>
<spanid="_CPPv314terminal_error"></span><spanid="_CPPv214terminal_error"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_e_r_m_i_n_a_l_1ga9e2467aa5656f359e3dbcc33b28416ea"></span><spanclass="k"><spanclass="pre">enum</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">terminal_error</span></span></span><aclass="headerlink"href="#_CPPv414terminal_error"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N14terminal_error15BUFFER_OVERFLOWE"></span><spanid="_CPPv2N14terminal_error15BUFFER_OVERFLOWE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_e_r_m_i_n_a_l_1gga9e2467aa5656f359e3dbcc33b28416eaad53c9f7d5b985bba6cb80cdf8ae665e4"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">BUFFER_OVERFLOW</span></span></span><aclass="headerlink"href="#_CPPv4N14terminal_error15BUFFER_OVERFLOWE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N14terminal_error14CHECKSUM_ERRORE"></span><spanid="_CPPv2N14terminal_error14CHECKSUM_ERRORE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_e_r_m_i_n_a_l_1gga9e2467aa5656f359e3dbcc33b28416eaaf96d2aa84f64782fa7aa5d396090993a"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">CHECKSUM_ERROR</span></span></span><aclass="headerlink"href="#_CPPv4N14terminal_error14CHECKSUM_ERRORE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N14terminal_error23UNEXPECTED_CONTROL_FLOWE"></span><spanid="_CPPv2N14terminal_error23UNEXPECTED_CONTROL_FLOWE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_e_r_m_i_n_a_l_1gga9e2467aa5656f359e3dbcc33b28416eaa790564696e07d778cd6640e2617c18d5"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">UNEXPECTED_CONTROL_FLOW</span></span></span><aclass="headerlink"href="#_CPPv4N14terminal_error23UNEXPECTED_CONTROL_FLOWE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem8TerminalE"></span><spanid="_CPPv2N9esp_modem8TerminalE"></span><spanid="esp_modem::Terminal"></span><spanclass="target"id="classesp__modem_1_1_terminal"></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">Terminal</span></span></span><aclass="headerlink"href="#_CPPv4N9esp_modem8TerminalE"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_terminal.hpp></em><p><aclass="reference internal"href="#classesp__modem_1_1_terminal"><spanclass="std std-ref">Terminal</span></a> interface. All communication interfaces must comply to this interface in order to be used as a <aclass="reference internal"href="#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a>. </p>
<p>Subclassed by <aclass="reference internal"href="#classesp__modem_1_1_c_mux_instance"><spanclass="std std-ref">esp_modem::CMuxInstance</span></a></p>
<spanid="_CPPv3N9esp_modem8Terminal5writeEP7uint8_t6size_t"></span><spanid="_CPPv2N9esp_modem8Terminal5writeEP7uint8_t6size_t"></span><spanid="esp_modem::Terminal::write__uint8_tP.s"></span><spanclass="target"id="classesp__modem_1_1_terminal_1aaa6b8fe3a2336b8369740e7ca4aeae00"></span><spanclass="k"><spanclass="pre">virtual</span></span><spanclass="w"></span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">write</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">uint8_t</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">data</span></span>, <spanclass="n"><spanclass="pre">size_t</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">len</span></span><spanclass="sig-paren">)</span><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="m"><spanclass="pre">0</span></span><aclass="headerlink"href="#_CPPv4N9esp_modem8Terminal5writeEP7uint8_t6size_t"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem8Terminal4readEP7uint8_t6size_t"></span><spanid="_CPPv2N9esp_modem8Terminal4readEP7uint8_t6size_t"></span><spanid="esp_modem::Terminal::read__uint8_tP.s"></span><spanclass="target"id="classesp__modem_1_1_terminal_1a66e832c319e7c8f523043a04d4972a31"></span><spanclass="k"><spanclass="pre">virtual</span></span><spanclass="w"></span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">read</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">uint8_t</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">data</span></span>, <spanclass="n"><spanclass="pre">size_t</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">len</span></span><spanclass="sig-paren">)</span><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="m"><spanclass="pre">0</span></span><aclass="headerlink"href="#_CPPv4N9esp_modem8Terminal4readEP7uint8_t6size_t"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Read from the terminal. This function doesn’t block, but return all available data. </p>
<spanid="_CPPv310cmux_state"></span><spanid="_CPPv210cmux_state"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___c_m_u_x_1gaed095049f722d0a7b9bcc1e545279627"></span><spanclass="k"><spanclass="pre">enum</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">cmux_state</span></span></span><aclass="headerlink"href="#_CPPv410cmux_state"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N10cmux_state4INITE"></span><spanid="_CPPv2N10cmux_state4INITE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___c_m_u_x_1ggaed095049f722d0a7b9bcc1e545279627afaee4ca3c30ee18148ce3ada37466498"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">INIT</span></span></span><aclass="headerlink"href="#_CPPv4N10cmux_state4INITE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N10cmux_state6HEADERE"></span><spanid="_CPPv2N10cmux_state6HEADERE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___c_m_u_x_1ggaed095049f722d0a7b9bcc1e545279627a7ad4905b4543ab4a1637dd23c50e36ce"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">HEADER</span></span></span><aclass="headerlink"href="#_CPPv4N10cmux_state6HEADERE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N10cmux_state7PAYLOADE"></span><spanid="_CPPv2N10cmux_state7PAYLOADE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___c_m_u_x_1ggaed095049f722d0a7b9bcc1e545279627aca8fef80e43c8db749b7c9406d535b1a"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">PAYLOAD</span></span></span><aclass="headerlink"href="#_CPPv4N10cmux_state7PAYLOADE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N10cmux_state6FOOTERE"></span><spanid="_CPPv2N10cmux_state6FOOTERE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___c_m_u_x_1ggaed095049f722d0a7b9bcc1e545279627a126ad83a6c76b6a5f45c0dd3ee780082"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">FOOTER</span></span></span><aclass="headerlink"href="#_CPPv4N10cmux_state6FOOTERE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N10cmux_state7RECOVERE"></span><spanid="_CPPv2N10cmux_state7RECOVERE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___c_m_u_x_1ggaed095049f722d0a7b9bcc1e545279627aea625ca593694ee20079bd188f84fa29"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">RECOVER</span></span></span><aclass="headerlink"href="#_CPPv4N10cmux_state7RECOVERE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem4CMuxE"></span><spanid="_CPPv2N9esp_modem4CMuxE"></span><spanid="esp_modem::CMux"></span><spanclass="target"id="classesp__modem_1_1_c_mux"></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">CMux</span></span></span><aclass="headerlink"href="#_CPPv4N9esp_modem4CMuxE"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_cmux.hpp></em><p><aclass="reference internal"href="#classesp__modem_1_1_c_mux"><spanclass="std std-ref">CMux</span></a> class which consumes the original terminal and creates multiple virtual terminals from it. This class itself is not usable as a <aclass="reference internal"href="#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a> terminal, only via its instances defined in <codeclass="docutils literal notranslate"><aclass="reference internal"href="#classesp__modem_1_1_c_mux_instance"><spanclass="std std-ref"><spanclass="pre">CMuxInstance</span></span></a></code></p>
<spanid="_CPPv3N9esp_modem4CMux4initEv"></span><spanid="_CPPv2N9esp_modem4CMux4initEv"></span><spanid="esp_modem::CMux::init"></span><spanclass="target"id="classesp__modem_1_1_c_mux_1ace5f9a7649c59f1e1f96cf2dfe15974b"></span><spanclass="kt"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">init</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem4CMux4initEv"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem4CMux11set_read_cbEiNSt8functionIFbP7uint8_t6size_tEEE"></span><spanid="_CPPv2N9esp_modem4CMux11set_read_cbEiNSt8functionIFbP7uint8_t6size_tEEE"></span><spanclass="target"id="classesp__modem_1_1_c_mux_1aba3d6829a8c936013d71e81f24f80054"></span><spanclass="kt"><spanclass="pre">void</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_read_cb</span></span></span><spanclass="sig-paren">(</span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">inst</span></span>, <spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">function</span></span><spanclass="p"><spanclass="pre"><</span></span><spanclass="kt"><spanclass="pre">bool</span></span><spanclass="p"><spanclass="pre">(</span></span><spanclass="n"><spanclass="pre">uint8_t</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">data</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">size_t</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">len</span></span><spanclass="p"><spanclass="pre">)</span></span><spanclass="p"><spanclass="pre">></span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">f</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem4CMux11set_read_cbEiNSt8functionIFbP7uint8_t6size_tEEE"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Sets read callback for the appropriate terminal. </p>
<spanid="_CPPv3N9esp_modem4CMux5writeEiP7uint8_t6size_t"></span><spanid="_CPPv2N9esp_modem4CMux5writeEiP7uint8_t6size_t"></span><spanid="esp_modem::CMux::write__i.uint8_tP.s"></span><spanclass="target"id="classesp__modem_1_1_c_mux_1ac3362af09a829ae5001c8667da418f9d"></span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">write</span></span></span><spanclass="sig-paren">(</span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">i</span></span>, <spanclass="n"><spanclass="pre">uint8_t</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">data</span></span>, <spanclass="n"><spanclass="pre">size_t</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">len</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem4CMux5writeEiP7uint8_t6size_t"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem12CMuxInstanceE"></span><spanid="_CPPv2N9esp_modem12CMuxInstanceE"></span><spanid="esp_modem::CMuxInstance"></span><spanclass="target"id="classesp__modem_1_1_c_mux_instance"></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">CMuxInstance</span></span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">public</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">esp_modem</span></span><spanclass="p"><spanclass="pre">::</span></span><aclass="reference internal"href="#_CPPv4N9esp_modem8TerminalE"title="esp_modem::Terminal"><spanclass="n"><spanclass="pre">Terminal</span></span></a><aclass="headerlink"href="#_CPPv4N9esp_modem12CMuxInstanceE"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_cmux.hpp></em><p>This represents a specific instance of a CMUX virtual terminal. This class also implements <aclass="reference internal"href="#classesp__modem_1_1_terminal"><spanclass="std std-ref">Terminal</span></a> interface and as such could be used as a <aclass="reference internal"href="#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a>’s terminal. </p>
<spanid="_CPPv3N9esp_modem12CMuxInstance5writeEP7uint8_t6size_t"></span><spanid="_CPPv2N9esp_modem12CMuxInstance5writeEP7uint8_t6size_t"></span><spanid="esp_modem::CMuxInstance::write__uint8_tP.s"></span><spanclass="target"id="classesp__modem_1_1_c_mux_instance_1a439640b744fbc33d6ae559c3b8dc2cf6"></span><spanclass="k"><spanclass="pre">inline</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">virtual</span></span><spanclass="w"></span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">write</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">uint8_t</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">data</span></span>, <spanclass="n"><spanclass="pre">size_t</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">len</span></span><spanclass="sig-paren">)</span><spanclass="w"></span><spanclass="k"><spanclass="pre">override</span></span><aclass="headerlink"href="#_CPPv4N9esp_modem12CMuxInstance5writeEP7uint8_t6size_t"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem12CMuxInstance4readEP7uint8_t6size_t"></span><spanid="_CPPv2N9esp_modem12CMuxInstance4readEP7uint8_t6size_t"></span><spanid="esp_modem::CMuxInstance::read__uint8_tP.s"></span><spanclass="target"id="classesp__modem_1_1_c_mux_instance_1ae460145a1298c8afeee0583cdc765bb7"></span><spanclass="k"><spanclass="pre">inline</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">virtual</span></span><spanclass="w"></span><spanclass="kt"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">read</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">uint8_t</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">data</span></span>, <spanclass="n"><spanclass="pre">size_t</span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">len</span></span><spanclass="sig-paren">)</span><spanclass="w"></span><spanclass="k"><spanclass="pre">override</span></span><aclass="headerlink"href="#_CPPv4N9esp_modem12CMuxInstance4readEP7uint8_t6size_t"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Read from the terminal. This function doesn’t block, but return all available data. </p>
<spanid="_CPPv3N9esp_modem5NetifE"></span><spanid="_CPPv2N9esp_modem5NetifE"></span><spanid="esp_modem::Netif"></span><spanclass="target"id="classesp__modem_1_1_netif"></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">Netif</span></span></span><aclass="headerlink"href="#_CPPv4N9esp_modem5NetifE"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_netif.hpp></em><p>Network interface class responsible to glue the esp-netif to the modem’s <aclass="reference internal"href="#classesp__modem_1_1_d_c_e"><spanclass="std std-ref">DCE</span></a>. </p>
<spanid="_CPPv3N9esp_modem5Netif5startEv"></span><spanid="_CPPv2N9esp_modem5Netif5startEv"></span><spanid="esp_modem::Netif::start"></span><spanclass="target"id="classesp__modem_1_1_netif_1a034151f6cef0477da008e1e24d7839cd"></span><spanclass="kt"><spanclass="pre">void</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">start</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem5Netif5startEv"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N9esp_modem5Netif20wait_until_ppp_exitsEv"></span><spanid="_CPPv2N9esp_modem5Netif20wait_until_ppp_exitsEv"></span><spanid="esp_modem::Netif::wait_until_ppp_exits"></span><spanclass="target"id="classesp__modem_1_1_netif_1a51d39473a7cbdb70b0a6586d04ce3db3"></span><spanclass="kt"><spanclass="pre">void</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">wait_until_ppp_exits</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem5Netif20wait_until_ppp_exitsEv"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Blocks until the network interface closes. </p>
<spanid="_CPPv3N9esp_modem5Netif4stopEv"></span><spanid="_CPPv2N9esp_modem5Netif4stopEv"></span><spanid="esp_modem::Netif::stop"></span><spanclass="target"id="classesp__modem_1_1_netif_1a56d545c5e9f3e9177ebc6a6cc73928d0"></span><spanclass="kt"><spanclass="pre">void</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">stop</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem5Netif4stopEv"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Stop the network interface. </p>
</dd></dl>
</div>
</dd></dl>
</dd></dl>
</section>
<sectionid="module-abstraction">
<spanid="module-impl"></span><h2>Module abstraction<aclass="headerlink"href="#module-abstraction"title="Permalink to this headline">¶</a></h2>
<spanid="_CPPv3N9esp_modem13GenericModuleE"></span><spanid="_CPPv2N9esp_modem13GenericModuleE"></span><spanid="esp_modem::GenericModule"></span><spanclass="target"id="classesp__modem_1_1_generic_module"></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">GenericModule</span></span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">public</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">esp_modem</span></span><spanclass="p"><spanclass="pre">::</span></span><aclass="reference internal"href="#_CPPv4N9esp_modem8ModuleIfE"title="esp_modem::ModuleIf"><spanclass="n"><spanclass="pre">ModuleIf</span></span></a><aclass="headerlink"href="#_CPPv4N9esp_modem13GenericModuleE"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_dce_module.hpp></em><p>This is a basic building block for custom modules as well as for the supported modules in the esp-modem component It derives from the <aclass="reference internal"href="#classesp__modem_1_1_module_if"><spanclass="std std-ref">ModuleIf</span></a>. </p>
<spanid="_CPPv3N9esp_modem13GenericModule13GenericModuleENSt10shared_ptrI3DTEEENSt10unique_ptrI10PdpContextEE"></span><spanid="_CPPv2N9esp_modem13GenericModule13GenericModuleENSt10shared_ptrI3DTEEENSt10unique_ptrI10PdpContextEE"></span><spanid="esp_modem::GenericModule::GenericModule__std::shared_ptr:DTE:.std::unique_ptr:PdpContext:"></span><spanclass="target"id="classesp__modem_1_1_generic_module_1a8fc8100cef97138313584368182404c4"></span><spanclass="k"><spanclass="pre">inline</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">explicit</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">GenericModule</span></span></span><spanclass="sig-paren">(</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><aclass="reference internal"href="#_CPPv4N9esp_modem3DTEE"title="esp_modem::DTE"><spanclass="n"><spanclass="pre">DTE</span></span></a><spanclass="p"><spanclass="pre">></span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">dte</span></span>, <spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">unique_ptr</span></span><spanclass="p"><spanclass="pre"><</span></span><aclass="reference internal"href="#_CPPv4N9esp_modem10PdpContextE"title="esp_modem::PdpContext"><spanclass="n"><spanclass="pre">PdpContext</span></span></a><spanclass="p"><spanclass="pre">></span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">pdp</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem13GenericModule13GenericModuleENSt10shared_ptrI3DTEEENSt10unique_ptrI10PdpContextEE"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>We can construct a generic device with an existent <aclass="reference internal"href="#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">DTE</span></a> and it’s configuration The configuration could be either the dce-config struct or just a pdp context. </p>
<spanid="_CPPv3N9esp_modem13GenericModule15setup_data_modeEv"></span><spanid="_CPPv2N9esp_modem13GenericModule15setup_data_modeEv"></span><spanid="esp_modem::GenericModule::setup_data_mode"></span><spanclass="target"id="classesp__modem_1_1_generic_module_1a36987c1e3aa36ac5d3b6d06a1e73b821"></span><spanclass="k"><spanclass="pre">inline</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">virtual</span></span><spanclass="w"></span><spanclass="kt"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">setup_data_mode</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><spanclass="w"></span><spanclass="k"><spanclass="pre">override</span></span><aclass="headerlink"href="#_CPPv4N9esp_modem13GenericModule15setup_data_modeEv"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>This is a mandatory method for <aclass="reference internal"href="#classesp__modem_1_1_module_if"><spanclass="std std-ref">ModuleIf</span></a> class, which sets up the device to be able to connect to the network. This typically consists of setting basic communication parameters and setting the PDP (defining logical access point to cellular network) </p>
<spanid="_CPPv3N9esp_modem13GenericModule8set_modeE10modem_mode"></span><spanid="_CPPv2N9esp_modem13GenericModule8set_modeE10modem_mode"></span><spanid="esp_modem::GenericModule::set_mode__modem_mode"></span><spanclass="target"id="classesp__modem_1_1_generic_module_1ae5a7b637303143a87f654e9e5c6f6611"></span><spanclass="k"><spanclass="pre">inline</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">virtual</span></span><spanclass="w"></span><spanclass="kt"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_mode</span></span></span><spanclass="sig-paren">(</span><aclass="reference internal"href="#_CPPv410modem_mode"title="modem_mode"><spanclass="n"><spanclass="pre">modem_mode</span></span></a><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">mode</span></span><spanclass="sig-paren">)</span><spanclass="w"></span><spanclass="k"><spanclass="pre">override</span></span><aclass="headerlink"href="#_CPPv4N9esp_modem13GenericModule8set_modeE10modem_mode"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>This is a mandatory method of <aclass="reference internal"href="#classesp__modem_1_1_module_if"><spanclass="std std-ref">ModuleIf</span></a> class, which defines basic commands for switching between DATA, COMMAND and CMUX modes. </p>
<spanid="_CPPv3N9esp_modem13GenericModule21configure_pdp_contextENSt10unique_ptrI10PdpContextEE"></span><spanid="_CPPv2N9esp_modem13GenericModule21configure_pdp_contextENSt10unique_ptrI10PdpContextEE"></span><spanid="esp_modem::GenericModule::configure_pdp_context__std::unique_ptr:PdpContext:"></span><spanclass="target"id="classesp__modem_1_1_generic_module_1afdf31de445b80670afff0253a3cabef4"></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">configure_pdp_context</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">unique_ptr</span></span><spanclass="p"><spanclass="pre"><</span></span><aclass="reference internal"href="#_CPPv4N9esp_modem10PdpContextE"title="esp_modem::PdpContext"><spanclass="n"><spanclass="pre">PdpContext</span></span></a><spanclass="p"><spanclass="pre">></span></span><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">new_pdp</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv4N9esp_modem13GenericModule21configure_pdp_contextENSt10unique_ptrI10PdpContextEE"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Additional method providing runtime configuration of PDP context. </p>
<spanid="_CPPv3N9esp_modem7SIM7600E"></span><spanid="_CPPv2N9esp_modem7SIM7600E"></span><spanid="esp_modem::SIM7600"></span><spanclass="target"id="classesp__modem_1_1_s_i_m7600"></span><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">SIM7600</span></span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">public</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">esp_modem</span></span><spanclass="p"><spanclass="pre">::</span></span><aclass="reference internal"href="#_CPPv4N9esp_modem13GenericModuleE"title="esp_modem::GenericModule"><spanclass="n"><spanclass="pre">GenericModule</span></span></a><aclass="headerlink"href="#_CPPv4N9esp_modem7SIM7600E"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_dce_module.hpp></em><p>Specific definition of the <aclass="reference internal"href="#classesp__modem_1_1_s_i_m7600"><spanclass="std std-ref">SIM7600</span></a> module. </p>
<spanid="_CPPv3N9esp_modem6SIM800E"></span><spanid="_CPPv2N9esp_modem6SIM800E"></span><spanid="esp_modem::SIM800"></span><spanclass="target"id="classesp__modem_1_1_s_i_m800"></span><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">SIM800</span></span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">public</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">esp_modem</span></span><spanclass="p"><spanclass="pre">::</span></span><aclass="reference internal"href="#_CPPv4N9esp_modem13GenericModuleE"title="esp_modem::GenericModule"><spanclass="n"><spanclass="pre">GenericModule</span></span></a><aclass="headerlink"href="#_CPPv4N9esp_modem6SIM800E"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_dce_module.hpp></em><p>Specific definition of the <aclass="reference internal"href="#classesp__modem_1_1_s_i_m800"><spanclass="std std-ref">SIM800</span></a> module. </p>
<spanid="_CPPv3N9esp_modem4BG96E"></span><spanid="_CPPv2N9esp_modem4BG96E"></span><spanid="esp_modem::BG96"></span><spanclass="target"id="classesp__modem_1_1_b_g96"></span><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">BG96</span></span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="k"><spanclass="pre">public</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">esp_modem</span></span><spanclass="p"><spanclass="pre">::</span></span><aclass="reference internal"href="#_CPPv4N9esp_modem13GenericModuleE"title="esp_modem::GenericModule"><spanclass="n"><spanclass="pre">GenericModule</span></span></a><aclass="headerlink"href="#_CPPv4N9esp_modem4BG96E"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_dce_module.hpp></em><p>Specific definition of the <aclass="reference internal"href="#classesp__modem_1_1_b_g96"><spanclass="std std-ref">BG96</span></a> module. </p>
</dd></dl>
</dd></dl>
<sectionid="adding-new-devices">
<spanid="module-addition"></span><h3>Adding new devices<aclass="headerlink"href="#adding-new-devices"title="Permalink to this headline">¶</a></h3>
<p>To support a new module, developers would have to implement a new class derived from <aclass="reference internal"href="#_CPPv4N9esp_modem13GenericModuleE"title="esp_modem::GenericModule"><codeclass="xref cpp cpp-class docutils literal notranslate"><spanclass="pre">esp_modem::GenericModule</span></code></a> the same way
as it is described in the <aclass="reference internal"href="advanced_api.html#create-custom-module"><spanclass="std std-ref">Advanced user manual</span></a>. The only difference is that the new class (and factory extension)
would be available in the esp_modem code base.</p>
</section>
<sectionid="implement-a-new-generic-command">
<h3>Implement a new generic command<aclass="headerlink"href="#implement-a-new-generic-command"title="Permalink to this headline">¶</a></h3>
<p>Adding a generic command, i.e. the command that is shared for all modules and is included in the <aclass="reference internal"href="#_CPPv4N9esp_modem13GenericModuleE"title="esp_modem::GenericModule"><codeclass="xref cpp cpp-class docutils literal notranslate"><spanclass="pre">esp_modem::GenericModule</span></code></a>,
has to be declared first in the <codeclass="docutils literal notranslate"><spanclass="pre">include/generate/esp_modem_command_declare.inc</span></code> file, which is the single source
of supported command definitions, that is used in:</p>
<ulclass="simple">
<li><p>public C API</p></li>
<li><p>public CPP API</p></li>
<li><p>generated documentation</p></li>
<li><p>implementation of the command</p></li>
</ul>
<p>Therefore, a care must be taken, to correctly specify all parameters and types, especially:</p>
<ulclass="simple">
<li><p>Keep number of parameters low (<= 6, used in preprocessor’s forwarding to the command library)</p></li>
<li><p>Use macros to specify parameter types (as they are used both from C and C++ with different underlying types)</p></li>
<li><p>Parameter names are used only for clarity and documentation, they get expanded to numbered arguments.</p></li>
</ul>
<p>Please use the following pattern: <codeclass="docutils literal notranslate"><spanclass="pre">INT_IN(p1,</span><spanclass="pre">baud)</span></code>, meaning that the parameter is an input integer,
human readable argument name is <codeclass="docutils literal notranslate"><spanclass="pre">baud</span></code>, it’s the first argument, so expands to <codeclass="docutils literal notranslate"><spanclass="pre">p1</span></code> (second argument would be <codeclass="docutils literal notranslate"><spanclass="pre">p2</span></code>, etc)</p>
</section>
<sectionid="command-library">
<h3>Command library<aclass="headerlink"href="#command-library"title="Permalink to this headline">¶</a></h3>
<p>This is a namespace holding a library of typical AT commands used by supported devices.
Please refer to the <aclass="reference internal"href="api_docs.html#c-api"><spanclass="std std-ref">C API Documentation</span></a> for the list of supported commands.</p>
<spanclass="target"id="group___e_s_p___m_o_d_e_m___d_c_e___c_o_m_m_a_n_d_1ga20657edb7631c5b196ff6748e6d9f405"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">ESP_MODEM_DECLARE_DCE_COMMAND</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">name</span></span>, <spanclass="n"><spanclass="pre">return_type</span></span>, <spanclass="n"><spanclass="pre">num</span></span>, <spanclass="p"><spanclass="pre">...</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#c.ESP_MODEM_DECLARE_DCE_COMMAND"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Declaration of all commands is generated from esp_modem_command_declare.inc. </p>
<spanid="_CPPv318power_down_sim7xxxP13CommandableIf"></span><spanid="_CPPv218power_down_sim7xxxP13CommandableIf"></span><spanid="power_down_sim7xxx__CommandableIfP"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___d_c_e___c_o_m_m_a_n_d_1ga4a78776f1eb012f918b9ce86174f7cca"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">power_down_sim7xxx</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">CommandableIf</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">t</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv418power_down_sim7xxxP13CommandableIf"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv317power_down_sim8xxP13CommandableIf"></span><spanid="_CPPv217power_down_sim8xxP13CommandableIf"></span><spanid="power_down_sim8xx__CommandableIfP"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___d_c_e___c_o_m_m_a_n_d_1ga633632d57c75217d292f44f796ba1464"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">power_down_sim8xx</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">CommandableIf</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">t</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv417power_down_sim8xxP13CommandableIf"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv320set_data_mode_sim8xxP13CommandableIf"></span><spanid="_CPPv220set_data_mode_sim8xxP13CommandableIf"></span><spanid="set_data_mode_sim8xx__CommandableIfP"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___d_c_e___c_o_m_m_a_n_d_1ga8dcf51336d9a7c47b1918b949fed4ff4"></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_data_mode_sim8xx</span></span></span><spanclass="sig-paren">(</span><spanclass="n"><spanclass="pre">CommandableIf</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n sig-param"><spanclass="pre">t</span></span><spanclass="sig-paren">)</span><aclass="headerlink"href="#_CPPv420set_data_mode_sim8xxP13CommandableIf"title="Permalink to this definition">¶</a><br/></dt>
<dd></dd></dl>
</div>
</dd></dl>
</section>
</section>
<sectionid="modem-types">
<h2>Modem types<aclass="headerlink"href="#modem-types"title="Permalink to this headline">¶</a></h2>
<spanid="_CPPv311got_line_cb"></span><spanid="_CPPv211got_line_cb"></span><spanid="got_line_cb"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_y_p_e_s_1ga484e7972ab5a57197412e24f5e0935b6"></span><spanclass="k"><spanclass="pre">typedef</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">std</span></span><spanclass="p"><spanclass="pre">::</span></span><spanclass="n"><spanclass="pre">function</span></span><spanclass="p"><spanclass="pre"><</span></span><aclass="reference internal"href="#_CPPv414command_result"title="command_result"><spanclass="n"><spanclass="pre">command_result</span></span></a><spanclass="p"><spanclass="pre">(</span></span><spanclass="n"><spanclass="pre">uint8_t</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">data</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">size_t</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">len</span></span><spanclass="p"><spanclass="pre">)</span></span><spanclass="p"><spanclass="pre">></span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">got_line_cb</span></span></span><aclass="headerlink"href="#_CPPv411got_line_cb"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv310modem_mode"></span><spanid="_CPPv210modem_mode"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_y_p_e_s_1ga80fa0ae4f6b04bc4e753bd207e0f298f"></span><spanclass="k"><spanclass="pre">enum</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">modem_mode</span></span></span><aclass="headerlink"href="#_CPPv410modem_mode"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N10modem_mode5UNDEFE"></span><spanid="_CPPv2N10modem_mode5UNDEFE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_y_p_e_s_1gga80fa0ae4f6b04bc4e753bd207e0f298fab3f7791472924b0d1530bb9112409c01"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">UNDEF</span></span></span><aclass="headerlink"href="#_CPPv4N10modem_mode5UNDEFE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N10modem_mode12COMMAND_MODEE"></span><spanid="_CPPv2N10modem_mode12COMMAND_MODEE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_y_p_e_s_1gga80fa0ae4f6b04bc4e753bd207e0f298fa023ec1c4bd62841e0c7d56d231e9c739"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">COMMAND_MODE</span></span></span><aclass="headerlink"href="#_CPPv4N10modem_mode12COMMAND_MODEE"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Command mode the modem is supposed to send AT commands in this mode </p>
<spanid="_CPPv3N10modem_mode9DATA_MODEE"></span><spanid="_CPPv2N10modem_mode9DATA_MODEE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_y_p_e_s_1gga80fa0ae4f6b04bc4e753bd207e0f298fa58e19a67d77f6b9de4aeb7f7ca337ee2"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">DATA_MODE</span></span></span><aclass="headerlink"href="#_CPPv4N10modem_mode9DATA_MODEE"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Data mode the modem communicates with network interface on PPP protocol </p>
<spanid="_CPPv3N10modem_mode9CMUX_MODEE"></span><spanid="_CPPv2N10modem_mode9CMUX_MODEE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_y_p_e_s_1gga80fa0ae4f6b04bc4e753bd207e0f298fa30495670a3b2cf47b0dea06ee25e148b"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">CMUX_MODE</span></span></span><aclass="headerlink"href="#_CPPv4N10modem_mode9CMUX_MODEE"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>CMUX (Multiplex mode) Simplified CMUX mode, which creates two virtual terminals, assigning one solely to command interface and the other to the data mode </p>
<spanid="_CPPv314command_result"></span><spanid="_CPPv214command_result"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_y_p_e_s_1gac47d24e750cc329387e893697d1f132f"></span><spanclass="k"><spanclass="pre">enum</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">command_result</span></span></span><aclass="headerlink"href="#_CPPv414command_result"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N14command_result2OKE"></span><spanid="_CPPv2N14command_result2OKE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_y_p_e_s_1ggac47d24e750cc329387e893697d1f132fae0aa021e21dddbd6d8cecec71e9cf564"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">OK</span></span></span><aclass="headerlink"href="#_CPPv4N14command_result2OKE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N14command_result4FAILE"></span><spanid="_CPPv2N14command_result4FAILE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_y_p_e_s_1ggac47d24e750cc329387e893697d1f132fac2759effffc94bb9acc71d69fe3e8a1f"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">FAIL</span></span></span><aclass="headerlink"href="#_CPPv4N14command_result4FAILE"title="Permalink to this definition">¶</a><br/></dt>
<spanid="_CPPv3N14command_result7TIMEOUTE"></span><spanid="_CPPv2N14command_result7TIMEOUTE"></span><spanclass="target"id="group___e_s_p___m_o_d_e_m___t_y_p_e_s_1ggac47d24e750cc329387e893697d1f132fa070a0fb40f6c308ab544b227660aadff"></span><spanclass="k"><spanclass="pre">enumerator</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">TIMEOUT</span></span></span><aclass="headerlink"href="#_CPPv4N14command_result7TIMEOUTE"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>The device didn’t respond in the specified timeline </p>
<spanid="_CPPv3N9esp_modem10PdpContextE"></span><spanid="_CPPv2N9esp_modem10PdpContextE"></span><spanid="esp_modem::PdpContext"></span><spanclass="target"id="structesp__modem_1_1_pdp_context"></span><spanclass="k"><spanclass="pre">struct</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">PdpContext</span></span></span><aclass="headerlink"href="#_CPPv4N9esp_modem10PdpContextE"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_types.hpp></em><p>PDP context used for configuring and setting the data mode up. </p>
<spanid="_CPPv3N9esp_modem13CommandableIfE"></span><spanid="_CPPv2N9esp_modem13CommandableIfE"></span><spanid="esp_modem::CommandableIf"></span><spanclass="target"id="classesp__modem_1_1_commandable_if"></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">CommandableIf</span></span></span><aclass="headerlink"href="#_CPPv4N9esp_modem13CommandableIfE"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_types.hpp></em><p>Interface for classes eligible to send AT commands (Modules, DCEs, DTEs) </p>
<p>Subclassed by <aclass="reference internal"href="#classesp__modem_1_1_d_t_e"><spanclass="std std-ref">esp_modem::DTE</span></a></p>
<spanid="_CPPv3N9esp_modem8ModuleIfE"></span><spanid="_CPPv2N9esp_modem8ModuleIfE"></span><spanid="esp_modem::ModuleIf"></span><spanclass="target"id="classesp__modem_1_1_module_if"></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">ModuleIf</span></span></span><aclass="headerlink"href="#_CPPv4N9esp_modem8ModuleIfE"title="Permalink to this definition">¶</a><br/></dt>
<dd><em>#include <esp_modem_types.hpp></em><p>Interface for classes implementing a module for the modem. </p>
<p>Subclassed by <aclass="reference internal"href="#classesp__modem_1_1_generic_module"><spanclass="std std-ref">esp_modem::GenericModule</span></a></p>
<spanid="_CPPv3N9esp_modem8ModuleIf15setup_data_modeEv"></span><spanid="_CPPv2N9esp_modem8ModuleIf15setup_data_modeEv"></span><spanid="esp_modem::ModuleIf::setup_data_mode"></span><spanclass="target"id="classesp__modem_1_1_module_if_1adc06f1aec13bcc3674bed47eadf1f3b3"></span><spanclass="k"><spanclass="pre">virtual</span></span><spanclass="w"></span><spanclass="kt"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">setup_data_mode</span></span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="m"><spanclass="pre">0</span></span><aclass="headerlink"href="#_CPPv4N9esp_modem8ModuleIf15setup_data_modeEv"title="Permalink to this definition">¶</a><br/></dt>
<dd><p>Sets the data mode up (provides the necessary configuration to connect to the cellular network) </p>
<spanid="_CPPv3N9esp_modem8ModuleIf8set_modeE10modem_mode"></span><spanid="_CPPv2N9esp_modem8ModuleIf8set_modeE10modem_mode"></span><spanid="esp_modem::ModuleIf::set_mode__modem_mode"></span><spanclass="target"id="classesp__modem_1_1_module_if_1ab6bb69e6d18bb16101c20857394a8eab"></span><spanclass="k"><spanclass="pre">virtual</span></span><spanclass="w"></span><spanclass="kt"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="sig-name descname"><spanclass="n"><spanclass="pre">set_mode</span></span></span><spanclass="sig-paren">(</span><aclass="reference internal"href="#_CPPv410modem_mode"title="modem_mode"><spanclass="n"><spanclass="pre">modem_mode</span></span></a><spanclass="w"></span><spanclass="n sig-param"><spanclass="pre">mode</span></span><spanclass="sig-paren">)</span><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="m"><spanclass="pre">0</span></span><aclass="headerlink"href="#_CPPv4N9esp_modem8ModuleIf8set_modeE10modem_mode"title="Permalink to this definition">¶</a><br/></dt>