コード例 #1
0
ファイル: time.c プロジェクト: 7134956/NWatch
byte time_monthDayCount(month_t month, byte year)
{
	byte numDays = pgm_read_byte(&monthDayCount[month]);
	if(month == MONTH_FEB && time_isLeapYear(year))
		numDays = FEB_LEAP_YEAR;
	return numDays;
}
コード例 #2
0
ファイル: time.cpp プロジェクト: fibasile/Xadow-digital-watch
bool time_update()
{
	hourBeep();

	if(!update)
		return false;
    
	update = false;
	halfSecond = RTC_INT();
	if(!halfSecond)
		return false;


	// Slightly modified code from AVR134
	if(++timeData.secs == 60)
	{
		timeData.secs = 0;
		if(++timeData.mins == 60)
		{
			timeData.mins = 0;
			if(++timeData.hours == 24)
			{
				timeData.hours = 0;
				if (++timeData.date == 32)
				{
					timeData.month++;
					timeData.date = 1;
				}
				else if (timeData.date == 31)
				{
					if (timeData.month == 3 || timeData.month == 5 || timeData.month == 8 || timeData.month == 10)
					{
						timeData.month++;
						timeData.date = 1;
					}
				}
				else if (timeData.date == 30)
				{
					if(timeData.month == 1)
					{
						timeData.month++;
						timeData.date = 1;
					}
				}
				else if (timeData.date == 29)
				{
					if(timeData.month == 1 && !time_isLeapYear(timeData.year))
					{
						timeData.month++;
						timeData.date = 1;
					}
				}

				if (timeData.month == 13)
				{
					timeData.month = 1;
					timeData.year++;
					if(timeData.year == 100)
						timeData.year = 0;
				}

				if(++timeData.day == 7)
					timeData.day = 0;
			}
		}
	}

	//printf_P(PSTR("%02hhu:%02hhu:%02hhu\n"), timeData.hours, timeData.mins, timeData.secs);
	
	//printf("T: %hhuC\n", ds1337_temp());

	return true;
}
コード例 #3
0
ファイル: time.c プロジェクト: krial057/Firedrake
uint16_t time_daysOfYear(uint32_t year)
{
	return time_isLeapYear(year) ? 366 : 365;
}
コード例 #4
0
ファイル: timedate.c プロジェクト: Genoil/smartwatch
static void selectDate()
{
	menuData.downFunc = timeDataUp;
	menuData.upFunc = timeDataDown;
	menuData.drawFunc = dateDraw;
	switch(setting.now)
	{
		case SETTING_NOW_NONE:
			setting.now = SETTING_NOW_DATE10;
			setting.val = timeDataSet.date / 10;
			break;
		case SETTING_NOW_DATE10:
			{
				byte mod = timeDataSet.date % 10;
				timeDataSet.date = (setting.val * 10) + mod;
				setting.now = SETTING_NOW_DATE1;
				setting.val = mod;
			}
			break;
		case SETTING_NOW_DATE1:
			timeDataSet.date = ((timeDataSet.date / 10) * 10) + setting.val;
			if(timeDataSet.date < 1)
				timeDataSet.date = 1;
			else if(timeDataSet.date > 31)
				timeDataSet.date = 31;
			setting.now = SETTING_NOW_MONTH;
			setting.val = timeDataSet.month;
			break;
		case SETTING_NOW_MONTH:
			timeDataSet.month = setting.val;
			byte maxDays = 31;
			byte month = timeDataSet.month;
			if(month == 3 || month == 5 || month == 8 || month == 10)
				maxDays = 30;
			else if(month == 1)
				maxDays = time_isLeapYear(timeDataSet.year) ? 29 : 28;
			if(timeDataSet.date > maxDays)
				timeDataSet.date = maxDays;
			setting.now = SETTING_NOW_YEAR10;
			setting.val = timeDataSet.year / 10;
			break;
		case SETTING_NOW_YEAR10:
			{
				byte mod = timeDataSet.year % 10;
				timeDataSet.year = (setting.val * 10) + mod;
				setting.now = SETTING_NOW_YEAR1;
				setting.val = mod;
			}
			break;
		default:
			timeDataSet.year = ((timeDataSet.year / 10) * 10) + setting.val;
			timeDataSet.day = time_dow(timeDataSet.year + 2000, timeDataSet.month + 1, timeDataSet.date);
			setting.now = SETTING_NOW_NONE;
			menuData.downFunc = mUp;
			menuData.upFunc	= mDown;
			menuData.drawFunc = NULL;
			break;
	}
	
	showDateStr();
}