⚙️⚙️⚙️ Pojďme napsat nějaký slušný kód
Jak jsem zmiňoval posledně, povedlo se mi rozchodit oba RFM69 moduly, ale je to jen začátek:
1️⃣ první modul se stále choval jako vysílač
zatímco
2️⃣ druhý modul se stále choval jako přijímač
Což není obecná a typická aplilace, že? Nehodlám vyvíjet domovní zvonek. Já hodlám vyvinout plnohodnotný packetový subsystém poskytující spolehlivé spojení I v prostředí s mnoho vysílači.
Nalezl jsem oblíbenou a známou knihovnu RadioHead pro RFM69 a další moduly. Tato knihovna je skvělá a hodně mi pomohla.
RadioHead knihovna umí:
➕ spolehlivou datagramovou komunikaci s ACK pakety pro potvrzení příjmu a přeposíláním, pokud nepřijde potvrzení do určité doby
➖ velký problém je to, že knihovna je napsána jako _blokující_
To je skvělé a postačující pro všemožné hračky a příklady jako posílání údajů o teplotě jednou za čas ze senzoru do nějakého serveru. Ovšem v přístroji, který je ovládán člověkem je toto blokování nepřípustné.
Tedy jsem nucen napsat knihovnu vlastní podle mých potřeb. Nemohu si dovolit do zařízení s UX vložit nedeterministické čekání.