* 调整接口 * 临时提交 * 重构 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>
384 lines
8.5 KiB
Dart
384 lines
8.5 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(),
|
|
cppHeaderOut: 'windows/my_api.g.h',
|
|
cppSourceOut: 'windows/my_api.g.cpp',
|
|
cppOptions: CppOptions(
|
|
namespace: 'bluetooth_low_energy_windows',
|
|
),
|
|
),
|
|
)
|
|
enum MyBluetoothLowEnergyStateArgs {
|
|
unknown,
|
|
unsupported,
|
|
disabled,
|
|
off,
|
|
on,
|
|
}
|
|
|
|
enum MyAdvertisementTypeArgs {
|
|
connectableUndirected,
|
|
connectableDirected,
|
|
scannableUndirected,
|
|
nonConnectableUndirected,
|
|
scanResponse,
|
|
extended,
|
|
}
|
|
|
|
enum MyConnectionStateArgs {
|
|
disconnected,
|
|
connected,
|
|
}
|
|
|
|
enum MyGATTCharacteristicPropertyArgs {
|
|
read,
|
|
write,
|
|
writeWithoutResponse,
|
|
notify,
|
|
indicate,
|
|
}
|
|
|
|
enum MyGATTCharacteristicWriteTypeArgs {
|
|
withResponse,
|
|
withoutResponse,
|
|
}
|
|
|
|
enum MyGATTCharacteristicNotifyStateArgs {
|
|
none,
|
|
notify,
|
|
indicate,
|
|
}
|
|
|
|
enum MyGATTProtectionLevelArgs {
|
|
plain,
|
|
authenticationRequired,
|
|
entryptionRequired,
|
|
encryptionAndAuthenticationRequired,
|
|
}
|
|
|
|
enum MyGATTProtocolErrorArgs {
|
|
invalidHandle,
|
|
readNotPermitted,
|
|
writeNotPermitted,
|
|
invalidPDU,
|
|
insufficientAuthentication,
|
|
requestNotSupported,
|
|
invalidOffset,
|
|
insufficientAuthorization,
|
|
prepareQueueFull,
|
|
attributeNotFound,
|
|
attributeNotLong,
|
|
insufficientEncryptionKeySize,
|
|
invalidAttributeValueLength,
|
|
unlikelyError,
|
|
insufficientEncryption,
|
|
unsupportedGroupType,
|
|
insufficientResources,
|
|
}
|
|
|
|
enum MyCacheModeArgs {
|
|
cached,
|
|
uncached,
|
|
}
|
|
|
|
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 List<MyManufacturerSpecificDataArgs?> manufacturerSpecificDataArgs;
|
|
|
|
MyAdvertisementArgs(
|
|
this.nameArgs,
|
|
this.serviceUUIDsArgs,
|
|
this.serviceDataArgs,
|
|
this.manufacturerSpecificDataArgs,
|
|
);
|
|
}
|
|
|
|
class MyCentralArgs {
|
|
final int addressArgs;
|
|
|
|
MyCentralArgs(this.addressArgs);
|
|
}
|
|
|
|
class MyPeripheralArgs {
|
|
final int addressArgs;
|
|
|
|
MyPeripheralArgs(this.addressArgs);
|
|
}
|
|
|
|
class MyGATTDescriptorArgs {
|
|
final int handleArgs;
|
|
final String uuidArgs;
|
|
|
|
MyGATTDescriptorArgs(
|
|
this.handleArgs,
|
|
this.uuidArgs,
|
|
);
|
|
}
|
|
|
|
class MyGATTCharacteristicArgs {
|
|
final int handleArgs;
|
|
final String uuidArgs;
|
|
final List<int?> propertyNumbersArgs;
|
|
final List<MyGATTDescriptorArgs?> descriptorsArgs;
|
|
|
|
MyGATTCharacteristicArgs(
|
|
this.handleArgs,
|
|
this.uuidArgs,
|
|
this.propertyNumbersArgs,
|
|
this.descriptorsArgs,
|
|
);
|
|
}
|
|
|
|
class MyGATTServiceArgs {
|
|
final int handleArgs;
|
|
final String uuidArgs;
|
|
final bool isPrimaryArgs;
|
|
final List<MyGATTServiceArgs?> includedServicesArgs;
|
|
final List<MyGATTCharacteristicArgs?> characteristicsArgs;
|
|
|
|
MyGATTServiceArgs(
|
|
this.handleArgs,
|
|
this.uuidArgs,
|
|
this.isPrimaryArgs,
|
|
this.includedServicesArgs,
|
|
this.characteristicsArgs,
|
|
);
|
|
}
|
|
|
|
class MyMutableGATTDescriptorArgs {
|
|
final int hashCodeArgs;
|
|
final String uuidArgs;
|
|
final Uint8List? valueArgs;
|
|
final MyGATTProtectionLevelArgs? readProtectionLevelArgs;
|
|
final MyGATTProtectionLevelArgs? writeProtectionLevelArgs;
|
|
|
|
MyMutableGATTDescriptorArgs(
|
|
this.hashCodeArgs,
|
|
this.uuidArgs,
|
|
this.valueArgs,
|
|
this.readProtectionLevelArgs,
|
|
this.writeProtectionLevelArgs,
|
|
);
|
|
}
|
|
|
|
class MyMutableGATTCharacteristicArgs {
|
|
final int hashCodeArgs;
|
|
final String uuidArgs;
|
|
final Uint8List? valueArgs;
|
|
final List<int?> propertyNumbersArgs;
|
|
final MyGATTProtectionLevelArgs? readProtectionLevelArgs;
|
|
final MyGATTProtectionLevelArgs? writeProtectionLevelArgs;
|
|
final List<MyMutableGATTDescriptorArgs?> descriptorsArgs;
|
|
|
|
MyMutableGATTCharacteristicArgs(
|
|
this.hashCodeArgs,
|
|
this.uuidArgs,
|
|
this.valueArgs,
|
|
this.propertyNumbersArgs,
|
|
this.readProtectionLevelArgs,
|
|
this.writeProtectionLevelArgs,
|
|
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 MyGATTReadRequestArgs {
|
|
final int idArgs;
|
|
final int offsetArgs;
|
|
final int lengthArgs;
|
|
|
|
MyGATTReadRequestArgs(
|
|
this.idArgs,
|
|
this.offsetArgs,
|
|
this.lengthArgs,
|
|
);
|
|
}
|
|
|
|
class MyGATTWriteRequestArgs {
|
|
final int idArgs;
|
|
final int offsetArgs;
|
|
final Uint8List valueArgs;
|
|
final MyGATTCharacteristicWriteTypeArgs typeArgs;
|
|
|
|
MyGATTWriteRequestArgs(
|
|
this.idArgs,
|
|
this.offsetArgs,
|
|
this.valueArgs,
|
|
this.typeArgs,
|
|
);
|
|
}
|
|
|
|
@HostApi()
|
|
abstract class MyCentralManagerHostAPI {
|
|
@async
|
|
void initialize();
|
|
MyBluetoothLowEnergyStateArgs getState();
|
|
void startDiscovery(List<String> serviceUUIDsArgs);
|
|
void stopDiscovery();
|
|
@async
|
|
void connect(int addressArgs);
|
|
void disconnect(int addressArgs);
|
|
int getMTU(int addressArgs);
|
|
@async
|
|
List<MyGATTServiceArgs> getServices(
|
|
int addressArgs,
|
|
MyCacheModeArgs modeArgs,
|
|
);
|
|
@async
|
|
List<MyGATTServiceArgs> getIncludedServices(
|
|
int addressArgs,
|
|
int handleArgs,
|
|
MyCacheModeArgs modeArgs,
|
|
);
|
|
@async
|
|
List<MyGATTCharacteristicArgs> getCharacteristics(
|
|
int addressArgs,
|
|
int handleArgs,
|
|
MyCacheModeArgs modeArgs,
|
|
);
|
|
@async
|
|
List<MyGATTDescriptorArgs> getDescriptors(
|
|
int addressArgs,
|
|
int handleArgs,
|
|
MyCacheModeArgs modeArgs,
|
|
);
|
|
@async
|
|
Uint8List readCharacteristic(
|
|
int addressArgs,
|
|
int handleArgs,
|
|
MyCacheModeArgs modeArgs,
|
|
);
|
|
@async
|
|
void writeCharacteristic(
|
|
int addressArgs,
|
|
int handleArgs,
|
|
Uint8List valueArgs,
|
|
MyGATTCharacteristicWriteTypeArgs typeArgs,
|
|
);
|
|
@async
|
|
void setCharacteristicNotifyState(
|
|
int addressArgs,
|
|
int handleArgs,
|
|
MyGATTCharacteristicNotifyStateArgs stateArgs,
|
|
);
|
|
@async
|
|
Uint8List readDescriptor(
|
|
int addressArgs,
|
|
int handleArgs,
|
|
MyCacheModeArgs modeArgs,
|
|
);
|
|
@async
|
|
void writeDescriptor(int addressArgs, int handleArgs, Uint8List valueArgs);
|
|
}
|
|
|
|
@FlutterApi()
|
|
abstract class MyCentralManagerFlutterAPI {
|
|
void onStateChanged(MyBluetoothLowEnergyStateArgs stateArgs);
|
|
void onDiscovered(
|
|
MyPeripheralArgs peripheralArgs,
|
|
int rssiArgs,
|
|
int timestampArgs,
|
|
MyAdvertisementTypeArgs typeArgs,
|
|
MyAdvertisementArgs advertisementArgs,
|
|
);
|
|
void onConnectionStateChanged(
|
|
MyPeripheralArgs peripheralArgs,
|
|
MyConnectionStateArgs stateArgs,
|
|
);
|
|
void onMTUChanged(MyPeripheralArgs peripheralArgs, int mtuArgs);
|
|
void onCharacteristicNotified(
|
|
MyPeripheralArgs peripheralArgs,
|
|
MyGATTCharacteristicArgs characteristicArgs,
|
|
Uint8List valueArgs,
|
|
);
|
|
}
|
|
|
|
@HostApi()
|
|
abstract class MyPeripheralManagerHostAPI {
|
|
@async
|
|
void initialize();
|
|
MyBluetoothLowEnergyStateArgs getState();
|
|
@async
|
|
void addService(MyMutableGATTServiceArgs serviceArgs);
|
|
void removeService(int hashCodeArgs);
|
|
void startAdvertising(MyAdvertisementArgs advertisementArgs);
|
|
void stopAdvertising();
|
|
int getMaxNotificationSize(int addressArgs);
|
|
void respondReadRequestWithValue(int idArgs, Uint8List valueArgs);
|
|
void respondReadRequestWithProtocolError(
|
|
int idArgs,
|
|
MyGATTProtocolErrorArgs errorArgs,
|
|
);
|
|
void respondWriteRequest(int idArgs);
|
|
void respondWriteRequestWithProtocolError(
|
|
int idArgs,
|
|
MyGATTProtocolErrorArgs errorArgs,
|
|
);
|
|
@async
|
|
void notifyValue(
|
|
int addressArgs,
|
|
int hashCodeArgs,
|
|
Uint8List valueArgs,
|
|
);
|
|
}
|
|
|
|
@FlutterApi()
|
|
abstract class MyPeripheralManagerFlutterAPI {
|
|
void onStateChanged(MyBluetoothLowEnergyStateArgs stateArgs);
|
|
void onMTUChanged(MyCentralArgs centralArgs, int mtuArgs);
|
|
void onCharacteristicReadRequest(
|
|
MyCentralArgs centralArgs,
|
|
int hashCodeArgs,
|
|
MyGATTReadRequestArgs requestArgs,
|
|
);
|
|
void onCharacteristicWriteRequest(
|
|
MyCentralArgs centralArgs,
|
|
int hashCodeArgs,
|
|
MyGATTWriteRequestArgs requestArgs,
|
|
);
|
|
void onCharacteristicSubscribedClientsChanged(
|
|
int hashCodeArgs,
|
|
List<MyCentralArgs> centralsArgs,
|
|
);
|
|
void onDescriptorReadRequest(
|
|
MyCentralArgs centralArgs,
|
|
int hashCodeArgs,
|
|
MyGATTReadRequestArgs requestArgs,
|
|
);
|
|
void onDescriptorWriteRequest(
|
|
MyCentralArgs centralArgs,
|
|
int hashCodeArgs,
|
|
MyGATTWriteRequestArgs requestArgs,
|
|
);
|
|
}
|