Enum for hardware

This commit is contained in:
Garth Vander Houwen 2023-03-13 09:50:24 -07:00
parent 65dde905f7
commit b73d7d0c66
3 changed files with 61 additions and 45 deletions

View file

@ -7,32 +7,55 @@
import Foundation
// Default of 0 is Client
enum HardwareModels: Int, CaseIterable, Identifiable {
enum HardwareModels: String, CaseIterable, Identifiable {
case UNSET = 0
case TLORA_V2 = 1
case TLORA_V1 = 2
case TLORA_V2_1_1P6 = 3
case TBEAM = 4
case HELTEC_V2_0 = 5
case TBEAM_V0P7 = 6
case T_ECHO = 7
case TLORA_V1_1P3 = 8
case RAK4631 = 9
case HELTEC_V2_1 = 10
case HELTEC_V1 = 11
case LILYGO_TBEAM_S3_CORE = 12
case RAK11200 = 13
case NANO_G1 = 14
case TLORA_V2_1_1P8 = 15
case TLORA_T3_S3 = 16
case NANO_G1_EXPLORER = 17
case STATION_G1 = 25
case M5STACK = 42
case HELTEC_V3 = 43
case HELTEC_WSL_V3 = 45
case UNSET
case TLORA_V2
case TLORA_V1
case TLORA_V2_1_1P6
case TBEAM
case HELTEC_V2_0
case TBEAM_V0P7
case T_ECHO
case TLORA_V1_1P3
case RAK4631
case HELTEC_V2_1
case HELTEC_V1
case LILYGO_TBEAM_S3_CORE
case RAK11200
case NANO_G1
case TLORA_V2_1_1P8
case TLORA_T3_S3
case NANO_G1_EXPLORER
case STATION_G1
case M5STACK
case HELTEC_V3
case HELTEC_WSL_V3
var id: Int { self.rawValue }
// case UNSET = 0
// case TLORA_V2 = 1
// case TLORA_V1 = 2
// case TLORA_V2_1_1P6 = 3
// case TBEAM = 4
// case HELTEC_V2_0 = 5
// case TBEAM_V0P7 = 6
// case T_ECHO = 7
// case TLORA_V1_1P3 = 8
// case RAK4631 = 9
// case HELTEC_V2_1 = 10
// case HELTEC_V1 = 11
// case LILYGO_TBEAM_S3_CORE = 12
// case RAK11200 = 13
// case NANO_G1 = 14
// case TLORA_V2_1_1P8 = 15
// case TLORA_T3_S3 = 16
// case NANO_G1_EXPLORER = 17
// case STATION_G1 = 25
// case M5STACK = 42
// case HELTEC_V3 = 43
// case HELTEC_WSL_V3 = 45
var id: String { self.rawValue }
var description: String {
switch self {

View file

@ -46,7 +46,12 @@ struct LoRaConfig: View {
VStack {
Form {
if node != nil && node?.num ?? 0 != bleManager.connectedPeripheral.num {
if node != nil && node?.metadata == nil && node?.num ?? 0 != bleManager.connectedPeripheral.num {
Text("There has been no response to a request for device metadata over the admin channel for this node.")
.font(.callout)
.foregroundColor(.orange)
} else if node != nil && node?.num ?? 0 != bleManager.connectedPeripheral.num {
// Let users know what is going on if they are using remote admin and don't have the lora config yet
if node?.loRaConfig == nil {
Text("LoRa config data has been requested but has not yet returned from the remote node. You can check the status of admin message requests in the admin message log.")

View file

@ -26,6 +26,10 @@ struct Firmware: View {
var body: some View {
//NavigationSplitView {
NavigationStack {
let hwModel: HardwareModels = HardwareModels.allCases.first(where: { $0.rawValue == node?.user?.hwModel ?? "UNSET" } ) ?? HardwareModels.UNSET
Text(hwModel.firmwareStrings[0] + (node?.metadata?.firmwareVersion ?? "Unknown") )
.font(.title3)
VStack (alignment: .leading) {
Text("nRF Device Firmware Update App")
.font(.title3)
@ -171,21 +175,17 @@ struct Releases: Codable {
var alpha : [Alpha]? = []
enum CodingKeys: String, CodingKey {
case stable = "stable"
case alpha = "alpha"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
stable = try values.decodeIfPresent([Stable].self , forKey: .stable )
alpha = try values.decodeIfPresent([Alpha].self , forKey: .alpha )
}
init() {
}
init() {}
}
struct Alpha: Codable {
@ -196,7 +196,6 @@ struct Alpha: Codable {
var zipUrl : String? = nil
enum CodingKeys: String, CodingKey {
case id = "id"
case title = "title"
case pageUrl = "page_url"
@ -205,16 +204,13 @@ struct Alpha: Codable {
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
id = try values.decodeIfPresent(String.self , forKey: .id )
title = try values.decodeIfPresent(String.self , forKey: .title )
pageUrl = try values.decodeIfPresent(String.self , forKey: .pageUrl )
zipUrl = try values.decodeIfPresent(String.self , forKey: .zipUrl )
}
init() {
}
init() {}
}
struct Stable: Codable {
@ -225,7 +221,6 @@ struct Stable: Codable {
var zipUrl : String? = nil
enum CodingKeys: String, CodingKey {
case id = "id"
case title = "title"
case pageUrl = "page_url"
@ -234,16 +229,13 @@ struct Stable: Codable {
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
id = try values.decodeIfPresent(String.self , forKey: .id )
title = try values.decodeIfPresent(String.self , forKey: .title )
pageUrl = try values.decodeIfPresent(String.self , forKey: .pageUrl )
zipUrl = try values.decodeIfPresent(String.self , forKey: .zipUrl )
}
init() {
}
init() {}
}
struct PullRequests: Codable {
@ -254,7 +246,6 @@ struct PullRequests: Codable {
var zipUrl : String? = nil
enum CodingKeys: String, CodingKey {
case id = "id"
case title = "title"
case pageUrl = "page_url"
@ -263,14 +254,11 @@ struct PullRequests: Codable {
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
id = try values.decodeIfPresent(String.self , forKey: .id )
title = try values.decodeIfPresent(String.self , forKey: .title )
pageUrl = try values.decodeIfPresent(String.self , forKey: .pageUrl )
zipUrl = try values.decodeIfPresent(String.self , forKey: .zipUrl )
}
init() {
}
init() {}
}