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(); }
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(); }
static unsigned char eventUpdates(void) { return receiverUpdate() + clockUpdate() + screenUpdate() + buttonUpdate() + menuUpdate(); }
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; } }