Tapback working branch

This commit is contained in:
Garth Vander Houwen 2022-01-11 06:43:41 -08:00
parent 125203c7e8
commit d52fc20d2a
4 changed files with 40 additions and 43 deletions

View file

@ -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

View file

@ -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}

View file

@ -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)

View file

@ -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