#ifndef _ANIMATION_H_ #define _ANIMATION_H_ #include enum animation_state { ANI_RED, ANI_GREEN, ANI_BLUE, ANI_RAINBOW, ANI_FLASH_WHITE, }; struct rgbw_color { uint8_t red; uint8_t green; uint8_t blue; uint8_t white; }; enum rainbow_state { RAINBOW_RY, RAINBOW_YG, RAINBOW_GC, RAINBOW_CB, RAINBOW_BM, RAINBOW_MR, }; struct animation { enum animation_state state; enum rainbow_state rb_start_state; struct rgbw_color rb_start_color; uint32_t step; uint32_t last_tick; uint32_t next_interval; }; /** * @brief Reset aniamtion to start conditions * * @param ani Animation */ void animation_reset(struct animation *ani); /** * @brief Poll animation * * @param ani Animation * @param dmx_universe Target universe to play animation into. Must be big enough */ void animation_process(struct animation *ani, uint8_t *dmx_universe); #endif /* _ANIMATION_H_ */