configuratie van een systeem (C++)

Hallo,

Ik heb iets geprogrammeerd dat zowel op Arduino als onder Posix systemen draait.
Dat moet geconfigureerd worden. Die configuratie gaat over verschillende componenten (wifi parameters, disk parameters, ntp, etc.).
Ik zoek nu suggesties hoe ik dat 't beste kan opslaan (methode & formaat en met welke library).
Ik zat te denken aan alle parameters in een globale std::map stoppen en dan alles als json opslaan. Voor posix heb je libjansson maar voor arduino niet. Voor arduino heb je arduino-json maar niet voor posix. Zie daar mijn probleem :slight_smile:
Iemand ideen?

Ik neem aan dat je al best wat dingen conditioneel doet, dingen zoals NTP en de setup van de wifi doe je waarschijnlijk al anders op beide platformen, kun je dat ook doen met hoe je de JSON libraries gebruikt?

Voor de globale map. Ik vind dat altijd een beetje stom als ik ook tests wil schrijven dus ik geef het meestal expliciet de configuratie mee aan alles wat ik doe.

Waar het vandaan komt? Mja, ook dat is wezenlijk anders tussen Arduino en POSIX. Bij de een zou ik het op compile time erin bakken (maar daar verschillen de meningen vast over!) en bij de ander op een vast (of XDG-afhankelijk) pad neerzetten of als argument meegeven.

Kwa format, ik vind JSON niet zo fijn om te gebruiken voor configuratie maar als het maar een beetje is is het ook weer niet dramatisch :slight_smile:

Ik heb in het verleden GitHub - nlohmann/json: JSON for Modern C++ gebruikt, wat volgens mij ook onder posix zou moeten werken? Daarnaast kun je ook grotendeels dezelfde api’s gebruiken om die json op SPIFFS of een posix filesystem te lezen/schrijven.

De configuratie vindt plaats in een console. Daar worden de settings opgeslagen en ingelezen. De globale map zou niet volledig globaal zijn, maar meer binnen console.cpp zeg maar; iedere component heeft eigen serialization-dingen. Is het idee iig.

Ik zal eens kijken idd!