Files
bluetooth_low_energy/bluetooth_low_energy_windows/my_api.dart
渐渐被你吸引 108b6a804f 6.0.0 (#74)
* 调整接口

* 临时提交

* 重构 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>
2024-06-04 00:44:39 +08:00

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