@@ -1083,6 +1083,36 @@ extension AccessoryManager {
10831083 return Int64 ( meshPacket. id)
10841084 }
10851085
1086+ public func saveNeighborInfoModuleConfig( config: ModuleConfig . NeighborInfoConfig , fromUser: UserEntity , toUser: UserEntity ) async throws -> Int64 {
1087+
1088+ var adminPacket = AdminMessage ( )
1089+ adminPacket. setModuleConfig. neighborInfo = config
1090+ if fromUser != toUser {
1091+ adminPacket. sessionPasskey = toUser. userNode? . sessionPasskey ?? Data ( )
1092+ }
1093+ var meshPacket : MeshPacket = MeshPacket ( )
1094+ meshPacket. to = UInt32 ( toUser. num)
1095+ meshPacket. from = UInt32 ( fromUser. num)
1096+ meshPacket. id = UInt32 . random ( in: UInt32 ( UInt8 . max) ..< UInt32 . max)
1097+ meshPacket. priority = MeshPacket . Priority. reliable
1098+ meshPacket. wantAck = true
1099+
1100+ var dataMessage = DataMessage ( )
1101+ guard let adminData: Data = try ? adminPacket. serializedData ( ) else {
1102+ throw AccessoryError . ioFailed ( " saveNeighborInfoModuleConfig: Unable to serialize admin packet " )
1103+ }
1104+ dataMessage. payload = adminData
1105+ dataMessage. portnum = PortNum . adminApp
1106+ meshPacket. decoded = dataMessage
1107+
1108+ let messageDescription = " 🛟 Saved Neighbor Info Module Config for \( toUser. longName ?? " Unknown " . localized) "
1109+ try await sendAdminMessageToRadio ( meshPacket: meshPacket, adminDescription: messageDescription)
1110+
1111+ await MeshPackets . shared. upsertNeighborInfoModuleConfigPacket ( config: config, nodeNum: toUser. num)
1112+
1113+ return Int64 ( meshPacket. id)
1114+ }
1115+
10861116 public func savePaxcounterModuleConfig( config: ModuleConfig . PaxcounterConfig , fromUser: UserEntity , toUser: UserEntity ) async throws -> Int64 {
10871117
10881118 var adminPacket = AdminMessage ( )
@@ -1314,6 +1344,30 @@ extension AccessoryManager {
13141344 try await sendAdminMessageToRadio ( meshPacket: meshPacket, adminDescription: messageDescription)
13151345 }
13161346
1347+ public func requestNeighborInfoModuleConfig( fromUser: UserEntity , toUser: UserEntity ) async throws {
1348+ var adminPacket = AdminMessage ( )
1349+ adminPacket. getModuleConfigRequest = AdminMessage . ModuleConfigType. neighborinfoConfig
1350+ var meshPacket : MeshPacket = MeshPacket ( )
1351+ meshPacket. to = UInt32 ( toUser. num)
1352+ meshPacket. from = UInt32 ( fromUser. num)
1353+ meshPacket. id = UInt32 . random ( in: UInt32 ( UInt8 . max) ..< UInt32 . max)
1354+ meshPacket. priority = MeshPacket . Priority. reliable
1355+ meshPacket. wantAck = true
1356+
1357+ var dataMessage = DataMessage ( )
1358+ guard let adminData: Data = try ? adminPacket. serializedData ( ) else {
1359+ throw AccessoryError . ioFailed ( " requestNeighborInfoModuleConfig: Unable to serialize admin packet " )
1360+ }
1361+ dataMessage. payload = adminData
1362+ dataMessage. portnum = PortNum . adminApp
1363+ dataMessage. wantResponse = true
1364+
1365+ meshPacket. decoded = dataMessage
1366+
1367+ let messageDescription = " 🛎️ Requested Neighbor Info Module Config using an admin key for node: \( toUser. longName ?? " Unknown " . localized) "
1368+ try await sendAdminMessageToRadio ( meshPacket: meshPacket, adminDescription: messageDescription)
1369+ }
1370+
13171371 public func requestPaxCounterModuleConfig( fromUser: UserEntity , toUser: UserEntity ) async throws {
13181372 var adminPacket = AdminMessage ( )
13191373 adminPacket. getModuleConfigRequest = AdminMessage . ModuleConfigType. paxcounterConfig
0 commit comments