⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sntp.c

📁 u-boot-1.1.6 源码包
💻 C
字号:
/* * SNTP support driver * * Masami Komiya <mkomiya@sonare.it> 2005 * */#include <common.h>#include <command.h>#include <net.h>#include <rtc.h>#include "sntp.h"#if ((CONFIG_COMMANDS & CFG_CMD_NET) && (CONFIG_COMMANDS & CFG_CMD_SNTP))#define SNTP_TIMEOUT 10static int SntpOurPort;static voidSntpSend (void){	struct sntp_pkt_t pkt;	int pktlen = SNTP_PACKET_LEN;	int sport;	debug ("%s\n", __FUNCTION__);	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);	SntpOurPort = 10000 + (get_timer(0) % 4096);	sport = NTP_SERVICE_PORT;	NetSendUDPPacket (NetServerEther, NetNtpServerIP, sport, SntpOurPort, pktlen);}static voidSntpTimeout (void){	puts ("Timeout\n");	NetState = NETLOOP_FAIL;	return;}static voidSntpHandler (uchar *pkt, unsigned dest, unsigned src, unsigned len){	struct sntp_pkt_t *rpktp = (struct sntp_pkt_t *)pkt;	struct rtc_time tm;	ulong seconds;	debug ("%s\n", __FUNCTION__);	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));	to_tm(ntohl(seconds) - 2208988800UL + NetTimeOffset, &tm);#if (CONFIG_COMMANDS & CFG_CMD_DATE)	rtc_set (&tm);#endif	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);	NetState = NETLOOP_SUCCESS;}voidSntpStart (void){	debug ("%s\n", __FUNCTION__);	NetSetTimeout (SNTP_TIMEOUT * CFG_HZ, SntpTimeout);	NetSetHandler(SntpHandler);	memset (NetServerEther, 0, 6);	SntpSend ();}#endif /* CONFIG_COMMANDS & CFG_CMD_SNTP */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -