* draft: 临时提交 * feat: 实现扫描功能 * fix: 优化广播逻辑 * feat: 添加协程方法 * fix: 修改宏定义 * draft: 临时提交 * feat: 调整接口 * fix: 修改版本号 * feat: 4.1.1 * draft: 临时提交 * feat: 5.0.0-dev.2 * fix: 修复版本号错误 * draft: 临时提交 * fix: 修复连接断开异常 * fix: 修复问题 * fix: 优化代码 * fix: 优化 short UUID 格式化逻辑 * fix: 尝试实现 read_rssi 接口,当前此接口不可用,会报异常 * feat: 删除 getMaximumWriteLength 方法 * fix: 更新 CHANGELOG.md * feat: 5.0.0-dev.1 * fix: 更新依赖项 * feat: linux-5.0.0-dev.1 * fix: 更新 CHANGELOG.md * fix: 开始搜索设备时清空设备列表 * fix: 开始扫描时清空设备列表 * feat: 5.0.0-dev.2 * fix: 优化 MyGattService 和 MyGattCharacteristic * feat: 更新 interface 版本 -> 5.0.0-dev.4 * feat: 更新 interface 版本 -> 5.0.0-dev.4 * feat: 实现 flutter 部分 5.0.0 * fix: 移除 maximumWriteLength * fix: 移除 rssi * feat: 5.0.0-dev.1 * feat: 5.0.0-dev.2 * fix: 更新依赖项 * fix: 5.0.0-dev.4 * fix: 更新依赖项 * draft: 临时提交 * feat: 5.0.0-dev.5 * draft: 删除 MyCentralManager 和 MyPeripheralManager * fix: 更新依赖项 * fix: 更新依赖项 * feat: 适配新接口 * feat: 5.0.0-dev.6 * draft: 临时提交 * feat: 5.0.0-dev.7 * fix: 修改版本号 * feat: 5.0.0-dev.8 * feat: 5.0.0-dev.9 * fix: 修复 trimGATT 错误 * feat: 5.0.0-dev.6 * feat: 5.0.0-dev.3 * feat: 5.0.0-dev.4 * fix: 更新 pubspec.lock * feat: 5.0.0-dev.7 * feat: 5.0.0-dev.3 * fix: balabala * fix: balabala * draft: 5.0.0-dev.1 * fix: trim GATT when call the `writeCharacteristic` method. * fix: make difference of `trim` and `fragment`. * feat: 5.0.0-dev.1 * feat: 5.0.0-dev.1 * feat: 优化示例程序 * fix: 更新 README.md * fix: 修复插件引用 * draft: XXXX * feat: 增加调试信息 * fix: 更新 pubspec.lock * feat: 5.0.0-dev.4 * feat: 5.0.0-dev.3 * feat: 5.0.0 * feat: 5.0.0 * feat: 5.0.0 * feat: 5.0.0 * feat: 5.0.0 * feat: 5.0.0
1061 lines
44 KiB
Swift
1061 lines
44 KiB
Swift
// Autogenerated from Pigeon (v15.0.2), do not edit directly.
|
|
// See also: https://pub.dev/packages/pigeon
|
|
|
|
import Foundation
|
|
#if os(iOS)
|
|
import Flutter
|
|
#elseif os(macOS)
|
|
import FlutterMacOS
|
|
#else
|
|
#error("Unsupported platform.")
|
|
#endif
|
|
|
|
private func wrapResult(_ result: Any?) -> [Any?] {
|
|
return [result]
|
|
}
|
|
|
|
private func wrapError(_ error: Any) -> [Any?] {
|
|
if let flutterError = error as? FlutterError {
|
|
return [
|
|
flutterError.code,
|
|
flutterError.message,
|
|
flutterError.details
|
|
]
|
|
}
|
|
return [
|
|
"\(error)",
|
|
"\(type(of: error))",
|
|
"Stacktrace: \(Thread.callStackSymbols)"
|
|
]
|
|
}
|
|
|
|
private func createConnectionError(withChannelName channelName: String) -> FlutterError {
|
|
return FlutterError(code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", details: "")
|
|
}
|
|
|
|
private func isNullish(_ value: Any?) -> Bool {
|
|
return value is NSNull || value == nil
|
|
}
|
|
|
|
private func nilOrValue<T>(_ value: Any?) -> T? {
|
|
if value is NSNull { return nil }
|
|
return value as! T?
|
|
}
|
|
|
|
enum MyBluetoothLowEnergyStateArgs: Int {
|
|
case unknown = 0
|
|
case resetting = 1
|
|
case unsupported = 2
|
|
case unauthorized = 3
|
|
case poweredOff = 4
|
|
case poweredOn = 5
|
|
}
|
|
|
|
enum MyGattCharacteristicPropertyArgs: Int {
|
|
case read = 0
|
|
case write = 1
|
|
case writeWithoutResponse = 2
|
|
case notify = 3
|
|
case indicate = 4
|
|
}
|
|
|
|
enum MyGattCharacteristicWriteTypeArgs: Int {
|
|
case withResponse = 0
|
|
case withoutResponse = 1
|
|
}
|
|
|
|
enum MyGattErrorArgs: Int {
|
|
case success = 0
|
|
case invalidHandle = 1
|
|
case readNotPermitted = 2
|
|
case writeNotPermitted = 3
|
|
case invalidPDU = 4
|
|
case insufficientAuthentication = 5
|
|
case requestNotSupported = 6
|
|
case invalidOffset = 7
|
|
case insufficientAuthorization = 8
|
|
case prepareQueueFull = 9
|
|
case attributeNotFound = 10
|
|
case attributeNotLong = 11
|
|
case insufficientEncryptionKeySize = 12
|
|
case invalidAttributeValueLength = 13
|
|
case unlikelyError = 14
|
|
case insufficientEncryption = 15
|
|
case unsupportedGroupType = 16
|
|
case insufficientResources = 17
|
|
}
|
|
|
|
/// Generated class from Pigeon that represents data sent in messages.
|
|
struct MyManufacturerSpecificDataArgs {
|
|
var idArgs: Int64
|
|
var dataArgs: FlutterStandardTypedData
|
|
|
|
static func fromList(_ list: [Any?]) -> MyManufacturerSpecificDataArgs? {
|
|
let idArgs = list[0] is Int64 ? list[0] as! Int64 : Int64(list[0] as! Int32)
|
|
let dataArgs = list[1] as! FlutterStandardTypedData
|
|
|
|
return MyManufacturerSpecificDataArgs(
|
|
idArgs: idArgs,
|
|
dataArgs: dataArgs
|
|
)
|
|
}
|
|
func toList() -> [Any?] {
|
|
return [
|
|
idArgs,
|
|
dataArgs,
|
|
]
|
|
}
|
|
}
|
|
|
|
/// Generated class from Pigeon that represents data sent in messages.
|
|
struct MyAdvertisementArgs {
|
|
var nameArgs: String? = nil
|
|
var serviceUUIDsArgs: [String?]
|
|
var serviceDataArgs: [String?: FlutterStandardTypedData?]
|
|
var manufacturerSpecificDataArgs: MyManufacturerSpecificDataArgs? = nil
|
|
|
|
static func fromList(_ list: [Any?]) -> MyAdvertisementArgs? {
|
|
let nameArgs: String? = nilOrValue(list[0])
|
|
let serviceUUIDsArgs = list[1] as! [String?]
|
|
let serviceDataArgs = list[2] as! [String?: FlutterStandardTypedData?]
|
|
var manufacturerSpecificDataArgs: MyManufacturerSpecificDataArgs? = nil
|
|
if let manufacturerSpecificDataArgsList: [Any?] = nilOrValue(list[3]) {
|
|
manufacturerSpecificDataArgs = MyManufacturerSpecificDataArgs.fromList(manufacturerSpecificDataArgsList)
|
|
}
|
|
|
|
return MyAdvertisementArgs(
|
|
nameArgs: nameArgs,
|
|
serviceUUIDsArgs: serviceUUIDsArgs,
|
|
serviceDataArgs: serviceDataArgs,
|
|
manufacturerSpecificDataArgs: manufacturerSpecificDataArgs
|
|
)
|
|
}
|
|
func toList() -> [Any?] {
|
|
return [
|
|
nameArgs,
|
|
serviceUUIDsArgs,
|
|
serviceDataArgs,
|
|
manufacturerSpecificDataArgs?.toList(),
|
|
]
|
|
}
|
|
}
|
|
|
|
/// Generated class from Pigeon that represents data sent in messages.
|
|
struct MyCentralArgs {
|
|
var uuidArgs: String
|
|
|
|
static func fromList(_ list: [Any?]) -> MyCentralArgs? {
|
|
let uuidArgs = list[0] as! String
|
|
|
|
return MyCentralArgs(
|
|
uuidArgs: uuidArgs
|
|
)
|
|
}
|
|
func toList() -> [Any?] {
|
|
return [
|
|
uuidArgs,
|
|
]
|
|
}
|
|
}
|
|
|
|
/// Generated class from Pigeon that represents data sent in messages.
|
|
struct MyPeripheralArgs {
|
|
var uuidArgs: String
|
|
|
|
static func fromList(_ list: [Any?]) -> MyPeripheralArgs? {
|
|
let uuidArgs = list[0] as! String
|
|
|
|
return MyPeripheralArgs(
|
|
uuidArgs: uuidArgs
|
|
)
|
|
}
|
|
func toList() -> [Any?] {
|
|
return [
|
|
uuidArgs,
|
|
]
|
|
}
|
|
}
|
|
|
|
/// Generated class from Pigeon that represents data sent in messages.
|
|
struct MyGattDescriptorArgs {
|
|
var hashCodeArgs: Int64
|
|
var uuidArgs: String
|
|
var valueArgs: FlutterStandardTypedData? = nil
|
|
|
|
static func fromList(_ list: [Any?]) -> MyGattDescriptorArgs? {
|
|
let hashCodeArgs = list[0] is Int64 ? list[0] as! Int64 : Int64(list[0] as! Int32)
|
|
let uuidArgs = list[1] as! String
|
|
let valueArgs: FlutterStandardTypedData? = nilOrValue(list[2])
|
|
|
|
return MyGattDescriptorArgs(
|
|
hashCodeArgs: hashCodeArgs,
|
|
uuidArgs: uuidArgs,
|
|
valueArgs: valueArgs
|
|
)
|
|
}
|
|
func toList() -> [Any?] {
|
|
return [
|
|
hashCodeArgs,
|
|
uuidArgs,
|
|
valueArgs,
|
|
]
|
|
}
|
|
}
|
|
|
|
/// Generated class from Pigeon that represents data sent in messages.
|
|
struct MyGattCharacteristicArgs {
|
|
var hashCodeArgs: Int64
|
|
var uuidArgs: String
|
|
var propertyNumbersArgs: [Int64?]
|
|
var descriptorsArgs: [MyGattDescriptorArgs?]
|
|
|
|
static func fromList(_ list: [Any?]) -> MyGattCharacteristicArgs? {
|
|
let hashCodeArgs = list[0] is Int64 ? list[0] as! Int64 : Int64(list[0] as! Int32)
|
|
let uuidArgs = list[1] as! String
|
|
let propertyNumbersArgs = list[2] as! [Int64?]
|
|
let descriptorsArgs = list[3] as! [MyGattDescriptorArgs?]
|
|
|
|
return MyGattCharacteristicArgs(
|
|
hashCodeArgs: hashCodeArgs,
|
|
uuidArgs: uuidArgs,
|
|
propertyNumbersArgs: propertyNumbersArgs,
|
|
descriptorsArgs: descriptorsArgs
|
|
)
|
|
}
|
|
func toList() -> [Any?] {
|
|
return [
|
|
hashCodeArgs,
|
|
uuidArgs,
|
|
propertyNumbersArgs,
|
|
descriptorsArgs,
|
|
]
|
|
}
|
|
}
|
|
|
|
/// Generated class from Pigeon that represents data sent in messages.
|
|
struct MyGattServiceArgs {
|
|
var hashCodeArgs: Int64
|
|
var uuidArgs: String
|
|
var characteristicsArgs: [MyGattCharacteristicArgs?]
|
|
|
|
static func fromList(_ list: [Any?]) -> MyGattServiceArgs? {
|
|
let hashCodeArgs = list[0] is Int64 ? list[0] as! Int64 : Int64(list[0] as! Int32)
|
|
let uuidArgs = list[1] as! String
|
|
let characteristicsArgs = list[2] as! [MyGattCharacteristicArgs?]
|
|
|
|
return MyGattServiceArgs(
|
|
hashCodeArgs: hashCodeArgs,
|
|
uuidArgs: uuidArgs,
|
|
characteristicsArgs: characteristicsArgs
|
|
)
|
|
}
|
|
func toList() -> [Any?] {
|
|
return [
|
|
hashCodeArgs,
|
|
uuidArgs,
|
|
characteristicsArgs,
|
|
]
|
|
}
|
|
}
|
|
|
|
private class MyCentralManagerHostApiCodecReader: FlutterStandardReader {
|
|
override func readValue(ofType type: UInt8) -> Any? {
|
|
switch type {
|
|
case 128:
|
|
return MyGattCharacteristicArgs.fromList(self.readValue() as! [Any?])
|
|
case 129:
|
|
return MyGattDescriptorArgs.fromList(self.readValue() as! [Any?])
|
|
case 130:
|
|
return MyGattServiceArgs.fromList(self.readValue() as! [Any?])
|
|
default:
|
|
return super.readValue(ofType: type)
|
|
}
|
|
}
|
|
}
|
|
|
|
private class MyCentralManagerHostApiCodecWriter: FlutterStandardWriter {
|
|
override func writeValue(_ value: Any) {
|
|
if let value = value as? MyGattCharacteristicArgs {
|
|
super.writeByte(128)
|
|
super.writeValue(value.toList())
|
|
} else if let value = value as? MyGattDescriptorArgs {
|
|
super.writeByte(129)
|
|
super.writeValue(value.toList())
|
|
} else if let value = value as? MyGattServiceArgs {
|
|
super.writeByte(130)
|
|
super.writeValue(value.toList())
|
|
} else {
|
|
super.writeValue(value)
|
|
}
|
|
}
|
|
}
|
|
|
|
private class MyCentralManagerHostApiCodecReaderWriter: FlutterStandardReaderWriter {
|
|
override func reader(with data: Data) -> FlutterStandardReader {
|
|
return MyCentralManagerHostApiCodecReader(data: data)
|
|
}
|
|
|
|
override func writer(with data: NSMutableData) -> FlutterStandardWriter {
|
|
return MyCentralManagerHostApiCodecWriter(data: data)
|
|
}
|
|
}
|
|
|
|
class MyCentralManagerHostApiCodec: FlutterStandardMessageCodec {
|
|
static let shared = MyCentralManagerHostApiCodec(readerWriter: MyCentralManagerHostApiCodecReaderWriter())
|
|
}
|
|
|
|
/// Generated protocol from Pigeon that represents a handler of messages from Flutter.
|
|
protocol MyCentralManagerHostApi {
|
|
func setUp() throws
|
|
func startDiscovery() throws
|
|
func stopDiscovery() throws
|
|
func connect(uuidArgs: String, completion: @escaping (Result<Void, Error>) -> Void)
|
|
func disconnect(uuidArgs: String, completion: @escaping (Result<Void, Error>) -> Void)
|
|
func getMaximumWriteValueLength(uuidArgs: String, typeNumberArgs: Int64) throws -> Int64
|
|
func readRSSI(uuidArgs: String, completion: @escaping (Result<Int64, Error>) -> Void)
|
|
func discoverServices(uuidArgs: String, completion: @escaping (Result<[MyGattServiceArgs], Error>) -> Void)
|
|
func discoverCharacteristics(uuidArgs: String, hashCodeArgs: Int64, completion: @escaping (Result<[MyGattCharacteristicArgs], Error>) -> Void)
|
|
func discoverDescriptors(uuidArgs: String, hashCodeArgs: Int64, completion: @escaping (Result<[MyGattDescriptorArgs], Error>) -> Void)
|
|
func readCharacteristic(uuidArgs: String, hashCodeArgs: Int64, completion: @escaping (Result<FlutterStandardTypedData, Error>) -> Void)
|
|
func writeCharacteristic(uuidArgs: String, hashCodeArgs: Int64, valueArgs: FlutterStandardTypedData, typeNumberArgs: Int64, completion: @escaping (Result<Void, Error>) -> Void)
|
|
func setCharacteristicNotifyState(uuidArgs: String, hashCodeArgs: Int64, stateArgs: Bool, completion: @escaping (Result<Void, Error>) -> Void)
|
|
func readDescriptor(uuidArgs: String, hashCodeArgs: Int64, completion: @escaping (Result<FlutterStandardTypedData, Error>) -> Void)
|
|
func writeDescriptor(uuidArgs: String, hashCodeArgs: Int64, valueArgs: FlutterStandardTypedData, completion: @escaping (Result<Void, Error>) -> Void)
|
|
}
|
|
|
|
/// Generated setup class from Pigeon to handle messages through the `binaryMessenger`.
|
|
class MyCentralManagerHostApiSetup {
|
|
/// The codec used by MyCentralManagerHostApi.
|
|
static var codec: FlutterStandardMessageCodec { MyCentralManagerHostApiCodec.shared }
|
|
/// Sets up an instance of `MyCentralManagerHostApi` to handle messages through the `binaryMessenger`.
|
|
static func setUp(binaryMessenger: FlutterBinaryMessenger, api: MyCentralManagerHostApi?) {
|
|
let setUpChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.setUp", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
setUpChannel.setMessageHandler { _, reply in
|
|
do {
|
|
try api.setUp()
|
|
reply(wrapResult(nil))
|
|
} catch {
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
} else {
|
|
setUpChannel.setMessageHandler(nil)
|
|
}
|
|
let startDiscoveryChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.startDiscovery", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
startDiscoveryChannel.setMessageHandler { _, reply in
|
|
do {
|
|
try api.startDiscovery()
|
|
reply(wrapResult(nil))
|
|
} catch {
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
} else {
|
|
startDiscoveryChannel.setMessageHandler(nil)
|
|
}
|
|
let stopDiscoveryChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.stopDiscovery", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
stopDiscoveryChannel.setMessageHandler { _, reply in
|
|
do {
|
|
try api.stopDiscovery()
|
|
reply(wrapResult(nil))
|
|
} catch {
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
} else {
|
|
stopDiscoveryChannel.setMessageHandler(nil)
|
|
}
|
|
let connectChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.connect", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
connectChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
api.connect(uuidArgs: uuidArgsArg) { result in
|
|
switch result {
|
|
case .success:
|
|
reply(wrapResult(nil))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
connectChannel.setMessageHandler(nil)
|
|
}
|
|
let disconnectChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.disconnect", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
disconnectChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
api.disconnect(uuidArgs: uuidArgsArg) { result in
|
|
switch result {
|
|
case .success:
|
|
reply(wrapResult(nil))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
disconnectChannel.setMessageHandler(nil)
|
|
}
|
|
let getMaximumWriteValueLengthChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.getMaximumWriteValueLength", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
getMaximumWriteValueLengthChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
let typeNumberArgsArg = args[1] is Int64 ? args[1] as! Int64 : Int64(args[1] as! Int32)
|
|
do {
|
|
let result = try api.getMaximumWriteValueLength(uuidArgs: uuidArgsArg, typeNumberArgs: typeNumberArgsArg)
|
|
reply(wrapResult(result))
|
|
} catch {
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
} else {
|
|
getMaximumWriteValueLengthChannel.setMessageHandler(nil)
|
|
}
|
|
let readRSSIChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.readRSSI", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
readRSSIChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
api.readRSSI(uuidArgs: uuidArgsArg) { result in
|
|
switch result {
|
|
case .success(let res):
|
|
reply(wrapResult(res))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
readRSSIChannel.setMessageHandler(nil)
|
|
}
|
|
let discoverServicesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.discoverServices", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
discoverServicesChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
api.discoverServices(uuidArgs: uuidArgsArg) { result in
|
|
switch result {
|
|
case .success(let res):
|
|
reply(wrapResult(res))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
discoverServicesChannel.setMessageHandler(nil)
|
|
}
|
|
let discoverCharacteristicsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.discoverCharacteristics", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
discoverCharacteristicsChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
let hashCodeArgsArg = args[1] is Int64 ? args[1] as! Int64 : Int64(args[1] as! Int32)
|
|
api.discoverCharacteristics(uuidArgs: uuidArgsArg, hashCodeArgs: hashCodeArgsArg) { result in
|
|
switch result {
|
|
case .success(let res):
|
|
reply(wrapResult(res))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
discoverCharacteristicsChannel.setMessageHandler(nil)
|
|
}
|
|
let discoverDescriptorsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.discoverDescriptors", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
discoverDescriptorsChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
let hashCodeArgsArg = args[1] is Int64 ? args[1] as! Int64 : Int64(args[1] as! Int32)
|
|
api.discoverDescriptors(uuidArgs: uuidArgsArg, hashCodeArgs: hashCodeArgsArg) { result in
|
|
switch result {
|
|
case .success(let res):
|
|
reply(wrapResult(res))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
discoverDescriptorsChannel.setMessageHandler(nil)
|
|
}
|
|
let readCharacteristicChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.readCharacteristic", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
readCharacteristicChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
let hashCodeArgsArg = args[1] is Int64 ? args[1] as! Int64 : Int64(args[1] as! Int32)
|
|
api.readCharacteristic(uuidArgs: uuidArgsArg, hashCodeArgs: hashCodeArgsArg) { result in
|
|
switch result {
|
|
case .success(let res):
|
|
reply(wrapResult(res))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
readCharacteristicChannel.setMessageHandler(nil)
|
|
}
|
|
let writeCharacteristicChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.writeCharacteristic", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
writeCharacteristicChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
let hashCodeArgsArg = args[1] is Int64 ? args[1] as! Int64 : Int64(args[1] as! Int32)
|
|
let valueArgsArg = args[2] as! FlutterStandardTypedData
|
|
let typeNumberArgsArg = args[3] is Int64 ? args[3] as! Int64 : Int64(args[3] as! Int32)
|
|
api.writeCharacteristic(uuidArgs: uuidArgsArg, hashCodeArgs: hashCodeArgsArg, valueArgs: valueArgsArg, typeNumberArgs: typeNumberArgsArg) { result in
|
|
switch result {
|
|
case .success:
|
|
reply(wrapResult(nil))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
writeCharacteristicChannel.setMessageHandler(nil)
|
|
}
|
|
let setCharacteristicNotifyStateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.setCharacteristicNotifyState", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
setCharacteristicNotifyStateChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
let hashCodeArgsArg = args[1] is Int64 ? args[1] as! Int64 : Int64(args[1] as! Int32)
|
|
let stateArgsArg = args[2] as! Bool
|
|
api.setCharacteristicNotifyState(uuidArgs: uuidArgsArg, hashCodeArgs: hashCodeArgsArg, stateArgs: stateArgsArg) { result in
|
|
switch result {
|
|
case .success:
|
|
reply(wrapResult(nil))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
setCharacteristicNotifyStateChannel.setMessageHandler(nil)
|
|
}
|
|
let readDescriptorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.readDescriptor", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
readDescriptorChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
let hashCodeArgsArg = args[1] is Int64 ? args[1] as! Int64 : Int64(args[1] as! Int32)
|
|
api.readDescriptor(uuidArgs: uuidArgsArg, hashCodeArgs: hashCodeArgsArg) { result in
|
|
switch result {
|
|
case .success(let res):
|
|
reply(wrapResult(res))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
readDescriptorChannel.setMessageHandler(nil)
|
|
}
|
|
let writeDescriptorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerHostApi.writeDescriptor", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
writeDescriptorChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
let hashCodeArgsArg = args[1] is Int64 ? args[1] as! Int64 : Int64(args[1] as! Int32)
|
|
let valueArgsArg = args[2] as! FlutterStandardTypedData
|
|
api.writeDescriptor(uuidArgs: uuidArgsArg, hashCodeArgs: hashCodeArgsArg, valueArgs: valueArgsArg) { result in
|
|
switch result {
|
|
case .success:
|
|
reply(wrapResult(nil))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
writeDescriptorChannel.setMessageHandler(nil)
|
|
}
|
|
}
|
|
}
|
|
private class MyCentralManagerFlutterApiCodecReader: FlutterStandardReader {
|
|
override func readValue(ofType type: UInt8) -> Any? {
|
|
switch type {
|
|
case 128:
|
|
return MyAdvertisementArgs.fromList(self.readValue() as! [Any?])
|
|
case 129:
|
|
return MyManufacturerSpecificDataArgs.fromList(self.readValue() as! [Any?])
|
|
case 130:
|
|
return MyPeripheralArgs.fromList(self.readValue() as! [Any?])
|
|
default:
|
|
return super.readValue(ofType: type)
|
|
}
|
|
}
|
|
}
|
|
|
|
private class MyCentralManagerFlutterApiCodecWriter: FlutterStandardWriter {
|
|
override func writeValue(_ value: Any) {
|
|
if let value = value as? MyAdvertisementArgs {
|
|
super.writeByte(128)
|
|
super.writeValue(value.toList())
|
|
} else if let value = value as? MyManufacturerSpecificDataArgs {
|
|
super.writeByte(129)
|
|
super.writeValue(value.toList())
|
|
} else if let value = value as? MyPeripheralArgs {
|
|
super.writeByte(130)
|
|
super.writeValue(value.toList())
|
|
} else {
|
|
super.writeValue(value)
|
|
}
|
|
}
|
|
}
|
|
|
|
private class MyCentralManagerFlutterApiCodecReaderWriter: FlutterStandardReaderWriter {
|
|
override func reader(with data: Data) -> FlutterStandardReader {
|
|
return MyCentralManagerFlutterApiCodecReader(data: data)
|
|
}
|
|
|
|
override func writer(with data: NSMutableData) -> FlutterStandardWriter {
|
|
return MyCentralManagerFlutterApiCodecWriter(data: data)
|
|
}
|
|
}
|
|
|
|
class MyCentralManagerFlutterApiCodec: FlutterStandardMessageCodec {
|
|
static let shared = MyCentralManagerFlutterApiCodec(readerWriter: MyCentralManagerFlutterApiCodecReaderWriter())
|
|
}
|
|
|
|
/// Generated protocol from Pigeon that represents Flutter messages that can be called from Swift.
|
|
protocol MyCentralManagerFlutterApiProtocol {
|
|
func onStateChanged(stateNumberArgs stateNumberArgsArg: Int64, completion: @escaping (Result<Void, FlutterError>) -> Void)
|
|
func onDiscovered(peripheralArgs peripheralArgsArg: MyPeripheralArgs, rssiArgs rssiArgsArg: Int64, advertisementArgs advertisementArgsArg: MyAdvertisementArgs, completion: @escaping (Result<Void, FlutterError>) -> Void)
|
|
func onConnectionStateChanged(uuidArgs uuidArgsArg: String, stateArgs stateArgsArg: Bool, completion: @escaping (Result<Void, FlutterError>) -> Void)
|
|
func onCharacteristicNotified(uuidArgs uuidArgsArg: String, hashCodeArgs hashCodeArgsArg: Int64, valueArgs valueArgsArg: FlutterStandardTypedData, completion: @escaping (Result<Void, FlutterError>) -> Void)
|
|
}
|
|
class MyCentralManagerFlutterApi: MyCentralManagerFlutterApiProtocol {
|
|
private let binaryMessenger: FlutterBinaryMessenger
|
|
init(binaryMessenger: FlutterBinaryMessenger){
|
|
self.binaryMessenger = binaryMessenger
|
|
}
|
|
var codec: FlutterStandardMessageCodec {
|
|
return MyCentralManagerFlutterApiCodec.shared
|
|
}
|
|
func onStateChanged(stateNumberArgs stateNumberArgsArg: Int64, completion: @escaping (Result<Void, FlutterError>) -> Void) {
|
|
let channelName: String = "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerFlutterApi.onStateChanged"
|
|
let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec)
|
|
channel.sendMessage([stateNumberArgsArg] as [Any?]) { response in
|
|
guard let listResponse = response as? [Any?] else {
|
|
completion(.failure(createConnectionError(withChannelName:channelName)))
|
|
return
|
|
}
|
|
if (listResponse.count > 1) {
|
|
let code: String = listResponse[0] as! String
|
|
let message: String? = nilOrValue(listResponse[1])
|
|
let details: String? = nilOrValue(listResponse[2])
|
|
completion(.failure(FlutterError(code: code, message: message, details: details)));
|
|
} else {
|
|
completion(.success(Void()))
|
|
}
|
|
}
|
|
}
|
|
func onDiscovered(peripheralArgs peripheralArgsArg: MyPeripheralArgs, rssiArgs rssiArgsArg: Int64, advertisementArgs advertisementArgsArg: MyAdvertisementArgs, completion: @escaping (Result<Void, FlutterError>) -> Void) {
|
|
let channelName: String = "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerFlutterApi.onDiscovered"
|
|
let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec)
|
|
channel.sendMessage([peripheralArgsArg, rssiArgsArg, advertisementArgsArg] as [Any?]) { response in
|
|
guard let listResponse = response as? [Any?] else {
|
|
completion(.failure(createConnectionError(withChannelName:channelName)))
|
|
return
|
|
}
|
|
if (listResponse.count > 1) {
|
|
let code: String = listResponse[0] as! String
|
|
let message: String? = nilOrValue(listResponse[1])
|
|
let details: String? = nilOrValue(listResponse[2])
|
|
completion(.failure(FlutterError(code: code, message: message, details: details)));
|
|
} else {
|
|
completion(.success(Void()))
|
|
}
|
|
}
|
|
}
|
|
func onConnectionStateChanged(uuidArgs uuidArgsArg: String, stateArgs stateArgsArg: Bool, completion: @escaping (Result<Void, FlutterError>) -> Void) {
|
|
let channelName: String = "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerFlutterApi.onConnectionStateChanged"
|
|
let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec)
|
|
channel.sendMessage([uuidArgsArg, stateArgsArg] as [Any?]) { response in
|
|
guard let listResponse = response as? [Any?] else {
|
|
completion(.failure(createConnectionError(withChannelName:channelName)))
|
|
return
|
|
}
|
|
if (listResponse.count > 1) {
|
|
let code: String = listResponse[0] as! String
|
|
let message: String? = nilOrValue(listResponse[1])
|
|
let details: String? = nilOrValue(listResponse[2])
|
|
completion(.failure(FlutterError(code: code, message: message, details: details)));
|
|
} else {
|
|
completion(.success(Void()))
|
|
}
|
|
}
|
|
}
|
|
func onCharacteristicNotified(uuidArgs uuidArgsArg: String, hashCodeArgs hashCodeArgsArg: Int64, valueArgs valueArgsArg: FlutterStandardTypedData, completion: @escaping (Result<Void, FlutterError>) -> Void) {
|
|
let channelName: String = "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyCentralManagerFlutterApi.onCharacteristicNotified"
|
|
let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec)
|
|
channel.sendMessage([uuidArgsArg, hashCodeArgsArg, valueArgsArg] as [Any?]) { response in
|
|
guard let listResponse = response as? [Any?] else {
|
|
completion(.failure(createConnectionError(withChannelName:channelName)))
|
|
return
|
|
}
|
|
if (listResponse.count > 1) {
|
|
let code: String = listResponse[0] as! String
|
|
let message: String? = nilOrValue(listResponse[1])
|
|
let details: String? = nilOrValue(listResponse[2])
|
|
completion(.failure(FlutterError(code: code, message: message, details: details)));
|
|
} else {
|
|
completion(.success(Void()))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
private class MyPeripheralManagerHostApiCodecReader: FlutterStandardReader {
|
|
override func readValue(ofType type: UInt8) -> Any? {
|
|
switch type {
|
|
case 128:
|
|
return MyAdvertisementArgs.fromList(self.readValue() as! [Any?])
|
|
case 129:
|
|
return MyGattCharacteristicArgs.fromList(self.readValue() as! [Any?])
|
|
case 130:
|
|
return MyGattDescriptorArgs.fromList(self.readValue() as! [Any?])
|
|
case 131:
|
|
return MyGattServiceArgs.fromList(self.readValue() as! [Any?])
|
|
case 132:
|
|
return MyManufacturerSpecificDataArgs.fromList(self.readValue() as! [Any?])
|
|
default:
|
|
return super.readValue(ofType: type)
|
|
}
|
|
}
|
|
}
|
|
|
|
private class MyPeripheralManagerHostApiCodecWriter: FlutterStandardWriter {
|
|
override func writeValue(_ value: Any) {
|
|
if let value = value as? MyAdvertisementArgs {
|
|
super.writeByte(128)
|
|
super.writeValue(value.toList())
|
|
} else if let value = value as? MyGattCharacteristicArgs {
|
|
super.writeByte(129)
|
|
super.writeValue(value.toList())
|
|
} else if let value = value as? MyGattDescriptorArgs {
|
|
super.writeByte(130)
|
|
super.writeValue(value.toList())
|
|
} else if let value = value as? MyGattServiceArgs {
|
|
super.writeByte(131)
|
|
super.writeValue(value.toList())
|
|
} else if let value = value as? MyManufacturerSpecificDataArgs {
|
|
super.writeByte(132)
|
|
super.writeValue(value.toList())
|
|
} else {
|
|
super.writeValue(value)
|
|
}
|
|
}
|
|
}
|
|
|
|
private class MyPeripheralManagerHostApiCodecReaderWriter: FlutterStandardReaderWriter {
|
|
override func reader(with data: Data) -> FlutterStandardReader {
|
|
return MyPeripheralManagerHostApiCodecReader(data: data)
|
|
}
|
|
|
|
override func writer(with data: NSMutableData) -> FlutterStandardWriter {
|
|
return MyPeripheralManagerHostApiCodecWriter(data: data)
|
|
}
|
|
}
|
|
|
|
class MyPeripheralManagerHostApiCodec: FlutterStandardMessageCodec {
|
|
static let shared = MyPeripheralManagerHostApiCodec(readerWriter: MyPeripheralManagerHostApiCodecReaderWriter())
|
|
}
|
|
|
|
/// Generated protocol from Pigeon that represents a handler of messages from Flutter.
|
|
protocol MyPeripheralManagerHostApi {
|
|
func setUp() throws
|
|
func addService(serviceArgs: MyGattServiceArgs, completion: @escaping (Result<Void, Error>) -> Void)
|
|
func removeService(hashCodeArgs: Int64) throws
|
|
func clearServices() throws
|
|
func startAdvertising(advertisementArgs: MyAdvertisementArgs, completion: @escaping (Result<Void, Error>) -> Void)
|
|
func stopAdvertising() throws
|
|
func getMaximumUpdateValueLength(uuidArgs: String) throws -> Int64
|
|
func respond(idArgs: Int64, errorNumberArgs: Int64, valueArgs: FlutterStandardTypedData?) throws
|
|
func updateCharacteristic(hashCodeArgs: Int64, valueArgs: FlutterStandardTypedData, uuidsArgs: [String]?, completion: @escaping (Result<Void, Error>) -> Void)
|
|
}
|
|
|
|
/// Generated setup class from Pigeon to handle messages through the `binaryMessenger`.
|
|
class MyPeripheralManagerHostApiSetup {
|
|
/// The codec used by MyPeripheralManagerHostApi.
|
|
static var codec: FlutterStandardMessageCodec { MyPeripheralManagerHostApiCodec.shared }
|
|
/// Sets up an instance of `MyPeripheralManagerHostApi` to handle messages through the `binaryMessenger`.
|
|
static func setUp(binaryMessenger: FlutterBinaryMessenger, api: MyPeripheralManagerHostApi?) {
|
|
let setUpChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerHostApi.setUp", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
setUpChannel.setMessageHandler { _, reply in
|
|
do {
|
|
try api.setUp()
|
|
reply(wrapResult(nil))
|
|
} catch {
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
} else {
|
|
setUpChannel.setMessageHandler(nil)
|
|
}
|
|
let addServiceChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerHostApi.addService", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
addServiceChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let serviceArgsArg = args[0] as! MyGattServiceArgs
|
|
api.addService(serviceArgs: serviceArgsArg) { result in
|
|
switch result {
|
|
case .success:
|
|
reply(wrapResult(nil))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
addServiceChannel.setMessageHandler(nil)
|
|
}
|
|
let removeServiceChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerHostApi.removeService", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
removeServiceChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let hashCodeArgsArg = args[0] is Int64 ? args[0] as! Int64 : Int64(args[0] as! Int32)
|
|
do {
|
|
try api.removeService(hashCodeArgs: hashCodeArgsArg)
|
|
reply(wrapResult(nil))
|
|
} catch {
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
} else {
|
|
removeServiceChannel.setMessageHandler(nil)
|
|
}
|
|
let clearServicesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerHostApi.clearServices", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
clearServicesChannel.setMessageHandler { _, reply in
|
|
do {
|
|
try api.clearServices()
|
|
reply(wrapResult(nil))
|
|
} catch {
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
} else {
|
|
clearServicesChannel.setMessageHandler(nil)
|
|
}
|
|
let startAdvertisingChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerHostApi.startAdvertising", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
startAdvertisingChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let advertisementArgsArg = args[0] as! MyAdvertisementArgs
|
|
api.startAdvertising(advertisementArgs: advertisementArgsArg) { result in
|
|
switch result {
|
|
case .success:
|
|
reply(wrapResult(nil))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
startAdvertisingChannel.setMessageHandler(nil)
|
|
}
|
|
let stopAdvertisingChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerHostApi.stopAdvertising", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
stopAdvertisingChannel.setMessageHandler { _, reply in
|
|
do {
|
|
try api.stopAdvertising()
|
|
reply(wrapResult(nil))
|
|
} catch {
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
} else {
|
|
stopAdvertisingChannel.setMessageHandler(nil)
|
|
}
|
|
let getMaximumUpdateValueLengthChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerHostApi.getMaximumUpdateValueLength", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
getMaximumUpdateValueLengthChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let uuidArgsArg = args[0] as! String
|
|
do {
|
|
let result = try api.getMaximumUpdateValueLength(uuidArgs: uuidArgsArg)
|
|
reply(wrapResult(result))
|
|
} catch {
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
} else {
|
|
getMaximumUpdateValueLengthChannel.setMessageHandler(nil)
|
|
}
|
|
let respondChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerHostApi.respond", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
respondChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let idArgsArg = args[0] is Int64 ? args[0] as! Int64 : Int64(args[0] as! Int32)
|
|
let errorNumberArgsArg = args[1] is Int64 ? args[1] as! Int64 : Int64(args[1] as! Int32)
|
|
let valueArgsArg: FlutterStandardTypedData? = nilOrValue(args[2])
|
|
do {
|
|
try api.respond(idArgs: idArgsArg, errorNumberArgs: errorNumberArgsArg, valueArgs: valueArgsArg)
|
|
reply(wrapResult(nil))
|
|
} catch {
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
} else {
|
|
respondChannel.setMessageHandler(nil)
|
|
}
|
|
let updateCharacteristicChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerHostApi.updateCharacteristic", binaryMessenger: binaryMessenger, codec: codec)
|
|
if let api = api {
|
|
updateCharacteristicChannel.setMessageHandler { message, reply in
|
|
let args = message as! [Any?]
|
|
let hashCodeArgsArg = args[0] is Int64 ? args[0] as! Int64 : Int64(args[0] as! Int32)
|
|
let valueArgsArg = args[1] as! FlutterStandardTypedData
|
|
let uuidsArgsArg: [String]? = nilOrValue(args[2])
|
|
api.updateCharacteristic(hashCodeArgs: hashCodeArgsArg, valueArgs: valueArgsArg, uuidsArgs: uuidsArgsArg) { result in
|
|
switch result {
|
|
case .success:
|
|
reply(wrapResult(nil))
|
|
case .failure(let error):
|
|
reply(wrapError(error))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
updateCharacteristicChannel.setMessageHandler(nil)
|
|
}
|
|
}
|
|
}
|
|
private class MyPeripheralManagerFlutterApiCodecReader: FlutterStandardReader {
|
|
override func readValue(ofType type: UInt8) -> Any? {
|
|
switch type {
|
|
case 128:
|
|
return MyCentralArgs.fromList(self.readValue() as! [Any?])
|
|
default:
|
|
return super.readValue(ofType: type)
|
|
}
|
|
}
|
|
}
|
|
|
|
private class MyPeripheralManagerFlutterApiCodecWriter: FlutterStandardWriter {
|
|
override func writeValue(_ value: Any) {
|
|
if let value = value as? MyCentralArgs {
|
|
super.writeByte(128)
|
|
super.writeValue(value.toList())
|
|
} else {
|
|
super.writeValue(value)
|
|
}
|
|
}
|
|
}
|
|
|
|
private class MyPeripheralManagerFlutterApiCodecReaderWriter: FlutterStandardReaderWriter {
|
|
override func reader(with data: Data) -> FlutterStandardReader {
|
|
return MyPeripheralManagerFlutterApiCodecReader(data: data)
|
|
}
|
|
|
|
override func writer(with data: NSMutableData) -> FlutterStandardWriter {
|
|
return MyPeripheralManagerFlutterApiCodecWriter(data: data)
|
|
}
|
|
}
|
|
|
|
class MyPeripheralManagerFlutterApiCodec: FlutterStandardMessageCodec {
|
|
static let shared = MyPeripheralManagerFlutterApiCodec(readerWriter: MyPeripheralManagerFlutterApiCodecReaderWriter())
|
|
}
|
|
|
|
/// Generated protocol from Pigeon that represents Flutter messages that can be called from Swift.
|
|
protocol MyPeripheralManagerFlutterApiProtocol {
|
|
func onStateChanged(stateNumberArgs stateNumberArgsArg: Int64, completion: @escaping (Result<Void, FlutterError>) -> Void)
|
|
func onCharacteristicReadRequest(centralArgs centralArgsArg: MyCentralArgs, hashCodeArgs hashCodeArgsArg: Int64, idArgs idArgsArg: Int64, offsetArgs offsetArgsArg: Int64, completion: @escaping (Result<Void, FlutterError>) -> Void)
|
|
func onCharacteristicWriteRequest(centralArgs centralArgsArg: MyCentralArgs, hashCodeArgs hashCodeArgsArg: Int64, idArgs idArgsArg: Int64, offsetArgs offsetArgsArg: Int64, valueArgs valueArgsArg: FlutterStandardTypedData, completion: @escaping (Result<Void, FlutterError>) -> Void)
|
|
func onCharacteristicNotifyStateChanged(centralArgs centralArgsArg: MyCentralArgs, hashCodeArgs hashCodeArgsArg: Int64, stateArgs stateArgsArg: Bool, completion: @escaping (Result<Void, FlutterError>) -> Void)
|
|
}
|
|
class MyPeripheralManagerFlutterApi: MyPeripheralManagerFlutterApiProtocol {
|
|
private let binaryMessenger: FlutterBinaryMessenger
|
|
init(binaryMessenger: FlutterBinaryMessenger){
|
|
self.binaryMessenger = binaryMessenger
|
|
}
|
|
var codec: FlutterStandardMessageCodec {
|
|
return MyPeripheralManagerFlutterApiCodec.shared
|
|
}
|
|
func onStateChanged(stateNumberArgs stateNumberArgsArg: Int64, completion: @escaping (Result<Void, FlutterError>) -> Void) {
|
|
let channelName: String = "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerFlutterApi.onStateChanged"
|
|
let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec)
|
|
channel.sendMessage([stateNumberArgsArg] as [Any?]) { response in
|
|
guard let listResponse = response as? [Any?] else {
|
|
completion(.failure(createConnectionError(withChannelName:channelName)))
|
|
return
|
|
}
|
|
if (listResponse.count > 1) {
|
|
let code: String = listResponse[0] as! String
|
|
let message: String? = nilOrValue(listResponse[1])
|
|
let details: String? = nilOrValue(listResponse[2])
|
|
completion(.failure(FlutterError(code: code, message: message, details: details)));
|
|
} else {
|
|
completion(.success(Void()))
|
|
}
|
|
}
|
|
}
|
|
func onCharacteristicReadRequest(centralArgs centralArgsArg: MyCentralArgs, hashCodeArgs hashCodeArgsArg: Int64, idArgs idArgsArg: Int64, offsetArgs offsetArgsArg: Int64, completion: @escaping (Result<Void, FlutterError>) -> Void) {
|
|
let channelName: String = "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerFlutterApi.onCharacteristicReadRequest"
|
|
let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec)
|
|
channel.sendMessage([centralArgsArg, hashCodeArgsArg, idArgsArg, offsetArgsArg] as [Any?]) { response in
|
|
guard let listResponse = response as? [Any?] else {
|
|
completion(.failure(createConnectionError(withChannelName:channelName)))
|
|
return
|
|
}
|
|
if (listResponse.count > 1) {
|
|
let code: String = listResponse[0] as! String
|
|
let message: String? = nilOrValue(listResponse[1])
|
|
let details: String? = nilOrValue(listResponse[2])
|
|
completion(.failure(FlutterError(code: code, message: message, details: details)));
|
|
} else {
|
|
completion(.success(Void()))
|
|
}
|
|
}
|
|
}
|
|
func onCharacteristicWriteRequest(centralArgs centralArgsArg: MyCentralArgs, hashCodeArgs hashCodeArgsArg: Int64, idArgs idArgsArg: Int64, offsetArgs offsetArgsArg: Int64, valueArgs valueArgsArg: FlutterStandardTypedData, completion: @escaping (Result<Void, FlutterError>) -> Void) {
|
|
let channelName: String = "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerFlutterApi.onCharacteristicWriteRequest"
|
|
let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec)
|
|
channel.sendMessage([centralArgsArg, hashCodeArgsArg, idArgsArg, offsetArgsArg, valueArgsArg] as [Any?]) { response in
|
|
guard let listResponse = response as? [Any?] else {
|
|
completion(.failure(createConnectionError(withChannelName:channelName)))
|
|
return
|
|
}
|
|
if (listResponse.count > 1) {
|
|
let code: String = listResponse[0] as! String
|
|
let message: String? = nilOrValue(listResponse[1])
|
|
let details: String? = nilOrValue(listResponse[2])
|
|
completion(.failure(FlutterError(code: code, message: message, details: details)));
|
|
} else {
|
|
completion(.success(Void()))
|
|
}
|
|
}
|
|
}
|
|
func onCharacteristicNotifyStateChanged(centralArgs centralArgsArg: MyCentralArgs, hashCodeArgs hashCodeArgsArg: Int64, stateArgs stateArgsArg: Bool, completion: @escaping (Result<Void, FlutterError>) -> Void) {
|
|
let channelName: String = "dev.flutter.pigeon.bluetooth_low_energy_darwin.MyPeripheralManagerFlutterApi.onCharacteristicNotifyStateChanged"
|
|
let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec)
|
|
channel.sendMessage([centralArgsArg, hashCodeArgsArg, stateArgsArg] as [Any?]) { response in
|
|
guard let listResponse = response as? [Any?] else {
|
|
completion(.failure(createConnectionError(withChannelName:channelName)))
|
|
return
|
|
}
|
|
if (listResponse.count > 1) {
|
|
let code: String = listResponse[0] as! String
|
|
let message: String? = nilOrValue(listResponse[1])
|
|
let details: String? = nilOrValue(listResponse[2])
|
|
completion(.failure(FlutterError(code: code, message: message, details: details)));
|
|
} else {
|
|
completion(.success(Void()))
|
|
}
|
|
}
|
|
}
|
|
}
|