diff --git a/esp_modem/README.md b/esp_modem/README.md index 4a155e995..38fb22cb5 100644 --- a/esp_modem/README.md +++ b/esp_modem/README.md @@ -22,6 +22,7 @@ The modem device is modeled with a DCE (Data Communication Equipment) object, wh +------+ ``` +## Modem components ### DCE This is the basic operational unit of the esp_modem component, abstracting a specific module in software, @@ -33,3 +34,46 @@ which is basically configured by 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 + +### DTE +Is an abstraction of the connected interface. Current implementation supports only UART + +### PPP + +Is used to connect the specific network interface to the modem data mode. Currently implementation supports only PPPoS protocol. + +### Module + +Abstraction of the specific modem device. Currently the component supports SIM800, BG96, SIM7600. + +## Use cases + +Users could interact with the esp-modem using the DCE's interface, to basically +* Switch between command and data mode to connect to the internet via cellular network. +* Send various commands to the device (e.g. send SMS) + +The applications typically register handlers for network events to receive notification on the network availability and +IP address changes. + +Common use cases of the esp-modem are also listed as the examples: +* `examples/pppos_client` -- simple client which reads some module properties and switches to the data mode to connect to a public mqtt broker. +* `examples/modem_console` -- is an example to exercise all possible modules commands in a console application. +* `examples/ap_to_pppos` -- this example focuses on the network connectivity of the esp-modem and provides a WiFi AP + that forwards packets (and uses NAT) to and from the PPPoS connection. + +## Extensibility + +### CMUX + +Implementation of virtual terminals is an experimental feature, which allows users to also issue commands in the data mode, +after creating multiple virtual terminals, designating some of them solely to the data mode, while other to command mode. + +### DTE's + +Currently we support only UART, but modern modules support other communication interfaces, such as USB, SPI. + +### Other devices + +Adding a new device is a must-have requirement for the esp-component. Different modules support different commands, +or some commands might have a different implementation. Adding a new device means to provide a new implementation +as a class derived from `GenericModule`, where we could add new commands or modify the existing ones.