Všetky knižnice (u ktorých to ide) sú redukované. Napríklad modul LCD má bez redukovania 873 riadkov. Konkrétne pri tomto module som implementoval všetko čo sa len pre LCD dá - 4/8 bitový mód, štandardy (backspace/tabulátor/carriage return, form feed,..), vypisovanie loga, UP/DOWN poziciovanie, zalomenie textu na nový riadok, sign-builder na vytvorenie vlastných znakov na LCD, prepínanie jednotlivých riadkov a pozícií,... kód konkrétne u LCD je napísaný tak, že umožňuje prácu aj s viac-riadkovým LCD ako len 2x16 riadkov. Všetky headere majú štruktúry, enumy, takže pred celkovým initom sa nastavia len porty a čísla pinov na ktoré sa má periféria zapojiť a logika integrovaná v MCU sa už postará o svoje. Vytvoril som mcu HAL, ktorý nastaví mcu od interuptov až po funkcie pre prácu s portami. Stačí ho v maine nastaviť makrami (frekvencia, threading mode,...) a v podstate konfigurácia sa urobí sama. Inak povedané, štruktúra kódu je písaná tak, aby sa konfigurácia nemusela nastavovať v kzdom headery zvlášť, ale nastavuje sa v maine len raz. A potom, prostredníctvom referencií sa zdieľajú dáta jednotlivých headerov. Ďalšou vecou je aj to, že u pure C nepoznáme výnimky. Môžeme len posúvať/passovať chyby medzi jednotlivými metódami, takže som vytvoril logiku posúvania chýb od podradeného modulu nadriadenému modulu - funkcia INIT. som si vedomý toho, že ak by som logiku posúvania chýb vynechal, MCU by malo viacej pamäte. Avšak moduly sú písané tak, aby sa dali presúvať aj do iných projektov, resp. nie sú viazané len na jeden projekt. Hociktorý modul môžem vložiť do iného projektu - nastaviť len raz porty a piny, ktoré budem u iného projektu používať a modul bude fungovať.
Do budúcna budem určite uvažovať aj o MCU, ktoré si tu spomenul.