try:
    import usocket as socket
except:
    import socket
try:
    import ustruct as struct
except:
    import struct

import  network

# (date(2000, 1, 1) - date(1900, 1, 1)).days * 24*60*60
NTP_DELTA = 3155673600 #Seconds from 1/1/1900 to 1/1/2000 
CST_OFFSET = 18000 #5*60*60
host = "pool.ntp.org"

def time(UTC_TIME_OFFSET):
  NTP_QUERY = bytearray(48)
  NTP_QUERY[0] = 0x1b
  addr = socket.getaddrinfo(host, 123)[0][-1]
  s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  s.settimeout(1)
  res = s.sendto(NTP_QUERY, addr)
  msg = s.recv(48)
  s.close()
  val = struct.unpack("!I", msg[40:44])[0]
  return val - (NTP_DELTA+UTC_TIME_OFFSET)

# There's currently no timezone support in MicroPython, so
# utime.localtime() will return UTC time (as if it was .gmtime())
def settime(UTC_TIME_OFFSET):
    t = time(UTC_TIME_OFFSET)
    import machine
    import utime
    tm = utime.localtime(t)
    tm = tm[0:3] + (0,) + tm[3:6] + (0,)
    machine.RTC().datetime(tm)
    


