* fix: 重构

* fix: 1

* fix: 重构

* fix: 修复 iOS 和 macOS 代码错误

* fix: 优化项目

* fix: 构建项目

* fix: 修复权限问题

* fix: 解决 macOS 沙盒权限问题

* fix: 修复代码问题

* fix: 更新依赖

* fix: 更新依赖项

* fix: 添加缺失的位置权限
This commit is contained in:
Mr剑侠客
2023-08-21 01:06:57 +08:00
committed by GitHub
parent 689b1fb045
commit 0f4fb7f553
127 changed files with 560 additions and 3693 deletions

View File

@ -2,12 +2,21 @@ import 'dart:typed_data';
import 'uuid.dart';
/// The advertisement discovered from a peripheral.
class Advertisement {
/// The name of the peripheral.
final String? name;
/// The manufacturer specific data of the peripheral.
final Map<int, Uint8List> manufacturerSpecificData;
/// The GATT service uuids of the peripheral.
final List<UUID> serviceUUIDs;
/// The GATT service data of the peripheral.
final Map<UUID, Uint8List> serviceData;
/// Constructs an [Advertisement].
Advertisement({
this.name,
this.manufacturerSpecificData = const {},

View File

@ -10,6 +10,8 @@ import 'gatt_descriptor.dart';
import 'gatt_service.dart';
import 'peripheral.dart';
/// The central controller used to communicate with peripherals.
/// Call `setUp` before use any api, and call `tearDown` when it is no longer needed.
abstract class CentralController extends PlatformInterface {
/// Constructs a [CentralController].
CentralController() : super(token: _token);
@ -37,36 +39,74 @@ abstract class CentralController extends PlatformInterface {
_instance = instance;
}
/// Gets the state of the central.
CentralState get state;
/// Used to listen the central state changed event.
Stream<CentralStateChangedEventArgs> get stateChanged;
/// Used to listen the central discovered event.
Stream<CentralDiscoveredEventArgs> get discovered;
/// Used to listen peripherals state changed event.
Stream<PeripheralStateChangedEventArgs> get peripheralStateChanged;
/// Used to listen GATT characteristics value changed event.
Stream<GattCharacteristicValueChangedEventArgs>
get characteristicValueChanged;
/// Sets up the central controller.
Future<void> setUp();
/// Tears down the central controller.
Future<void> tearDown();
/// Starts to discover peripherals.
Future<void> startDiscovery();
/// Stops to discover peripherals.
Future<void> stopDiscovery();
/// Connects to the peripheral.
Future<void> connect(Peripheral peripheral);
/// Disconnects form the peripheral.
Future<void> disconnect(Peripheral peripheral);
/// Discovers GATT of the peripheral.
Future<void> discoverGATT(Peripheral peripheral);
/// Gets GATT services of the peripheral.
Future<List<GattService>> getServices(Peripheral peripheral);
/// Gets GATT characteristics of the GATT service.
Future<List<GattCharacteristic>> getCharacteristics(GattService service);
/// Gets GATT descriptors of the GATT characteristic.
Future<List<GattDescriptor>> getDescriptors(
GattCharacteristic characteristic,
);
/// Reads value of the GATT characteristic.
Future<Uint8List> readCharacteristic(GattCharacteristic characteristic);
/// Writes value of the GATT characteristic.
Future<void> writeCharacteristic(
GattCharacteristic characteristic, {
required Uint8List value,
required GattCharacteristicWriteType type,
});
/// Notifies value of the GATT characteristic.
Future<void> notifyCharacteristic(
GattCharacteristic characteristic, {
required bool state,
});
/// Reads value of the GATT descriptor.
Future<Uint8List> readDescriptor(GattDescriptor descriptor);
/// Writes value of the GATT descriptor.
Future<void> writeDescriptor(
GattDescriptor descriptor, {
required Uint8List value,

View File

@ -1,7 +1,17 @@
/// The state of the central.
enum CentralState {
/// The central is unknown.
unknown,
/// The central is unsupported.
unsupported,
/// The central is unauthorized.
unauthorized,
/// The central is powered off.
poweredOff,
/// The central is powered on.
poweredOn,
}

View File

@ -1,6 +1,9 @@
/// The bluetooth low energy error.
class BluetoothLowEnergyError extends Error {
/// The message of this error.
final String message;
/// Constructs a [BluetoothLowEnergyError].
BluetoothLowEnergyError(this.message);
@override

View File

@ -5,32 +5,53 @@ import 'central_state.dart';
import 'gatt_characteristic.dart';
import 'peripheral.dart';
/// The base event arguments.
abstract class EventArgs {}
/// The central state changed event arguments.
class CentralStateChangedEventArgs extends EventArgs {
/// The new state of the central.
final CentralState state;
/// Constructs a [CentralStateChangedEventArgs].
CentralStateChangedEventArgs(this.state);
}
/// The central discovered event arguments.
class CentralDiscoveredEventArgs extends EventArgs {
/// The disvered peripheral.
final Peripheral peripheral;
/// The rssi of the peripheral.
final int rssi;
/// The advertisement of the peripheral.
final Advertisement advertisement;
/// Constructs a [CentralDiscoveredEventArgs].
CentralDiscoveredEventArgs(this.peripheral, this.rssi, this.advertisement);
}
/// The peripheral state changed event arguments.
class PeripheralStateChangedEventArgs extends EventArgs {
/// The peripheral which state is changed.
final Peripheral peripheral;
/// The new state of the peripheral.
final bool state;
/// Constructs a [PeripheralStateChangedEventArgs].
PeripheralStateChangedEventArgs(this.peripheral, this.state);
}
/// The GATT characteristic value changed event arguments.
class GattCharacteristicValueChangedEventArgs extends EventArgs {
/// The GATT characteristic which value is changed.
final GattCharacteristic characteristic;
/// The changed value of the characteristic.
final Uint8List value;
/// Constructs a [GattCharacteristicValueChangedEventArgs].
GattCharacteristicValueChangedEventArgs(this.characteristic, this.value);
}

View File

@ -1,10 +1,15 @@
import 'gatt_characteristic_property.dart';
import 'uuid.dart';
/// The GATT characteristic.
class GattCharacteristic {
/// The [UUID] of this GATT characteristic.
final UUID uuid;
/// The properties of this GATT characteristic.
final List<GattCharacteristicProperty> properties;
/// Constructs a [GattCharacteristic].
GattCharacteristic({
required this.uuid,
required this.properties,

View File

@ -1,7 +1,17 @@
/// The properity for a GATT characteristic.
enum GattCharacteristicProperty {
/// The GATT characteristic is able to read.
read,
/// The GATT characteristic is able to write.
write,
/// The GATT characteristic is able to write without response.
writeWithoutResponse,
/// The GATT characteristic is able to notify.
notify,
/// The GATT characteristic is able to indicate.
indicate,
}

View File

@ -1,3 +1,4 @@
/// The write type for a GATT characteristic.
enum GattCharacteristicWriteType {
// Write with response
withResponse,

View File

@ -1,8 +1,11 @@
import 'uuid.dart';
/// The GATT characteristic.
class GattDescriptor {
/// The [UUID] of this GATT descriptor.
final UUID uuid;
/// Constructs a [GattDescriptor].
GattDescriptor({
required this.uuid,
});

View File

@ -1,8 +1,11 @@
import 'uuid.dart';
/// The GATT service.
class GattService {
/// The [UUID] of this GATT service.
final UUID uuid;
/// Constructs a [GattService].
GattService({
required this.uuid,
});

View File

@ -1,5 +1,7 @@
import 'uuid.dart';
/// The peripheral.
abstract class Peripheral {
/// The [UUID] of this peripheral.
UUID get uuid;
}