#include #include #include #include "module.h" Module_t *Modules = NULL; unsigned int Modules_len = 0; unsigned int Modules_alloc = 0; void Modules_Add(Module_t module) { printf("INFO: Modules_Add(): add module '%s' to the list\n", module.Name); if (Modules == NULL) { Modules = (Module_t*) malloc(sizeof(Module_t) * 5); Modules_alloc = 5; } if (Modules_len >= Modules_alloc) { Module_t *new_subs = (Module_t *) malloc(sizeof(Module_t) * (Modules_alloc + 5)); memcpy(new_subs, Modules, sizeof(Module_t) * Modules_alloc); Module_t *old_subs = Modules; Modules = new_subs; free(old_subs); } memcpy(Modules + sizeof(Module_t)*Modules_len, &module, sizeof(Module_t)); Modules_len++; } void Modules_Init() { // extern Module_t Module_Clock(); // Modules_Add(Module_Clock()); extern Module_t Module_Button(); Modules_Add(Module_Button()); } void Modules_StartOne(Module_t module) { printf("INFO: Modules_StartOne(): starting module '%s'\n", module.Name); (*(module.Start))(); } void Modules_StopOne(Module_t module) { (*(module.Stop))(); } void Modules_StartAll() { for (int i=0; i