#pragma once
#include <Arduino.h>
#include <Adafruit_NeoPixel.h>
// compile-time число каналов для device-layer (.cpp файлы)
#ifndef BUTTON_CHANNEL_NUM
#define BUTTON_CHANNEL_NUM 3
#endif
enum IndicatorState : uint8_t {
IND_ENABLED = 0,
IND_DISABLED,
IND_MUTE,
IND_WAITING,
IND_WARNING,
IND_ERROR
};
extern const uint8_t BUTTON_PINS[BUTTON_CHANNEL_NUM];
extern const uint8_t SIGNAL_LED; // GPIO пин ленты
extern IndicatorState channel_indicator[BUTTON_CHANNEL_NUM];
void button_logic_setup();
void button_logic_loop();
void set_channel_indicator(uint8_t ch, IndicatorState st);
IndicatorState get_channel_indicator(uint8_t ch);
// локальная индикация ожидания/ошибки после нажатия
void set_channel_waiting(uint8_t ch);
void set_channel_warning_temp(uint8_t ch, uint32_t ms);
void clear_channel_temp(uint8_t ch);
// отправка события
void send_press_event(uint8_t ch);