Beispiel #1
0
        public void Consume(BluetoothGattCharacteristic characteristic)
        {
            var model = new GlucoseMeasurementContext();

            model.BuildCharacteristic(characteristic);

            var item = db.Context.Table <LogbookItem>().FirstOrDefault(x => x.Sequence == model.SequenceNumber);

            if (item == null)
            {
                item = new LogbookItem()
                {
                    UserId   = Session.User?.UserId ?? Session.FakeUserId,
                    Sequence = model.SequenceNumber,
                };
                db.Context.Insert(item, typeof(LogbookItem));
            }

            var data = db.Context.Table <GlucoseMeasurementContext>()
                       .FirstOrDefault(x => x.SequenceNumber == model.SequenceNumber);

            if (data == null)
            {
                db.Context.Insert(model, typeof(GlucoseMeasurementContext));
            }
        }
        public override void OnServicesDiscovered(BluetoothGatt gatt, [GeneratedEnum] GattStatus status)
        {
            base.OnServicesDiscovered(gatt, status);

            if (status == GattStatus.Success)
            {
                if (!_commandQueue.Any())
                {
                    SubscribeToCharacteristic(GattMapper.UuidForType <GlucoseService>(), GattMapper.UuidForType <GlucoseMeasurement>());
                    AddCommand(GlucoseMeasurement.EnableNotifications());

                    SubscribeToCharacteristic(GattMapper.UuidForType <GlucoseService>(), GattMapper.UuidForType <GlucoseMeasurementContext>());
                    AddCommand(GlucoseMeasurementContext.EnableNotifications());

                    //always query all of the data upon a new connection to prevent data tampering.
                    if (Autosync)
                    {
                        AddCommand(RecordAccessControlPoint.QueryAllRecords());
                    }
                }
                if (status == GattStatus.Success)
                {
                    ExecuteNextCommand();
                }
                else
                {
                    ExecutePreviousCommand();
                }
            }
        }