From 5fe626948a562eaa48517ef46ff6134916243abb Mon Sep 17 00:00:00 2001 From: Collin Guarino Date: Wed, 24 Feb 2016 19:51:00 -0500 Subject: Implemented Light.Brighten to complement Light.Dim --- light.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/light.go b/light.go index cc4b502..8c79e8a 100644 --- a/light.go +++ b/light.go @@ -12,6 +12,7 @@ import ( "fmt" "time" "errors" + "log" ) // Light struct defines attributes of a light. @@ -204,6 +205,28 @@ func (light *Light) SetBrightness(percent int) error { } } + +// Light.Brighten will increase LightStruct.Bri by a given percent (integer) +func (light *Light) Brighten(percent int) error { + if percent > 0 && percent <= 100 { + originalBri := light.State.Bri + increaseBri := float32(originalBri)*float32((float32(percent)/100.0)) + newBri := uint8(originalBri+int(increaseBri)) + if newBri > 254 { // LightState.Bri must be between 1 and 254 inclusive + newBri = 254 + log.Println("Light.Brighten state set over 100%, setting brightness to 100%. ") + } + lightState := LightState{On: true, Bri: newBri} + err := light.SetState(lightState) + if err != nil { + return err + } + return nil + } else { + return errors.New("Light.Brighten percentage is not between 1 and 100. ") + } +} + // Light.SetState modifyies light attributes. See `LightState` struct for attributes. // Brightness must be between 1 and 254 (inclusive) // Hue must be between 0 and 65535 (inclusive) -- cgit v1.2.3