/// <summary> /// Set device Time Zone and Synchronization Server via device twin. /// </summary> private async void SetTimeInfoButton_ClickAsync(object sender, RoutedEventArgs e) { TimeZoneData selectedTimeZoneData = (TimeZoneData)TimeZoneCombobox.SelectedItem; if (selectedTimeZoneData == null) { _mainPage.ShowDialogAsync("Invaid Input", "Time Zone value is not selected"); return; } TimeSettingsDataContract.DesiredProperties desiredProperties = new TimeSettingsDataContract.DesiredProperties(); desiredProperties.ntpServer = NtpServerCombobox.SelectedValue.ToString(); desiredProperties.timeZoneBias = selectedTimeZoneData.Bias; desiredProperties.timeZoneStandardBias = selectedTimeZoneData.StandardBias; desiredProperties.timeZoneStandardDate = selectedTimeZoneData.StandardDate; desiredProperties.timeZoneStandardName = selectedTimeZoneData.StandardName; desiredProperties.timeZoneStandardDayOfWeek = selectedTimeZoneData.StandardDayOfWeek; desiredProperties.timeZoneDaylightBias = selectedTimeZoneData.DaylightBias; desiredProperties.timeZoneDaylightDate = selectedTimeZoneData.DaylightDate; desiredProperties.timeZoneDaylightName = selectedTimeZoneData.DaylightName; desiredProperties.timeZoneDaylightDayOfWeek = selectedTimeZoneData.DaylightDayOfWeek; desiredProperties.timeZoneKeyName = selectedTimeZoneData.Id; desiredProperties.dynamicDaylightTimeDisabled = selectedTimeZoneData.DisableDynamicDaylightTime; string refreshingValue = "\"refreshing\""; string finalValue = "{" + desiredProperties.ToJsonString() + "}"; await _mainPage.UpdateTwinData(refreshingValue, finalValue); }
public string ToJson() { TimeZoneData timeZoneData = (TimeZoneData)DisplayNames.SelectedItem; TimeSettingsDataContract.DesiredProperties desiredProperties = new TimeSettingsDataContract.DesiredProperties(); desiredProperties.ntpServer = ((ComboBoxItem)DesiredNtpServer.SelectedItem).Content.ToString(); desiredProperties.timeZoneBias = timeZoneData.Bias; desiredProperties.timeZoneStandardBias = timeZoneData.StandardBias; desiredProperties.timeZoneStandardDate = timeZoneData.StandardDate; desiredProperties.timeZoneStandardName = timeZoneData.StandardName; desiredProperties.timeZoneStandardDayOfWeek = timeZoneData.StandardDayOfWeek; desiredProperties.timeZoneDaylightBias = timeZoneData.DaylightBias; desiredProperties.timeZoneDaylightDate = timeZoneData.DaylightDate; desiredProperties.timeZoneDaylightName = timeZoneData.DaylightName; desiredProperties.timeZoneDaylightDayOfWeek = timeZoneData.DaylightDayOfWeek; desiredProperties.timeZoneKeyName = timeZoneData.Id; desiredProperties.dynamicDaylightTimeDisabled = false; return(desiredProperties.ToJsonString()); }
// IClientPropertyHandler public async Task <CommandStatus> OnDesiredPropertyChange(JToken desiredValue) { if (!(desiredValue is JObject)) { throw new Error(ErrorCodes.INVALID_DESIRED_JSON_VALUE, "Invalid json value type for the " + PropertySectionName + " node."); } TimeSettingsDataContract.DesiredProperties desiredProperties = TimeSettingsDataContract.DesiredProperties.FromJsonObject((JObject)desiredValue); Message.SetTimeInfoRequestData data = new Message.SetTimeInfoRequestData(); data.ntpServer = desiredProperties.ntpServer; // Use registry settings? data.dynamicDaylightTimeDisabled = desiredProperties.dynamicDaylightTimeDisabled; // Option 1 (if dynamicDaylightTimeDisabled = false) data.timeZoneKeyName = desiredProperties.timeZoneKeyName; // Option 2 (if dynamicDaylightTimeDisabled = true || timeZoneKeyName is not found) data.timeZoneBias = desiredProperties.timeZoneBias; data.timeZoneStandardBias = desiredProperties.timeZoneStandardBias; data.timeZoneStandardDate = desiredProperties.timeZoneStandardDate; data.timeZoneStandardDayOfWeek = desiredProperties.timeZoneStandardDayOfWeek; data.timeZoneStandardName = desiredProperties.timeZoneStandardName; data.timeZoneDaylightBias = desiredProperties.timeZoneDaylightBias; data.timeZoneDaylightDate = desiredProperties.timeZoneDaylightDate; data.timeZoneDaylightDayOfWeek = desiredProperties.timeZoneDaylightDayOfWeek; data.timeZoneDaylightName = desiredProperties.timeZoneDaylightName; await _systemConfiguratorProxy.SendCommandAsync(new Message.SetTimeInfoRequest(data)); var reportedProperties = await GetTimeSettingsAsync(); await _callback.ReportPropertiesAsync(PropertySectionName, JObject.FromObject(reportedProperties.data)); return(CommandStatus.Committed); }