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(); } } }