1.. _modem: 2 3Modem modules 4############# 5 6This service provides modules necessary to communicate with modems. 7 8Modems are self-contained devices that implement the hardware and 9software necessary to perform RF (Radio-Frequency) communication, 10including GNSS, Cellular, WiFi etc. 11 12The modem modules are inter-connected dynamically using 13data-in/data-out pipes making them independently testable and 14highly flexible, ensuring stability and scalability. 15 16Modem pipe 17********** 18 19This module is used to abstract data-in/data-out communication over 20a variety of mechanisms, like UART and CMUX DLCI channels, in a 21thread-safe manner. 22 23A modem backend will internally contain an instance of a modem_pipe 24structure, alongside any buffers and additional structures required 25to abstract away its underlying mechanism. 26 27The modem backend will return a pointer to its internal modem_pipe 28structure when initialized, which will be used to interact with the 29backend through the modem pipe API. 30 31.. doxygengroup:: modem_pipe 32 33Modem PPP 34********* 35 36This module defines and binds a L2 PPP network interface, described in 37:ref:`net_l2_interface`, to a modem backend. The L2 PPP interface sends 38and receives network packets. These network packets have to be wrapped 39in PPP frames before being transported via a modem backend. This module 40performs said wrapping. 41 42.. doxygengroup:: modem_ppp 43 44Modem CMUX 45********** 46 47This module is an implementation of CMUX following the 3GPP 27.010 48specification. CMUX is a multiplexing protocol, allowing for multiple 49bi-directional streams of data, called DLCI channels. The module 50attaches to a single modem backend, exposing multiple modem backends, 51each representing a DLCI channel. 52 53.. doxygengroup:: modem_cmux 54 55Modem pipelink 56************** 57 58This module is used to share modem pipes globally. This module aims to 59decouple the creation and setup of modem pipes in device drivers from 60the users of said pipes. See 61:zephyr_file:`drivers/modem/modem_at_shell.c` and 62:zephyr_file:`drivers/modem/modem_cellular.c` for examples of how to 63use the modem pipelink between device driver and application. 64 65.. doxygengroup:: modem_pipelink 66