Files
go-service/internal/logger/parser.go

40 lines
1.1 KiB
Go

package logger
type GPIOData struct {
RawValue byte // сырое значение
Count byte // количество обнаружений (биты 0-5)
Strength byte // сила сигнала (биты 6-7)
IsHighCount bool // превышает ли количество 10
}
// ParseGPIO парсит сырой байт на составляющие
func ParseGPIO(raw byte) GPIOData {
// Биты 0-5: количество (0-63)
count := raw & 0x3F // маска 00111111
// Биты 6-7: сила (0-3)
strength := (raw >> 6) & 0x03 // сдвиг на 6 бит, маска 00000011
return GPIOData{
RawValue: raw,
Count: count,
Strength: strength,
IsHighCount: count > 10,
}
}
// GetStrengthName возвращает текстовое описание силы
func GetStrengthName(strength byte) string {
switch strength {
case 0:
return "Слабый"
case 1:
return "Средний"
case 2:
return "Сильный"
case 3:
return "Максимальный"
default:
return "Неизвестно"
}
}