mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-07-17 20:42:21 +02:00
Docs: Added pictures, update docs
This commit is contained in:
@ -1,74 +1,35 @@
|
|||||||
# ESP MODEM
|
# ESP MODEM
|
||||||
|
|
||||||
This component is used to communicate with modems in command and data modes.
|
This component is used to communicate with modems in the command mode (using AT commands), as well as the data mode
|
||||||
It abstracts the UART I/O processing into a DTE (data terminal equipment) entity which is configured and setup separately.
|
(over PPPoS protocol).
|
||||||
On top of the DTE, the command and data processing is performed in a DCE (data communication equipment) unit.
|
The modem device is modeled with a DCE (Data Communication Equipment) object, which is composed of:
|
||||||
|
* DTE (Data Terminal Equipment), which abstracts the terminal (currently only UART implemented).
|
||||||
|
* PPP Netif representing a network interface communicating with the DTE using PPP protocol.
|
||||||
|
* Module abstracting the specific device model and its commands.
|
||||||
|
|
||||||
```
|
```
|
||||||
+-----+
|
+-----+
|
||||||
| DTE |--+
|
| DTE |--+
|
||||||
+-----+ | +-------+
|
+-----+ | +-------+
|
||||||
+-->| |
|
+-->| DCE |
|
||||||
+-----+ | |
|
+-------+ | |o--- set_mode(command/data)
|
||||||
| DTE |----->| modem |---> modem events
|
| Module|--->| |
|
||||||
+-----+ | |
|
+-------+ | |o--- send_commands
|
||||||
+->| |
|
+->| |
|
||||||
+------+ | +-------+
|
+------+ | +-------+
|
||||||
| PPP |--+ | |
|
| PPP |--+
|
||||||
| netif|-----------------> network events
|
| netif|------------------> network events
|
||||||
+------+ | |
|
+------+
|
||||||
| |
|
|
||||||
start-ppp----+ |
|
|
||||||
stop-ppp---------+
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Start-up sequence
|
|
||||||
|
|
||||||
To initialize the modem we typically:
|
|
||||||
* create DTE with desired UART parameters
|
|
||||||
* create DCE with desired command palette
|
|
||||||
* create PPP netif with desired network parameters
|
|
||||||
* attach the DTE, DCE and PPP together to start the esp-modem
|
|
||||||
* configure event handlers for the modem and the netif
|
|
||||||
|
|
||||||
Then we can start and stop PPP mode using esp-modem API, receive events from the `ESP_MODEM` base, as well as from netif (IP events).
|
|
||||||
|
|
||||||
### DTE
|
|
||||||
|
|
||||||
Responsibilities of the DTE unit are
|
|
||||||
* sending/receiving commands to/from UART
|
|
||||||
* sending/receiving data to/from UART
|
|
||||||
* changing data/command mode on physical layer
|
|
||||||
|
|
||||||
### DCE
|
### DCE
|
||||||
|
|
||||||
Responsibilities of the DCE unit are
|
This is the basic operational unit of the esp_modem component, abstracting a specific module in software,
|
||||||
* definition of available commands
|
which is basically configured by
|
||||||
* cooperate with DTE on changing data/command mode
|
* the I/O communication media (UART), defined by the DTE configuration
|
||||||
|
* the specific command library supported by the device model, defined with the module type
|
||||||
#### DCE configuration
|
* network interface configuration (PPPoS config in lwip)
|
||||||
|
|
||||||
DCE unit configuration structure contains:
|
|
||||||
* device -- sets up predefined commands for this specific modem device
|
|
||||||
* pdp context -- used to setup cellular network
|
|
||||||
* populate command list -- uses runtime configurable linked list of commands. New commands could be added and/or
|
|
||||||
existing commands could be modified. This might be useful for some applications, which have to (re)define
|
|
||||||
and execute multiple AT commands. For other applications, which typically just connect to network, this option
|
|
||||||
might be preferably turned off (as the consumes certain amount of data memory)
|
|
||||||
|
|
||||||
### PPP-netif
|
|
||||||
|
|
||||||
The modem-netif attaches the network interface (which was created outside of esp-modem) to the DTE and
|
|
||||||
serves as a glue layer between esp-netif and esp-modem.
|
|
||||||
|
|
||||||
### Additional units
|
|
||||||
|
|
||||||
ESP-MODEM provides also provides a helper module to define a custom retry/reset strategy using:
|
|
||||||
* a very simple GPIO pulse generator, which could be typically used to reset or power up/down the module
|
|
||||||
* a command executor abstraction, that helps with retrying sending commands in case of a failure or a timeout
|
|
||||||
and run user defined recovery actions.
|
|
||||||
|
|
||||||
## Modification of existing DCE
|
|
||||||
|
|
||||||
In order to support an arbitrary modem, device or introduce a new command we typically have to either modify the DCE,
|
|
||||||
adding a new or altering an existing command or creating a new "subclass" of the existing DCE variants.
|
|
||||||
|
|
||||||
|
After the object is created, the application interaction with the DCE is in
|
||||||
|
* issuing specific commands to the modem
|
||||||
|
* switching between data and command mode
|
||||||
|
BIN
esp_modem/docs/CMux_collaboration.png
Normal file
BIN
esp_modem/docs/CMux_collaboration.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
BIN
esp_modem/docs/DCE_DTE_collaboration.png
Normal file
BIN
esp_modem/docs/DCE_DTE_collaboration.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
BIN
esp_modem/docs/Terminal_inheritance.png
Normal file
BIN
esp_modem/docs/Terminal_inheritance.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
Reference in New Issue
Block a user