mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-09 12:16:15 +00:00
- Fix range copy issues in cmd_network.go (use indexing instead of copying 168-byte structs) - Rename DiscoveryService to Service to avoid package name stuttering - Update all references to use new Service constructor names - Apply automatic whitespace fixes using golangci-lint --fix - Reduce linting issues from 32 to 7 (only cyclomatic complexity remains) Remaining issues are architectural complexity violations that require manual refactoring.
149 lines
3.8 KiB
Go
149 lines
3.8 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
// getBass retrieves the current bass level from the device
|
|
func getBass(c *cli.Context) error {
|
|
clientConfig := GetClientConfig(c)
|
|
PrintDeviceHeader("Getting bass level", clientConfig.Host, clientConfig.Port)
|
|
|
|
client, err := CreateSoundTouchClient(clientConfig)
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to create client: %v", err))
|
|
return err
|
|
}
|
|
|
|
bass, err := client.GetBass()
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to get bass: %v", err))
|
|
return err
|
|
}
|
|
|
|
fmt.Printf("Current bass level: %d\n", bass.ActualBass)
|
|
|
|
if bass.TargetBass != bass.ActualBass {
|
|
fmt.Printf("Target bass level: %d\n", bass.TargetBass)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// setBass sets the bass level on the device
|
|
func setBass(c *cli.Context) error {
|
|
level := c.Int("level")
|
|
clientConfig := GetClientConfig(c)
|
|
PrintDeviceHeader(fmt.Sprintf("Setting bass level to %d", level), clientConfig.Host, clientConfig.Port)
|
|
|
|
client, err := CreateSoundTouchClient(clientConfig)
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to create client: %v", err))
|
|
return err
|
|
}
|
|
|
|
err = client.SetBassSafe(level)
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to set bass: %v", err))
|
|
return err
|
|
}
|
|
|
|
PrintSuccess(fmt.Sprintf("Bass level set to %d", level))
|
|
|
|
return nil
|
|
}
|
|
|
|
// bassUp increases the bass level
|
|
func bassUp(c *cli.Context) error {
|
|
amount := c.Int("amount")
|
|
clientConfig := GetClientConfig(c)
|
|
PrintDeviceHeader(fmt.Sprintf("Increasing bass by %d", amount), clientConfig.Host, clientConfig.Port)
|
|
|
|
client, err := CreateSoundTouchClient(clientConfig)
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to create client: %v", err))
|
|
return err
|
|
}
|
|
|
|
// Get current bass level first
|
|
currentBass, err := client.GetBass()
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to get current bass: %v", err))
|
|
return err
|
|
}
|
|
|
|
newLevel := currentBass.ActualBass + amount
|
|
|
|
err = client.SetBassSafe(newLevel)
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to increase bass: %v", err))
|
|
return err
|
|
}
|
|
|
|
PrintSuccess(fmt.Sprintf("Bass increased from %d to %d", currentBass.ActualBass, newLevel))
|
|
|
|
return nil
|
|
}
|
|
|
|
// bassDown decreases the bass level
|
|
func bassDown(c *cli.Context) error {
|
|
amount := c.Int("amount")
|
|
clientConfig := GetClientConfig(c)
|
|
PrintDeviceHeader(fmt.Sprintf("Decreasing bass by %d", amount), clientConfig.Host, clientConfig.Port)
|
|
|
|
client, err := CreateSoundTouchClient(clientConfig)
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to create client: %v", err))
|
|
return err
|
|
}
|
|
|
|
// Get current bass level first
|
|
currentBass, err := client.GetBass()
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to get current bass: %v", err))
|
|
return err
|
|
}
|
|
|
|
newLevel := currentBass.ActualBass - amount
|
|
|
|
err = client.SetBassSafe(newLevel)
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to decrease bass: %v", err))
|
|
return err
|
|
}
|
|
|
|
PrintSuccess(fmt.Sprintf("Bass decreased from %d to %d", currentBass.ActualBass, newLevel))
|
|
|
|
return nil
|
|
}
|
|
|
|
// getBassCapabilities retrieves the bass capabilities of the device
|
|
func getBassCapabilities(c *cli.Context) error {
|
|
clientConfig := GetClientConfig(c)
|
|
PrintDeviceHeader("Getting bass capabilities", clientConfig.Host, clientConfig.Port)
|
|
|
|
client, err := CreateSoundTouchClient(clientConfig)
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to create client: %v", err))
|
|
return err
|
|
}
|
|
|
|
capabilities, err := client.GetBassCapabilities()
|
|
if err != nil {
|
|
PrintError(fmt.Sprintf("Failed to get bass capabilities: %v", err))
|
|
return err
|
|
}
|
|
|
|
fmt.Println("Bass Capabilities:")
|
|
fmt.Printf(" Available: %t\n", capabilities.BassAvailable)
|
|
|
|
if capabilities.BassAvailable {
|
|
fmt.Printf(" Range: %d to %d\n", capabilities.BassMin, capabilities.BassMax)
|
|
fmt.Printf(" Default: %d\n", capabilities.BassDefault)
|
|
}
|
|
|
|
return nil
|
|
}
|