public void Advertise()
        {
            try
            {
                bluetoothLeAdvertiser = BluetoothAdapter.DefaultAdapter.BluetoothLeAdvertiser;

                AdvertiseSettings settings = new AdvertiseSettings.Builder()
                                             .SetAdvertiseMode(AdvertiseMode.LowLatency)
                                             .SetTxPowerLevel(AdvertiseTx.PowerHigh)
                                             .SetTimeout(0)
                                             .SetConnectable(true)
                                             .Build();

                ParcelUuid pUuid = new ParcelUuid(MY_UUID);

                AdvertiseData data = new AdvertiseData.Builder()
                                     .SetIncludeDeviceName(true)
                                     .AddServiceUuid(pUuid)
                                     .AddServiceData(pUuid, Encoding.UTF8.GetBytes("Data send"))
                                     .Build();

                myAdvertiseCallback = new MyAdvertiseCallback();

                bluetoothLeAdvertiser.StartAdvertising(settings, data, myAdvertiseCallback);
            }
            catch (System.Exception ex)
            {
            }
        }
        public void AddReadOnlyService(
            Guid serviceName, Dictionary <Guid, Func <byte[]> > characteristics)
        {
            var manager = (BluetoothManager)context.GetSystemService(
                Context.BluetoothService);
            var adapter = manager.Adapter;

            if (!adapter.IsEnabled)
            {
                // TODO: restarts the server when the BLE adapter goes down.
                adapter.Enable();
                Thread.Sleep(10 * 1000);
            }

            // Creates a Gatt server with the requested service

            {
                var callback = new AndroidBLEGattServerCallback(
                    characteristics);

                var server = manager.OpenGattServer(context, callback);

                callback.Server = server;

                var service = new BluetoothGattService(AsJavaUUID(serviceName),
                                                       GattServiceType.Primary);

                foreach (var i in characteristics)
                {
                    var ch = new BluetoothGattCharacteristic(AsJavaUUID(i.Key),
                                                             GattProperty.Read | GattProperty.Notify,
                                                             GattPermission.Read);

                    service.AddCharacteristic(ch);
                }

                server.AddService(service);
            }

            // Starts advertising for the availaible services over BLE.

            {
                var advertiser = adapter.BluetoothLeAdvertiser;

                var setts = new AdvertiseSettings.Builder()
                            .SetAdvertiseMode(AdvertiseMode.Balanced)
                            .SetConnectable(true)
                            .SetTimeout(0)
                            .SetTxPowerLevel(AdvertiseTx.PowerMedium)
                            .Build();

                var data = new AdvertiseData.Builder()
                           //.AddServiceUuid(AsParcelUuid(ser))
                           .Build();

                var callback = new AndroidBLEAdvertiseCallback();

                advertiser.StartAdvertising(setts, data, callback);
            }
        }
Exemple #3
0
        protected override void StartAdvertising()
        {
            try
            {
                if (BluetoothAdapter.DefaultAdapter?.IsMultipleAdvertisementSupported ?? false)
                {
                    AdvertiseSettings advertisingSettings = new AdvertiseSettings.Builder()
                                                            .SetAdvertiseMode(AdvertiseMode.Balanced)
                                                            .SetTxPowerLevel(AdvertiseTx.PowerLow)
                                                            .SetConnectable(true)
                                                            .Build();

                    AdvertiseData advertisingData = new AdvertiseData.Builder()
                                                    .SetIncludeDeviceName(false)
                                                    .AddServiceUuid(new ParcelUuid(_deviceIdService.Uuid))
                                                    .Build();

                    BluetoothAdapter.DefaultAdapter.BluetoothLeAdvertiser.StartAdvertising(advertisingSettings, advertisingData, _bluetoothAdvertiserCallback);
                }
                else
                {
                    throw new Exception("BLE advertising is not available.");
                }
            }
            catch (Exception ex)
            {
                SensusServiceHelper.Get().Logger.Log("Exception while starting advertiser:  " + ex.Message, LoggingLevel.Normal, GetType());
            }
        }
Exemple #4
0
        private void startAdvertising()
        {
            if (!init())
            {
                return;
            }


            var settings = new AdvertiseSettings.Builder()
                           .SetConnectable(true)
                           .SetAdvertiseMode(AdvertiseMode.LowLatency) //100ms
                           .SetTxPowerLevel(AdvertiseTx.PowerMedium)
                           .SetTimeout(0)
                           .Build();


            var bytes = Encoding.ASCII.GetBytes(advValue);

            Log.Debug("TEST", "advertising value: " + advValue + " toBytes: " + string.Join(",", bytes));

            var data = new AdvertiseData.Builder()
                       .AddServiceUuid(new ParcelUuid(Const.UUID_SERVICE))
                       .AddServiceData(new ParcelUuid(Const.UUID_DATA), bytes) // Convert a C# string to a byte array
                       .SetIncludeDeviceName(false)
                       .SetIncludeTxPowerLevel(false)
                       .Build();

            bluetoothManager.Adapter.BluetoothLeAdvertiser.StartAdvertising(settings, data, advCallback);
        }
        void IAdvertiseAndDiscoverBluetoothDevice.Advertise()
        {
            try
            {
                Analytics.TrackEvent(Build.Model + " Advertise method called.");

                bluetoothLeAdvertiser = BluetoothAdapter.DefaultAdapter.BluetoothLeAdvertiser;

                AdvertiseSettings settings = new AdvertiseSettings.Builder()
                                             .SetAdvertiseMode(AdvertiseMode.LowLatency)
                                             .SetTxPowerLevel(AdvertiseTx.PowerHigh)
                                             .SetTimeout(0)
                                             .SetConnectable(true)
                                             .Build();

                ParcelUuid pUuid = new ParcelUuid(MY_UUID);

                AdvertiseData data = new AdvertiseData.Builder()
                                     .SetIncludeDeviceName(true)
                                     .AddServiceUuid(pUuid)
                                     .AddServiceData(pUuid, Encoding.UTF8.GetBytes("222"))
                                     .Build();

                myAdvertiseCallback = new MyAdvertiseCallback();

                bluetoothLeAdvertiser.StartAdvertising(settings, data, myAdvertiseCallback);
            }
            catch (System.Exception ex)
            {
                Analytics.TrackEvent(Build.Model + " Something went wrong in Advertise method.");
            }
        }
Exemple #6
0
        private async void RunAction()
        {
            var settings = new ScanSettings.Builder().SetScanMode(ScanMode.LowPower).Build();
            var filters  = GetScanFilters();

            //var intent = new Intent(ApplicationContext, typeof(BackgroundService));
            //intent.PutExtra("o-scan", true);

            //var pendingIntent =
            //    PendingIntent.GetBroadcast(ApplicationContext, 0, intent, PendingIntentFlags.UpdateCurrent);

            //_bluetoothAdapter.BluetoothLeScanner.StartScan(filters, settings,new AppScanCallBack());


            var advSettings = new AdvertiseSettings.Builder().SetAdvertiseMode(AdvertiseMode.LowPower)
                              .SetConnectable(false).SetTimeout(1000).Build();

            var advData = new AdvertiseData.Builder()
                          .AddServiceUuid(ParcelUuid.FromString("FC51BA92-74D5-4972-B2D9-9ECBC62ACFC9")).Build();

            _bluetoothAdapter.BluetoothLeAdvertiser.StartAdvertising(advSettings, advData, new AppAdvertisingCallBack());


            //Log.Info(TAG, $"Service is still running, near devices: {devices.Count}");

            //if (!devices.Any()) Log.Info(TAG, $"Device NOt MATCH");

            //foreach (var device in devices)
            //    Log.Info(TAG,
            //        $"Service is still running, DEVICE: id({device.BondState}) adress({string.Join(",", device.Address)})) ");

            Toast.MakeText(this, $"Service is still running, near devices: NA", ToastLength.Long).Show();
            handler.PostDelayed(runnable, 10000);
        }
        public Task StartAdvertising(string localName, List <IService> services)
        {
            var settings = new AdvertiseSettings.Builder()
                           .SetAdvertiseMode(AdvertiseMode.LowLatency)
                           .SetTxPowerLevel(AdvertiseTx.PowerHigh)
                           .SetTimeout(0)
                           .SetConnectable(true)
                           .Build();

            if (localName != null)
            {
                _adapter.SetName(localName);
            }

            var advertiseDataBuilder = new AdvertiseData.Builder()
                                       .SetIncludeTxPowerLevel(false)
                                       .SetIncludeDeviceName(false);

            if (services != null)
            {
                foreach (Service service in services)
                {
                    var serviceUuid = service.Uuid;
                    var uuid        = UUID.FromString(serviceUuid);
                    var parcelUuid  = new ParcelUuid(uuid);
                    advertiseDataBuilder.AddServiceUuid(parcelUuid);
                }
            }
            var advertiseData = advertiseDataBuilder.Build();

            _adapter.BluetoothLeAdvertiser.StartAdvertising(settings, advertiseData, _advertiseCallback);
            return(Task.FromResult(true));
        }
Exemple #8
0
        public void getBle(String usuario)
        {
            Context          actvity          = Application.Context;
            BluetoothManager bluetooth        = (BluetoothManager)actvity.GetSystemService(Context.BluetoothService);
            BluetoothAdapter bluetoothAdapter = bluetooth.Adapter;

            if (bluetoothAdapter.IsEnabled)
            {
                bluetoothAdapter.SetName(usuario);
                BluetoothLeAdvertiser bluetoothLeAdvertiser = bluetoothAdapter.BluetoothLeAdvertiser;
                AdvertiseSettings     settings = new AdvertiseSettings.Builder()
                                                 .SetAdvertiseMode(AdvertiseMode.LowLatency).SetTxPowerLevel(AdvertiseTx.PowerHigh).SetConnectable(true).Build();

                var builder = new AdvertiseSettings.Builder();
                builder.SetAdvertiseMode(AdvertiseMode.LowLatency);
                builder.SetConnectable(true);
                builder.SetTimeout(0);
                builder.SetTxPowerLevel(AdvertiseTx.PowerUltraLow);

                AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder();
                dataBuilder.SetIncludeDeviceName(true);
                dataBuilder.SetIncludeTxPowerLevel(true);

                bluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), new BleAdvertiseCallback());
                Android.Widget.Toast.MakeText(Application.Context, "Registro de presença automático iniciado.", Android.Widget.ToastLength.Long).Show();
            }
            else
            {
                Android.Widget.Toast.MakeText(Application.Context, "Por gentileza, o Bluetooth deve estar ligado!", Android.Widget.ToastLength.Long).Show();
            }
        }
Exemple #9
0
        public override void Start(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)
            {
                data.AddServiceUuid(serviceUuid.ToParcelUuid());
            }

            this.manager
            .Adapter
            .BluetoothLeAdvertiser
            .StartAdvertising(
                settings.Build(),
                data.Build(),
                this.adCallbacks
                );

            base.Start(adData);
        }
Exemple #10
0
        public void StartAdvertising(string localName)
        {
            var settings = new AdvertiseSettings.Builder()
                           .SetAdvertiseMode(AdvertiseMode.Balanced)
                           .SetTxPowerLevel(AdvertiseTx.PowerHigh)
                           .SetConnectable(true)
                           .Build();


            _adapter.SetName(localName);

            var advertiseDataBuilder = new AdvertiseData.Builder()
                                       .SetIncludeDeviceName(true);

            foreach (var service in _server.Services)
            {
                var parcelUuid = new ParcelUuid(UUID.FromString("1234".ToGuid().ToString()));
                advertiseDataBuilder.AddServiceUuid(parcelUuid);
            }


            var advertiseData = advertiseDataBuilder.Build();

            _adapter.BluetoothLeAdvertiser.StartAdvertising(settings, advertiseData, _advertiseCallback);
        }
 private AdvertiseSettings AdvertisingParameters()
 {
     AdvertiseSettings.Builder builder = new AdvertiseSettings.Builder();
     return(builder.SetAdvertiseMode(AdvertiseMode.Balanced)
            .SetTxPowerLevel(AdvertiseTx.PowerUltraLow)
            .SetConnectable(true)
            .Build());
 }
Exemple #12
0
        public override void Start(AdvertisementData adData)
        {
            if (!CrossBleAdapter.AndroidConfiguration.IsServerSupported)
            {
                throw new BleException("BLE Advertiser needs API Level 23+");
            }

            this.manager     = (BluetoothManager)Application.Context.GetSystemService(Context.BluetoothService);
            this.adCallbacks = new AdvertisementCallbacks();

            var settings = new AdvertiseSettings.Builder()
                           .SetAdvertiseMode(AdvertiseMode.Balanced)
                           .SetConnectable(adData.AndroidIsConnectable);

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

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

            foreach (var serviceUuid in adData.ServiceUuids)
            {
                data.AddServiceUuid(serviceUuid.ToParcelUuid());
            }

            if (string.IsNullOrEmpty(adData.LocalName) || adData.AndroidUseDeviceName)
            {
                this.manager
                .Adapter
                .BluetoothLeAdvertiser
                .StartAdvertising(
                    settings.Build(),
                    data.Build(),
                    this.adCallbacks
                    );
            }
            else
            {
                this.manager
                .Adapter.SetName(adData.LocalName);
                var scanResponse = new AdvertiseData.Builder()
                                   .SetIncludeDeviceName(true);
                this.manager
                .Adapter
                .BluetoothLeAdvertiser
                .StartAdvertising(
                    settings.Build(),
                    data.Build(),
                    scanResponse.Build(),
                    this.adCallbacks
                    );
            }

            base.Start(adData);
        }
Exemple #13
0
        public void StartAdvertising()
        {
            AdvertiseSettings.Builder builder = new AdvertiseSettings.Builder();
            builder.SetAdvertiseMode(AdvertiseMode.LowLatency);
            builder.SetConnectable(true);
            builder.SetTimeout(0);
            builder.SetTxPowerLevel(AdvertiseTx.PowerHigh);
            AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder();
            dataBuilder.SetIncludeDeviceName(true);
            //dataBuilder.AddServiceUuid(ParcelUuid.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"));
            dataBuilder.SetIncludeTxPowerLevel(true);

            this.BluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), this.AdvertiseCallback);
        }
Exemple #14
0
        public async Task StartAdvertising(AdvertisementOptions?options = null)
        {
            if (!this.context.Context.IsMinApiLevel(23))
            {
                throw new ApplicationException("BLE Advertiser needs API Level 23+");
            }

            options ??= new AdvertisementOptions();
            var tcs = new TaskCompletionSource <object>();

            this.adCallbacks = new AdvertisementCallbacks(
                () => tcs.SetResult(null),
                ex => tcs.SetException(ex)
                );

            var settings = new AdvertiseSettings.Builder()
                           .SetAdvertiseMode(AdvertiseMode.Balanced)
                           .SetConnectable(true);

            var data = new AdvertiseData.Builder()
                       .SetIncludeDeviceName(options.AndroidIncludeDeviceName)
                       .SetIncludeTxPowerLevel(options.AndroidIncludeTxPower);

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

            var serviceUuids = options.UseGattServiceUuids
                ? this.services.Keys.ToList()
                : options.ServiceUuids;

            foreach (var uuid in serviceUuids)
            {
                data.AddServiceUuid(new Android.OS.ParcelUuid(UUID.FromString(uuid)));
            }

            this.context
            .Manager
            .Adapter
            .BluetoothLeAdvertiser
            .StartAdvertising(
                settings.Build(),
                data.Build(),
                this.adCallbacks
                );

            await tcs.Task;
        }
Exemple #15
0
        public override void Start(AdvertisementData adData)
        {
            if (!CrossBleAdapter.AndroidConfiguration.IsServerSupported)
            {
                throw new BleException("BLE Advertiser needs API Level 21+");
            }

            if (this.IsStarted)
            {
                throw new BleException("BLE Advertiser is already started");
            }

            var settings = new AdvertiseSettings.Builder()
                           .SetAdvertiseMode(AdvertiseMode.Balanced)
                           .SetConnectable(adData.AndroidIsConnectable);

            var data = new AdvertiseData.Builder()
                       .SetIncludeDeviceName(adData.AndroidIncludeDeviceName)
                       .SetIncludeTxPowerLevel(adData.AndroidIncludeTxPower);

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

            foreach (var serviceUuid in adData.ServiceUuids)
            {
                data.AddServiceUuid(serviceUuid.ToParcelUuid());
            }

            if (!string.IsNullOrEmpty(adData.LocalName))
            {
                data.SetIncludeDeviceName(true);
                this.manager.Adapter.SetName(adData.LocalName);
            }

            this.manager
            .Adapter
            .BluetoothLeAdvertiser
            .StartAdvertising(
                settings.Build(),
                data.Build(),
                this.adCallbacks
                );

            base.Start(adData);
        }
Exemple #16
0
        public Task StartAdvertising(AdvertisementData?adData = null)
        {
            if (!this.context.Context.IsMinApiLevel(23))
            {
                throw new ApplicationException("BLE Advertiser needs API Level 23+");
            }

            this.adCallbacks = new AdvertisementCallbacks();

            var settings = new AdvertiseSettings.Builder()
                           .SetAdvertiseMode(AdvertiseMode.Balanced)
                           .SetConnectable(true); // TODO: configurable

            var data = new AdvertiseData.Builder()
                       .SetIncludeDeviceName(true)    // TODO: configurable
                       .SetIncludeTxPowerLevel(true); // TODO: configurable

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

                if (adData.ServiceUuids != null)
                {
                    foreach (var serviceUuid in adData.ServiceUuids)
                    {
                        data.AddServiceUuid(serviceUuid.ToParcelUuid());
                    }
                }
            }

            this.context
            .Manager
            .Adapter
            .BluetoothLeAdvertiser
            .StartAdvertising(
                settings.Build(),
                data.Build(),
                this.adCallbacks
                );

            return(Task.CompletedTask);
        }
Exemple #17
0
        public BleServer(Context ctx)
        {
            _bluetoothManager = (BluetoothManager)ctx.GetSystemService(Context.BluetoothService);
            _bluetoothAdapter = _bluetoothManager.Adapter;

            _bluettothServerCallback = new BleGattServerCallback();
            _bluetoothServer         = _bluetoothManager.OpenGattServer(ctx, _bluettothServerCallback);
            var service = new BluetoothGattService(UUID.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"),
                                                   GattServiceType.Primary);

            _characteristic = new BluetoothGattCharacteristic(UUID.FromString("d8de624e-140f-4a22-8594-e2216b84a5f2"), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write);
            _characteristic.AddDescriptor(new BluetoothGattDescriptor(UUID.FromString("28765900-7498-4bd4-aa9e-46c4a4fb7b07"),
                                                                      GattDescriptorPermission.Write | GattDescriptorPermission.Read));

            service.AddCharacteristic(_characteristic);


            _characteristic = new BluetoothGattCharacteristic(UUID.FromString("d8de624e-140f-4a22-8594-e2216b84a5f3"), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write);
            _characteristic.AddDescriptor(new BluetoothGattDescriptor(UUID.FromString("28765900-7498-4bd4-aa9e-46c4a4fb7b08"),
                                                                      GattDescriptorPermission.Write | GattDescriptorPermission.Read));

            service.AddCharacteristic(_characteristic);
            _bluetoothServer.AddService(service);

            _bluettothServerCallback.CharacteristicReadRequest  += _bluettothServerCallback_CharacteristicReadRequest;
            _bluettothServerCallback.DescriptorWriteRequest     += _bluettothServerCallback_DescriptorWriteRequest;
            _bluettothServerCallback.CharacteristicWriteRequest += _bluettothServerCallback_CharacteristicWriteRequest;
            _bluettothServerCallback.NotificationSent           += _bluettothServerCallback_NotificationSent;
            _bluettothServerCallback.ConnectionStateChange      += _bluettothServerCallback_ConnectionStateChange;
            //           MessagingCenter.Send<BLE202.App, string>((BLE202.App)Xamarin.Forms.Application.Current, "Hi", "Server created!");
            //           _bluetoothAdapter.SetName("Concungungoc");
            BluetoothLeAdvertiser myBluetoothLeAdvertiser = _bluetoothAdapter.BluetoothLeAdvertiser;
            var builder = new AdvertiseSettings.Builder();

            builder.SetAdvertiseMode(AdvertiseMode.LowLatency);
            builder.SetConnectable(true);
            builder.SetTimeout(0);
            builder.SetTxPowerLevel(AdvertiseTx.PowerHigh);
            AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder();
            dataBuilder.SetIncludeDeviceName(true);
            //dataBuilder.AddServiceUuid(ParcelUuid.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"));
            dataBuilder.SetIncludeTxPowerLevel(true);
            myBluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), new BleAdvertiseCallback());
        }
Exemple #18
0
        public Task StartAdvertising(AdvertisementData adData = null)
        {
            //            //if (!CrossBleAdapter.AndroidConfiguration.IsServerSupported)
            //            //    throw new BleException("BLE Advertiser needs API Level 23+");

            this.adCallbacks = new AdvertisementCallbacks();

            var settings = new AdvertiseSettings.Builder()
                           .SetAdvertiseMode(AdvertiseMode.Balanced)
                           .SetConnectable(true);

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

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

                if (adData.ServiceUuids != null)
                {
                    foreach (var serviceUuid in adData.ServiceUuids)
                    {
                        data.AddServiceUuid(serviceUuid.ToParcelUuid());
                    }
                }
            }

            this.context
            .Manager
            .Adapter
            .BluetoothLeAdvertiser
            .StartAdvertising(
                settings.Build(),
                data.Build(),
                this.adCallbacks
                );

            return(Task.CompletedTask);
        }
Exemple #19
0
        public BleServer(Context ctx)
        {
            _bluetoothManager        = (BluetoothManager)ctx.GetSystemService(Context.BluetoothService);
            _bluetoothAdapter        = _bluetoothManager.Adapter;
            _bluettothServerCallback = new BleGattServerCallback();
            _bluetoothServer         = _bluetoothManager.OpenGattServer(ctx, _bluettothServerCallback);

            var service = new BluetoothGattService(UUID.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"),
                                                   GattServiceType.Primary);

            _characteristic = new BluetoothGattCharacteristic(UUID.FromString("d8de624e-140f-4a22-8594-e2216b84a5f2"), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write);

            _characteristic.AddDescriptor(new BluetoothGattDescriptor(UUID.FromString("28765900-7498-4bd4-aa9e-46c4a4fb7b07"),
                                                                      GattDescriptorPermission.Read | GattDescriptorPermission.Write));

            service.AddCharacteristic(_characteristic);


            _bluetoothServer.AddService(service);

            _bluettothServerCallback.CharacteristicReadRequest += _bluettothServerCallback_CharacteristicReadRequest;
            _bluettothServerCallback.NotificationSent          += _bluettothServerCallback_NotificationSent;

            Console.WriteLine("Server created!");

            BluetoothLeAdvertiser myBluetoothLeAdvertiser = _bluetoothAdapter.BluetoothLeAdvertiser;

            var builder = new AdvertiseSettings.Builder();

            builder.SetAdvertiseMode(AdvertiseMode.LowLatency);
            builder.SetConnectable(true);
            builder.SetTimeout(0);
            builder.SetTxPowerLevel(AdvertiseTx.PowerHigh);
            AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder();
            dataBuilder.SetIncludeDeviceName(true);
            byte[] bytes = Encoding.ASCII.GetBytes("jp");
            dataBuilder.AddManufacturerData(1984, bytes);
            dataBuilder.SetIncludeTxPowerLevel(true);

            myBluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), new BleAdvertiseCallback());
        }
Exemple #20
0
        public void StartAdvertising()
        {
            //lock (_mBleAdLock)
            //{
            try
            {
                _mBleAd.StopAdvertising(_myAdvertiseCallback);

                AdvertiseSettings settings = new AdvertiseSettings.Builder()
                                             .SetAdvertiseMode(AdvertiseMode.Balanced)
                                             .SetConnectable(false)
                                             .SetTimeout(300)
                                             .SetTxPowerLevel(AdvertiseTx.PowerMedium)
                                             .Build();

                //string guid = Guid.NewGuid().ToString();
                //Java.Util.UUID javaUuid = new Java.Util.UUID(1, 1);
                //Java.Util.UUID javaUuid = Java.Util.UUID.FromString(guid);
                //ParcelUuid parcelUuid = new ParcelUuid(javaUuid);
                //byte[] temp = Encoding.UTF8.GetBytes(guid);

                String strPayload = valueLabel.Text;
                byte[] payload    = Encoding.UTF8.GetBytes(strPayload);

                AdvertiseData data = new AdvertiseData.Builder()
                                     .SetIncludeDeviceName(true)
                                     //.AddServiceUuid(parcelUuid)
                                     //.AddServiceData(parcelUuid, payload)
                                     .AddManufacturerData(1, payload)
                                     .SetIncludeTxPowerLevel(false)
                                     .Build();

                _mBleAd.StartAdvertising(settings, data, _myAdvertiseCallback);
            }
            catch (Exception ex)
            {
                lCurrentState.Text = "Failure: " + ex;
            }
            //}
        }
        public BleServer(Context ctx)
        {
            _bluetoothManager = (BluetoothManager)ctx.GetSystemService(Context.BluetoothService);
            _bluetoothAdapter = _bluetoothManager.Adapter;

            _bluettothServerCallback = new BleGattServerCallback();
            _bluetoothServer         = _bluetoothManager.OpenGattServer(ctx, _bluettothServerCallback);

            var service = new BluetoothGattService(UUID.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"),
                                                   GattServiceType.Primary);

            _characteristic = new BluetoothGattCharacteristic(UUID.FromString("d8de624e-140f-4a22-8594-e2216b84a5f2"), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write);

            service.AddCharacteristic(_characteristic);
            _bluetoothServer.AddService(service);

            SensorSpeed speed = SensorSpeed.UI;

            OrientationSensor.Start(speed);
            OrientationSensor.ReadingChanged += OrientationSensor_ReadingChanged;

            _bluettothServerCallback.CharacteristicReadRequest += _bluettothServerCallback_CharacteristicReadRequest;
            Console.WriteLine("Server created!");

            BluetoothLeAdvertiser myBluetoothLeAdvertiser = _bluetoothAdapter.BluetoothLeAdvertiser;

            var builder = new AdvertiseSettings.Builder();

            builder.SetAdvertiseMode(AdvertiseMode.LowLatency);
            builder.SetConnectable(true);
            builder.SetTimeout(0);
            builder.SetTxPowerLevel(AdvertiseTx.PowerHigh);
            AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder();
            dataBuilder.SetIncludeDeviceName(true);
            dataBuilder.SetIncludeTxPowerLevel(true);

            myBluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), new BleAdvertiseCallback());
        }
        public BleServer(Context ctx)
        {
            _bluetoothManager = (BluetoothManager)ctx.GetSystemService(Context.BluetoothService);
            _bluetoothAdapter = _bluetoothManager.Adapter;

            _bluettothServerCallback = new BleGattServerCallback();
            _bluetoothServer = _bluetoothManager.OpenGattServer(ctx, _bluettothServerCallback);

            var service = new BluetoothGattService(UUID.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"),
                GattServiceType.Primary);
            _characteristic = new BluetoothGattCharacteristic(UUID.FromString("d8de624e-140f-4a22-8594-e2216b84a5f2"), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write);
            _characteristic.AddDescriptor(new BluetoothGattDescriptor(UUID.FromString("28765900-7498-4bd4-aa9e-46c4a4fb7b07"),
                    GattDescriptorPermission.Read | GattDescriptorPermission.Write));

            service.AddCharacteristic(_characteristic);

            _bluetoothServer.AddService(service);

            _bluettothServerCallback.CharacteristicReadRequest += _bluettothServerCallback_CharacteristicReadRequest;
            _bluettothServerCallback.NotificationSent += _bluettothServerCallback_NotificationSent;

            Console.WriteLine("Server created!");

            BluetoothLeAdvertiser myBluetoothLeAdvertiser = _bluetoothAdapter.BluetoothLeAdvertiser;

            var builder = new AdvertiseSettings.Builder();
            builder.SetAdvertiseMode(AdvertiseMode.LowLatency);
            builder.SetConnectable(true);
            builder.SetTimeout(0);
            builder.SetTxPowerLevel(AdvertiseTx.PowerHigh);
            AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder();
            dataBuilder.SetIncludeDeviceName(true);
            //dataBuilder.AddServiceUuid(ParcelUuid.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"));
            dataBuilder.SetIncludeTxPowerLevel(true);

            myBluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), new BleAdvertiseCallback());
        }
Exemple #23
0
        public void StartLeServer()
        {
            gattServer = bluetoothManager.OpenGattServer(Xamarin.Forms.Forms.Context, gattServerCallback);
            if (gattServer != null)
            {
                gattServer.AddService(CreateTimeService());


                BluetoothLeAdvertiser leAdvertiser = bluetoothManager.Adapter.BluetoothLeAdvertiser;
                AdvertiseSettings     settings     = new AdvertiseSettings.Builder().SetAdvertiseMode(AdvertiseMode.Balanced)
                                                     .SetConnectable(true)
                                                     .SetTimeout(0)
                                                     .SetTxPowerLevel(AdvertiseTx.PowerHigh)
                                                     .Build();

                AdvertiseData data = new AdvertiseData.Builder()
                                     .SetIncludeDeviceName(true)
                                     .SetIncludeTxPowerLevel(true)
                                     .AddServiceUuid(new ParcelUuid(TIME_SERVICE))
                                     .Build();

                leAdvertiser.StartAdvertising(settings, data, new LeAdvertiseCallback());
            }
        }
        public async Task <bool> StartServer(e_BtMode mode)
        {
            try
            {
                if (!Init())
                {
                    return(false);
                }

                if (mode == e_BtMode.LowEnergy)
                {
                    var uuid_ser = Java.Util.UUID.FromString(BleConstants.BLE_SERVER_SERVICE_UUID);
                    var uuid_ch  = Java.Util.UUID.FromString(BleConstants.BLE_SERVER_CH_UUID);

                    /// Set advertising
                    AdvertiseSettings settings = new AdvertiseSettings.Builder()
                                                 .SetConnectable(true)
                                                 .SetAdvertiseMode(AdvertiseMode.LowLatency)
                                                 .SetTxPowerLevel(AdvertiseTx.PowerMedium)
                                                 .Build();

                    AdvertiseData advertiseData = new AdvertiseData.Builder()
                                                  .SetIncludeDeviceName(true)
                                                  .SetIncludeTxPowerLevel(true)
                                                  .Build();

                    AdvertiseData scanResponseData = new AdvertiseData.Builder()
                                                     //.AddServiceUuid(new ParcelUuid(uuid_ser)) //otherwise AdvertiseFailure for DataTooLarge
                                                     //.AddServiceData(new ParcelUuid(uuid_ser), new byte[] { 0x01, 0x02 })
                                                     .SetIncludeDeviceName(true)
                                                     .SetIncludeTxPowerLevel(true)
                                                     .Build();

                    _CentralManager.Adapter.BluetoothLeAdvertiser.StartAdvertising(settings, advertiseData, scanResponseData, _AdvertiseCallback);

                    /// Set ble server
                    _GattServer = _CentralManager.OpenGattServer(Android.App.Application.Context, _GattServerCallback);
                    _Mode       = mode;

                    var write_ch = new BluetoothGattCharacteristic(uuid_ch, GattProperty.WriteNoResponse, GattPermission.Write);
                    var service  = new BluetoothGattService(uuid_ser, GattServiceType.Primary);
                    service.AddCharacteristic(write_ch);
                    _GattServer.AddService(service);
                }
                else if (mode == e_BtMode.Socket)
                {
                    _Mode            = mode;
                    _ServerSocket    = _CentralManager.Adapter.ListenUsingRfcommWithServiceRecord("server_socket", Java.Util.UUID.FromString(BleConstants.BLE_SERVER_SOCKET_UUID));
                    _BluetoothSocket = await _ServerSocket.AcceptAsync();

                    await Task.Run(ServerSocketManager);
                }
                else
                {
                    SERVER_ERR("start server failed");
                    return(false);
                }

                return(true);
            }
            catch (Exception ex)
            {
                SERVER_ERR("start server error", ex);
                return(false);
            }
        }
Exemple #25
0
        // use predefined Bluetooth SIG definitions for well know characteristics on UWP- Windows project.
        //public static Guid ManufacturerName = GattCharacteristicUuids.ManufacturerNameString;

        public BleServer(Context ctx)
        {
            _isRunning = false;

            try
            {
                _bluetoothManager = (BluetoothManager)ctx.GetSystemService(Context.BluetoothService);

                _bluetoothAdapter = _bluetoothManager.Adapter;

                _bluettothServerCallback = new BleGattServerCallback();
                _bluetoothServer         = _bluetoothManager.OpenGattServer(ctx, _bluettothServerCallback);

                var service = new BluetoothGattService(UUID.FromString(App.ServiceId), GattServiceType.Primary);

                //_characteristicDataExchange = new BluetoothGattCharacteristic(UUID.FromString(App.DataExchange), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write);
                _characteristicInitData = new BluetoothGattCharacteristic(UUID.FromString(App.InitData), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write);

                _characteristicFirmwareVersion  = new BluetoothGattCharacteristic(UUID.FromString(App.FirmwareVersion), GattProperty.Read, GattPermission.Read);
                _characteristicDeviceNickname   = new BluetoothGattCharacteristic(UUID.FromString(App.DeviceNickname), GattProperty.Read, GattPermission.Read);
                _descriptorDeviceNickname       = new BluetoothGattDescriptor(UUID.FromString(App.DeviceNicknameDescriptor), GattDescriptorPermission.Read);
                _characteristicDeviceContact    = new BluetoothGattCharacteristic(UUID.FromString(App.DeviceContact), GattProperty.Read, GattPermission.Read);
                _characteristicDeviceInfo       = new BluetoothGattCharacteristic(UUID.FromString(App.DeviceInfo), GattProperty.Read, GattPermission.Read);
                _characteristicInfected         = new BluetoothGattCharacteristic(UUID.FromString(App.IsInfected), GattProperty.Read, GattPermission.Read);
                _characteristicManufacturerName = new BluetoothGattCharacteristic(UUID.FromString(App.ManufacturerName), GattProperty.Read, GattPermission.Read);
                _characteristicMAC = new BluetoothGattCharacteristic(UUID.FromString(App.DeviceMAC), GattProperty.Read, GattPermission.Read);

                //_characteristicDataExchange.SetValue("Data exchange");
                //service.AddCharacteristic(_characteristicDataExchange);

                _characteristicFirmwareVersion.SetValue(App.FirmwareVersionValue);
                service.AddCharacteristic(_characteristicFirmwareVersion);

                _characteristicDeviceNickname.SetValue(App.DeviceNicknameValue);
                service.AddCharacteristic(_characteristicDeviceNickname);

                _characteristicDeviceContact.SetValue(App.DeviceContactValue);
                service.AddCharacteristic(_characteristicDeviceContact);

                _characteristicDeviceInfo.SetValue(App.DeviceInfoValue);
                service.AddCharacteristic(_characteristicDeviceInfo);

                _characteristicMAC.SetValue(App.DeviceMACValue);
                service.AddCharacteristic(_characteristicMAC);

                //_characteristicInitData.SetValue("SPACE - Copyright 2020");
                //service.AddCharacteristic(_characteristicInitData);

                _characteristicInfected.SetValue(App.IsInfectedValue);
                service.AddCharacteristic(_characteristicInfected);

                _characteristicManufacturerName.SetValue(App.ManufacturerNameValue);

                service.AddCharacteristic(_characteristicManufacturerName);

                _bluetoothServer.AddService(service);

                _bluettothServerCallback.CharacteristicReadRequest  += _bluettothServerCallback_CharacteristicReadRequest;
                _bluettothServerCallback.CharacteristicWriteRequest += _bluettothServerCallback_CharacteristicWriteRequest;
                //_bluettothServerCallback.NotificationSent += _bluettothServerCallback_NotificationSent;

                Console.WriteLine("Server created!");

                BluetoothLeAdvertiser myBluetoothLeAdvertiser = _bluetoothAdapter.BluetoothLeAdvertiser;

                var builder = new AdvertiseSettings.Builder();
                builder.SetAdvertiseMode(AdvertiseMode.LowLatency);
                builder.SetConnectable(true);
                builder.SetTimeout(0);
                builder.SetTxPowerLevel(AdvertiseTx.PowerHigh);


                AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder();
                //dataBuilder.SetIncludeDeviceName(false);
                dataBuilder.AddServiceUuid(ParcelUuid.FromString(App.ServiceId));
                dataBuilder.SetIncludeTxPowerLevel(true);
                //byte[] data = Encoding.UTF8.GetBytes(App.ManufacturerNameValue);
                //dataBuilder.AddManufacturerData(0x00E0, data);


                AdvertiseData.Builder dataResponseBuilder = new AdvertiseData.Builder();
                dataResponseBuilder.SetIncludeDeviceName(true);

                //AdvertiseData.Builder dataManufacturerBuilder = new AdvertiseData.Builder();
                //byte[] data = Encoding.UTF8.GetBytes(App.ManufacturerNameValue);
                //dataManufacturerBuilder.AddManufacturerData(49177, data);

                myBluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), dataResponseBuilder.Build(), new BleAdvertiseCallback());

                _isRunning = true;
            }
            catch (System.Exception ex)
            {
            }
        }
Exemple #26
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);
            Context appContext = Android.App.Application.Context;

            _manager = (BluetoothManager)appContext.GetSystemService("bluetooth");
            _adapter = _manager.Adapter;
            //		_gattCallback = new GattCallback(this);
            _scanner         = _adapter.BluetoothLeScanner;
            _scannerCallback = new BLEScannerCallback(this);
            _textView        = FindViewById <TextView>(Resource.Id.textView);
            _advertiser      = _adapter.BluetoothLeAdvertiser;
            Button button = FindViewById <Button> (Resource.Id.button);

            button.Click += delegate {
                button.Text = string.Format("{0} clicks!", count++);
                if (!_isScanning)
                {
                    Task.Run(async() =>
                    {
                        await BeginScanningForDevices();
                    });
                }
                else
                {
                    StopScanningForDevices();
                }
            };

            _advertiserCallback = new BLEAdvertiserCallback(this);
            Button button2 = FindViewById <Button>(Resource.Id.button2);

            button2.Click += (sender, e) =>
            {
                if (!_isAdvertizing)
                {
                    AdvertiseSettings settings = new AdvertiseSettings.Builder()
                                                 .SetAdvertiseMode(AdvertiseMode.Balanced)
                                                 .SetConnectable(true)
                                                 .SetTimeout(0)
                                                 .SetTxPowerLevel(AdvertiseTx.PowerMedium)
                                                 .Build();

                    AdvertiseData data = new AdvertiseData.Builder()
                                         .SetIncludeDeviceName(true)
                                         .SetIncludeTxPowerLevel(true)
                                         .AddServiceUuid(THERM_SERVICE)
                                         //.AddServiceData(THERM_SERVICE, buildTempPacket())
                                         .Build();

                    _advertiser.StartAdvertising(settings, data, _advertiserCallback);
                    button2.Text = "Stop Advertizing";
                    UpdateTextView("Advertizing");
                    _isAdvertizing = true;
                }
                else
                {
                    _advertiser.StopAdvertising(_advertiserCallback);
                    button2.Text = "Start Advertizing";
                    UpdateTextView("Stopped Advertizing");
                    _isAdvertizing = false;
                }
            };

            _listView            = FindViewById <ListView>(Resource.Id.listView1);
            _listView.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) =>
            {
                UpdateTextView("ListView clicked item, Id: " + e.Id + " Pos: " + e.Position);
            };

            UpdateTextView("OnCreate Complete");
        }