* 调整接口 * 临时提交 * 重构 Android 平台代码 * 临时提交 * 临时提交 * Android 6.0.0-dev.0 * 临时提交 * 实现 Windows 接口 * windows-6.0.0-dev.0 * Darwin 6.0.0-dev.0 * 临时提交 * 1 * 临时提交 * 调整接口 * windows-6.0.0-dev.1 * 临时提交 * interface-6.0.0-dev.7 * interface-6.0.0-dev.8 * 临时提交 * windows-6.0.0-dev.2 * 删除多余脚本 * interface-6.0.0-dev.9 * 临时提交 * 临时提交 * interface-6.0.0-dev.10 * android-6.0.0-dev.1 * windows-6.0.0-dev.3 * 临时提交 * interface-6.0.0-dev.11 * windows-6.0.0-dev.4 * 更新 pubspec.lock * 1 * interface-6.0.0-dev.12 * interface-6.0.0-dev.13 * interface-6.0.0-dev.14 * 临时提交 * interface-6.0.0-dev.15 * 临时提交 * interface-6.0.0-dev.16 * android-6.0.0-dev.2 * 临时提交 * windows-6.0.0-dev.5 * 临时提交 * 临时提交 * windows-6.0.0-dev.6 * 优化注释和代码样式 * 优化代码 * 临时提交 * 实现 Dart 接口 * darwin-6.0.0-dev.0 * linux-6.0.0-dev.0 * 修复已知问题 * 修复问题 * 6.0.0-dev.0 * 修改包名 * 更新版本 * 移除原生部分 * 临时提交 * 修复问题 * 更新 pigeon 19.0.0 * 更新 README,添加迁移文档 * linux-6.0.0-dev.1 * 解析扫描回复和扩展广播 * 修复 googletest 版本警告问题 * Use centralArgs instead of addressArgs * interface-6.0.0-dev.18 * android-6.0.0-dev.4 * linux-6.0.0-dev.2 * windows-6.0.0-dev.8 * darwin-6.0.0-dev.2 * 6.0.0-dev.1 * Update LICENSE * clang-format * Combine ADV_IND and SCAN_RES * TEMP commit: update exampe * Adjust advertisement combine logic * Implement `MyPeripheralMananger` on Windows * Added NuGet auto download and scan for names on peripheral (#67) * fetch nuget using other technique * move FetchContent to right location in CMakeLists.txt * also added hash for googletest --------- Co-authored-by: Kevin De Keyser <kevin@dekeyser.ch> * Fix errors. * Check BluetoothAdapter role supported state and implement PeripheralManager on Flutter side. * Sort code * Fix known errors * interface-6.0.0-dev.19 * windows-6.0.0-dev.9 * Optimize example * android-6.0.0-dev.5 * Optimize the Adverrtisement BottomSheet. * linux-6.0.0-dev.3 * Update dependency * Fix example errors. * Temp commit. * darwin-6.0.0-dev.3 * 6.0.0-dev.2 * Update README.md * 6.0.0 * darwin-6.0.0-dev.4 * android-6.0.0-dev.6 * 6.0.0-dev.3 * Update docs. * interface-6.0.0 * android-6.0.0 * darwin-6.0.0 * linux-6.0.0 * windows-6.0.0 * 6.0.0 * Update dependency --------- Co-authored-by: Kevin De Keyser <dekeyser.kevin97@gmail.com> Co-authored-by: Kevin De Keyser <kevin@dekeyser.ch>
318 lines
7.0 KiB
Dart
318 lines
7.0 KiB
Dart
// Run with `dart run pigeon --input my_api.dart`.
|
|
import 'package:pigeon/pigeon.dart';
|
|
|
|
// TODO: Use `@ProxyApi` to manage instancs when this feature released:
|
|
// https://github.com/flutter/flutter/issues/147486
|
|
@ConfigurePigeon(
|
|
PigeonOptions(
|
|
dartOut: 'lib/src/my_api.g.dart',
|
|
dartOptions: DartOptions(),
|
|
swiftOut: 'darwin/Classes/MyAPI.g.swift',
|
|
swiftOptions: SwiftOptions(),
|
|
),
|
|
)
|
|
enum MyBluetoothLowEnergyStateArgs {
|
|
unknown,
|
|
resetting,
|
|
unsupported,
|
|
unauthorized,
|
|
poweredOff,
|
|
poweredOn,
|
|
}
|
|
|
|
enum MyConnectionStateArgs {
|
|
disconnected,
|
|
connected,
|
|
}
|
|
|
|
enum MyGATTCharacteristicPropertyArgs {
|
|
read,
|
|
write,
|
|
writeWithoutResponse,
|
|
notify,
|
|
indicate,
|
|
}
|
|
|
|
enum MyGATTCharacteristicPermissionArgs {
|
|
read,
|
|
readEncrypted,
|
|
write,
|
|
writeEncrypted,
|
|
}
|
|
|
|
enum MyGATTCharacteristicWriteTypeArgs {
|
|
withResponse,
|
|
withoutResponse,
|
|
}
|
|
|
|
enum MyATTErrorArgs {
|
|
success,
|
|
invalidHandle,
|
|
readNotPermitted,
|
|
writeNotPermitted,
|
|
invalidPDU,
|
|
insufficientAuthentication,
|
|
requestNotSupported,
|
|
invalidOffset,
|
|
insufficientAuthorization,
|
|
prepareQueueFull,
|
|
attributeNotFound,
|
|
attributeNotLong,
|
|
insufficientEncryptionKeySize,
|
|
invalidAttributeValueLength,
|
|
unlikelyError,
|
|
insufficientEncryption,
|
|
unsupportedGroupType,
|
|
insufficientResources,
|
|
}
|
|
|
|
class MyManufacturerSpecificDataArgs {
|
|
final int idArgs;
|
|
final Uint8List dataArgs;
|
|
|
|
MyManufacturerSpecificDataArgs(this.idArgs, this.dataArgs);
|
|
}
|
|
|
|
class MyAdvertisementArgs {
|
|
final String? nameArgs;
|
|
final List<String?> serviceUUIDsArgs;
|
|
final Map<String?, Uint8List?> serviceDataArgs;
|
|
final Uint8List? manufacturerSpecificDataArgs;
|
|
|
|
MyAdvertisementArgs(
|
|
this.nameArgs,
|
|
this.serviceUUIDsArgs,
|
|
this.serviceDataArgs,
|
|
this.manufacturerSpecificDataArgs,
|
|
);
|
|
}
|
|
|
|
class MyCentralArgs {
|
|
final String uuidArgs;
|
|
|
|
MyCentralArgs(this.uuidArgs);
|
|
}
|
|
|
|
class MyPeripheralArgs {
|
|
final String uuidArgs;
|
|
|
|
MyPeripheralArgs(this.uuidArgs);
|
|
}
|
|
|
|
class MyGATTDescriptorArgs {
|
|
final int hashCodeArgs;
|
|
final String uuidArgs;
|
|
|
|
MyGATTDescriptorArgs(
|
|
this.hashCodeArgs,
|
|
this.uuidArgs,
|
|
);
|
|
}
|
|
|
|
class MyGATTCharacteristicArgs {
|
|
final int hashCodeArgs;
|
|
final String uuidArgs;
|
|
final List<int?> propertyNumbersArgs;
|
|
final List<MyGATTDescriptorArgs?> descriptorsArgs;
|
|
|
|
MyGATTCharacteristicArgs(
|
|
this.hashCodeArgs,
|
|
this.uuidArgs,
|
|
this.propertyNumbersArgs,
|
|
this.descriptorsArgs,
|
|
);
|
|
}
|
|
|
|
class MyGATTServiceArgs {
|
|
final int hashCodeArgs;
|
|
final String uuidArgs;
|
|
final bool isPrimaryArgs;
|
|
final List<MyGATTServiceArgs?> includedServicesArgs;
|
|
final List<MyGATTCharacteristicArgs?> characteristicsArgs;
|
|
|
|
MyGATTServiceArgs(
|
|
this.hashCodeArgs,
|
|
this.uuidArgs,
|
|
this.isPrimaryArgs,
|
|
this.includedServicesArgs,
|
|
this.characteristicsArgs,
|
|
);
|
|
}
|
|
|
|
class MyMutableGATTDescriptorArgs {
|
|
final int hashCodeArgs;
|
|
final String uuidArgs;
|
|
final Uint8List? valueArgs;
|
|
|
|
MyMutableGATTDescriptorArgs(
|
|
this.hashCodeArgs,
|
|
this.uuidArgs,
|
|
this.valueArgs,
|
|
);
|
|
}
|
|
|
|
class MyMutableGATTCharacteristicArgs {
|
|
final int hashCodeArgs;
|
|
final String uuidArgs;
|
|
final List<int?> propertyNumbersArgs;
|
|
final List<int?> permissionNumbersArgs;
|
|
final Uint8List? valueArgs;
|
|
final List<MyMutableGATTDescriptorArgs?> descriptorsArgs;
|
|
|
|
MyMutableGATTCharacteristicArgs(
|
|
this.hashCodeArgs,
|
|
this.uuidArgs,
|
|
this.propertyNumbersArgs,
|
|
this.permissionNumbersArgs,
|
|
this.valueArgs,
|
|
this.descriptorsArgs,
|
|
);
|
|
}
|
|
|
|
class MyMutableGATTServiceArgs {
|
|
final int hashCodeArgs;
|
|
final String uuidArgs;
|
|
final bool isPrimaryArgs;
|
|
final List<MyMutableGATTServiceArgs?> includedServicesArgs;
|
|
final List<MyMutableGATTCharacteristicArgs?> characteristicsArgs;
|
|
|
|
MyMutableGATTServiceArgs(
|
|
this.hashCodeArgs,
|
|
this.uuidArgs,
|
|
this.isPrimaryArgs,
|
|
this.includedServicesArgs,
|
|
this.characteristicsArgs,
|
|
);
|
|
}
|
|
|
|
class MyATTRequestArgs {
|
|
final int hashCodeArgs;
|
|
final MyCentralArgs centralArgs;
|
|
final int characteristicHashCodeArgs;
|
|
final Uint8List? valueArgs;
|
|
final int offsetArgs;
|
|
|
|
MyATTRequestArgs(
|
|
this.hashCodeArgs,
|
|
this.centralArgs,
|
|
this.characteristicHashCodeArgs,
|
|
this.valueArgs,
|
|
this.offsetArgs,
|
|
);
|
|
}
|
|
|
|
@HostApi()
|
|
abstract class MyCentralManagerHostAPI {
|
|
void initialize();
|
|
MyBluetoothLowEnergyStateArgs getState();
|
|
@async
|
|
void showAppSettings();
|
|
void startDiscovery(List<String> serviceUUIDsArgs);
|
|
void stopDiscovery();
|
|
List<MyPeripheralArgs> retrieveConnectedPeripherals();
|
|
@async
|
|
void connect(String uuidArgs);
|
|
@async
|
|
void disconnect(String uuidArgs);
|
|
int getMaximumWriteLength(
|
|
String uuidArgs,
|
|
MyGATTCharacteristicWriteTypeArgs typeArgs,
|
|
);
|
|
@async
|
|
int readRSSI(String uuidArgs);
|
|
@async
|
|
List<MyGATTServiceArgs> discoverServices(String uuidArgs);
|
|
@async
|
|
List<MyGATTServiceArgs> discoverIncludedServices(
|
|
String uuidArgs,
|
|
int hashCodeArgs,
|
|
);
|
|
@async
|
|
List<MyGATTCharacteristicArgs> discoverCharacteristics(
|
|
String uuidArgs,
|
|
int hashCodeArgs,
|
|
);
|
|
@async
|
|
List<MyGATTDescriptorArgs> discoverDescriptors(
|
|
String uuidArgs,
|
|
int hashCodeArgs,
|
|
);
|
|
@async
|
|
Uint8List readCharacteristic(String uuidArgs, int hashCodeArgs);
|
|
@async
|
|
void writeCharacteristic(
|
|
String uuidArgs,
|
|
int hashCodeArgs,
|
|
Uint8List valueArgs,
|
|
MyGATTCharacteristicWriteTypeArgs typeArgs,
|
|
);
|
|
@async
|
|
void setCharacteristicNotifyState(
|
|
String uuidArgs,
|
|
int hashCodeArgs,
|
|
bool stateArgs,
|
|
);
|
|
@async
|
|
Uint8List readDescriptor(String uuidArgs, int hashCodeArgs);
|
|
@async
|
|
void writeDescriptor(String uuidArgs, int hashCodeArgs, Uint8List valueArgs);
|
|
}
|
|
|
|
@FlutterApi()
|
|
abstract class MyCentralManagerFlutterAPI {
|
|
void onStateChanged(MyBluetoothLowEnergyStateArgs stateArgs);
|
|
void onDiscovered(
|
|
MyPeripheralArgs peripheralArgs,
|
|
int rssiArgs,
|
|
MyAdvertisementArgs advertisementArgs,
|
|
);
|
|
void onConnectionStateChanged(
|
|
MyPeripheralArgs peripheralArgs,
|
|
MyConnectionStateArgs stateArgs,
|
|
);
|
|
void onCharacteristicNotified(
|
|
MyPeripheralArgs peripheralArgs,
|
|
MyGATTCharacteristicArgs characteristicArgs,
|
|
Uint8List valueArgs,
|
|
);
|
|
}
|
|
|
|
@HostApi()
|
|
abstract class MyPeripheralManagerHostAPI {
|
|
void initialize();
|
|
MyBluetoothLowEnergyStateArgs getState();
|
|
@async
|
|
void showAppSettings();
|
|
@async
|
|
void addService(MyMutableGATTServiceArgs serviceArgs);
|
|
void removeService(int hashCodeArgs);
|
|
void removeAllServices();
|
|
@async
|
|
void startAdvertising(MyAdvertisementArgs advertisementArgs);
|
|
void stopAdvertising();
|
|
int getMaximumNotifyLength(String uuidArgs);
|
|
void respond(
|
|
int hashCodeArgs,
|
|
Uint8List? valueArgs,
|
|
MyATTErrorArgs errorArgs,
|
|
);
|
|
bool updateValue(
|
|
int hashCodeArgs,
|
|
Uint8List valueArgs,
|
|
List<String>? uuidsArgs,
|
|
);
|
|
}
|
|
|
|
@FlutterApi()
|
|
abstract class MyPeripheralManagerFlutterAPI {
|
|
void onStateChanged(MyBluetoothLowEnergyStateArgs stateArgs);
|
|
void didReceiveRead(MyATTRequestArgs requestArgs);
|
|
void didReceiveWrite(List<MyATTRequestArgs> requestsArgs);
|
|
void isReady();
|
|
void onCharacteristicNotifyStateChanged(
|
|
MyCentralArgs centralArgs,
|
|
int hashCodeArgs,
|
|
bool stateArgs,
|
|
);
|
|
}
|