#include <stdio.h>
#include "noidea.node.h"
#include "noidea.mm.h"

#define cluster 128
#define size 640

int array[160];

int end;

void func_one(void)
{
	printf("one ");
}
void func_two(void)
{
	printf("two ");
}
void func_tre(void)
{
	printf("tree ");
}
void func_spc(void)
{
	printf("\n");
}
void func_end(void)
{
	end = 1;
}


int main (void)
{
	printf ("new timer system ?\n");
//=====================================================================
	NOIDEA_memory * memory = NOIDEA_seg ((void*)&array, 640);


	NOIDEA_node * node_sentinel = NOIDEA_schedule(0, func_end, 100 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));

	NOIDEA_node * node_one = NOIDEA_schedule(node_sentinel, func_one, 10 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));
	NOIDEA_node * node_two = NOIDEA_schedule(node_sentinel, func_two, 20 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));
	NOIDEA_node * node_tre = NOIDEA_schedule(node_sentinel, func_tre, 30 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));
	NOIDEA_node * node_spc = NOIDEA_schedule(node_sentinel, func_spc, 10 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));
	NOIDEA_node * node_end = NOIDEA_schedule(node_sentinel, func_end, 100 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));

	int time = 0;
	while (end == 0)
	{


		int idle = NOIDEA_do(node_sentinel,time);
		if (idle != 0)
		{
			time += idle;
		}
		else
		{
			time += 1;
		}

		printf("%d \n",time);
	}


	NOIDEA_free(memory, NOIDEA_cancel(node_one));
	NOIDEA_free(memory, NOIDEA_cancel(node_two));
	NOIDEA_free(memory, NOIDEA_cancel(node_tre));
	NOIDEA_free(memory, NOIDEA_cancel(node_spc));
	NOIDEA_free(memory, NOIDEA_cancel(node_end));
	NOIDEA_free(memory, NOIDEA_cancel(node_sentinel));
//======================================================

	int i;
	for (i=0;i<160;i+=1)
	{
		printf ("%9d ",array[i]);
	}
	printf ("\n");
	return 0;
}
