// 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(_ 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) func disconnect(uuidArgs: String, completion: @escaping (Result) -> Void) func getMaximumWriteValueLength(uuidArgs: String, typeNumberArgs: Int64) throws -> Int64 func readRSSI(uuidArgs: String, completion: @escaping (Result) -> 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) -> Void) func writeCharacteristic(uuidArgs: String, hashCodeArgs: Int64, valueArgs: FlutterStandardTypedData, typeNumberArgs: Int64, completion: @escaping (Result) -> Void) func setCharacteristicNotifyState(uuidArgs: String, hashCodeArgs: Int64, stateArgs: Bool, completion: @escaping (Result) -> Void) func readDescriptor(uuidArgs: String, hashCodeArgs: Int64, completion: @escaping (Result) -> Void) func writeDescriptor(uuidArgs: String, hashCodeArgs: Int64, valueArgs: FlutterStandardTypedData, completion: @escaping (Result) -> 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) func onDiscovered(peripheralArgs peripheralArgsArg: MyPeripheralArgs, rssiArgs rssiArgsArg: Int64, advertisementArgs advertisementArgsArg: MyAdvertisementArgs, completion: @escaping (Result) -> Void) func onConnectionStateChanged(uuidArgs uuidArgsArg: String, stateArgs stateArgsArg: Bool, completion: @escaping (Result) -> Void) func onCharacteristicNotified(uuidArgs uuidArgsArg: String, hashCodeArgs hashCodeArgsArg: Int64, valueArgs valueArgsArg: FlutterStandardTypedData, completion: @escaping (Result) -> 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) { 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) { 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) { 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) { 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) func removeService(hashCodeArgs: Int64) throws func clearServices() throws func startAdvertising(advertisementArgs: MyAdvertisementArgs, completion: @escaping (Result) -> 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) } /// 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) func onCharacteristicReadRequest(centralArgs centralArgsArg: MyCentralArgs, hashCodeArgs hashCodeArgsArg: Int64, idArgs idArgsArg: Int64, offsetArgs offsetArgsArg: Int64, completion: @escaping (Result) -> Void) func onCharacteristicWriteRequest(centralArgs centralArgsArg: MyCentralArgs, hashCodeArgs hashCodeArgsArg: Int64, idArgs idArgsArg: Int64, offsetArgs offsetArgsArg: Int64, valueArgs valueArgsArg: FlutterStandardTypedData, completion: @escaping (Result) -> Void) func onCharacteristicNotifyStateChanged(centralArgs centralArgsArg: MyCentralArgs, hashCodeArgs hashCodeArgsArg: Int64, stateArgs stateArgsArg: Bool, completion: @escaping (Result) -> 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) { 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) { 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) { 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) { 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())) } } } }