Bohyun Bang / WIZnetInterface

Dependents:   w7500-paho-mqtt openHAB_mqtt_W7500 kakaoIoTchatbot w7500-RFID-mqtt

Fork of WIZnetInterface by WIZnet

Committer:
eunkyoungkim
Date:
Thu Jun 25 23:19:51 2015 +0000
Revision:
17:7d7553e0578e
modify wrong data(SSD1306.h)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eunkyoungkim 17:7d7553e0578e 1 /* NTPClient.h */
eunkyoungkim 17:7d7553e0578e 2 /* Copyright (C) 2012 mbed.org, MIT License
eunkyoungkim 17:7d7553e0578e 3 *
eunkyoungkim 17:7d7553e0578e 4 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
eunkyoungkim 17:7d7553e0578e 5 * and associated documentation files (the "Software"), to deal in the Software without restriction,
eunkyoungkim 17:7d7553e0578e 6 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
eunkyoungkim 17:7d7553e0578e 7 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
eunkyoungkim 17:7d7553e0578e 8 * furnished to do so, subject to the following conditions:
eunkyoungkim 17:7d7553e0578e 9 *
eunkyoungkim 17:7d7553e0578e 10 * The above copyright notice and this permission notice shall be included in all copies or
eunkyoungkim 17:7d7553e0578e 11 * substantial portions of the Software.
eunkyoungkim 17:7d7553e0578e 12 *
eunkyoungkim 17:7d7553e0578e 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
eunkyoungkim 17:7d7553e0578e 14 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
eunkyoungkim 17:7d7553e0578e 15 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
eunkyoungkim 17:7d7553e0578e 16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
eunkyoungkim 17:7d7553e0578e 17 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
eunkyoungkim 17:7d7553e0578e 18 */
eunkyoungkim 17:7d7553e0578e 19
eunkyoungkim 17:7d7553e0578e 20 /** \file
eunkyoungkim 17:7d7553e0578e 21 NTP Client header file
eunkyoungkim 17:7d7553e0578e 22 */
eunkyoungkim 17:7d7553e0578e 23
eunkyoungkim 17:7d7553e0578e 24 #ifndef NTPCLIENT_H_
eunkyoungkim 17:7d7553e0578e 25 #define NTPCLIENT_H_
eunkyoungkim 17:7d7553e0578e 26
eunkyoungkim 17:7d7553e0578e 27 #include <cstdint>
eunkyoungkim 17:7d7553e0578e 28
eunkyoungkim 17:7d7553e0578e 29 using std::uint8_t;
eunkyoungkim 17:7d7553e0578e 30 using std::uint16_t;
eunkyoungkim 17:7d7553e0578e 31 using std::uint32_t;
eunkyoungkim 17:7d7553e0578e 32
eunkyoungkim 17:7d7553e0578e 33 #include "UDPSocket.h"
eunkyoungkim 17:7d7553e0578e 34
eunkyoungkim 17:7d7553e0578e 35 #define NTP_DEFAULT_PORT 123
eunkyoungkim 17:7d7553e0578e 36 #define NTP_DEFAULT_TIMEOUT 4000
eunkyoungkim 17:7d7553e0578e 37
eunkyoungkim 17:7d7553e0578e 38 ///NTP client results
eunkyoungkim 17:7d7553e0578e 39 enum NTPResult
eunkyoungkim 17:7d7553e0578e 40 {
eunkyoungkim 17:7d7553e0578e 41 NTP_DNS, ///<Could not resolve name
eunkyoungkim 17:7d7553e0578e 42 NTP_PRTCL, ///<Protocol error
eunkyoungkim 17:7d7553e0578e 43 NTP_TIMEOUT, ///<Connection timeout
eunkyoungkim 17:7d7553e0578e 44 NTP_CONN, ///<Connection error
eunkyoungkim 17:7d7553e0578e 45 NTP_OK = 0, ///<Success
eunkyoungkim 17:7d7553e0578e 46 };
eunkyoungkim 17:7d7553e0578e 47
eunkyoungkim 17:7d7553e0578e 48 /** NTP Client to update the mbed's RTC using a remote time server
eunkyoungkim 17:7d7553e0578e 49 *
eunkyoungkim 17:7d7553e0578e 50 */
eunkyoungkim 17:7d7553e0578e 51 class NTPClient
eunkyoungkim 17:7d7553e0578e 52 {
eunkyoungkim 17:7d7553e0578e 53 public:
eunkyoungkim 17:7d7553e0578e 54 /**
eunkyoungkim 17:7d7553e0578e 55 Instantiate the NTP client
eunkyoungkim 17:7d7553e0578e 56 */
eunkyoungkim 17:7d7553e0578e 57 NTPClient();
eunkyoungkim 17:7d7553e0578e 58
eunkyoungkim 17:7d7553e0578e 59 /**Get current time (blocking)
eunkyoungkim 17:7d7553e0578e 60 Update the time using the server host
eunkyoungkim 17:7d7553e0578e 61 Blocks until completion
eunkyoungkim 17:7d7553e0578e 62 @param host NTP server IPv4 address or hostname (will be resolved via DNS)
eunkyoungkim 17:7d7553e0578e 63 @param port port to use; defaults to 123
eunkyoungkim 17:7d7553e0578e 64 @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
eunkyoungkim 17:7d7553e0578e 65 @return 0 on success, NTP error code (<0) on failure
eunkyoungkim 17:7d7553e0578e 66 */
eunkyoungkim 17:7d7553e0578e 67 NTPResult setTime(const char* host, uint16_t port = NTP_DEFAULT_PORT, uint32_t timeout = NTP_DEFAULT_TIMEOUT); //Blocking
eunkyoungkim 17:7d7553e0578e 68
eunkyoungkim 17:7d7553e0578e 69 private:
eunkyoungkim 17:7d7553e0578e 70 struct NTPPacket //See RFC 4330 for Simple NTP
eunkyoungkim 17:7d7553e0578e 71 {
eunkyoungkim 17:7d7553e0578e 72 //WARN: We are in LE! Network is BE!
eunkyoungkim 17:7d7553e0578e 73 //LSb first
eunkyoungkim 17:7d7553e0578e 74 unsigned mode : 3;
eunkyoungkim 17:7d7553e0578e 75 unsigned vn : 3;
eunkyoungkim 17:7d7553e0578e 76 unsigned li : 2;
eunkyoungkim 17:7d7553e0578e 77
eunkyoungkim 17:7d7553e0578e 78 uint8_t stratum;
eunkyoungkim 17:7d7553e0578e 79 uint8_t poll;
eunkyoungkim 17:7d7553e0578e 80 uint8_t precision;
eunkyoungkim 17:7d7553e0578e 81 //32 bits header
eunkyoungkim 17:7d7553e0578e 82
eunkyoungkim 17:7d7553e0578e 83 uint32_t rootDelay;
eunkyoungkim 17:7d7553e0578e 84 uint32_t rootDispersion;
eunkyoungkim 17:7d7553e0578e 85 uint32_t refId;
eunkyoungkim 17:7d7553e0578e 86
eunkyoungkim 17:7d7553e0578e 87 uint32_t refTm_s;
eunkyoungkim 17:7d7553e0578e 88 uint32_t refTm_f;
eunkyoungkim 17:7d7553e0578e 89 uint32_t origTm_s;
eunkyoungkim 17:7d7553e0578e 90 uint32_t origTm_f;
eunkyoungkim 17:7d7553e0578e 91 uint32_t rxTm_s;
eunkyoungkim 17:7d7553e0578e 92 uint32_t rxTm_f;
eunkyoungkim 17:7d7553e0578e 93 uint32_t txTm_s;
eunkyoungkim 17:7d7553e0578e 94 uint32_t txTm_f;
eunkyoungkim 17:7d7553e0578e 95 } __attribute__ ((packed));
eunkyoungkim 17:7d7553e0578e 96
eunkyoungkim 17:7d7553e0578e 97 UDPSocket m_sock;
eunkyoungkim 17:7d7553e0578e 98
eunkyoungkim 17:7d7553e0578e 99 };
eunkyoungkim 17:7d7553e0578e 100 typedef struct _datetime
eunkyoungkim 17:7d7553e0578e 101 {
eunkyoungkim 17:7d7553e0578e 102 uint16_t yy;
eunkyoungkim 17:7d7553e0578e 103 uint8_t mo;
eunkyoungkim 17:7d7553e0578e 104 uint8_t dd;
eunkyoungkim 17:7d7553e0578e 105 uint8_t hh;
eunkyoungkim 17:7d7553e0578e 106 uint8_t mm;
eunkyoungkim 17:7d7553e0578e 107 uint8_t ss;
eunkyoungkim 17:7d7553e0578e 108 } datetime;
eunkyoungkim 17:7d7553e0578e 109
eunkyoungkim 17:7d7553e0578e 110
eunkyoungkim 17:7d7553e0578e 111 #endif /* NTPCLIENT_H_ */