2021-09-20 22:29:10 -07:00
/*
See LICENSE folder for this sample ’ s licensing information .
*/
2021-09-14 21:38:12 -07:00
import SwiftUI
import CoreLocation
2021-09-19 01:10:49 -07:00
struct NodeInfoModel : Identifiable , Codable {
2021-09-14 21:38:12 -07:00
2021-09-20 22:29:10 -07:00
let id : UUID
2021-09-14 21:38:12 -07:00
var num : UInt32
var user : User
2021-09-19 01:10:49 -07:00
struct User : Identifiable , Codable {
2021-09-14 21:38:12 -07:00
var id : String
var longName : String
var shortName : String
var hwModel : String
2021-09-20 22:29:10 -07:00
init ( id : String , longName : String , shortName : String , hwModel : String ) {
self . id = id
self . longName = longName
self . shortName = shortName
self . hwModel = hwModel
}
2021-09-14 21:38:12 -07:00
}
var position : Position
2021-09-19 01:10:49 -07:00
struct Position : Codable {
2021-09-14 21:38:12 -07:00
var latitudeI : Int32 ?
2021-09-18 15:33:35 -07:00
var latitude : Double ? {
if let unwrappedLat = latitudeI {
let d = Double ( unwrappedLat )
2021-09-19 01:10:49 -07:00
return d / 1e7
2021-09-18 15:33:35 -07:00
}
else {
return nil
}
}
2021-09-14 21:38:12 -07:00
var longitudeI : Int32 ?
2021-09-18 15:33:35 -07:00
var longitude : Double ? {
if let unwrappedLong = longitudeI {
let d = Double ( unwrappedLong )
2021-09-19 01:10:49 -07:00
return d / 1e7
2021-09-18 15:33:35 -07:00
}
else {
return nil
}
}
var coordinate : CLLocationCoordinate2D ? {
if longitude != nil {
let coord = CLLocationCoordinate2D ( latitude : latitude ! , longitude : longitude ! )
return coord
}
else {
return nil
}
}
2021-09-14 21:38:12 -07:00
var altitude : Int32 ?
var batteryLevel : Int32 ?
var time : Int32 ?
2021-09-20 22:29:10 -07:00
init ( latitudeI : Int32 ? , longitudeI : Int32 ? , altitude : Int32 ? , batteryLevel : Int32 ? , time : Int32 ? ) {
self . latitudeI = latitudeI
self . longitudeI = longitudeI
self . altitude = altitude
self . batteryLevel = batteryLevel
self . time = time
}
2021-09-14 21:38:12 -07:00
}
var lastHeard : Double
var snr : Double ?
2021-09-20 22:29:10 -07:00
init ( id : UUID = UUID ( ) , num : UInt32 , user : User , position : Position , lastHeard : Double , snr : Double ? ) {
self . id = id
self . num = num
self . user = user
self . position = position
self . lastHeard = lastHeard
self . snr = snr
}
}
extension NodeInfoModel {
// v a r u s e r = U s e r ( i d : " ! a 6 6 c 1 6 6 f " , l o n g N a m e : " R A K S o l a r 2 " , s h o r t N a m e : " R S 2 " , m a c a d d r : " 8 e a m b B Z v " , h w M o d e l : " R A K 4 6 3 1 " )
// l e t p o s i t i o n = P o s i t i o n ( b a t t e r y L e v e l : 6 8 )
static var data : [ NodeInfoModel ] {
[
NodeInfoModel ( num : 2792101487 , user : User ( id : " !a66c166f " , longName : " RAK Solar 2 " , shortName : " RS2 " , hwModel : " RAK4631 " ) , position : Position ( latitudeI : nil , longitudeI : nil , altitude : nil , batteryLevel : 68 , time : nil ) , lastHeard : 1631593661 , snr : nil ) ,
NodeInfoModel ( num : 1000569662 , user : User ( id : " !3ba37b3e " , longName : " RAK Solar 1 " , shortName : " RS1 " , hwModel : " RAK4631 " ) , position : Position ( latitudeI : 476021390 , longitudeI : - 1221532609 , altitude : 71 , batteryLevel : 70 , time : 1629314497 ) , lastHeard : 1629392801 , snr : 5.25 )
]
}
}
extension NodeInfoModel {
struct Data {
var num : UInt32 = 0
var user : User
var postion : Position
var lastHeard : Double
var snr : Double ?
}
var data : Data {
return Data ( num : num , user : user , postion : position , lastHeard : lastHeard , snr : snr )
}
mutating func update ( from data : Data ) {
num = data . num
user = data . user
position = data . postion
lastHeard = data . lastHeard
snr = data . snr
}
2021-09-14 21:38:12 -07:00
}