src/led.c
changeset 71 95cd3376cc9f
parent 35 88812de1d7cc
equal deleted inserted replaced
70:f36f09f08b62 71:95cd3376cc9f
    43 void led_set_red(UNS8 on);
    43 void led_set_red(UNS8 on);
    44 void led_callback(CO_Data* d, UNS32 id);
    44 void led_callback(CO_Data* d, UNS32 id);
    45 void led_set_redgreen(CO_Data *d, unsigned char state);
    45 void led_set_redgreen(CO_Data *d, unsigned char state);
    46 
    46 
    47 
    47 
    48 // 0 = always off, 1 = always on, 2 = flashing
    48 /* 0 = always off, 1 = always on, 2 = flashing */
    49 static UNS8 led_state_red, led_state_green; 
    49 static UNS8 led_state_red, led_state_green; 
    50 
    50 
    51 static UNS16 led_sequence_red, led_seq_index_red;
    51 static UNS16 led_sequence_red, led_seq_index_red;
    52 static UNS16 led_sequence_green, led_seq_index_green;
    52 static UNS16 led_sequence_green, led_seq_index_green;
    53 
    53 
    54 static UNS8 led_error_code = LED_NO_ERROR;
    54 static UNS8 led_error_code = LED_NO_ERROR;
    55 
    55 
    56 const char *led_sequence_table[6] = // up and downs of the sequence
    56 const char *led_sequence_table[6] = /* up and downs of the sequence */
    57 {
    57 {
    58 	"01",           // flickering
    58 	"01",           /* flickering */
    59 	"01",           // blinking
    59 	"01",           /* blinking */
    60 	"100000",       // single flash
    60 	"100000",       /* single flash */
    61 	"10100000",     // double flash
    61 	"10100000",     /* double flash */
    62 	"1010100000",   // triple flash
    62 	"1010100000",   /* triple flash */
    63 	"101010100000"  // quadruple flash
    63 	"101010100000"  /* quadruple flash */
    64 };
    64 };
    65 
    65 
    66 
    66 
    67 void led_set_state(CO_Data *d, int state)
    67 void led_set_state(CO_Data *d, int state)
    68 {
    68 {
    69 //printf("led_set_state(%x)\n", state);
    69 /*printf("led_set_state(%x)\n", state); */
    70 
    70 
    71 	switch(state)
    71 	switch(state)
    72 	{
    72 	{
    73 		case Initialisation:
    73 		case Initialisation:
    74 /*
    74 /*
   101 
   101 
   102 	else if (led_state_green < 2  &&  led_state_red < 2)
   102 	else if (led_state_green < 2  &&  led_state_red < 2)
   103 	{
   103 	{
   104 		led_stop_timer();
   104 		led_stop_timer();
   105 
   105 
   106 		//led_set_green(led_state_green);
   106 		/*led_set_green(led_state_green); */
   107 		//led_set_red(led_state_red);
   107 		/*led_set_red(led_state_red); */
   108 	}
   108 	}
   109 
   109 
   110 	else
   110 	else
   111 		led_start_timer(d, 200);
   111 		led_start_timer(d, 200);
   112 }
   112 }
   169 		{
   169 		{
   170 			led_state_green = 1;
   170 			led_state_green = 1;
   171 		}
   171 		}
   172 
   172 
   173 		led_start_timer(d, 200);
   173 		led_start_timer(d, 200);
   174 		//led_set_red(led_state_red);
   174 		/*led_set_red(led_state_red); */
   175 	}
   175 	}
   176 
   176 
   177 	if (led_state_green < 2  &&  led_state_red < 2)
   177 	if (led_state_green < 2  &&  led_state_red < 2)
   178 	{
   178 	{
   179 		led_stop_timer();
   179 		led_stop_timer();
   180 
   180 
   181 		//led_set_green(led_state_green);
   181 		/*led_set_green(led_state_green); */
   182 		//led_set_red(led_state_red);
   182 		/*led_set_red(led_state_red); */
   183 	}
   183 	}
   184 }
   184 }
   185 
   185 
   186 
   186 
   187 void led_start_timer(CO_Data* d, UNS32 tm)
   187 void led_start_timer(CO_Data* d, UNS32 tm)
   200 
   200 
   201 void led_callback(CO_Data *d, UNS32 id)
   201 void led_callback(CO_Data *d, UNS32 id)
   202 {
   202 {
   203 	UNS8 bits = 0;
   203 	UNS8 bits = 0;
   204 
   204 
   205 	// RED LED
   205 	/* RED LED */
   206 	if (led_sequence_table[led_sequence_red][led_seq_index_red] == '1')
   206 	if (led_sequence_table[led_sequence_red][led_seq_index_red] == '1')
   207 	{
   207 	{
   208 		if (led_state_red > 0)
   208 		if (led_state_red > 0)
   209 			bits = 1;
   209 			bits = 1;
   210 			/* led_set_red(1); */
   210 			/* led_set_red(1); */
   217 
   217 
   218 	led_seq_index_red++;
   218 	led_seq_index_red++;
   219 	if (led_seq_index_red > strlen(led_sequence_table[led_sequence_red]))
   219 	if (led_seq_index_red > strlen(led_sequence_table[led_sequence_red]))
   220 		led_seq_index_red = 0;
   220 		led_seq_index_red = 0;
   221 
   221 
   222 	// GREEN LED
   222 	/* GREEN LED */
   223 	if (led_sequence_table[led_sequence_green][led_seq_index_green] == '1')
   223 	if (led_sequence_table[led_sequence_green][led_seq_index_green] == '1')
   224 	{
   224 	{
   225 		if (led_state_green > 0)
   225 		if (led_state_green > 0)
   226 			bits = bits | 2;
   226 			bits = bits | 2;
   227 			/* led_set_green(1); */
   227 			/* led_set_green(1); */
   234 
   234 
   235 	led_seq_index_green++;
   235 	led_seq_index_green++;
   236 	if (led_seq_index_green > strlen(led_sequence_table[led_sequence_green]))
   236 	if (led_seq_index_green > strlen(led_sequence_table[led_sequence_green]))
   237 		led_seq_index_green = 0;
   237 		led_seq_index_green = 0;
   238 
   238 
   239 	//led_set_redgreen(d, bits);
   239 	/*led_set_redgreen(d, bits); */
   240 }
   240 }
   241 
   241 
   242 
   242 
   243 
   243 
   244 
   244