Files
go-garth/python-garmin-connect/SleepState.go
2025-09-20 15:21:49 -07:00

53 lines
1.1 KiB
Go

package connect
// SleepState is used to describe the state of sleep with a device capable
// of measuring sleep health.
type SleepState int
// Known sleep states in Garmin Connect.
const (
SleepStateUnknown SleepState = -1
SleepStateDeep SleepState = 0
SleepStateLight SleepState = 1
SleepStateREM SleepState = 2
SleepStateAwake SleepState = 3
)
// UnmarshalJSON implements json.Unmarshaler.
func (s *SleepState) UnmarshalJSON(value []byte) error {
// Garmin abuses floats to transfers enums. We ignore the value, and
// simply compares them as strings.
switch string(value) {
case "0.0":
*s = SleepStateDeep
case "1.0":
*s = SleepStateLight
case "2.0":
*s = SleepStateREM
case "3.0":
*s = SleepStateAwake
default:
*s = SleepStateUnknown
}
return nil
}
// Sleep implements fmt.Stringer.
func (s SleepState) String() string {
m := map[SleepState]string{
SleepStateUnknown: "Unknown",
SleepStateDeep: "Deep",
SleepStateLight: "Light",
SleepStateREM: "REM",
SleepStateAwake: "Awake",
}
str, found := m[s]
if !found {
str = m[SleepStateUnknown]
}
return str
}