Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of SimpleNTP by
SimpleNTP.cpp
00001 #include "SimpleNTP.h" 00002 00003 SimpleNTP::Result SimpleNTP::setNTPServer(string _server, unsigned short _port) 00004 { 00005 server= _server; 00006 port= _port; 00007 00008 socket.set_blocking(false, 1500); 00009 if(socket.init() == -1) 00010 return ERR_SocketInit; 00011 00012 if(serverNTP.set_address(server.c_str(), port) == -1) 00013 return ERR_SetNTPAddr; 00014 00015 return SUCCESS; 00016 } 00017 00018 long SimpleNTP::getNetworkTime() 00019 { 00020 // long timeEpoch= -1; 00021 int idx, bytes; 00022 // LeapIndicator:0(0x00), VersionNumber:4(0x100), Mode:3(0x011); 00023 // -> 0b0010 0011 = 0x23 00024 char req[49]; 00025 for(idx= 0; idx < 48; idx++) 00026 req[idx]= 0x00; 00027 req[48]= NULL; 00028 req[0]= 0x23; 00029 bytes= socket.sendTo(serverNTP, (char *)req, 48); 00030 if(bytes == -1) 00031 return -1; 00032 00033 // NTP response is max 68 Byte (EXPECTED). 00034 char resSNTP[70]; 00035 bytes= socket.receiveFrom(serverNTP, resSNTP, sizeof(resSNTP)); 00036 if(bytes == -1) 00037 return -1; 00038 00039 // RFC2030; Transmit TimeStamp[40-48Byte]:BigEndian 32bit unsigned long (dec), + 32bit under floating-point. 00040 unsigned long timeNTP= 0; 00041 for(idx = 0; idx < 4; idx++) 00042 timeNTP= (timeNTP << 8) | resSNTP[40+ idx]; 00043 00044 // 25567day * 24h * 60m * 60s = 2208988800 s. w/o leap seconds(DEFINED). 00045 // Epoch: 1970/01/01~. NTP:1900/01/01~ 00046 // timeEpoch= timeNTP- 2208988800; 00047 return timeNTP- 2208988800;//timeEpoch; 00048 } 00049 00050 SimpleNTP::Result SimpleNTP::close() 00051 { 00052 if(socket.close() == -1) 00053 return ERR_SocketClose; 00054 00055 return SUCCESS; 00056 } 00057 00058 // EOF
Generated on Tue Jul 12 2022 22:45:01 by
1.7.2
