pass base addresses to factory methods

This commit is contained in:
2026-02-07 09:24:41 +00:00
parent abfb1bf08d
commit 8a452c83b9
7 changed files with 73 additions and 71 deletions

View File

@@ -11,10 +11,10 @@ type Eq struct {
}
// Factory function to create Eq instance for Main
func newEqForMain(c *Client) *Eq {
func newEqForMain(c *Client, baseAddress string) *Eq {
return &Eq{
client: c,
baseAddress: c.addressMap["main"],
baseAddress: fmt.Sprintf("%s/eq", baseAddress),
AddressFunc: func(fmtString string, args ...any) string {
return fmtString
},
@@ -22,35 +22,35 @@ func newEqForMain(c *Client) *Eq {
}
// Factory function to create Eq instance for Strip
func newEqForStrip(c *Client) *Eq {
func newEqForStrip(c *Client, baseAddress string) *Eq {
return &Eq{
client: c,
baseAddress: c.addressMap["strip"],
baseAddress: fmt.Sprintf("%s/eq", baseAddress),
AddressFunc: fmt.Sprintf,
}
}
// Factory function to create Eq instance for Bus
func newEqForBus(c *Client) *Eq {
func newEqForBus(c *Client, baseAddress string) *Eq {
return &Eq{
client: c,
baseAddress: c.addressMap["bus"],
baseAddress: fmt.Sprintf("%s/eq", baseAddress),
AddressFunc: fmt.Sprintf,
}
}
// Factory function to create Eq instance for Matrix
func newEqForMatrix(c *Client) *Eq {
func newEqForMatrix(c *Client, baseAddress string) *Eq {
return &Eq{
client: c,
baseAddress: c.addressMap["matrix"],
baseAddress: fmt.Sprintf("%s/eq", baseAddress),
AddressFunc: fmt.Sprintf,
}
}
// On retrieves the on/off status of the EQ for a specific strip or bus (1-based indexing).
func (e *Eq) On(index int) (bool, error) {
address := e.AddressFunc(e.baseAddress, index) + "/eq/on"
address := e.AddressFunc(e.baseAddress, index) + "/on"
err := e.client.SendMessage(address)
if err != nil {
return false, err
@@ -69,7 +69,7 @@ func (e *Eq) On(index int) (bool, error) {
// SetOn sets the on/off status of the EQ for a specific strip or bus (1-based indexing).
func (e *Eq) SetOn(index int, on bool) error {
address := e.AddressFunc(e.baseAddress, index) + "/eq/on"
address := e.AddressFunc(e.baseAddress, index) + "/on"
var value int32
if on {
value = 1
@@ -78,7 +78,7 @@ func (e *Eq) SetOn(index int, on bool) error {
}
func (e *Eq) Mode(index int) (string, error) {
address := e.AddressFunc(e.baseAddress, index) + "/eq/mode"
address := e.AddressFunc(e.baseAddress, index) + "/mode"
err := e.client.SendMessage(address)
if err != nil {
return "", err
@@ -98,14 +98,14 @@ func (e *Eq) Mode(index int) (string, error) {
}
func (e *Eq) SetMode(index int, mode string) error {
address := e.AddressFunc(e.baseAddress, index) + "/eq/mode"
address := e.AddressFunc(e.baseAddress, index) + "/mode"
possibleModes := []string{"peq", "geq", "teq"}
return e.client.SendMessage(address, int32(indexOf(possibleModes, mode)))
}
// Gain retrieves the gain for a specific EQ band on a strip or bus (1-based indexing).
func (e *Eq) Gain(index int, band int) (float64, error) {
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/eq/%d/g", band)
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/%d/g", band)
err := e.client.SendMessage(address)
if err != nil {
return 0, err
@@ -124,13 +124,13 @@ func (e *Eq) Gain(index int, band int) (float64, error) {
// SetGain sets the gain for a specific EQ band on a strip or bus (1-based indexing).
func (e *Eq) SetGain(index int, band int, gain float64) error {
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/eq/%d/g", band)
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/%d/g", band)
return e.client.SendMessage(address, float32(linSet(-15, 15, gain)))
}
// Frequency retrieves the frequency for a specific EQ band on a strip or bus (1-based indexing).
func (e *Eq) Frequency(index int, band int) (float64, error) {
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/eq/%d/f", band)
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/%d/f", band)
err := e.client.SendMessage(address)
if err != nil {
return 0, err
@@ -149,13 +149,13 @@ func (e *Eq) Frequency(index int, band int) (float64, error) {
// SetFrequency sets the frequency for a specific EQ band on a strip or bus (1-based indexing).
func (e *Eq) SetFrequency(index int, band int, frequency float64) error {
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/eq/%d/f", band)
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/%d/f", band)
return e.client.SendMessage(address, float32(logSet(20, 20000, frequency)))
}
// Q retrieves the Q factor for a specific EQ band on a strip or bus (1-based indexing).
func (e *Eq) Q(index int, band int) (float64, error) {
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/eq/%d/q", band)
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/%d/q", band)
err := e.client.SendMessage(address)
if err != nil {
return 0, err
@@ -174,13 +174,13 @@ func (e *Eq) Q(index int, band int) (float64, error) {
// SetQ sets the Q factor for a specific EQ band on a strip or bus (1-based indexing).
func (e *Eq) SetQ(index int, band int, q float64) error {
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/eq/%d/q", band)
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/%d/q", band)
return e.client.SendMessage(address, float32(1.0-logSet(0.3, 10, q)))
}
// Type retrieves the type for a specific EQ band on a strip or bus (1-based indexing).
func (e *Eq) Type(index int, band int) (string, error) {
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/eq/%d/type", band)
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/%d/type", band)
err := e.client.SendMessage(address)
if err != nil {
return "", err
@@ -201,7 +201,7 @@ func (e *Eq) Type(index int, band int) (string, error) {
// SetType sets the type for a specific EQ band on a strip or bus (1-based indexing).
func (e *Eq) SetType(index int, band int, eqType string) error {
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/eq/%d/type", band)
address := e.AddressFunc(e.baseAddress, index) + fmt.Sprintf("/%d/type", band)
possibleTypes := []string{"lcut", "lshv", "peq", "veq", "hshv", "hcut"}
return e.client.SendMessage(address, int32(indexOf(possibleTypes, eqType)))
}