This commit is contained in:
2026-01-16 01:17:28 +01:00
parent 30688ad644
commit 5ced01c010
2 changed files with 25 additions and 6 deletions

View File

@@ -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()

View File

@@ -280,6 +280,13 @@
</span>
{/if}
<!-- AFFICHAGE TX - SEULEMENT SI TX EST VRAI -->
{#if txEnabled}
<span class="tx-indicator">
TX
</span>
{/if}
{:else if showRadioOnWithSliceNoFreq}
<!-- Radio is on with slice but frequency is 0 (maybe slice just created) -->
<div class="radio-status">