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