2022-08-20 12:15:14 -07:00
//
// D e v i c e R o l e s . s w i f t
// M e s h t a s t i c
//
// C o p y r i g h t ( c ) G a r t h V a n d e r H o u w e n 8 / 2 0 / 2 2 .
//
import Foundation
// D e f a u l t o f 0 i s C l i e n t
enum DeviceRoles : Int , CaseIterable , Identifiable {
case client = 0
case clientMute = 1
case router = 2
case routerClient = 3
2023-01-31 22:08:03 -08:00
case repeater = 4
case tracker = 5
2023-02-24 21:14:08 -08:00
case sensor = 6
2022-08-20 12:15:14 -07:00
var id : Int { self . rawValue }
2023-01-31 22:08:03 -08:00
var name : String {
2023-03-06 13:26:04 -08:00
switch self {
case . client :
return " Client "
case . clientMute :
return " Muted Client "
case . router :
return " Router "
case . routerClient :
return " Router & Client "
case . repeater :
return " Repeater "
case . tracker :
return " Tracker "
case . sensor :
return " Sensor "
2023-01-31 22:08:03 -08:00
}
}
2022-08-20 12:15:14 -07:00
var description : String {
2023-03-06 13:26:04 -08:00
switch self {
case . client :
2023-05-05 09:27:24 -07:00
return " device.role.client " . localized
2023-03-06 13:26:04 -08:00
case . clientMute :
2023-05-05 09:27:24 -07:00
return " device.role.clientmute " . localized
2023-03-06 13:26:04 -08:00
case . router :
2023-05-05 09:27:24 -07:00
return " device.role.router " . localized
2023-03-06 13:26:04 -08:00
case . routerClient :
2023-05-05 09:27:24 -07:00
return " device.role.routerclient " . localized
2023-03-06 13:26:04 -08:00
case . repeater :
2023-05-05 09:27:24 -07:00
return " device.role.repeater " . localized
2023-03-06 13:26:04 -08:00
case . tracker :
2023-05-05 09:27:24 -07:00
return " device.role.tracker " . localized
2023-03-06 13:26:04 -08:00
case . sensor :
2023-05-05 09:27:24 -07:00
return " device.role.sensor " . localized
2022-08-20 12:15:14 -07:00
}
}
func protoEnumValue ( ) -> Config . DeviceConfig . Role {
2023-03-06 10:33:18 -08:00
2022-08-20 12:15:14 -07:00
switch self {
case . client :
return Config . DeviceConfig . Role . client
case . clientMute :
return Config . DeviceConfig . Role . clientMute
case . router :
return Config . DeviceConfig . Role . router
case . routerClient :
return Config . DeviceConfig . Role . routerClient
2023-01-31 22:08:03 -08:00
case . repeater :
return Config . DeviceConfig . Role . repeater
case . tracker :
return Config . DeviceConfig . Role . tracker
2023-02-24 21:14:08 -08:00
case . sensor :
return Config . DeviceConfig . Role . sensor
2022-08-20 12:15:14 -07:00
}
}
}
2023-03-05 23:01:09 -08:00
enum RebroadcastModes : Int , CaseIterable , Identifiable {
case all = 0
case allSkipDecoding = 1
case localOnly = 2
var id : Int { self . rawValue }
2023-03-06 10:33:18 -08:00
2023-03-05 23:01:09 -08:00
var name : String {
2023-03-06 13:26:04 -08:00
switch self {
case . all :
return " All "
case . allSkipDecoding :
return " All Skip Decoding "
case . localOnly :
return " Local Only "
2023-03-05 23:01:09 -08:00
}
}
var description : String {
2023-03-06 13:26:04 -08:00
switch self {
case . all :
return " Rebroadcast any observed message, if it was on our private channel or from another mesh with the same lora params. "
case . allSkipDecoding :
return " Same as behavior as ALL but skips packet decoding and simply rebroadcasts them. Only available in Repeater role. Setting this on any other roles will result in ALL behavior. "
case . localOnly :
2023-03-21 20:21:48 -07:00
return " Ignores observed messages from foreign meshes that are open or those which it cannot decrypt. Only rebroadcasts message on the nodes local primary / secondary channels. "
2023-03-05 23:01:09 -08:00
}
}
func protoEnumValue ( ) -> Config . DeviceConfig . RebroadcastMode {
2023-03-06 10:33:18 -08:00
2023-03-05 23:01:09 -08:00
switch self {
case . all :
return Config . DeviceConfig . RebroadcastMode . all
case . allSkipDecoding :
return Config . DeviceConfig . RebroadcastMode . allSkipDecoding
case . localOnly :
return Config . DeviceConfig . RebroadcastMode . localOnly
}
}
}