You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package device
import "math/bits"
type SupportFlags uint32
func (f SupportFlags) HasAny(d SupportFlags) bool { return (f & d) != 0 }
func (f SupportFlags) HasAll(d SupportFlags) bool { return bits.OnesCount32(uint32(f&d)) == bits.OnesCount32(uint32(d)) }
const ( SFlagPower SupportFlags = 1 << iota SFlagIntensity SFlagColor SFlagTemperature SFlagSensorButtons SFlagSensorTemperature SFlagSensorLightLevel SFlagSensorPresence )
// ColorFlag is primarily to detect warm-white lights, as XY/RGB/HS/HSK can convert without trouble.
type ColorFlag uint32
const ( CFlagXY ColorFlag = 1 << iota CFlagRGB CFlagHS CFlagHSK CFlagKelvin )
func (f ColorFlag) IsColor() bool { return f.HasAny(CFlagXY | CFlagRGB | CFlagHS | CFlagHSK) }
func (f ColorFlag) IsWarmWhite() bool { return f&CFlagKelvin == CFlagKelvin }
func (f ColorFlag) IsColorOnly() bool { return f != 0 && f&CFlagKelvin == 0 }
func (f ColorFlag) IsWarmWhiteOnly() bool { return f == CFlagKelvin }
func (f ColorFlag) HasAny(d ColorFlag) bool { return (f & d) != 0 }
func (f ColorFlag) HasAll(d ColorFlag) bool { return bits.OnesCount32(uint32(f&d)) == bits.OnesCount32(uint32(d)) }
|