diff --git a/Meshtastic/Accessory/Accessory Manager/AccessoryManager+Connect.swift b/Meshtastic/Accessory/Accessory Manager/AccessoryManager+Connect.swift index 3e78e489..8883bb8b 100644 --- a/Meshtastic/Accessory/Accessory Manager/AccessoryManager+Connect.swift +++ b/Meshtastic/Accessory/Accessory Manager/AccessoryManager+Connect.swift @@ -129,8 +129,10 @@ extension AccessoryManager { // Step 7: Update UI and status to connected Step { @MainActor _ in - Logger.transport.info("🔗👟 [Connect] Step 7: Update UI and status") - + Logger.transport.info("🔗👟 [Connect] Step 7: Update Time, UI and status") + // Send time to device + try? await self.sendTime() + // We have an active connection self.updateDevice(deviceId: device.id, key: \.connectionState, value: .connected) self.updateState(.subscribed) diff --git a/Meshtastic/Accessory/Accessory Manager/AccessoryManager+ToRadio.swift b/Meshtastic/Accessory/Accessory Manager/AccessoryManager+ToRadio.swift index 11c2f442..fab276cf 100644 --- a/Meshtastic/Accessory/Accessory Manager/AccessoryManager+ToRadio.swift +++ b/Meshtastic/Accessory/Accessory Manager/AccessoryManager+ToRadio.swift @@ -162,7 +162,33 @@ extension AccessoryManager { } await self.heartbeatResponseTimer?.reset(delay: .seconds(5.0)) } - + + public func sendTime() async throws { + guard let deviceNum = self.activeDeviceNum.map({ UInt32($0) }) else { + Logger.mesh.error("🚫 Unable to send time, connected node is disconnected or invalid") + return + } + var adminPacket = AdminMessage() + adminPacket.setTimeOnly = UInt32(Date().timeIntervalSince1970) + var meshPacket: MeshPacket = MeshPacket() + meshPacket.to = deviceNum + meshPacket.from = deviceNum + meshPacket.id = UInt32.random(in: UInt32(UInt8.max)..