mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Tapback working branch
This commit is contained in:
parent
125203c7e8
commit
d52fc20d2a
4 changed files with 40 additions and 43 deletions
|
|
@ -55,7 +55,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
// MARK: init BLEManager
|
||||
override init() {
|
||||
|
||||
self.meshLoggingEnabled = true // UserDefaults.standard.object(forKey: "meshActivityLog") as? Bool ?? true
|
||||
self.meshLoggingEnabled = true // UserDefaults.standard.object(forKey: "meshActivityLog") as? Bool ?? false
|
||||
self.lastConnectionError = ""
|
||||
self.lastConnnectionVersion = "0.0.0"
|
||||
super.init()
|
||||
|
|
@ -128,8 +128,8 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
self.timeoutTimer?.invalidate()
|
||||
|
||||
} else {
|
||||
print("🚫 BLE Connecting 2 Second Timeout Timer Fired \(timeoutTimerCount) Time(s): \(name)")
|
||||
if meshLoggingEnabled { MeshLogger.log("🚫 BLE Connecting 2 Second Timeout Timer Fired \(timeoutTimerCount) Time(s): \(name)") }
|
||||
print("🚨 BLE Connecting 2 Second Timeout Timer Fired \(timeoutTimerCount) Time(s): \(name)")
|
||||
if meshLoggingEnabled { MeshLogger.log("🚨 BLE Connecting 2 Second Timeout Timer Fired \(timeoutTimerCount) Time(s): \(name)") }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -142,6 +142,8 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
stopScanning()
|
||||
|
||||
if self.connectedPeripheral != nil {
|
||||
if meshLoggingEnabled { MeshLogger.log("ℹ️ BLE Disconnecting from: \(self.connectedPeripheral.name) to connect to \(peripheral.name ?? "Unknown")") }
|
||||
print("ℹ️ BLE Disconnecting from: \(self.connectedPeripheral.name) to connect to \(peripheral.name ?? "Unknown")")
|
||||
self.disconnectPeripheral()
|
||||
}
|
||||
|
||||
|
|
@ -364,8 +366,6 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
}
|
||||
|
||||
// MARK: Data Read / Update Characteristic Event
|
||||
// TODO: Convert to CoreData
|
||||
// FIXME: Remove broken JSON file data layer implementation
|
||||
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
|
||||
|
||||
|
||||
|
|
@ -682,11 +682,11 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
}
|
||||
newMessage.receivedACK = false
|
||||
newMessage.direction = "IN"
|
||||
newMessage.isTapback = decodedInfo.packet.isTapback
|
||||
newMessage.isTapback = decodedInfo.packet.decoded.isTapback
|
||||
|
||||
if decodedInfo.packet.replyID > 0 {
|
||||
if decodedInfo.packet.decoded.replyID > 0 {
|
||||
|
||||
newMessage.replyID = Int64(decodedInfo.packet.replyID)
|
||||
newMessage.replyID = Int64(decodedInfo.packet.decoded.replyID)
|
||||
}
|
||||
|
||||
if decodedInfo.packet.to == broadcastNodeNum && fetchedUsers.count == 1 {
|
||||
|
|
@ -962,9 +962,9 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
var meshPacket = MeshPacket()
|
||||
meshPacket.to = UInt32(toUserNum)
|
||||
meshPacket.from = UInt32(fromUserNum)
|
||||
meshPacket.isTapback = isTapback
|
||||
meshPacket.decoded.isTapback = isTapback
|
||||
if replyID > 0 {
|
||||
meshPacket.replyID = UInt32(replyID)
|
||||
meshPacket.decoded.replyID = UInt32(replyID)
|
||||
}
|
||||
meshPacket.decoded = dataMessage
|
||||
meshPacket.wantAck = true
|
||||
|
|
|
|||
|
|
@ -62,6 +62,9 @@ enum HardwareModel: SwiftProtobuf.Enum {
|
|||
/// The new version of the heltec WiFi_Lora_32_V2 board that has battery sensing hooked to GPIO 37. Sadly they did not update anything on the silkscreen to identify this board
|
||||
case heltecV21 // = 10
|
||||
|
||||
/// Ancient heltec WiFi_Lora_32 board
|
||||
case heltecV1 // = 11
|
||||
|
||||
///
|
||||
/// Less common/prototype boards listed here (needs one more byte over the air)
|
||||
case loraRelayV1 // = 32
|
||||
|
|
@ -97,6 +100,7 @@ enum HardwareModel: SwiftProtobuf.Enum {
|
|||
case 8: self = .tloraV11P3
|
||||
case 9: self = .rak4631
|
||||
case 10: self = .heltecV21
|
||||
case 11: self = .heltecV1
|
||||
case 32: self = .loraRelayV1
|
||||
case 33: self = .nrf52840Dk
|
||||
case 34: self = .ppr
|
||||
|
|
@ -122,6 +126,7 @@ enum HardwareModel: SwiftProtobuf.Enum {
|
|||
case .tloraV11P3: return 8
|
||||
case .rak4631: return 9
|
||||
case .heltecV21: return 10
|
||||
case .heltecV1: return 11
|
||||
case .loraRelayV1: return 32
|
||||
case .nrf52840Dk: return 33
|
||||
case .ppr: return 34
|
||||
|
|
@ -152,6 +157,7 @@ extension HardwareModel: CaseIterable {
|
|||
.tloraV11P3,
|
||||
.rak4631,
|
||||
.heltecV21,
|
||||
.heltecV1,
|
||||
.loraRelayV1,
|
||||
.nrf52840Dk,
|
||||
.ppr,
|
||||
|
|
@ -1064,6 +1070,15 @@ struct DataMessage {
|
|||
/// Indicates the original message ID that this message is reporting failure on. (formerly called original_id)
|
||||
var requestID: UInt32 = 0
|
||||
|
||||
///
|
||||
/// If set, this message is intened to be a reply to a previously sent message with the defined id.
|
||||
var replyID: UInt32 = 0
|
||||
|
||||
///
|
||||
/// Defaults to false. If true, then what is in the payload should be treated as an emoji like giving
|
||||
/// a message a heart or poop emoji.
|
||||
var isTapback: Bool = false
|
||||
|
||||
var unknownFields = SwiftProtobuf.UnknownStorage()
|
||||
|
||||
init() {}
|
||||
|
|
@ -1212,21 +1227,6 @@ struct MeshPacket {
|
|||
set {_uniqueStorage()._delayed = newValue}
|
||||
}
|
||||
|
||||
///
|
||||
/// If set, this message is intened to be a reply to a previously sent message with the defined id.
|
||||
var replyID: UInt32 {
|
||||
get {return _storage._replyID}
|
||||
set {_uniqueStorage()._replyID = newValue}
|
||||
}
|
||||
|
||||
///
|
||||
/// Defaults to false. If true, then what is in the payload should be treated as an emoji like giving
|
||||
/// a message a heart or poop emoji.
|
||||
var isTapback: Bool {
|
||||
get {return _storage._isTapback}
|
||||
set {_uniqueStorage()._isTapback = newValue}
|
||||
}
|
||||
|
||||
var unknownFields = SwiftProtobuf.UnknownStorage()
|
||||
|
||||
enum OneOf_PayloadVariant: Equatable {
|
||||
|
|
@ -2046,6 +2046,7 @@ extension HardwareModel: SwiftProtobuf._ProtoNameProviding {
|
|||
8: .same(proto: "TLORA_V1_1p3"),
|
||||
9: .same(proto: "RAK4631"),
|
||||
10: .same(proto: "HELTEC_V2_1"),
|
||||
11: .same(proto: "HELTEC_V1"),
|
||||
32: .same(proto: "LORA_RELAY_V1"),
|
||||
33: .same(proto: "NRF52840DK"),
|
||||
34: .same(proto: "PPR"),
|
||||
|
|
@ -2585,6 +2586,8 @@ extension DataMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementati
|
|||
4: .same(proto: "dest"),
|
||||
5: .same(proto: "source"),
|
||||
6: .standard(proto: "request_id"),
|
||||
7: .standard(proto: "reply_id"),
|
||||
8: .standard(proto: "is_tapback"),
|
||||
]
|
||||
|
||||
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
|
||||
|
|
@ -2599,6 +2602,8 @@ extension DataMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementati
|
|||
case 4: try { try decoder.decodeSingularFixed32Field(value: &self.dest) }()
|
||||
case 5: try { try decoder.decodeSingularFixed32Field(value: &self.source) }()
|
||||
case 6: try { try decoder.decodeSingularFixed32Field(value: &self.requestID) }()
|
||||
case 7: try { try decoder.decodeSingularFixed32Field(value: &self.replyID) }()
|
||||
case 8: try { try decoder.decodeSingularBoolField(value: &self.isTapback) }()
|
||||
default: break
|
||||
}
|
||||
}
|
||||
|
|
@ -2623,6 +2628,12 @@ extension DataMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementati
|
|||
if self.requestID != 0 {
|
||||
try visitor.visitSingularFixed32Field(value: self.requestID, fieldNumber: 6)
|
||||
}
|
||||
if self.replyID != 0 {
|
||||
try visitor.visitSingularFixed32Field(value: self.replyID, fieldNumber: 7)
|
||||
}
|
||||
if self.isTapback != false {
|
||||
try visitor.visitSingularBoolField(value: self.isTapback, fieldNumber: 8)
|
||||
}
|
||||
try unknownFields.traverse(visitor: &visitor)
|
||||
}
|
||||
|
||||
|
|
@ -2633,6 +2644,8 @@ extension DataMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementati
|
|||
if lhs.dest != rhs.dest {return false}
|
||||
if lhs.source != rhs.source {return false}
|
||||
if lhs.requestID != rhs.requestID {return false}
|
||||
if lhs.replyID != rhs.replyID {return false}
|
||||
if lhs.isTapback != rhs.isTapback {return false}
|
||||
if lhs.unknownFields != rhs.unknownFields {return false}
|
||||
return true
|
||||
}
|
||||
|
|
@ -2654,8 +2667,6 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio
|
|||
12: .same(proto: "priority"),
|
||||
13: .standard(proto: "rx_rssi"),
|
||||
15: .same(proto: "delayed"),
|
||||
16: .standard(proto: "reply_id"),
|
||||
17: .standard(proto: "is_tapback"),
|
||||
]
|
||||
|
||||
fileprivate class _StorageClass {
|
||||
|
|
@ -2671,8 +2682,6 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio
|
|||
var _priority: MeshPacket.Priority = .unset
|
||||
var _rxRssi: Int32 = 0
|
||||
var _delayed: MeshPacket.Delayed = .noDelay
|
||||
var _replyID: UInt32 = 0
|
||||
var _isTapback: Bool = false
|
||||
|
||||
static let defaultInstance = _StorageClass()
|
||||
|
||||
|
|
@ -2691,8 +2700,6 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio
|
|||
_priority = source._priority
|
||||
_rxRssi = source._rxRssi
|
||||
_delayed = source._delayed
|
||||
_replyID = source._replyID
|
||||
_isTapback = source._isTapback
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2743,8 +2750,6 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio
|
|||
case 12: try { try decoder.decodeSingularEnumField(value: &_storage._priority) }()
|
||||
case 13: try { try decoder.decodeSingularInt32Field(value: &_storage._rxRssi) }()
|
||||
case 15: try { try decoder.decodeSingularEnumField(value: &_storage._delayed) }()
|
||||
case 16: try { try decoder.decodeSingularFixed32Field(value: &_storage._replyID) }()
|
||||
case 17: try { try decoder.decodeSingularBoolField(value: &_storage._isTapback) }()
|
||||
default: break
|
||||
}
|
||||
}
|
||||
|
|
@ -2800,12 +2805,6 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio
|
|||
if _storage._delayed != .noDelay {
|
||||
try visitor.visitSingularEnumField(value: _storage._delayed, fieldNumber: 15)
|
||||
}
|
||||
if _storage._replyID != 0 {
|
||||
try visitor.visitSingularFixed32Field(value: _storage._replyID, fieldNumber: 16)
|
||||
}
|
||||
if _storage._isTapback != false {
|
||||
try visitor.visitSingularBoolField(value: _storage._isTapback, fieldNumber: 17)
|
||||
}
|
||||
}
|
||||
try unknownFields.traverse(visitor: &visitor)
|
||||
}
|
||||
|
|
@ -2827,8 +2826,6 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio
|
|||
if _storage._priority != rhs_storage._priority {return false}
|
||||
if _storage._rxRssi != rhs_storage._rxRssi {return false}
|
||||
if _storage._delayed != rhs_storage._delayed {return false}
|
||||
if _storage._replyID != rhs_storage._replyID {return false}
|
||||
if _storage._isTapback != rhs_storage._isTapback {return false}
|
||||
return true
|
||||
}
|
||||
if !storagesAreEqual {return false}
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ struct Connect: View {
|
|||
|
||||
Text(String(bleManager.connectedPeripheral.peripheral.name ?? "Unknown")).font(.title2)
|
||||
}
|
||||
Text("BLE Name: ").font(.caption)+Text(bleManager.connectedPeripheral.name)
|
||||
Text("BLE Name: ").font(.caption)+Text(bleManager.connectedPeripheral.peripheral.name ?? "Unknown")
|
||||
.font(.caption).foregroundColor(Color.gray)
|
||||
if bleManager.connectedPeripheral != nil {
|
||||
Text("FW Version: ").font(.caption)+Text(bleManager.connectedPeripheral.firmwareVersion)
|
||||
|
|
|
|||
|
|
@ -317,7 +317,7 @@ struct UserMessageList: View {
|
|||
})
|
||||
.onChange(of: allMessages.count, perform: { count in
|
||||
|
||||
self.context.refresh(user, mergeChanges: true)
|
||||
//self.context.refresh(user, mergeChanges: true)
|
||||
|
||||
let index = count - 1
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue