private void OnButtonUp(object sender, RoutedEventArgs evt) { ButtonEventArgs e = (ButtonEventArgs)evt; const int timeZoneOffsetInMinutes = -8 * 60; switch (e.Button) { case Microsoft.SPOT.Hardware.Button.VK_UP: // Reset the time to an arbitrary value. TimeService.SetUtcTime(128752416000000000); TimeService.SetTimeZoneOffset(timeZoneOffsetInMinutes); break; case Microsoft.SPOT.Hardware.Button.VK_SELECT: // Perform a one time sync with the time server. TimeServiceStatus status = TimeService.UpdateNow(TimeServerIPAddress, 10); TimeService.SetTimeZoneOffset(timeZoneOffsetInMinutes); break; case Microsoft.SPOT.Hardware.Button.VK_DOWN: // Start a scheduled periodic sync. TimeServiceSettings settings = new TimeServiceSettings(); // Sync every 10 seconds. settings.PrimaryServer = TimeServerIPAddress; settings.RefreshTime = 10; TimeService.Settings = settings; TimeService.Start(); TimeService.SetTimeZoneOffset(timeZoneOffsetInMinutes); break; } }
public bool SyncTimeService() { #if false var completed = false; if (this.IsNetworkConnected) { TimeService.SystemTimeChanged += TimeService_SystemTimeChanged; TimeServiceStatus status = TimeService.UpdateNow(TimeServerIPAddress, 10); TimeService.SetTimeZoneOffset(540); // time origin } int count = 0; while (count++ < 5) { var flag = false; lock (this) { flag = hasTimeFixed; } if (flag) { completed = true; break; } Thread.Sleep(1000); } if (!completed) { completed = GetTimeFromWeb(); } #else var completed = GrFamily.Utility.SystemTimeInitializer.InitSystemTime(); #endif return(completed); }
private void OnButtonUp(object sender, RoutedEventArgs evt) { ButtonEventArgs e = (ButtonEventArgs)evt; if (e.Button == Microsoft.SPOT.Hardware.Button.VK_UP) { // reset the time to an arbitrary value TimeService.SetUtcTime(128752416000000000); TimeService.SetTimeZoneOffset(-420); } else if (e.Button == Microsoft.SPOT.Hardware.Button.VK_SELECT) { // Perform a one time sync with the time server TimeServiceStatus status = TimeService.UpdateNow(TimeServerIPAddress, 10); TimeService.SetTimeZoneOffset(-420); // time origin } else if (e.Button == Microsoft.SPOT.Hardware.Button.VK_DOWN) { // start a scheduled periodic sync TimeServiceSettings settings = new TimeServiceSettings(); settings.PrimaryServer = TimeServerIPAddress; settings.RefreshTime = 10; // sycn every 10 seconds TimeService.Settings = settings; TimeService.Start(); TimeService.SetTimeZoneOffset(-420); // time origin } }
public MFTestResults TimeServiceLastSyncStatusTest0() { MFTestResults result = MFTestResults.Pass; try { DateTime now = DateTime.Now; /// EBS bug returns value in local time instead of UTC. /// Remove following line once they fixed the bug. now = now.AddHours(12); TimeService.SetUtcTime(119600064000000000); /// 1/1/1980. /// byte[] primaryServer = new byte[] { 192, 43, 244, 18 }; byte[] alternateServer = new byte[] { 129, 6, 15, 28 }; TimeServiceSettings settings = new TimeServiceSettings(); settings.PrimaryServer = primaryServer; settings.AlternateServer = alternateServer; settings.Tolerance = 100; settings.RefreshTime = 60; TimeServiceStatus status = null; /// Save the settings. TimeService.Settings = settings; TimeService.Start(); /// This should fire a sync event right away. Thread.Sleep(5000); /// Sleep for some time, we should have time synced by now. /// for (int i = 0; i < 10; i++) { status = TimeService.LastSyncStatus; if (status.Flags == TimeServiceStatus.TimeServiceStatusFlags.SyncSucceeded) { break; } Thread.Sleep(1000); } if (status.CurrentTimeUTC.Year != DateTime.UtcNow.Year) { throw new ArgumentException("Time not synced correctly."); } } catch (Exception ex) { Log.Exception("Unexpected exception", ex); result = MFTestResults.Fail; } finally { TimeService.Stop(); } return(result); }
private void UpdateTimeNow() { for (int i = 0; i < 10; i++) { TimeServiceStatus status = TimeService.UpdateNow(new byte[] { 192, 43, 244, 18 }, 10); if (status.Flags == TimeServiceStatus.TimeServiceStatusFlags.SyncSucceeded) { break; } Thread.Sleep(100); } }
public MFTestResults TimeServiceUpdateTest0() { MFTestResults result = MFTestResults.Pass; try { /// Now call UpdateNow this should set the time back to correct one. TimeServiceStatus status = TimeService.UpdateNow(new byte[] { 157, 54, 86, 20 }, 10); DateTime now = DateTime.Now; // // SKU == 3 indicates the device is the emulator. // if (Microsoft.SPOT.Hardware.SystemInfo.SystemID.SKU != 3) { /// EBS bug returns value in local time instead of UTC. /// Remove following line once they fixed the bug. now = now.AddHours(7); } TimeService.SetUtcTime(119600064000000000); /// 1/1/1980. /// DateTime old = DateTime.Now; /// Now call UpdateNow this should set the time back to correct one. status = TimeService.UpdateNow(new byte[] { 157, 54, 86, 20 }, 10); DateTime end = DateTime.Now; TimeSpan diff = end < now ? now - end : end - now; TimeSpan diff2 = now - old; // ten minutes (DNS may take a while) if (diff > new TimeSpan(0, 10, 0) && diff2 > new TimeSpan(20 * 365, 0, 0, 0)) { throw new ArgumentException("Update time invalid."); } } catch (Exception ex) { Log.Exception("Unexpected exception", ex); result = MFTestResults.Fail; } return(result); }
private static void UpdateNow() { while (true) { DateTime beforeTime = DateTime.UtcNow; TimeServiceStatus status = TimeService.UpdateNow(TimeService.Settings.Tolerance); if (status.Flags == TimeServiceStatus.TimeServiceStatusFlags.SyncSucceeded) { if (!timeSynchronized) { TimeSpan offset = DateTime.UtcNow - beforeTime; firstSyncTimeOffset = offset.Ticks; timeSynchronized = true; } break; } Thread.Sleep(30000); } }
public MFTestResults TimeServiceLastSyncStatusTest0() { MFTestResults result = MFTestResults.Pass; try { DateTime now = DateTime.Now; /// EBS bug returns value in local time instead of UTC. /// Remove following line once they fixed the bug. now = now.AddHours(12); TimeService.SetUtcTime(119600064000000000); /// 1/1/1980. /// TimeServiceSettings settings = new TimeServiceSettings(); settings.PrimaryServer = GetTimeServiceAddress().GetAddressBytes(); settings.Tolerance = 100; settings.RefreshTime = 60; TimeServiceStatus status = null; timerEvent.Reset(); TimeService.SystemTimeChanged += new SystemTimeChangedEventHandler(TimeService_SystemTimeChanged); /// Save the settings. TimeService.Settings = settings; TimeService.Start(); /// This should fire a sync event right away. timerEvent.WaitOne(5000, false); /// for (int i = 0; i < 10; i++) { status = TimeService.LastSyncStatus; if (status.Flags == TimeServiceStatus.TimeServiceStatusFlags.SyncSucceeded) { break; } timerEvent.WaitOne(1000, false); } if (status.CurrentTimeUTC.Year != DateTime.UtcNow.Year) { throw new ArgumentException("Time not synced correctly."); } } catch (Exception ex) { Log.Exception("Unexpected exception", ex); result = MFTestResults.Fail; } finally { TimeService.SystemTimeChanged -= new SystemTimeChangedEventHandler(TimeService_SystemTimeChanged); TimeService.Stop(); } return(result); }