Files
bluetooth_low_energy/bluetooth_low_energy_android/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

353 lines
7.9 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(),
kotlinOut:
'android/src/main/kotlin/dev/hebei/bluetooth_low_energy_android/MyAPI.g.kt',
kotlinOptions: KotlinOptions(
package: 'dev.hebei.bluetooth_low_energy_android',
),
),
)
enum MyBluetoothLowEnergyStateArgs {
unknown,
unsupported,
unauthorized,
off,
turningOn,
on,
turningOff,
}
enum MyConnectionStateArgs {
disconnected,
connecting,
connected,
disconnecting,
}
enum MyGATTCharacteristicPropertyArgs {
read,
write,
writeWithoutResponse,
notify,
indicate,
}
enum MyGATTCharacteristicPermissionArgs {
read,
readEncrypted,
write,
writeEncrypted,
}
enum MyGATTCharacteristicWriteTypeArgs {
withResponse,
withoutResponse,
}
enum MyGATTStatusArgs {
success,
readNotPermitted,
writeNotPermitted,
insufficientAuthentication,
requestNotSupported,
insufficientEncryption,
invalidOffset,
insufficientAuthorization,
invalidAttributeLength,
connectionCongested,
failure,
}
class MyCentralManagerArgs {
final Uint8List enableNotificationValue;
final Uint8List enableIndicationValue;
final Uint8List disableNotificationValue;
MyCentralManagerArgs(
this.enableNotificationValue,
this.enableIndicationValue,
this.disableNotificationValue,
);
}
class MyPeripheralManagerArgs {
final Uint8List enableNotificationValue;
final Uint8List enableIndicationValue;
final Uint8List disableNotificationValue;
MyPeripheralManagerArgs(
this.enableNotificationValue,
this.enableIndicationValue,
this.disableNotificationValue,
);
}
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 String addressArgs;
MyCentralArgs(this.addressArgs);
}
class MyPeripheralArgs {
final String addressArgs;
MyPeripheralArgs(this.addressArgs);
}
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 List<int?> permissionNumbersArgs;
MyMutableGATTDescriptorArgs(
this.hashCodeArgs,
this.uuidArgs,
this.permissionNumbersArgs,
);
}
class MyMutableGATTCharacteristicArgs {
final int hashCodeArgs;
final String uuidArgs;
final List<int?> permissionNumbersArgs;
final List<int?> propertyNumbersArgs;
final List<MyMutableGATTDescriptorArgs?> descriptorsArgs;
MyMutableGATTCharacteristicArgs(
this.hashCodeArgs,
this.uuidArgs,
this.permissionNumbersArgs,
this.propertyNumbersArgs,
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,
);
}
@HostApi()
abstract class MyCentralManagerHostAPI {
MyCentralManagerArgs initialize();
MyBluetoothLowEnergyStateArgs getState();
@async
bool authorize();
@async
void showAppSettings();
@async
void startDiscovery(List<String> serviceUUIDsArgs);
void stopDiscovery();
@async
void connect(String addressArgs);
@async
void disconnect(String addressArgs);
List<MyPeripheralArgs> retrieveConnectedPeripherals();
@async
int requestMTU(String addressArgs, int mtuArgs);
@async
int readRSSI(String addressArgs);
@async
List<MyGATTServiceArgs> discoverGATT(String addressArgs);
@async
Uint8List readCharacteristic(String addressArgs, int hashCodeArgs);
@async
void writeCharacteristic(
String addressArgs,
int hashCodeArgs,
Uint8List valueArgs,
MyGATTCharacteristicWriteTypeArgs typeArgs,
);
void setCharacteristicNotification(
String addressArgs,
int hashCodeArgs,
bool enableArgs,
);
@async
Uint8List readDescriptor(String addressArgs, int hashCodeArgs);
@async
void writeDescriptor(
String addressArgs,
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 onMTUChanged(MyPeripheralArgs peripheralArgs, int mtuArgs);
void onCharacteristicNotified(
MyPeripheralArgs peripheralArgs,
MyGATTCharacteristicArgs characteristicArgs,
Uint8List valueArgs,
);
}
@HostApi()
abstract class MyPeripheralManagerHostAPI {
MyPeripheralManagerArgs initialize();
MyBluetoothLowEnergyStateArgs getState();
@async
bool authorize();
@async
void showAppSettings();
void openGATTServer();
void closeGATTServer();
@async
void addService(MyMutableGATTServiceArgs serviceArgs);
void removeService(int hashCodeArgs);
void removeAllServices();
@async
void startAdvertising(MyAdvertisementArgs advertisementArgs);
void stopAdvertising();
void sendResponse(
String addressArgs,
int idArgs,
MyGATTStatusArgs statusArgs,
int offsetArgs,
Uint8List? valueArgs,
);
@async
void notifyCharacteristicChanged(
String addressArgs,
int hashCodeArgs,
bool confirmArgs,
Uint8List valueArgs,
);
}
@FlutterApi()
abstract class MyPeripheralManagerFlutterAPI {
void onStateChanged(MyBluetoothLowEnergyStateArgs stateArgs);
void onConnectionStateChanged(
MyCentralArgs centralArgs,
int statusArgs,
MyConnectionStateArgs stateArgs,
);
void onMTUChanged(MyCentralArgs centralArgs, int mtuArgs);
void onCharacteristicReadRequest(
MyCentralArgs centralArgs,
int idArgs,
int offsetArgs,
int hashCodeArgs,
);
void onCharacteristicWriteRequest(
MyCentralArgs centralArgs,
int idArgs,
int hashCodeArgs,
bool preparedWriteArgs,
bool responseNeededArgs,
int offsetArgs,
Uint8List valueArgs,
);
void onDescriptorReadRequest(
MyCentralArgs centralArgs,
int idArgs,
int offsetArgs,
int hashCodeArgs,
);
void onDescriptorWriteRequest(
MyCentralArgs centralArgs,
int idArgs,
int hashCodeArgs,
bool preparedWriteArgs,
bool responseNeededArgs,
int offsetArgs,
Uint8List valueArgs,
);
void onExecuteWrite(
MyCentralArgs centralArgs,
int idArgs,
bool executeArgs,
);
}