main
1import 'package:blood_pressure_app/features/bluetooth/backend/bluetooth_service.dart';
2
3/// Backend implementation for MockBluetoothService
4final class MockedService {
5 /// constructor
6 MockedService({ required this.uuid, required this.characteristics });
7
8 String uuid;
9 List<MockedCharacteristic> characteristics;
10}
11
12/// Backend implementation for MockBluetoothCharacteristic
13final class MockedCharacteristic {
14 /// constructor
15 MockedCharacteristic({
16 required this.uuid,
17 this.canRead = false,
18 this.canWrite = false,
19 this.canWriteWithoutResponse = false,
20 this.canNotify = false,
21 this.canIndicate = false,
22 });
23
24 String uuid;
25 bool canRead;
26 bool canWrite;
27 bool canWriteWithoutResponse;
28 bool canNotify;
29 bool canIndicate;
30}
31
32/// String wrapper for Bluetooth
33final class MockBluetoothString extends BluetoothUuid<String> {
34 /// Create a BluetoothString from a String
35 MockBluetoothString(String uuid): super(uuid: uuid, source: uuid);
36 /// Create a BluetoothString from a string
37 MockBluetoothString.fromString(String uuid): super(uuid: uuid, source: uuid);
38}
39
40/// Wrapper class with generic interface for a [MockedService]
41final class MockBluetoothService extends BluetoothService<MockedService, BluetoothCharacteristic> {
42 /// Create a FlutterBlueService from a [MockedService]
43 MockBluetoothService.fromSource(MockedService service): super(uuid: MockBluetoothString(service.uuid), source: service);
44
45 @override
46 List<BluetoothCharacteristic> get characteristics => source.characteristics.map(MockBluetoothCharacteristic.fromSource).toList();
47}
48
49/// Wrapper class with generic interface for a [MockedCharacteristic]
50final class MockBluetoothCharacteristic extends BluetoothCharacteristic<MockedCharacteristic> {
51 /// Create a BluetoothCharacteristic from the backend specific source
52 MockBluetoothCharacteristic.fromSource(MockedCharacteristic source): super(uuid: MockBluetoothString(source.uuid), source: source);
53
54 @override
55 bool get canRead => source.canRead;
56
57 @override
58 bool get canWrite => source.canWrite;
59
60 @override
61 bool get canWriteWithoutResponse => source.canWriteWithoutResponse;
62
63 @override
64 bool get canNotify => source.canNotify;
65
66 @override
67 bool get canIndicate => source.canIndicate;
68}