Witam!!!
Uruchomiłem kod NTP clienta pobrany z tuxgraphics.com używając karty sieciowej ATB oraz zestawu testowego ATB.
Nie potrafię rozgryść wywołania poniższej funkcji ( co to za dziwoląg?):
Kod:
minutes=gmtime(time+(int32_t)-360*(int32_t)hours_offset_to_utc,day,clock);
oto ciało funkcji:
Kod:
uint8_t gmtime(const uint32_t time,char *day, char *clock)
{
char dstr[4];
uint8_t i;
uint32_t dayclock;
uint16_t dayno;
uint16_t tm_year = EPOCH_YR;
uint8_t tm_sec,tm_min,tm_hour,tm_wday,tm_mon;
dayclock = time % SECS_DAY;//godzin w danym dniu
dayno = time / SECS_DAY;//dni
tm_sec = dayclock % 60UL;//sekund w danym dniu
tm_min = (dayclock % 3600UL) / 60;
tm_hour = dayclock / 3600UL;
tm_wday = (dayno + 4) % 7; /* day 0 was a thursday */
while (dayno >= YEARSIZE(tm_year)) {
dayno -= YEARSIZE(tm_year);
tm_year++;
}
tm_mon = 0;
while (dayno >= monthlen(LEAPYEAR(tm_year),tm_mon)) {
dayno -= monthlen(LEAPYEAR(tm_year),tm_mon);
tm_mon++;
}
i=0;
while (i<3){
dstr[i]= pgm_read_byte(&(day_abbrev[tm_wday*3 + i]));
i++;
}
dstr[3]='\0';
sprintf_P(day,PSTR("%s %u-%02u-%02u"),dstr,tm_year,tm_mon+1,dayno + 1);
sprintf_P(clock,PSTR("%02u:%02u:%02u"),tm_hour,tm_min,tm_sec);
return(tm_min);
}
funkcja przyjmuje 3 argumenty:
1. Zmienna uint32_t time.
2. Wskaźnik na string day.
3. Wskaźnik na string clock.
1.
Jak rozszyfrować pierwszy argument funkcji??time+(int32_t)-360*(int32_t)hours_offset_to_utc
2.
Co nam daje dopisanie do wartości UL, np. 3600ULczym ten zapis różni się od 3600??
pozdrawiam
smalski