Téma: Generalizace asynchronního volání funkcí SDS-C
SDS-C program je prováděn synchronně s tím, že volání interních funkcí je vždy neblokující. Tedy funkce, jejichž provádění může trvat delší dobu jsou voláním interní funkce inicializovány a dokončení probíhá jako jiný nezávislý běh. Výsledek provedení funkce se vrací do SDS-C v nějaké systémové proměnné (je potřeba jej ve smyčce kontrolovat). Takové kontroly musejí být "rozesety" pro obsluhu všech takových případů v hlavním cyklu - kód obsluhy konkrétní funkcionality je tak roztroušen nesourodě na více místech.
Navrhuji implementovat možnost volat funkce SDS-C asynchronně a doplnit interní funkce o možnost předávat jako parametr jméno funkce, která má být po jejich vykonání provedena (jednoduchá podpora zpracování událostí). Tím se zpřehlední kód a otevřou se možnost pro další využití mechanizmu asynchronního volání funkcí, např. RPC, funkční bloky časovačů, atp.
Nebo (to by bylo ještě srozumitelnější pro vývojáře navyklé na synchronní programování) něco jako protothready - možnost spustit více vláken kódu současně a při volání blokující funkce prostě vyčkat do jejího dokončení přičemž ostatní vlákna budou prováděny dále. Inspirace:
http://zolertia.sourceforge.net/wiki/in … i_Lesson_0
http://www.sics.se/~adam/contiki/contik … 00269.html