67 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| 
 | |
| #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<Modules_len; i++)
 | |
| 	{
 | |
| 		Modules_StartOne(*(Modules + sizeof(Module_t)*i));
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void Modules_StopAll()
 | |
| {
 | |
| 	for (int i=0; i<Modules_len; i++)
 | |
| 	{
 | |
| 		Modules_StopOne(*(Modules + sizeof(Module_t)*i));
 | |
| 	}
 | |
| }
 |