public CharacteristicEditPage(IGattCharacteristic selectedCharacteristic)
        {
            InitializeComponent();

            Title = selectedCharacteristic.Uuid.ToString();


            if (selectedCharacteristic.CanRead())
            {
                ReadCharacteristicAsync(selectedCharacteristic);
            }

            if (selectedCharacteristic.CanWrite())
            {
                //await Characteristic.Write(bytes);
            }

            if (selectedCharacteristic.CanNotify())
            {
                // TODO: couldn't get this to work for the demo.
                // The docs show this, but SetNotificationValue() doesn't exist in IGattCharacteristic
                //var success = selectedCharacteristic.SetNotificationValue(CharacteristicConfigDescriptorValue.Notify);

                // TODO: this didn't seem to do much
                selectedCharacteristic.SubscribeToNotifications();
                selectedCharacteristic.WhenNotificationReceived().Subscribe(result =>
                {
                    //result.Data
                });
            }
        }
Esempio n. 2
0
        public static void AssertWrite(this IGattCharacteristic characteristic, bool withResponse)
        {
            if (!characteristic.CanWrite())
            {
                throw new ArgumentException($"This characteristic '{characteristic.Uuid}' does not support writes");
            }

            if (withResponse && !characteristic.CanWriteWithResponse())
            {
                throw new ArgumentException($"This characteristic '{characteristic.Uuid}' does not support writes with response");
            }
        }
        private void ListView_ItemTapped(object sender, ItemTappedEventArgs e)
        {
            var select = (CharacteristicsList)e.Item;

            foreach (var c in AllCharacteristics)
            {
                if (c.Uuid == select.Uuid)
                {
                    SelectCharacteristic = c;
                    info_uuid.Text       = "UUID:" + SelectCharacteristic.Uuid;
                    info_read.Text       = "CallBack UUID:";
                    notify_btn.Text      = "Notify";
                    if (SelectCharacteristic.CanRead())
                    {
                        read_btn.IsVisible = true;
                    }
                    else
                    {
                        read_btn.IsVisible = false;
                    }
                    if (SelectCharacteristic.CanWrite())
                    {
                        write_btn.IsVisible = true;
                    }
                    else
                    {
                        write_btn.IsVisible = false;
                    }
                    if (SelectCharacteristic.CanNotify())
                    {
                        notify_btn.IsVisible = true;
                    }
                    else
                    {
                        notify_btn.IsVisible = false;
                    }
                    background.IsVisible = true;
                    info.IsVisible       = true;
                    break;
                }
            }
        }