mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Receive messages code
This commit is contained in:
parent
50c3b17768
commit
28bdd7a39a
6 changed files with 56 additions and 7 deletions
|
|
@ -10,6 +10,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
|
||||
// Data
|
||||
@ObservedObject private var meshData : MeshData
|
||||
@ObservedObject private var messageData : MessageData
|
||||
private var centralManager: CBCentralManager!
|
||||
@Published var connectedPeripheral: CBPeripheral!
|
||||
@Published var peripheralArray = [CBPeripheral]()
|
||||
|
|
@ -31,6 +32,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
|
||||
override init() {
|
||||
self.meshData = MeshData()
|
||||
self.messageData = MessageData()
|
||||
super.init()
|
||||
centralManager = CBCentralManager(delegate: self, queue: nil)
|
||||
centralManager.delegate = self
|
||||
|
|
@ -91,7 +93,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
// Disconnect Device function
|
||||
// Set Owner function
|
||||
//---------------------------------------------------------------------------------------
|
||||
public func setOwner(myUser: User)
|
||||
{
|
||||
|
|
@ -156,6 +158,14 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
//---------------------------------------------------------------------------------------
|
||||
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?)
|
||||
{
|
||||
if let e = error {
|
||||
|
||||
print("Central disconnected because \(e)")
|
||||
// connectToDevice(id: peripheral.identifier.uuidString)
|
||||
} else {
|
||||
print("Central disconnected! (no error)")
|
||||
}
|
||||
|
||||
if(peripheral.identifier == connectedPeripheral.identifier){
|
||||
connectedPeripheral = nil
|
||||
connectedNodeInfo = nil
|
||||
|
|
@ -165,6 +175,8 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
self.startScanning()
|
||||
}
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
// Discover Services Event
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
|
@ -320,10 +332,42 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
|
||||
if decodedInfo.packet.id != 0
|
||||
{
|
||||
print("Save a packet")
|
||||
|
||||
do {
|
||||
print(try decodedInfo.packet.jsonString())
|
||||
|
||||
if decodedInfo.packet.decoded.portnum == PortNum.textMessageApp {
|
||||
if let messageText = String(bytes: decodedInfo.packet.decoded.payload, encoding: .utf8) {
|
||||
print(messageText)
|
||||
print(try decodedInfo.packet.jsonString())
|
||||
|
||||
messageData.messages.append(
|
||||
MessageModel(messageId: decodedInfo.packet.id, messageTimeStamp: Int64(decodedInfo.packet.rxTime), fromUserId: decodedInfo.packet.from, toUserId: decodedInfo.packet.to, fromUserLongName: "From Long Name ", toUserLongName: "To Long Name", fromUserShortName: "FLN", toUserShortName: "TLN", receivedACK: decodedInfo.packet.decoded.wantResponse, messagePayload: messageText, direction: "IN"))
|
||||
messageData.save()
|
||||
} else {
|
||||
print("not a valid UTF-8 sequence")
|
||||
}
|
||||
|
||||
}
|
||||
else if decodedInfo.packet.decoded.portnum == PortNum.nodeinfoApp {
|
||||
if let nodeInfoPayload = String(bytes: decodedInfo.packet.decoded.payload, encoding: .utf8) {
|
||||
print(nodeInfoPayload)
|
||||
} else {
|
||||
print("not a valid UTF-8 sequence")
|
||||
print(try decodedInfo.packet.jsonString())
|
||||
}
|
||||
|
||||
}
|
||||
else if decodedInfo.packet.decoded.portnum == PortNum.positionApp {
|
||||
if let nodeInfoPayload = String(bytes: decodedInfo.packet.decoded.payload, encoding: .utf8) {
|
||||
print(nodeInfoPayload)
|
||||
} else {
|
||||
print("not a valid UTF-8 sequence")
|
||||
print(try decodedInfo.packet.jsonString())
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
print("Save a packet")
|
||||
print(try decodedInfo.packet.jsonString())
|
||||
}
|
||||
|
||||
|
|
@ -335,6 +379,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
if decodedInfo.configCompleteID != 0 {
|
||||
print(decodedInfo)
|
||||
meshData.load()
|
||||
messageData.load()
|
||||
}
|
||||
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -11,15 +11,18 @@ import SwiftUI
|
|||
struct MeshtasticClientApp: App {
|
||||
|
||||
@ObservedObject private var meshData: MeshData = MeshData()
|
||||
@ObservedObject private var messageData: MessageData = MessageData()
|
||||
@ObservedObject private var bleManager: BLEManager = BLEManager()
|
||||
|
||||
var body: some Scene {
|
||||
WindowGroup {
|
||||
ContentView()
|
||||
.environmentObject(meshData)
|
||||
.environmentObject(messageData)
|
||||
.environmentObject(bleManager)
|
||||
.onAppear{
|
||||
meshData.load()
|
||||
messageData.load()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@ class MessageData: ObservableObject {
|
|||
func load() {
|
||||
DispatchQueue.global(qos: .background).async { [weak self] in
|
||||
guard let data = try? Data(contentsOf: Self.fileURL) else {
|
||||
//#if DEBUG
|
||||
#if DEBUG
|
||||
DispatchQueue.main.async {
|
||||
self?.messages = MessageModel.data
|
||||
}
|
||||
//#endif
|
||||
#endif
|
||||
return
|
||||
}
|
||||
guard let messageList = try? JSONDecoder().decode([MessageModel].self, from: data) else {
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ struct NodeInfoModel: Identifiable, Codable {
|
|||
}
|
||||
}
|
||||
var coordinate: CLLocationCoordinate2D? {
|
||||
if latitude != nil || longitude != nil {
|
||||
if latitude != nil && longitude != nil {
|
||||
let coord = CLLocationCoordinate2D(latitude: latitude!, longitude: longitude!)
|
||||
|
||||
return coord
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ struct MessageBubble: View {
|
|||
var shortName: String
|
||||
|
||||
var body: some View {
|
||||
|
||||
HStack (alignment: .top) {
|
||||
|
||||
CircleText(text: shortName, color: isCurrentUser ? Color.blue : Color(.darkGray)).padding(.all, 5)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ struct Messages: View {
|
|||
@Namespace var bottomId
|
||||
|
||||
// Message Data and Bluetooth
|
||||
@ObservedObject var messageData: MessageData = MessageData()
|
||||
@EnvironmentObject var messageData: MessageData
|
||||
@EnvironmentObject var bleManager: BLEManager
|
||||
|
||||
var body: some View {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue