40 lines
1.1 KiB
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 "Неизвестно"
|
|
}
|
|
} |