The applications share the pattern but not the code. Each application has its own copy of its modules, adapted to its modem and cloud connection. The PPP Host Application builds the same modules for every board and selects board-specific behavior through Kconfig and the board files:
| Module | PPP | nRF93M1 AT | nRF91 AT |
|---|---|---|---|
| Main | State machine | State machine | State machine |
| Network | State machine. PPP link to the Serial Modem | State machine. PPP link used only for connectivity status | State machine. LTE registration from +CEREG, no PPP |
| Cloud | State machine. nRF Cloud CoAP from the host | Message loop. Modem nRF Cloud client through AT commands | State machine. Serial Modem provisioning (AT#XNRFPROV) and nRF Cloud client through AT commands |
| FOTA | State machine. Host firmware updates through nRF Cloud | Not included | Not included |
| Location | On the nRF54 hosts, state machine. Wi-Fi scan with the nRF7002-EB II, only with the location overlay. On the nRF93M1 DK, message loop. Cell and Wi-Fi measurements from the modem | Message loop. Location fix from the modem nRF Cloud client | Message loop. Cell fix through nRF Cloud, GNSS fallback, both from the Serial Modem |
| Battery | Message loop. Fuel gauge sampling, only on the nRF93M1 DK | Message loop. Fuel gauge sampling | Not included |
| Buttons | No thread. Publishes DK button presses | No thread. Publishes DK button presses | Not included |
| Modem AT | No channel. Serializes access to the modem AT pipe | No channel. Serializes access to the modem AT pipe | No channel. Owns the Serial Modem UART, serializes AT commands, and routes URCs |
A state machine module runs its messages through an SMF state machine, as described in this document. A message loop module has its own thread, channel, and watchdog like the others, but handles each message in a plain switch statement because it has no state worth modeling. The Buttons module publishes from the button callback and needs no thread. The Modem AT module is a helper that other modules and the shell call directly.
The module guides for the PPP Host Application, linked from its module overview, describe each module's states and messages in detail.