mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Merge pull request #130 from meshtastic/debugging/channel-settings
Debugging/channel settings
This commit is contained in:
commit
92853beb49
5 changed files with 78 additions and 10 deletions
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue