Пример #1
0
        protected virtual void StartAdvertising(AdvertisementData adData)
        {
            var settings = new AdvertiseSettings.Builder()
                           .SetAdvertiseMode(AdvertiseMode.Balanced)
                           .SetConnectable(true);

            var data = new AdvertiseData.Builder()
                       .SetIncludeDeviceName(true)
                       .SetIncludeTxPowerLevel(true);

            if (adData.ManufacturerData != null)
            {
                data.AddManufacturerData(adData.ManufacturerData.CompanyId, adData.ManufacturerData.Data);
            }

            foreach (var serviceUuid in adData.ServiceUuids)
            {
                var uuid = ParcelUuid.FromString(serviceUuid.ToString());
                data.AddServiceUuid(uuid);
            }

            this.manager
            .Adapter
            .BluetoothLeAdvertiser
            .StartAdvertising(
                settings.Build(),
                data.Build(),
                this.adCallbacks
                );
        }
Пример #2
0
        public override void Start(AdvertisementData adData)
        {
            if (this.isRunning)
            {
                return;
            }

            this.StartAdvertising(adData);
            this.StartGatt();
            this.isRunning = true;
        }
Пример #3
0
        public override void Start(AdvertisementData adData)
        {
            if (this.manager.Advertising)
            {
                return;
            }

            if (CBPeripheralManager.AuthorizationStatus != CBPeripheralManagerAuthorizationStatus.Authorized)
            {
                throw new ArgumentException("Permission Denied - " + CBPeripheralManager.AuthorizationStatus);
            }

            if (this.manager.State != CBPeripheralManagerState.PoweredOn)
            {
                throw new ArgumentException("Invalid State - " + this.manager.State);
            }

            this.manager.StartAdvertising(new StartAdvertisingOptions
            {
                LocalName    = adData.LocalName,
                ServicesUUID = adData
                               .ServiceUuids
                               .Select(x => CBUUID.FromString(x.ToString()))
                               .ToArray()
            });

            this.services
            .Cast <GattService>()
            .Select(x =>
            {
                x.Native.Characteristics = x
                                           .Characteristics
                                           .OfType <GattCharacteristic>()
                                           .Select(y =>
                {
                    y.Native.Descriptors = y
                                           .Descriptors
                                           .OfType <GattDescriptor>()
                                           .Select(z => z.Native)
                                           .ToArray();
                    return(y.Native);
                })
                                           .ToArray();

                return(x.Native);
            })
            .ToList()
            .ForEach(this.manager.AddService);
        }
Пример #4
0
        public override void Start(AdvertisementData adData)
        {
            this.publisher.Advertisement.Flags = BluetoothLEAdvertisementFlags.ClassicNotSupported;
            this.publisher.Advertisement.ManufacturerData.Clear();
            this.publisher.Advertisement.ServiceUuids.Clear();

            if (adData.ManufacturerData != null)
            {
                using (var writer = new DataWriter())
                {
                    writer.WriteBytes(adData.ManufacturerData.Data);
                    var md = new BluetoothLEManufacturerData(adData.ManufacturerData.CompanyId, writer.DetachBuffer());
                    this.publisher.Advertisement.ManufacturerData.Add(md);
                }
            }
            foreach (var serviceUuid in adData.ServiceUuids)
            {
                this.publisher.Advertisement.ServiceUuids.Add(serviceUuid);
            }
            this.publisher.Start();
            //GattCharacteristicUuids.
            //GattServiceUuids.AlertNotification
            //new GattReliableWriteTransaction().Write/Commit
        }
Пример #5
0
 public abstract void Start(AdvertisementData adData);