Exemplo n.º 1
0
        /// <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);
        }