#include "mzapo_led_strip.h" #include mzapo_ledstrip_t ledstrip_create(volatile uint32_t *mem_base) { mzapo_ledstrip_t ledstrip = { .mem_base = mem_base, .load = 0, .on_index = 0xFF, .on_around_index = 0 }; return ledstrip; } void ledstrip_write(mzapo_ledstrip_t *ledstrip) { if (ledstrip->mem_base != NULL) { *ledstrip->mem_base = ledstrip->strip; } } void ledstrip_clear(mzapo_ledstrip_t *ledstrip) { ledstrip->strip = 0; ledstrip->load = 0; ledstrip->on_around_index = 0; ledstrip->on_index = 0xFF; ledstrip_write(ledstrip); } void ledstrip_turn_on(mzapo_ledstrip_t *ledstrip, uint8_t index, uint8_t around) { ledstrip->on_index = index; ledstrip->on_around_index = around; ledstrip->strip = 0; index -= around; for (int i = 0; i < around * 2 + 1; i++) { uint8_t led_strip_i = i + index; if (led_strip_i >= LED_STRIP_COUNT) { continue; } ledstrip->strip |= 1 << (LED_STRIP_COUNT - 1 - led_strip_i); } ledstrip_write(ledstrip); } void ledstrip_progress_bar_step(mzapo_ledstrip_t *ledstrip, int8_t steps) { ledstrip->strip = 0; ledstrip->load = steps; ledstrip->on_index = 0xFF; ledstrip->on_around_index = 0; for (int i = 0; i < ledstrip->load; i++) { ledstrip->strip |= 1 << (LED_STRIP_COUNT - 1 - i); } ledstrip_write(ledstrip); }