public CharacteristicPage(IGattService selectedService)
        {
            InitializeComponent();

            Title = selectedService.Description;

            Characteristics = new ObservableCollection <CharacteristicWrapper>();
            characteristicListView.ItemsSource   = Characteristics;
            characteristicListView.ItemSelected += CharacteristicListView_ItemSelected;

            selectedService.WhenCharacteristicDiscovered().Subscribe((ch) =>
            {
                var characteristic = ch as IGattCharacteristic;
                var charProperties = string.Empty;

                if (characteristic.CanRead())
                {
                    charProperties += "read ";
                }
                if (characteristic.CanWrite())
                {
                    charProperties += "write ";
                }
                if (characteristic.CanNotify())
                {
                    charProperties += "notify";
                }

                Debug.WriteLine($"Characteristic discovered. UUID: {characteristic.Uuid }, Desc: {characteristic.Description}, Properties: {charProperties}");

                Characteristics.Add(new CharacteristicWrapper(characteristic.Uuid.ToString(), charProperties, characteristic));
            });
        }
Beispiel #2
0
        protected override void AddNative(IGattService service)
        {
            var native = service as IDroidGattService;

            if (native == null)
            {
                throw new ArgumentException("Service does not inherit IDroidGattService");
            }

            if (native.Characteristics.Count == 0)
            {
                throw new ArgumentException("No characteristics are assigned to this service");
            }

            native
            .Characteristics
            .Cast <IDroidGattCharacteristic>()
            .Select(character =>
            {
                character
                .Descriptors
                .Cast <IDroidGattDescriptor>()
                .Select(y => y.Native)
                .ToList()
                .ForEach(character.Native.Descriptors.Add);

                return(native.Native);
            });

            this.context.Server.AddService(native.Native);
        }
Beispiel #3
0
 protected override void RemoveNative(IGattService service)
 {
     if (this.services.Remove(service))
     {
         var native = ((IIosGattService)service).Native;
         this.manager.RemoveService(native);
     }
 }
Beispiel #4
0
 protected override void RemoveNative(IGattService service)
 {
     if (this.services.Remove(service))
     {
         var native = ((GattService)service).Native;
         //this.context.Manager?.RemoveService(native);
     }
 }
 public GattCharacteristic(IGattService service,
                           DeviceContext context,
                           BluetoothGattCharacteristic native)
     : base(service, native.Uuid.ToGuid(), (CharacteristicProperties)(int)native.Properties)
 {
     this.context = context;
     this.native  = native;
 }
 public CrossBleRadioCharacteristic(IDevice device,
                                    IGattService service,
                                    IGattCharacteristic characteristic)
 {
     Device         = device;
     Service        = service;
     Characteristic = characteristic;
 }
Beispiel #7
0
 public UwpGattCharacteristic(IGattService service,
                              Guid characteristicUuid,
                              CharacteristicProperties properties,
                              GattPermissions permissions) : base(service, characteristicUuid, properties, permissions)
 {
     this.nativeReady       = new Subject <GattLocalCharacteristic>();
     this.connectedDevices  = new List <IDevice>();
     this.SubscribedDevices = new ReadOnlyCollection <IDevice>(this.connectedDevices);
 }
Beispiel #8
0
        protected override void RemoveNative(IGattService service)
        {
            var nuuid  = Java.Util.UUID.FromString(service.Uuid.ToString());
            var native = this.server.Services.FirstOrDefault(x => x.Uuid.Equals(nuuid));

            if (native != null)
            {
                this.server?.RemoveService(native);
            }
        }
Beispiel #9
0
 public GattCharacteristic(DeviceContext context,
                           Native native,
                           IGattService service)
     : base(service,
            native.Uuid,
            (CharacteristicProperties)native.CharacteristicProperties)
 {
     this.context = context;
     this.Native  = native;
 }
        protected AbstractGattCharacteristic(IGattService service,
                                             Guid characteristicUuid,
                                             CharacteristicProperties properties,
                                             GattPermissions permissions)
        {
            this.Service     = service;
            this.Uuid        = characteristicUuid;
            this.Properties  = properties;
            this.Permissions = permissions;

            this.InternalDescriptors = new List <IGattDescriptor>();
            this.Descriptors         = new ReadOnlyCollection <IGattDescriptor>(this.InternalDescriptors);
        }
Beispiel #11
0
 public GattCharacteristic(
     PeripheralContext context,
     Native native,
     IGattService service
     ) : base(
         service,
         native.Uuid.ToString(),
         (CharacteristicProperties)native.CharacteristicProperties
         )
 {
     this.context = context;
     this.Native  = native;
 }
Beispiel #12
0
        public GattCharacteristic(CBPeripheralManager manager,
                                  IGattService service,
                                  Guid characteristicUuid,
                                  CharacteristicProperties properties,
                                  GattPermissions permissions) : base(service, characteristicUuid, properties, permissions)
        {
            this.manager     = manager;
            this.subscribers = new ConcurrentDictionary <NSUuid, IDevice>();

            this.Native = new CBMutableCharacteristic(
                characteristicUuid.ToCBUuid(),
                properties.ToNative(),
                null,
                (CBAttributePermissions)(int)permissions   // TODO
                );
        }
Beispiel #13
0
        private void Button_ScanService(object sender, RoutedEventArgs e)
        {
            currdev.DiscoverServices().Subscribe(mService =>
            {
                IGattService findServ = mService;
                findServ.DiscoverCharacteristics().Subscribe(mCharacter =>
                {
                    Debug.WriteLine("FindCharacter OK:" + mCharacter.Uuid);
                    if (mCharacter.Uuid == (new Guid("48EB9002-F352-5FA0-9B06-8FCAA22602CF")))
                    {
                        Debug.WriteLine("找到了 OK:");
                        FindCharacter = mCharacter;
                    }
                }
                                                             );

                //Debug.WriteLine("mService OK");
            });
        }
Beispiel #14
0
        public GattCharacteristic(GattContext context,
                                  IGattService service,
                                  Guid uuid,
                                  CharacteristicProperties properties,
                                  GattPermissions permissions) : base(service, uuid, properties, permissions)
        {
            this.context     = context;
            this.subscribers = new Dictionary <string, IDevice>();
            this.Native      = new BluetoothGattCharacteristic(
                uuid.ToUuid(),
                properties.ToNative(),
                permissions.ToNative()
                );

            this.NotificationDescriptor = new BluetoothGattDescriptor(
                NotifyDescriptorId.ToUuid(),
                GattDescriptorPermission.Write | GattDescriptorPermission.Read
                );
            this.Native.AddDescriptor(this.NotificationDescriptor);
        }
Beispiel #15
0
        protected override void AddNative(IGattService service)
        {
            var native = service as IUwpGattService;

            native.Init().Wait();
        }
Beispiel #16
0
 private void RegisterBatteryLevelListener(IGattService service)
 {
     this.BatteryServiceHandler.ValueChangeCompleted += BatteryServiceHandler_ValueChangeCompleted;
 }
Beispiel #17
0
 private void RegisterGlucoseMeasurementListener(IGattService service)
 {
     this.GlucoseServiceHandler.MeasurementNotification += GlucoseServiceHandler_MeasurementNotification;;
 }
		private void RegisterBatteryLevelListener(IGattService service)
		{
			this.BatteryServiceHandler.ValueChangeCompleted += BatteryServiceHandler_ValueChangeCompleted;
		}
 public GattCharacteristic(Native native, IGattService service) : base(service, native.Uuid, (CharacteristicProperties)native.CharacteristicProperties)
 {
     this.Native = native;
 }
		private void RegisterGlucoseMeasurementListener(IGattService service)
		{
			this.GlucoseServiceHandler.MeasurementNotification += GlucoseServiceHandler_MeasurementNotification; ;
		}
Beispiel #21
0
 public GattCharacteristic(GattCharacteristic1 native, IGattService service, CharacteristicProperties properties)
     : base(service, Guid.Parse(native.UUID), properties)
 {
     this.native = native;
 }
 protected abstract void RemoveNative(IGattService service);
 protected AbstractGattCharacteristic(IGattService service, Guid uuid, CharacteristicProperties properties)
 {
     this.Service    = service;
     this.Uuid       = uuid;
     this.Properties = properties;
 }
Beispiel #24
0
 public GattCharacteristic(IGattService service, CBCharacteristic native)
     : base(service, native.UUID.ToGuid(), (CharacteristicProperties)(int)native.Properties)
 {
     this.native = native;
 }
 protected abstract void AddNative(IGattService service);
Beispiel #26
0
 protected override void RemoveNative(IGattService service) => ((IUwpGattService)service).Stop();
 public virtual void AddService(IGattService service)
 {
     this.ServiceList.Add(service);
     this.AddNative(service);
 }
Beispiel #28
0
 public GattCharacteristic(IGattService service, Guid uuid, CharacteristicProperties properties) : base(service, uuid, properties)
 {
 }
Beispiel #29
0
 public MockGattCharacteristic(IGattService service, Guid guid, CharacteristicProperties properties)
     : base(service, guid, properties)
 {
 }
 public TestGattCharacteristic(string uuid, IGattService service, CharacteristicProperties?props = null)
 {
     this.Uuid       = uuid;
     this.Service    = service;
     this.Properties = props ?? CharacteristicProperties.Notify | CharacteristicProperties.Write | CharacteristicProperties.Read;
 }
Beispiel #31
0
 public static Task <IList <IGattCharacteristic> > GetCharacteristicsAsync(this IGattService service, CancellationToken?cancelToken = null)
 => service
 .GetCharacteristics()
 .ToTask(cancelToken ?? CancellationToken.None);
Beispiel #32
0
 protected override void RemoveNative(IGattService service) => this.context.Server.Services.Remove(((IDroidGattService)service).Native);