public BleMoCoBusCommService(Ble.IDevice device, Ble.IAdapter adapter)
        {
            Debug.WriteLine("Create BleMoCoBusCommService");
            
            _device = device;
            _adapter = adapter;

            _adapter.DeviceConnected += AdapterOnDeviceConnected;
            _adapter.DeviceDisconnected += AdapterOnDeviceDisconnected;
        }
        public void Initialize_BT()
        {
            foundDev = new List<IDevice>();

            var a = new Robotics.Mobile.Core.Bluetooth.LE.Adapter();
            App.SetAdapter(a);

            Main_Adapter = App.Adapter;

            Main_Adapter.DeviceDiscovered += (object sender, DeviceDiscoveredEventArgs e) =>
            {
                Console.WriteLine(String.Format("Device found {0}", e.Device.Name));
                Console.WriteLine(String.Format("Name: {0} {1} {2} {3}", e.Device.Name, e.Device.State.ToString(), e.Device.ID.ToString(), e.Device.NativeDevice.ToString()));
            };

              /*  Main_Adapter.DeviceDiscovered += (object sender, DeviceDiscoveredEventArgs e) =>
            {
                Console.WriteLine(String.Format("Device found {0}", e.Device.Name));
            };*/
        }
        private void prepareAdapter()
        {
            adapter = App.Adapter;
            adapter.DeviceConnected += (s, e) =>
            {
                Loading = false;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Loading"));
                BleDevice = e.Device;
                BleDevice.ServicesDiscovered += (se, ea) =>
                {
                    Device.BeginInvokeOnMainThread(async() =>
                    {
                        foreach (var service in BleDevice.Services)
                        {
                            switch (service.Name)
                            {
                            case "TI SensorTag Barometer":
                                sensors.Add(new Sensor(adapter, BleDevice, service));
                                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Sensors"));
                                await Task.Delay(3000);
                                break;

                            case "TI SensorTag Humidity":
                                sensors.Add(new Sensor(adapter, BleDevice, service));
                                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Sensors"));
                                await Task.Delay(3000);
                                break;

                            case "TI SensorTag Infrared Thermometer":
                                sensors.Add(new Sensor(adapter, BleDevice, service));
                                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Sensors"));
                                await Task.Delay(3000);
                                break;
                            }
                        }
                    });
                };
                BleDevice.DiscoverServices();
            };
        }
Exemple #4
0
        public Sensor(ble.IAdapter adapter, ble.IDevice device, ble.IService service)
        {
            BleDevice = device;
            Loading   = true;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Loading"));
            this.service = service;
            switch (service.Name)
            {
            case "TI SensorTag Barometer":
                ImageId = "Pressure";
                break;

            case "TI SensorTag Humidity":
                ImageId = "Humidity";
                break;

            case "TI SensorTag Infrared Thermometer":
                ImageId = "Thermometer";
                break;
            }
            service.CharacteristicsDiscovered += async(s, e) =>
            {
                foreach (var characteristic in service.Characteristics)
                {
                    if (characteristic.Name.Contains("Data"))
                    {
                        dataChar = await characteristic.ReadAsync();

                        await Task.Delay(1000);
                    }
                    else if (characteristic.Name.Contains("On/Off"))
                    {
                        onOffChar = await characteristic.ReadAsync();

                        onOffChar.Write(new byte[] { 0x01 });
                        await Task.Delay(1000);
                    }
                    else if (characteristic.Name.Contains("Sample Rate"))
                    {
                        sampleChar = await characteristic.ReadAsync();

                        await Task.Delay(1000);
                    }
                }
                if (dataChar.CanUpdate)
                {
                    valueUpdatedHandler = (se, ea) =>
                    {
                        Data = Decode(dataChar);
                        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Data"));
                    };
                    dataChar.ValueUpdated += valueUpdatedHandler;
                    dataChar = await dataChar.ReadAsync();

                    await Task.Delay(2000);

                    dataChar.StartUpdates();
                    Loading = false;
                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Loading"));
                }
            };
            service.DiscoverCharacteristics();
        }
Exemple #5
0
 public BluetoothService_Android()
 {
     Adapter = new Robotics.Mobile.Core.Bluetooth.LE.Adapter();
 }
Exemple #6
0
 public static void SetAdapter(ble.IAdapter adapter)
 {
     Adapter = adapter;
 }