package logger // GPIOData — разобранный байт GPIO-шины: количество обнаружений (биты 0–5), // сила сигнала (биты 6–7) и признак превышения порога тревоги. 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 "Неизвестно" } }