Esempio n. 1
0
void RTClockClass::incrementUnit(int unit)
{
	bool isLeap = false;
	
	switch (unit)
	{
	case UNIT_HOUR:
		if (++t.hour == 24)
			t.hour = 0;
		break;
	case UNIT_MINUTE:
		if (++t.min == 60)
			t.min = 0;
		t.sec = 0;
		break;
	case UNIT_SECOND:
		++t.sec;
		break;
	case UNIT_DAY:
		++t.mday;
		switch (t.mon) // See which month you're incrementing, adjust accordingly
		{
			case 1: if (t.mday == 32) t.mday = 1; break;
			case 2: // Leap year evil-ness
				if ((t.year % 4 == 0) && !(t.year % 100 == 0) || (t.year % 400 == 0))
					isLeap = true;
				if ((t.mday == 29) && !isLeap) // Normal Year
					t.mday = 1;
				else if (t.mday == 30) // Leap year
					t.mday = 1;
				break;
			case 3: if (t.mday == 32) t.mday = 1; break;
			case 4: if (t.mday == 31) t.mday = 1; break;
			case 5: if (t.mday == 32) t.mday = 1; break;
			case 6: if (t.mday == 31) t.mday = 1; break;
			case 7: if (t.mday == 32) t.mday = 1; break;
			case 8: if (t.mday == 32) t.mday = 1; break;
			case 9: if (t.mday == 31) t.mday = 1; break;
			case 10: if (t.mday == 32) t.mday = 1; break;
			case 11: if (t.mday == 31) t.mday = 1; break;
			case 12: if (t.mday == 32) t.mday = 1; break;
		}
		break;
	case UNIT_MONTH:
		if (++t.mon == 13)
			t.mon = 1;
		break;
	case UNIT_YEAR:
		++t.year;
		++t.year_s;
		break;
	}

	DS3231_set(t);
}
Esempio n. 2
0
void RTClockClass::resetClock()
{
	t.hour = 0;
	t.min = 0;
	t.sec = 0;
	t.mday = 1;
	t.mon = 1;
	t.year = 2016;
	t.year_s = 16;

	DS3231_set(t);

	return;
}
Esempio n. 3
0
//Must be setted in format 24h
void Clock::setDate(const ts *date) {
	DS3231_set(*date);
}