diff --git a/internal/devices/flexradio/flexradio.go b/internal/devices/flexradio/flexradio.go index 59db910..c1d2dcf 100644 --- a/internal/devices/flexradio/flexradio.go +++ b/internal/devices/flexradio/flexradio.go @@ -419,7 +419,7 @@ func (c *Client) handleInterlockStatus(handle string, statusMap map[string]strin defer c.statusMu.Unlock() if state, ok := statusMap["state"]; ok { - c.lastStatus.Tx = (state == "TRANSMIT" || state == "TUNE") + c.lastStatus.Tx = (state == "TRANSMITTING" || state == "TUNE") log.Printf("FlexRadio: Interlock state=%s, TX=%v", state, c.lastStatus.Tx) } } @@ -428,6 +428,9 @@ func (c *Client) handleSliceStatus(handle string, statusMap map[string]string) { c.statusMu.Lock() defer c.statusMu.Unlock() + // Quand on reçoit un message de slice, on a au moins une slice active + c.lastStatus.ActiveSlices = 1 + if rfFreq, ok := statusMap["RF_frequency"]; ok { if freq, err := strconv.ParseFloat(rfFreq, 64); err == nil && freq > 0 { c.lastStatus.Frequency = freq @@ -436,6 +439,10 @@ func (c *Client) handleSliceStatus(handle string, statusMap map[string]string) { if c.onFrequencyChange != nil { go c.onFrequencyChange(freq) } + } else if freq == 0 { + // Fréquence 0 dans le message de slice = slice inactive + c.lastStatus.Frequency = 0 + c.lastStatus.RadioInfo = "Slice inactive" } } @@ -494,7 +501,6 @@ func (c *Client) parseInfoResponse(data string) { } c.radioInfo[key] = value - log.Printf("FlexRadio Info: %s = %s", key, value) } } @@ -528,10 +534,16 @@ func (c *Client) parseSliceListResponse(data string) { if c.lastStatus != nil { c.lastStatus.ActiveSlices = len(slices) - if len(slices) == 0 { - c.lastStatus.Frequency = 0 - c.lastStatus.Mode = "" + // NE PAS effacer la fréquence ici ! + // La fréquence est gérée par handleSliceStatus + + // Seulement mettre à jour RadioInfo si vraiment pas de slices + if len(slices) == 0 && c.lastStatus.Frequency == 0 { c.lastStatus.RadioInfo = "Radio is on without any active slice" + } else if len(slices) == 0 && c.lastStatus.Frequency > 0 { + // Cas spécial : fréquence mais pas de slice dans la liste + // Peut arriver temporairement, garder l'info actuelle + c.lastStatus.RadioInfo = fmt.Sprintf("Active on %.3f MHz", c.lastStatus.Frequency) } } c.statusMu.Unlock() diff --git a/web/src/components/StatusBanner.svelte b/web/src/components/StatusBanner.svelte index 67989c3..45adfc3 100644 --- a/web/src/components/StatusBanner.svelte +++ b/web/src/components/StatusBanner.svelte @@ -256,7 +256,7 @@