public MainPage()
        {
            this.InitializeComponent();


            InitGPIO();

            var sender = new object();
            var e      = new RoutedEventArgs();

            GetDevicesButton_Click(sender, e);
            ListenForMessages();


            MyAzureClass myAzureClass = new MyAzureClass();

            // MainDevice = myAzureClass.AddDeviceToCloud(MainDevice.DeviceId, MainDevice.Status).Result;
            // Task.Run(async () => { MainDevice = await myAzureClass.AddDeviceToCloud(MainDevice.DeviceId, MainDevice.Status); }).GetAwaiter().GetResult();
            //AsyncContext.Run(() => );
            //while (MainDevice.PartitionKey == null) { }
            MainDevice.AssignRowKey();
            MainDevice.AssignPartitionKey();

            DeviceStatusButton.IsEnabled = true;
        }
        private void UpdateDevice_Click(object sender, RoutedEventArgs e)
        {
            AzureDevices SelectedDevice = (AzureDevices)DeviceList.SelectedItems[0];

            if (TrueRadio.IsChecked.Value)
            {
                SelectedDevice.Status = true;
            }
            else
            {
                SelectedDevice.Status = false;
            }

            var index = DeviceList.Items.IndexOf(DeviceList.SelectedItem);

            list.RemoveAt(index);
            list.Insert(index, SelectedDevice);

            /* DeviceList.ItemsSource = null;
             * DeviceList.ItemsSource = list;*/

            MyAzureClass myAzureClass = new MyAzureClass();

            myAzureClass.UpdateRecordInTable(SelectedDevice);
            AzureIoTHub.SendDeviceToCloudMessageAsync();
        }
        private async void AddDeviceBtn_Click(object sender, RoutedEventArgs e)
        {
            MyAzureClass myAzureClass = new MyAzureClass();
            var          AddedDevice  = await myAzureClass.AddDeviceToCloud(AddDeviceBox.Text, StatusCheck.IsChecked.Value);

            list.Add(AddedDevice);
            DeviceList.ItemsSource = null;
            DeviceList.ItemsSource = list;
        }
        private void DeviceStatusButton_PointerPressed(object sender, PointerRoutedEventArgs e)
        {
            MainDevice.Status = true;
            MyAzureClass myAzureClass = new MyAzureClass();

            myAzureClass.UpdateRecordInTable(MainDevice);
            AzureIoTHub.SendDeviceToCloudMessageAsync();
            Debug.WriteLine("Button Pressed");
        }
        private async void GetDevicesButton_Click(object sender, RoutedEventArgs e)
        {
            MyAzureClass myAzureClass = new MyAzureClass();

            list = await myAzureClass.GetDevices();

            foreach (AzureDevices device in list)
            {
                Debug.WriteLine("Device ID: " + device.DeviceId);
            }
            DeviceList.ItemsSource = list;
        }
        private void DeleteDeviceButton_Click(object sender, RoutedEventArgs e)
        {
            //int Index = DeviceList.SelectedIndex;
            AzureDevices SelectedDevice = (AzureDevices)DeviceList.SelectedItems[0];
            MyAzureClass myAzureClass   = new MyAzureClass();

            myAzureClass.DeleteRecordinTable(SelectedDevice.DeviceId);

            var index = DeviceList.Items.IndexOf(DeviceList.SelectedItem);

            list.RemoveAt(index);
            DeviceList.ItemsSource = null;
            DeviceList.ItemsSource = list;
        }
        private async void buttonPin_ValueChangedAsync(GpioPin sender, GpioPinValueChangedEventArgs e)
        {
            MyAzureClass myAzureClass = new MyAzureClass();

            // toggle the state of the LED every time the button is pressed
            if (e.Edge == GpioPinEdge.FallingEdge)
            {
                ledPinValue = (ledPinValue == GpioPinValue.Low) ?
                              GpioPinValue.High : GpioPinValue.Low;
                ledPin.Write(ledPinValue);
                MainDevice.Status = Convert.ToBoolean(ledPinValue);
                myAzureClass.UpdateRecordInTable(MainDevice);
                AzureIoTHub.SendDeviceToCloudMessageAsync();
            }
        }
        public async void RefreshList()
        {
            MyAzureClass myAzureClass = new MyAzureClass();

            list = await myAzureClass.GetDevices();

            var AnyDeviceHigh = false;

            foreach (AzureDevices x in list)
            {
                if (x.Status)
                {
                    AnyDeviceHigh = true;
                }
            }
            updateLED(AnyDeviceHigh);
            DeviceList.ItemsSource = null;
            DeviceList.ItemsSource = list;
        }
 private void DeviceStatus_Clicked(object sender, RoutedEventArgs e)
 {
     if (DeviceStatusButton.IsEnabled)
     {
         if (DeviceStatusButton.Content.ToString() == "Not Clicked")
         {
             MainDevice.Status = true;
             MyAzureClass myAzureClass = new MyAzureClass();
             myAzureClass.UpdateRecordInTable(MainDevice);
             AzureIoTHub.SendDeviceToCloudMessageAsync();
             Debug.WriteLine("Button Pressed");
             DeviceStatusButton.Content = "Clicked";
         }
         else
         {
             MainDevice.Status = false;
             MyAzureClass myAzureClass = new MyAzureClass();
             myAzureClass.UpdateRecordInTable(MainDevice);
             AzureIoTHub.SendDeviceToCloudMessageAsync();
             Debug.WriteLine("Button Released");
             DeviceStatusButton.Content = "Not Clicked";
         }
     }
 }