13 #include <avr/eeprom.h> 14 #include "avr_helper.h" 15 #include <avr/pgmspace.h> 42 #if defined(_FFT_DEBUG_) 43 if(eff->name[0] !=
'@')
return;
51 #define BACK effects[BACKGROUND_EFFECT] 52 #define FORE effects[FOREGROUND_EFFECT] 54 #define CUR_BACK effects[BACKGROUND_EFFECT].effect[effects[BACKGROUND_EFFECT].cur] 56 #define CUR_FORE effects[FOREGROUND_EFFECT].effect[effects[FOREGROUND_EFFECT].cur] 99 if(ptr->preset != NULL) result = ptr->preset(delta);
117 static char* get_preset_name(
signal_t *s){
121 if(ptr->preset != NULL) _preset = ptr->preset(0);
130 strcpy_P(tmp, PSTR(
"PRESET "));
131 itoa(_preset, &tmp[7], 10);
139 if(ptr->info != NULL){
147 static uint8_t mode = 1;
151 if(ptr->info != NULL) changed = ptr->info(0) == INFO_ALWAYS;
155 changed = changed || (cur_mode != mode);
163 static void default_stop_effect(
void){
169 static EEMEM int8_t e_cur_back;
170 static EEMEM int8_t e_cur_fore;
174 if(num <
FORE.total){
176 default_stop_effect();
179 eeprom_update_byte((
void*)&e_cur_fore,
FORE.cur);
186 if(num <
BACK.total){
188 default_stop_effect();
191 eeprom_update_byte((
void*)&e_cur_back,
BACK.cur);
201 eeprom_update_byte((
void*)&e_cur_fore,
FORE.cur);
202 eeprom_update_byte((
void*)&e_cur_back,
BACK.cur);
203 for(uint8_t i = 0; i <
FORE.total; i++){
204 if(
FORE.effect[i]->save != NULL)
205 FORE.effect[i]->save();
207 for(uint8_t i = 0; i <
BACK.total; i++){
208 if(
BACK.effect[i]->save != NULL)
209 BACK.effect[i]->save();
222 if(ptr->stop != NULL) ptr->stop();
224 default_stop_effect();
232 eeprom_update_byte((
void*)&e_cur_fore,
FORE.cur);
233 eeprom_update_byte((
void*)&e_cur_back,
BACK.cur);
237 FORE.cur = eeprom_read_byte((
void*)&e_cur_fore);
239 BACK.cur = eeprom_read_byte((
void*)&e_cur_back);
#define CUR_FORE
простой доступ к текущему основному эффекту
void save_all_effects(void)
Сохранение настроек всех эффектов
void center_str(uint8_t row, char *src)
вывод строки по центру дисплея
#define DEF_SILENCE_LVL
Предел уровня громкости, считающийся тишиной
#define CUR_BACK
простой доступ к текущему фоновому эффекту
int8_t delta
условная скорость автоматического изменения яркости
void show_info(signal_t *s)
Название текущего пресета для текущего эффекта
void select_bg_effect(signal_t *s, uint8_t num)
Выбор пресета непосредственно
volume_t average_vol
средняя громкость
#define MAX_EFFECT_CNT
предельное количество эффектов любого типа
void select_fg_effect(signal_t *s, uint8_t num)
Выбор эффекта непосредственно
Вспомогательные эффекты ЖКИ
int8_t total
общее количество эффектов
const __flash effect_t flash_effect_t
тип описания эффекта, размещенного во FLASH.
структура параметров звукового сигнала
сервисный модуль для реализации эффектов Набор вспомогательных функций для базовых манипуляций над це...
Структура хранения списков эффектов
Описания для модуля реализации спектрального анализа
uint8_t first
признак первого запуска эффекта
int8_t change_preset(signal_t *s, int8_t delta)
Смена пресета для текущегоэффекта последовательно
int8_t cur
номер текущего выбранного эффект
отображать название пресета не надо
preset_result_t
результат функции смены пресета
#define PIXEL_CNT
Общее количество пикселов
Описания модуля скрипт-плейера
Интерфейс визуальных эффектов
void sens_control(signal_t *s)
Регулировка чувствительности
pixel_t pixels[MAX_TOTAL_PIX]
Массив пикселей предельного размера
flash_effect_t * effect[MAX_EFFECT_CNT]
массив указателей на эффекты
#define FORE
простой доступ к массиву основных эффектов
Модуль управления усилением
void register_effect(uint8_t toe, flash_effect_t *eff)
Регистрация эффекта в списках
#define BACK
простой доступ к массиву фоновых эффектов
void change_effect(signal_t *s, int8_t delta)
Смена эффекта последовательно
void execute_effect(signal_t *s)
Рендеринг эффекта
char * get_effect_name(signal_t *s)
Название текущего эффекта
uint8_t effect_auto_changed(signal_t *s)
Проверка смены фонового эффекта на основной или наоборот