Доработка. Парсинг в логах
This commit is contained in:
40
internal/logger/parser.go
Normal file
40
internal/logger/parser.go
Normal file
@@ -0,0 +1,40 @@
|
||||
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 "Неизвестно"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user