diff --git a/protocol/meshcore/node.go b/protocol/meshcore/node.go index c0574e1..966ab42 100644 --- a/protocol/meshcore/node.go +++ b/protocol/meshcore/node.go @@ -164,16 +164,22 @@ func (drv *companionDriver) Info() *radio.Info { Longitude: drv.info.Longitude, } } + + var firmwareDate time.Time + firmwareDate, _ = time.Parse("02-01-2006", drv.info.FirmwareBuildDate) + return &radio.Info{ - Name: drv.info.Name, - Manufacturer: drv.info.Manufacturer, - Modulation: protocol.LoRa, - Position: pos, - Frequency: drv.info.Frequency, - Bandwidth: drv.info.Bandwidth, - Power: float64(drv.info.Power), - LoRaSF: drv.info.SpreadingFactor, - LoRaCR: drv.info.CodingRate, + Name: drv.info.Name, + Manufacturer: drv.info.Manufacturer, + FirmwareDate: firmwareDate, + FirmwareVersion: drv.info.FirmwareVersion, + Modulation: protocol.LoRa, + Position: pos, + Frequency: drv.info.Frequency, + Bandwidth: drv.info.Bandwidth, + Power: float64(drv.info.Power), + LoRaSF: drv.info.SpreadingFactor, + LoRaCR: drv.info.CodingRate, } } diff --git a/radio/radio.go b/radio/radio.go index 6c4e9a0..54b1d42 100644 --- a/radio/radio.go +++ b/radio/radio.go @@ -1,24 +1,29 @@ package radio -import "math" +import ( + "math" + "time" +) // Info descriptor. type Info struct { - Name string `yaml:"name" json:"name"` // Name of the device - Device string `yaml:"device" json:"device"` // Device type - Manufacturer string `yaml:"manufacturer" json:"manufacturer"` // Device manufacturer - Antenna string `yaml:"antenna" json:"antenna"` // Antenna type - Modulation string `yaml:"modulation" json:"modulation"` // Modulation (constant from protocol) - Position *Position `yaml:"position" json:"position"` // Position - Frequency float64 `yaml:"frequency" json:"frequency"` // Frequency (in MHz) - RXFrequency float64 `yaml:"rx_frequency" json:"rx_frequency,omitempty"` // Used with split VFOs - TXFrequency float64 `yaml:"tx_frequency" json:"tx_frequency,omitempty"` // Used with split VFOs - Bandwidth float64 `yaml:"bandwidth" json:"bandwidth"` // Bandwidth (in kHz) - Power float64 `yaml:"power" json:"power"` // Power (in dBm) - Gain float64 `yaml:"gain" json:"gain"` // Gain (in dBm) - LoRaSF uint8 `yaml:"lora_sf" json:"lora_sf,omitempty"` // LoRa spreading factor - LoRaCR uint8 `yaml:"lora_cr" json:"lora_cr,omitempty"` // LoRa coding rate - Extra map[string]any `yaml:"extra" json:"extra"` // Extra metadata + Name string `yaml:"name" json:"name"` // Name of the device + Device string `yaml:"device" json:"device"` // Device type + Manufacturer string `yaml:"manufacturer" json:"manufacturer"` // Device manufacturer + FirmwareDate time.Time `yaml:"firmware_date" json:"firmware_date,omitempty"` // Firmware date + FirmwareVersion string `yaml:"firmware_version" json:"firmware_version"` // Firmware version + Antenna string `yaml:"antenna" json:"antenna"` // Antenna type + Modulation string `yaml:"modulation" json:"modulation"` // Modulation (constant from protocol) + Position *Position `yaml:"position" json:"position"` // Position + Frequency float64 `yaml:"frequency" json:"frequency"` // Frequency (in MHz) + RXFrequency float64 `yaml:"rx_frequency" json:"rx_frequency,omitempty"` // Used with split VFOs + TXFrequency float64 `yaml:"tx_frequency" json:"tx_frequency,omitempty"` // Used with split VFOs + Bandwidth float64 `yaml:"bandwidth" json:"bandwidth"` // Bandwidth (in kHz) + Power float64 `yaml:"power" json:"power"` // Power (in dBm) + Gain float64 `yaml:"gain" json:"gain"` // Gain (in dBm) + LoRaSF uint8 `yaml:"lora_sf" json:"lora_sf,omitempty"` // LoRa spreading factor + LoRaCR uint8 `yaml:"lora_cr" json:"lora_cr,omitempty"` // LoRa coding rate + Extra map[string]any `yaml:"extra" json:"extra"` // Extra metadata } type Position struct {