Meshtastic-Apple/Meshtastic/Accessory/Protocols/Device.swift
Garth Vander Houwen 6bb880d503
Two Column Node List (#1425)
* Restore BLE State

* Log privacy

* AccessoryManager to handle restored connection

* Comment task out

* Switch the node list to a two column layout

* Keep asian translations of channel details string

* Update restore state function based on conversation with jake

* Update Meshtastic/Accessory/Transports/Bluetooth Low Energy/BLETransport.swift

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update Meshtastic/Accessory/Transports/Bluetooth Low Energy/BLETransport.swift

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* always show node list search bar

* Update auto correct modifier

* Dont show online animations for ios 17, remove online animation from node map, remove online circle from position popover

* Work in progress.

* Update detents

* Gate the discovery process while restoring

* Use geometry reader to size weather tiles on node details

* Update BLE Transport

* Update location weather condistion styles

* Log privacy in didReceive

* Remove extra dividers from admin key config, fix onboarding typo

* Bump minimum catalyst target

* Bump mac target version

* Use @FetchRequest for UserList to try and use less memory on ios 17

* Revert change to @fetchrequest

* Stab in the dark for Devices crash

* Updated UserList (back?) to @FetchRequest

* Set mac minimum to 15

* Nil out continuation after use

* Use @FetchRequest for the node list to stop crashes on iOS 17

* Handle failed connections during restoration

---------

Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-24 20:55:42 -07:00

55 lines
1.3 KiB
Swift

//
// Device.swift
// Meshtastic
//
// Created by Jake Bordens on 7/10/25.
//
import Foundation
struct Device: Identifiable, Hashable {
let id: UUID
var name: String
var transportType: TransportType
var identifier: String // e.g., UUID for BLE, IP:port for TCP, port path for Serial
var num: Int64?
var shortName: String?
var longName: String?
var firmwareVersion: String?
var hardwareModel: String?
var rssi: Int?
var lastUpdate: Date?
var connectionState: ConnectionState
init(id: UUID, name: String, transportType: TransportType, identifier: String, connectionState: ConnectionState = .disconnected, rssi: Int? = nil, num: Int64? = nil) {
self.id = id
self.name = name
self.transportType = transportType
self.identifier = identifier
self.connectionState = connectionState
self.rssi = rssi
self.num = num
}
var rssiString: String {
if let rssi {
return "\(rssi) dBm"
} else {
return "n/a"
}
}
func getSignalStrength() -> BLESignalStrength? {
guard let rssi else { return nil }
if NSNumber(value: rssi).compare(NSNumber(-65)) == ComparisonResult.orderedDescending {
return BLESignalStrength.strong
} else if NSNumber(value: rssi).compare(NSNumber(-85)) == ComparisonResult.orderedDescending {
return BLESignalStrength.normal
} else {
return BLESignalStrength.weak
}
}
}