/*---------------------------------------------------------------------------- Copyright: Radig Ulrich mailto: mail@ulrichradig.de Author: Radig Ulrich Remarks: known Problems: none Version: 12.11.2007 Description: NTP Client ----------------------------------------------------------------------------*/ #include "ntp.h" #if USE_NTP volatile unsigned int ntp_timer = NTP_REFRESH; //---------------------------------------------------------------------------- // PROGMEM char NTP_Request[] = { 0xd9,0x00,0x0a,0xfa,0x00,0x00,0x00,0x00, 0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc7,0xd6,0xac,0x72,0x08,0x00,0x00,0x00 // ,'%','E','N','D' }; unsigned char ntp_server_ip[4]; //---------------------------------------------------------------------------- //Initialisierung des NTP Ports (für Daten empfang) void ntp_init (void) { //Port in Anwendungstabelle eintragen für eingehende NTP Daten! add_udp_app (NTP_CLIENT_PORT, (void(*)(unsigned char))ntp_get); //NTP IP aus EEPROM auslesen (*((unsigned long*)&ntp_server_ip[0])) = get_eeprom_value(NTP_IP_EEPROM_STORE,NTP_IP); return; } //---------------------------------------------------------------------------- //Anforderung der aktuellen Zeitinformationen von einem NTP Server void ntp_request (void) { //oeffnet eine Verbindung zu einem NTP Server unsigned int byte_count; //ARP Request senden unsigned long tmp_ip = (*(unsigned long*)&ntp_server_ip[0]); if (arp_request(tmp_ip) == 1) { //Interrupt Deaktivieren da Buffer gerade zum senden benutzt wird! //ETH_INT_DISABLE; PGM_P ntp_data_pointer = NTP_Request; for (byte_count = 0;byte_countrx_timestamp = LBBL_ENDIAN_LONG(ntp->rx_timestamp); ntp->rx_timestamp += GMT_TIME_CORRECTION; // UTC +1h time = ntp->rx_timestamp; unsigned char hh = (time/3600)%24; unsigned char mm = (time/60)%60; unsigned char ss = time %60; NTP_DEBUG("\n\rNTP TIME: %2i:%2i:%2i\r\n",hh,mm,ss); } #endif //USE_NTP