more tinkering.
This commit is contained in:
+24
-9
@@ -1,17 +1,12 @@
|
||||
package device
|
||||
|
||||
import "math/bits"
|
||||
import (
|
||||
"git.aiterp.net/lucifer3/server/internal/gentools"
|
||||
"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
|
||||
@@ -23,6 +18,20 @@ const (
|
||||
SFlagSensorPresence
|
||||
)
|
||||
|
||||
var supportFlags = []SupportFlags{SFlagPower, SFlagIntensity, SFlagColor, SFlagTemperature, SFlagSensorButtons, SFlagSensorTemperature, SFlagSensorLightLevel, SFlagSensorPresence}
|
||||
|
||||
func (f SupportFlags) String() string {
|
||||
return gentools.FlagString(f, supportFlags, []string{"P", "I", "C", "T", "SB", "ST", "SLL", "SP"})
|
||||
}
|
||||
|
||||
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))
|
||||
}
|
||||
|
||||
// ColorFlag is primarily to detect warm-white lights, as XY/RGB/HS/HSK can convert without trouble.
|
||||
type ColorFlag uint32
|
||||
|
||||
@@ -34,6 +43,12 @@ const (
|
||||
CFlagKelvin
|
||||
)
|
||||
|
||||
var colorFlags = []ColorFlag{CFlagXY, CFlagRGB, CFlagHS, CFlagHSK, CFlagKelvin}
|
||||
|
||||
func (f ColorFlag) String() string {
|
||||
return gentools.FlagString(f, colorFlags, []string{"XY", "RGB", "HS", "HSK", "K"})
|
||||
}
|
||||
|
||||
func (f ColorFlag) IsColor() bool {
|
||||
return f.HasAny(CFlagXY | CFlagRGB | CFlagHS | CFlagHSK)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user