|
|
|
@ -17,7 +17,7 @@ |
|
|
|
|
static int SntpOurPort; |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
SntpSend (void) |
|
|
|
|
SntpSend(void) |
|
|
|
|
{ |
|
|
|
|
struct sntp_pkt_t pkt; |
|
|
|
|
int pktlen = SNTP_PACKET_LEN; |
|
|
|
@ -25,24 +25,26 @@ SntpSend (void) |
|
|
|
|
|
|
|
|
|
debug("%s\n", __func__); |
|
|
|
|
|
|
|
|
|
memset (&pkt, 0, sizeof(pkt)); |
|
|
|
|
memset(&pkt, 0, sizeof(pkt)); |
|
|
|
|
|
|
|
|
|
pkt.li = NTP_LI_NOLEAP; |
|
|
|
|
pkt.vn = NTP_VERSION; |
|
|
|
|
pkt.mode = NTP_MODE_CLIENT; |
|
|
|
|
|
|
|
|
|
memcpy ((char *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE, (char *)&pkt, pktlen); |
|
|
|
|
memcpy((char *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE, |
|
|
|
|
(char *)&pkt, pktlen); |
|
|
|
|
|
|
|
|
|
SntpOurPort = 10000 + (get_timer(0) % 4096); |
|
|
|
|
sport = NTP_SERVICE_PORT; |
|
|
|
|
|
|
|
|
|
NetSendUDPPacket (NetServerEther, NetNtpServerIP, sport, SntpOurPort, pktlen); |
|
|
|
|
NetSendUDPPacket(NetServerEther, NetNtpServerIP, sport, SntpOurPort, |
|
|
|
|
pktlen); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
SntpTimeout (void) |
|
|
|
|
SntpTimeout(void) |
|
|
|
|
{ |
|
|
|
|
puts ("Timeout\n"); |
|
|
|
|
puts("Timeout\n"); |
|
|
|
|
NetState = NETLOOP_FAIL; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
@ -57,19 +59,20 @@ SntpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, |
|
|
|
|
|
|
|
|
|
debug("%s\n", __func__); |
|
|
|
|
|
|
|
|
|
if (dest != SntpOurPort) return; |
|
|
|
|
if (dest != SntpOurPort) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* As the RTC's used in U-Boot sepport second resolution only |
|
|
|
|
* we simply ignore the sub-second field. |
|
|
|
|
*/ |
|
|
|
|
memcpy (&seconds, &rpktp->transmit_timestamp, sizeof(ulong)); |
|
|
|
|
memcpy(&seconds, &rpktp->transmit_timestamp, sizeof(ulong)); |
|
|
|
|
|
|
|
|
|
to_tm(ntohl(seconds) - 2208988800UL + NetTimeOffset, &tm); |
|
|
|
|
#if defined(CONFIG_CMD_DATE) |
|
|
|
|
rtc_set (&tm); |
|
|
|
|
rtc_set(&tm); |
|
|
|
|
#endif |
|
|
|
|
printf ("Date: %4d-%02d-%02d Time: %2d:%02d:%02d\n", |
|
|
|
|
printf("Date: %4d-%02d-%02d Time: %2d:%02d:%02d\n", |
|
|
|
|
tm.tm_year, tm.tm_mon, tm.tm_mday, |
|
|
|
|
tm.tm_hour, tm.tm_min, tm.tm_sec); |
|
|
|
|
|
|
|
|
@ -77,13 +80,13 @@ SntpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void |
|
|
|
|
SntpStart (void) |
|
|
|
|
SntpStart(void) |
|
|
|
|
{ |
|
|
|
|
debug("%s\n", __func__); |
|
|
|
|
|
|
|
|
|
NetSetTimeout (SNTP_TIMEOUT, SntpTimeout); |
|
|
|
|
NetSetTimeout(SNTP_TIMEOUT, SntpTimeout); |
|
|
|
|
NetSetHandler(SntpHandler); |
|
|
|
|
memset (NetServerEther, 0, 6); |
|
|
|
|
memset(NetServerEther, 0, sizeof(NetServerEther)); |
|
|
|
|
|
|
|
|
|
SntpSend (); |
|
|
|
|
SntpSend(); |
|
|
|
|
} |
|
|
|
|