Example #1
0
File: clock.c Project: wgml/avr
void clockSetHour()
{ //todo
	//currentTime.blinkSeg = 0b1100;

	uint8_t ms = (currentTime.ms + 5) % 10;
	while(currentTime.ms != ms)
		clockUpdate();

	//adjusting hour
	while(!((CONTROLPIN & _BV(PB4)) == _BV(PB4)))
	{
		if((CONTROLPIN & _BV(PB5)) == _BV(PB5))
		{
			currentTime.hour = (currentTime.hour + 1) % 24;
			ms = (currentTime.ms + 5) % 10;
			while(currentTime.ms != ms)
				clockUpdate();
		}
		clockUpdate();
	}
	state = CLOCK;

	//currentTime.blinkSeg = 0b0000;
	ms = (currentTime.ms + 5) % 10;

	while(currentTime.ms != ms)
		clockUpdate();
}
Example #2
0
File: clock.c Project: wgml/avr
void clockSetMinute()
{ //todo
	//currentTime.blinkSeg = 0b0011;

	uint8_t ms = (currentTime.ms + 5) % 10;
	while(currentTime.ms != ms)
		clockUpdate();

	//adjusting minute
	while(!((CONTROLPIN & _BV(PB4)) == _BV(PB4)))
	{
		if((CONTROLPIN & _BV(PB5)) == _BV(PB5))
		{
			ms = (currentTime.ms + 5) % 10;
			while(currentTime.ms != ms && !((CONTROLPIN & _BV(PB4)) == _BV(PB4)))
				clockUpdate();

			currentTime.minute = (currentTime.minute + 1) % 60;
		}
		clockUpdate();
	}

	//currentTime.blinkSeg = 0b0000;
	ms = (currentTime.ms + 5) % 10;

	while(currentTime.ms != ms)
		clockUpdate();
}
Example #3
0
static unsigned char eventUpdates(void)
{
	return
		receiverUpdate() +
		clockUpdate() +
		screenUpdate() +
		buttonUpdate() +
		menuUpdate();
}
Example #4
0
File: clock.c Project: wgml/avr
void handleTick()
{
	switch(state)
	{
	case CLOCK:
		clockUpdate();
		break;
	case SET_HOUR:
		clockSetHour();
		break;
	case SET_MINUTE:
		clockSetMinute();
		break;
	default:
		state = CLOCK;
		clockUpdate();
		break;
	}
}
void SetClock(char key)
{  
   // timer to avoid multiple key-presses:
   if (wait_timer > 0)
   {
      wait_timer--;
   }

   // enter/exit setup:
   if (key == '*' && wait_timer == 0)
   {
      setup = !setup;
      wait_timer = wait_interval;
      i = 0;
      num_str[0] = '\0';

   }

   switch (setup)
   {
      case true:
      clock_master = false;// clock stopped

      // fill string with zeros:
      if (strlen(num_str) == 0)
      {
         strcpy(num_str, "000000");
      }

      if (key != 0 && key != '*' && wait_timer == 0) // check for valid input
      {
         wait_timer = wait_interval; // reset timer
         num_str[i] = key; // save key input to string
         i++;
      }

      number = atol(num_str); // convert string to long
         
         // split into separate numbers:
         h = (number / 10000);
         m = ((number % 10000)/100);
         s = (number % 100);

      clockUpdate(h, m, s); // update 

      if (i > 0)
      {
         LCD_goto(1,1); 
         sprintf(save, "%02d:%02d:%02d", h, m, s);
         LCD_str(save);
      }

      else
      { 
         LCD_goto(1,1);
         LCD_str("--:--:--");
      }

      // check if hour, minutes and seconds have been entered:
      if (i == 6)
      {   
         // check if numbers are out of bounds:
         if (h > 23)
         {
            h = 0;
            m = 0;
            s = 0;
            clockUpdate(h, m, s);                 
         }

         if (m > 59)
         {
            h = 0;
            m = 0;
            s = 0;
            clockUpdate(h, m, s);
         }

         if (s > 59)
         {
            h = 0;
            m = 0;
            s = 0;
            clockUpdate(h, m, s);        
         }
         
         setup = false; //exit setup
      } 
      break;
         
      case false: // clock running      
      clock_master = true;
      break;
   }
}