Ga naar inhoud

Ontwerp van MeshCore

LOGISCH ONTWERP · TECHNISCH ONTWERP · AFBAKENING · LEESWIJZER

Deze sectie beschrijft hoe MeshCore in elkaar zit. Niet wat er over de lucht gaat — dat staat in Techniek — maar hoe de firmware is opgedeeld, welke onderdelen welke verantwoordelijkheid dragen, en hoe uit één codebase 508 verschillende builds ontstaan. De sectie valt uiteen in een logisch en een technisch ontwerp.

[!NOTE] Bron. Deze pagina is geverifieerd tegen de firmware zelf: MeshCore v1.16.0, commit 03b6ef4, 28 juli 2026 — de volledige broncodestructuur, de root platformio.ini en alle 79 variants/*/platformio.ini.

Twee lagen

Een logisch ontwerp beschrijft wat een systeem is. Welke onderdelen bestaan er, waar is elk onderdeel verantwoordelijk voor, welke afspraken gelden tussen die onderdelen, en welke gegevens gaan er tussen ze heen en weer. Het doet dat zonder naar de implementatie te wijzen. Je kunt het lezen zonder C++ te kennen en zonder te weten dat er een Dispatcher.cpp bestaat.

Een technisch ontwerp beschrijft hoe dat gerealiseerd is. Welke klasse welke rol vervult, welke bestanden bij elkaar horen, hoe de vier platformfamilies dezelfde abstractie op vier manieren implementeren, en hoe het buildsysteem de juiste combinatie bij elkaar zoekt. Daar staan bestandsnamen en regelnummers in.

De scheiding is niet cosmetisch. Het logisch ontwerp van MeshCore is opmerkelijk stabiel: de rollen, de lagen en de contracten tussen die lagen liggen al lang vast. Het technisch ontwerp beweegt daaronder wel degelijk — er komen platformen bij, drivers veranderen, buildtargets verschijnen en verdwijnen tussen twee commits. Wie de twee door elkaar leest, houdt een document over dat om de maand achterhaald is.

Het logisch ontwerp beschrijft rollen, componenten, contracten en gegevens;
het technisch ontwerp beschrijft klassen, platformrealisatie en het
buildsysteem. Pijlen lopen van logisch naar technisch: elk logisch onderdeel
heeft een technische tegenhanger.

Wat hier niet staat

Deze sectie herhaalt geen inhoud uit andere secties. Waar het onderwerp raakt, staat een verwijzing.

Onderwerp Staat in
Protocollagen en gedrag over de lucht Het Lagenmodel
Byte-indeling van pakketten Pakketstructuur
Keuze tussen de vier platformfamilies De vier platformfamilies
Fysieke bussen en verbindingen Hardware van een node
Externe libraries en hun configuratie Libraries in MeshCore

Kort gezegd: techniek/ beschrijft het protocol, hardware/ de fysieke node, libraries/ de code van derden, en ontwerp/ de structuur van de code van MeshCore zelf.

Leeswijzer

Logisch ontwerp

Technisch ontwerp

Narekenen

Elk getal in deze sectie komt uit tools/design-overview.py. Dat script leest een MeshCore-checkout en bepaalt per buildtarget welke applicatie wordt gecompileerd, tot welke platformfamilie het target hoort en welke onderdelen zijn ingeschakeld:

python3 tools/design-overview.py /pad/naar/MeshCore

Het script telt nooit op de naam van een [env:...]-sectie. Waarom dat een val is, staat in Variabiliteit.

Bronnen