Merge pull request #130 from meshtastic/debugging/channel-settings

Debugging/channel settings
This commit is contained in:
Garth Vander Houwen 2022-08-25 14:52:27 -07:00 committed by GitHub
commit 92853beb49
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 78 additions and 10 deletions

View file

@ -462,9 +462,9 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
decodedInfo = try FromRadio(serializedData: characteristic.value!)
} catch {
print(characteristic.value!)
}
switch decodedInfo.packet.decoded.portnum {
// Handle Any local only packets we get over BLE
@ -1280,6 +1280,55 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
return 0
}
public func getChannel(channelIndex: UInt32, wantResponse: Bool) -> Bool {
var adminPacket = AdminMessage()
adminPacket.getChannelRequest = channelIndex
var meshPacket: MeshPacket = MeshPacket()
meshPacket.to = UInt32(connectedPeripheral.num)
meshPacket.from = 0 //UInt32(connectedPeripheral.num)
meshPacket.id = UInt32.random(in: UInt32(UInt8.max)..<UInt32.max)
meshPacket.priority = MeshPacket.Priority.reliable
meshPacket.wantAck = wantResponse
var dataMessage = DataMessage()
dataMessage.payload = try! adminPacket.serializedData()
dataMessage.portnum = PortNum.adminApp
dataMessage.wantResponse = true
meshPacket.decoded = dataMessage
var toRadio: ToRadio!
toRadio = ToRadio()
toRadio.packet = meshPacket
let binaryData: Data = try! toRadio.serializedData()
if connectedPeripheral!.peripheral.state == CBPeripheralState.connected {
do {
try context!.save()
if meshLoggingEnabled { MeshLogger.log("💾 Saved a Get Channel Request Admin Message for node: \(String(connectedPeripheral.num))") }
connectedPeripheral.peripheral.writeValue(binaryData, for: TORADIO_characteristic, type: .withResponse)
return true
} catch {
context!.rollback()
let nsError = error as NSError
print("💥 Error Inserting New Core Data MessageEntity: \(nsError)")
}
}
return false
}
public func getCannedMessageModuleMessages(destNum: Int64, wantResponse: Bool) -> Bool {
var adminPacket = AdminMessage()

View file

@ -1355,6 +1355,9 @@ func adminAppPacket (packet: MeshPacket, meshLogging: Bool, context: NSManagedOb
print(try! powerConfig.jsonUTF8Data())
print(powerConfig.meshSdsTimeoutSecs)
} else if let channel = try? Channel(serializedData: packet.decoded.payload) {
print(try! channel.jsonUTF8Data())
print("channel settings:", channel.settings)
}
@ -1429,6 +1432,7 @@ func positionPacket (packet: MeshPacket, meshLogging: Bool, context: NSManagedOb
}
func routingPacket (packet: MeshPacket, meshLogging: Bool, context: NSManagedObjectContext) {
print("Routing packet", packet)
if let routingMessage = try? Routing(serializedData: packet.decoded.payload) {

View file

@ -12,7 +12,7 @@ struct MeshtasticAppleApp: App {
@ObservedObject private var userSettings: UserSettings = UserSettings()
@State var saveQR = false
@State private var channelUrl: URL?
@State var channelUrl: URL?
@Environment(\.scenePhase) var scenePhase
@ -26,20 +26,28 @@ struct MeshtasticAppleApp: App {
.onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { userActivity in
print("QR Code URL received from the Camera \(userActivity)")
guard let channelUrl = userActivity.webpageURL else {
return
channelUrl = userActivity.webpageURL
if channelUrl!.absoluteString.lowercased().contains("https://meshtastic.org/e/#") {
saveQR = true
}
print("User wants to open URL: \(channelUrl)")
saveQR = true
print("User wants to open URL: \(channelUrl?.relativeString)")
}
.sheet(isPresented: $saveQR) {
SaveChannelQRCode(channelHash: channelUrl)
SaveChannelQRCode(channelHash: channelUrl?.absoluteString ?? "Empty Channel URL")
}
.onOpenURL(perform: { (url) in
print("QR Code URL received from the Camera \(url)")
channelUrl = url
print("User wants to open URL: \(channelUrl?.absoluteString ?? "No QR Code Link")")
if url.absoluteString.lowercased().contains("https://meshtastic.org/e/#") {
saveQR = true
}
//we are expecting a .mbtiles map file that contains raster data
//save it to the documents directory, and name it offline_map.mbtiles
let fileManager = FileManager.default

View file

@ -8,7 +8,7 @@ import SwiftUI
struct SaveChannelQRCode: View {
var channelHash: URL?
var channelHash: String
var body: some View {
@ -22,7 +22,7 @@ struct SaveChannelQRCode: View {
.font(.callout)
.padding()
Text(String(channelHash?.path ?? "URL did not pass through properly"))
Text(channelHash)
.font(.title2)
.padding()

View file

@ -87,6 +87,13 @@ struct ShareChannel: View {
.onAppear {
self.bleManager.context = context
let i: UInt32 = 1;
// while i < 9 { // this should actually loop over MyNodeInfo.maxChannels to get all channels
print("requesting channel",i)
let resp = self.bleManager.getChannel(channelIndex: i, wantResponse: true)
print("resp from getChannel", resp)
// i+=1;
// }
}
}