diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index c6842e33..fe2327e4 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1091,7 +1091,11 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph i += 1 chan.settings = cs chan.index = i - + if i == 1 { + chan.role = Channel.Role.primary + } else { + chan.role = Channel.Role.secondary + } var adminPacket = AdminMessage() adminPacket.setChannel = chan var meshPacket: MeshPacket = MeshPacket() @@ -1111,7 +1115,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph let binaryData: Data = try! toRadio.serializedData() if connectedPeripheral!.peripheral.state == CBPeripheralState.connected { self.connectedPeripheral.peripheral.writeValue(binaryData, for: self.TORADIO_characteristic, type: .withResponse) - MeshLogger.log("💾 Saved a Channel for: \(String(self.connectedPeripheral.num))") + MeshLogger.log("✈️ Sent a Channel for: \(String(self.connectedPeripheral.num)) Channel Index \(chan.index)") } } // Save the LoRa Config and the device will reboot @@ -1124,7 +1128,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph meshPacket.id = UInt32.random(in: UInt32(UInt8.max).. 0 { + if fetchedMyInfo.count == 1 { let newChannel = ChannelEntity(context: context) newChannel.index = Int32(channel.index) @@ -772,13 +772,18 @@ func channelPacket (channel: Channel, fromNum: Int64, context: NSManagedObjectCo newChannel.psk = channel.settings.psk let mutableChannels = fetchedMyInfo[0].channels!.mutableCopy() as! NSMutableOrderedSet - if channel.index == 1 { - //mutableChannels.removeAllObjects() - } - + mutableChannels.add(newChannel) fetchedMyInfo[0].channels = mutableChannels.copy() as? NSOrderedSet - try context.save() + fetchedMyInfo[0].objectWillChange.send() + do { + try context.save() + } catch { + + print("Failed to save channel") + + } + MeshLogger.log("💾 Updated MyInfo channel \(channel.index) from Channel App Packet For: \(fetchedMyInfo[0].myNodeNum)") } else if channel.role.rawValue > 0 {