Skip to content

Library Architecture

Foxy Hunter edited this page May 22, 2025 · 2 revisions

Library Architecture

This page details the architecture of the, MicroPython, WalterModem Library.

Caution

MicroPython v1.25.0 (2025-04-15) lacks full MRO support, so the library handles mixin initialisation manually.
If future MicroPython releases add full MRO support, this manual initialisation might cause conflicts.
In that case, be sure to remove the manual logic.

Structure

walter_modem/
├── core.py
├── enums.py
├── __init__.py
├── mixins
│   ├── coap.py
│   ├── _default_pdp.py
│   ├── _default_sim_network.py
│   ├── _default_sleep.py
│   ├── gnss.py
│   ├── http.py
│   ├── mqtt.py
│   ├── socket.py
│   └── tls_certs.py
├── modem.py
├── queue.py
├── structs.py
└── utils.py

The library's structure is geared towards separation of concerns, using mixins for functionalities which aren't strictly required for the library to function. Some mixins/functionalities are often used such as PDP, SIM and network & sleep methods, these are prefixed with _default.

Note

The Mixins directory intentionally has no __init__.py, this is so that mixins are only imported when needed.

Mixins

Mixins are separate modules that provide functionality to the modem, by "mixing" them in the modem on initialisation.

Note

It is important that are independent of one another, this means that they do not import from or rely on other mixins.

Clone this wiki locally