Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2.3.15 Specific Changes #755

Merged
merged 6 commits into from
Jul 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Meshtastic.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1421,7 +1421,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.3.12;
MARKETING_VERSION = 2.3.15;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = YES;
Expand Down Expand Up @@ -1456,7 +1456,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.3.12;
MARKETING_VERSION = 2.3.15;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = YES;
Expand Down Expand Up @@ -1488,7 +1488,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2.3.12;
MARKETING_VERSION = 2.3.15;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down Expand Up @@ -1521,7 +1521,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2.3.12;
MARKETING_VERSION = 2.3.15;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down
2 changes: 2 additions & 0 deletions Meshtastic/Helpers/BLEManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -864,6 +864,8 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate
Logger.services.info("MAX PORT NUM OF 511")
case .atakPlugin:
MeshLogger.log("🕸️ MESH PACKET received for ATAK Plugin App UNHANDLED \((try? decodedInfo.packet.jsonString()) ?? "JSON Decode Failure")")
case .powerstressApp:
MeshLogger.log("🕸️ MESH PACKET received for Power Stress App UNHANDLED \((try? decodedInfo.packet.jsonString()) ?? "JSON Decode Failure")")
}

if decodedInfo.configCompleteID != 0 && decodedInfo.configCompleteID == configNonce {
Expand Down
48 changes: 48 additions & 0 deletions Meshtastic/Resources/DeviceHardware.json
Original file line number Diff line number Diff line change
Expand Up @@ -318,5 +318,53 @@
"architecture": "esp32-s3",
"activelySupported": true,
"displayName": "unPhone"
},
{
"hwModel": 48,
"hwModelSlug": "HELTEC_WIRELESS_TRACKER",
garthvh marked this conversation as resolved.
Show resolved Hide resolved
"platformioTarget": "tracksenger",
"architecture": "esp32-s3",
"activelySupported": true,
"displayName": "TrackSenger (small TFT)"
},
{
"hwModel": 48,
"hwModelSlug": "HELTEC_WIRELESS_TRACKER",
"platformioTarget": "tracksenger-lcd",
"architecture": "esp32-s3",
"activelySupported": true,
"displayName": "TrackSenger (big TFT)"
},
{
"hwModel": 48,
"hwModelSlug": "HELTEC_WIRELESS_TRACKER",
"platformioTarget": "tracksenger-oled",
"architecture": "esp32-s3",
"activelySupported": true,
"displayName": "TrackSenger (big OLED)"
},
{
"hwModel": 61,
"hwModelSlug": "CDEBYTE_EORA_S3",
"platformioTarget": "CDEBYTE_EoRa-S3",
"architecture": "esp32-s3",
"activelySupported": true,
"displayName": "EBYTE EoRa-S3"
},
{
"hwModel": 64,
"hwModelSlug": "RADIOMASTER_900_BANDIT_NANO",
"platformioTarget": "radiomaster_900_bandit_nano",
"architecture": "esp32",
"activelySupported": true,
"displayName": "RadioMaster 900 Bandit Nano"
},
{
"hwModel": 21,
"hwModelSlug": "WIO_WM1110",
"platformioTarget": "wio-tracker-wm1110",
"architecture": "nrf52840",
"activelySupported": true,
"displayName": "Seeed Wio WM1110 Tracker"
}
]
2 changes: 1 addition & 1 deletion Meshtastic/Views/Nodes/Helpers/Map/MapSettingsForm.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ struct MapSettingsForm: View {
@AppStorage("meshMapShowNodeHistory") private var nodeHistory = false
@AppStorage("meshMapShowRouteLines") private var routeLines = false
@AppStorage("enableMapConvexHull") private var convexHull = false
@AppStorage("enableMapWaypoints") private var waypoints = false
@AppStorage("enableMapWaypoints") private var waypoints = true
@Binding var traffic: Bool
@Binding var pointsOfInterest: Bool
@Binding var mapLayer: MapLayer
Expand Down
2 changes: 1 addition & 1 deletion Meshtastic/Views/Settings/AppLog.swift
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ struct AppLog: View {
}
}

@available(iOS 17.4, *)
@available(iOS 17.4, macOS 14.4, *)
extension AppLog {
@MainActor
private func searchAppLogs() async -> [OSLogEntryLog] {
Expand Down
2 changes: 1 addition & 1 deletion Meshtastic/Views/Settings/Firmware.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ struct Firmware: View {
@Environment(\.managedObjectContext) var context
@EnvironmentObject var bleManager: BLEManager
var node: NodeInfoEntity?
@State var minimumVersion = "2.3.9"
@State var minimumVersion = "2.3.14"
@State var version = ""
@State private var currentDevice: DeviceHardware?
@State private var latestStable: FirmwareRelease?
Expand Down
3 changes: 0 additions & 3 deletions MeshtasticProtobufs/Sources/meshtastic/config.pb.swift
Original file line number Diff line number Diff line change
Expand Up @@ -220,9 +220,6 @@ public struct Config {
/// The wifi radio and the oled screen will be put to sleep.
/// This mode may still potentially have higher power usage due to it's preference in message rebroadcasting on the mesh.
case router // = 2

///
/// Description: Combination of both ROUTER and CLIENT. Not for mobile devices.
case routerClient // = 3

///
Expand Down
127 changes: 127 additions & 0 deletions MeshtasticProtobufs/Sources/meshtastic/mesh.pb.swift
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,23 @@ public enum HardwareModel: SwiftProtobuf.Enum {
/// Heltec Capsule Sensor V3 with ESP32-S3 CPU, Portable LoRa device that can replace GNSS modules or sensors
case heltecCapsuleSensorV3 // = 65

///
/// Heltec Vision Master T190 with ESP32-S3 CPU, and a 1.90 inch TFT display
case heltecVisionMasterT190 // = 66

///
/// Heltec Vision Master E213 with ESP32-S3 CPU, and a 2.13 inch E-Ink display
case heltecVisionMasterE213 // = 67

///
/// Heltec Vision Master E290 with ESP32-S3 CPU, and a 2.9 inch E-Ink display
case heltecVisionMasterE290 // = 68

///
/// Heltec Mesh Node T114 board with nRF52840 CPU, and a 1.14 inch TFT display, Ultimate low-power design,
/// specifically adapted for the Meshtatic project
case heltecMeshNodeT114 // = 69

///
/// ------------------------------------------------------------------------------------------------------------------------------------------
/// Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits.
Expand Down Expand Up @@ -382,6 +399,10 @@ public enum HardwareModel: SwiftProtobuf.Enum {
case 63: self = .nrf52PromicroDiy
case 64: self = .radiomaster900BanditNano
case 65: self = .heltecCapsuleSensorV3
case 66: self = .heltecVisionMasterT190
case 67: self = .heltecVisionMasterE213
case 68: self = .heltecVisionMasterE290
case 69: self = .heltecMeshNodeT114
case 255: self = .privateHw
default: self = .UNRECOGNIZED(rawValue)
}
Expand Down Expand Up @@ -454,6 +475,10 @@ public enum HardwareModel: SwiftProtobuf.Enum {
case .nrf52PromicroDiy: return 63
case .radiomaster900BanditNano: return 64
case .heltecCapsuleSensorV3: return 65
case .heltecVisionMasterT190: return 66
case .heltecVisionMasterE213: return 67
case .heltecVisionMasterE290: return 68
case .heltecMeshNodeT114: return 69
case .privateHw: return 255
case .UNRECOGNIZED(let i): return i
}
Expand Down Expand Up @@ -531,6 +556,10 @@ extension HardwareModel: CaseIterable {
.nrf52PromicroDiy,
.radiomaster900BanditNano,
.heltecCapsuleSensorV3,
.heltecVisionMasterT190,
.heltecVisionMasterE213,
.heltecVisionMasterE290,
.heltecMeshNodeT114,
.privateHw,
]
}
Expand Down Expand Up @@ -2286,6 +2315,16 @@ public struct FromRadio {
set {_uniqueStorage()._payloadVariant = .mqttClientProxyMessage(newValue)}
}

///
/// File system manifest messages
public var fileInfo: FileInfo {
get {
if case .fileInfo(let v)? = _storage._payloadVariant {return v}
return FileInfo()
}
set {_uniqueStorage()._payloadVariant = .fileInfo(newValue)}
}

public var unknownFields = SwiftProtobuf.UnknownStorage()

///
Expand Down Expand Up @@ -2338,6 +2377,9 @@ public struct FromRadio {
///
/// MQTT Client Proxy Message (device sending to client / phone for publishing to MQTT)
case mqttClientProxyMessage(MqttClientProxyMessage)
///
/// File system manifest messages
case fileInfo(FileInfo)

#if !swift(>=4.1)
public static func ==(lhs: FromRadio.OneOf_PayloadVariant, rhs: FromRadio.OneOf_PayloadVariant) -> Bool {
Expand Down Expand Up @@ -2397,6 +2439,10 @@ public struct FromRadio {
guard case .mqttClientProxyMessage(let l) = lhs, case .mqttClientProxyMessage(let r) = rhs else { preconditionFailure() }
return l == r
}()
case (.fileInfo, .fileInfo): return {
guard case .fileInfo(let l) = lhs, case .fileInfo(let r) = rhs else { preconditionFailure() }
return l == r
}()
default: return false
}
}
Expand All @@ -2408,6 +2454,26 @@ public struct FromRadio {
fileprivate var _storage = _StorageClass.defaultInstance
}

///
/// Individual File info for the device
public struct FileInfo {
// SwiftProtobuf.Message conformance is added in an extension below. See the
// `Message` and `Message+*Additions` files in the SwiftProtobuf library for
// methods supported on all messages.

///
/// The fully qualified path of the file
public var fileName: String = String()

///
/// The size of the file in bytes
public var sizeBytes: UInt32 = 0

public var unknownFields = SwiftProtobuf.UnknownStorage()

public init() {}
}

///
/// Packets/commands to the radio will be written (reliably) to the toRadio characteristic.
/// Once the write completes the phone can assume it is handled.
Expand Down Expand Up @@ -2879,6 +2945,7 @@ extension LogRecord.Level: @unchecked Sendable {}
extension QueueStatus: @unchecked Sendable {}
extension FromRadio: @unchecked Sendable {}
extension FromRadio.OneOf_PayloadVariant: @unchecked Sendable {}
extension FileInfo: @unchecked Sendable {}
extension ToRadio: @unchecked Sendable {}
extension ToRadio.OneOf_PayloadVariant: @unchecked Sendable {}
extension Compressed: @unchecked Sendable {}
Expand Down Expand Up @@ -2964,6 +3031,10 @@ extension HardwareModel: SwiftProtobuf._ProtoNameProviding {
63: .same(proto: "NRF52_PROMICRO_DIY"),
64: .same(proto: "RADIOMASTER_900_BANDIT_NANO"),
65: .same(proto: "HELTEC_CAPSULE_SENSOR_V3"),
66: .same(proto: "HELTEC_VISION_MASTER_T190"),
67: .same(proto: "HELTEC_VISION_MASTER_E213"),
68: .same(proto: "HELTEC_VISION_MASTER_E290"),
69: .same(proto: "HELTEC_MESH_NODE_T114"),
255: .same(proto: "PRIVATE_HW"),
]
}
Expand Down Expand Up @@ -4229,6 +4300,7 @@ extension FromRadio: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementation
12: .same(proto: "xmodemPacket"),
13: .same(proto: "metadata"),
14: .same(proto: "mqttClientProxyMessage"),
15: .same(proto: "fileInfo"),
]

fileprivate class _StorageClass {
Expand Down Expand Up @@ -4428,6 +4500,19 @@ extension FromRadio: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementation
_storage._payloadVariant = .mqttClientProxyMessage(v)
}
}()
case 15: try {
var v: FileInfo?
var hadOneofValue = false
if let current = _storage._payloadVariant {
hadOneofValue = true
if case .fileInfo(let m) = current {v = m}
}
try decoder.decodeSingularMessageField(value: &v)
if let v = v {
if hadOneofValue {try decoder.handleConflictingOneOf()}
_storage._payloadVariant = .fileInfo(v)
}
}()
default: break
}
}
Expand Down Expand Up @@ -4496,6 +4581,10 @@ extension FromRadio: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementation
guard case .mqttClientProxyMessage(let v)? = _storage._payloadVariant else { preconditionFailure() }
try visitor.visitSingularMessageField(value: v, fieldNumber: 14)
}()
case .fileInfo?: try {
guard case .fileInfo(let v)? = _storage._payloadVariant else { preconditionFailure() }
try visitor.visitSingularMessageField(value: v, fieldNumber: 15)
}()
case nil: break
}
}
Expand All @@ -4518,6 +4607,44 @@ extension FromRadio: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementation
}
}

extension FileInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
public static let protoMessageName: String = _protobuf_package + ".FileInfo"
public static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
1: .standard(proto: "file_name"),
2: .standard(proto: "size_bytes"),
]

public mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
while let fieldNumber = try decoder.nextFieldNumber() {
// The use of inline closures is to circumvent an issue where the compiler
// allocates stack space for every case branch when no optimizations are
// enabled. https://github.com/apple/swift-protobuf/issues/1034
switch fieldNumber {
case 1: try { try decoder.decodeSingularStringField(value: &self.fileName) }()
case 2: try { try decoder.decodeSingularUInt32Field(value: &self.sizeBytes) }()
default: break
}
}
}

public func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
if !self.fileName.isEmpty {
try visitor.visitSingularStringField(value: self.fileName, fieldNumber: 1)
}
if self.sizeBytes != 0 {
try visitor.visitSingularUInt32Field(value: self.sizeBytes, fieldNumber: 2)
}
try unknownFields.traverse(visitor: &visitor)
}

public static func ==(lhs: FileInfo, rhs: FileInfo) -> Bool {
if lhs.fileName != rhs.fileName {return false}
if lhs.sizeBytes != rhs.sizeBytes {return false}
if lhs.unknownFields != rhs.unknownFields {return false}
return true
}
}

extension ToRadio: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
public static let protoMessageName: String = _protobuf_package + ".ToRadio"
public static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
Expand Down
Loading