14 #include "avr_helper.h" 15 #include <avr/eeprom.h> 16 #include <avr/pgmspace.h> 17 #include <avr/interrupt.h> 34 #if defined(_FFT_DEBUG_) 44 static void change_val(int8_t *v, uint8_t lim, int8_t d){
47 if(tmp >= lim) tmp = lim-1;
69 static void change_level(int8_t delta){
86 static uint8_t in_menu;
94 static uint8_t get_pressed_btn(
void){
135 uint8_t btn = get_pressed_btn();
148 return btn ==
BTN_CHANGE ? CTRL_ENC_BTN_UP : CTRL_ENC_UP;
150 return btn ==
BTN_CHANGE ? CTRL_ENC_BTN_DN : CTRL_ENC_DN;
164 static control_cmd_t get_command(control_t ctrl){
171 case CTRL_ENC_BTN_UP:
173 return CMD_EFFECT_PLUS;
174 case CTRL_ENC_BTN_DN:
175 return CMD_EFFECT_MINUS;
177 return CMD_PRESET_PLUS;
179 return CMD_PRESET_MINUS;
200 static exec_result_t exec_cmd(
signal_t *s){
202 exec_result_t result = EXEC_SHOW;
208 case CMD_VOLUME_PLUS:
212 case CMD_VOLUME_MINUS:
216 case CMD_EFFECT_PLUS:
219 case CMD_EFFECT_MINUS:
221 #if !defined(ONLY_BASE_CMD) 222 case CMD_EFFECT_1 ... CMD_EFFECT_10:
228 case CMD_PRESET_PLUS:
231 case CMD_PRESET_MINUS:
234 #if !defined(ONLY_BASE_CMD) 235 case CMD_PRESET_1 ... CMD_PRESET_10:
243 result = EXEC_NO_SHOW;
255 static uint8_t timeout;
281 do_show = exer != EXEC_NO_SHOW;
285 #if !defined(_FFT_DEBUG_) 289 if(do_show || !timeout){
290 if(exer == EXEC_SCALE){
303 if(timeout) timeout--;
button_state
Флаги автомата состояния опроса кнопок
void do_control(signal_t *s)
Обработка органов управления
#define BTN_PORT
Символ порта, к оторому подключены кнопки управления
#define MAX_LEVEL
фиксированное количество уровней регулирования чувствительности
INIT(7)
Инициализация модуля
void center_str(uint8_t row, char *src)
вывод строки по центру дисплея
uint8_t state
Состояние автомата
void show_info(signal_t *s)
Название текущего пресета для текущего эффекта
control_t get_control(void)
получение управляющей команды
void show_scale(uint8_t row, uint8_t val)
отображение псевдографической горизонтальной шкалы
uint8_t lcd_enabled
ЖКИ присутствует
Вспомогательные эффекты ЖКИ
uint8_t get_btn_state(void)
получение кода нажатых кнопок
Вспомогательный тип для автомата состояний опроса кнопок
uint8_t sensitivity
уровень регулировки чувствительности
структура параметров звукового сигнала
сервисный модуль для реализации эффектов Набор вспомогательных функций для базовых манипуляций над це...
uint8_t div
Флаг повторного входа вопрос
void reset_power_timeout(void)
сброс таймаута автоотключения питания
int8_t change_preset(signal_t *s, int8_t delta)
Смена пресета для текущегоэффекта последовательно
#define BTN_ANY
Маска всех кнопок
Ожидание отпускания кнопки
void show_spectrum(signal_t *s)
отображение "мгновенного спектра" на 2-й строке ЖКИ
int8_t get_encoder(void)
Состояние энкодера
uint8_t agc_enabled
АРУ включено
#define BTN_MENU
Кнопка настроек
void power_off(void)
выключение питания
Интерфейс визуальных эффектов
описания модуля дистанционного управления
описания урганов управления
Модуль управления усилением
#define BTN_CHANGE
Кнопка изменения основного эффекта
#define IND_TIMEOUT
таймаут "заморозки" изображения на ЖКИ после исполнения команд в 10мс интервалах
void change_effect(signal_t *s, int8_t delta)
Смена эффекта последовательно
char * get_effect_name(signal_t *s)
Название текущего эффекта
control_cmd_t get_ir_command(void)
поиск запрограммированной команды
uint8_t effect_auto_changed(signal_t *s)
Проверка смены фонового эффекта на основной или наоборот
void show_rpad_str_p(uint8_t line, const char *src)
вывод строки из flash с очисткой дисплея справа