M lib-pheripherals/src/mzapo_rgb_led.c => lib-pheripherals/src/mzapo_rgb_led.c +4 -2
@@ 1,6 1,7 @@
#include "mzapo_rgb_led.h"
#include <stdlib.h>
#include <time.h>
+#include <stdio.h>
mzapo_rgb_led_t rgb_led_create(unsigned char *mem_base) {
mzapo_rgb_led_t rgb_led = {
@@ 17,6 18,7 @@ mzapo_rgb_led_t rgb_led_create(unsigned char *mem_base) {
void rgb_led_set(mzapo_rgb_led_t *rgb_led, mzapo_rgb_leds_t id, uint8_t r,
uint8_t g, uint8_t b) {
if (rgb_led->mem_base != NULL) {
+ rgb_led->states[id].timeout_ms = 0;
rgb_led_pixel_t *pixel = (rgb_led_pixel_t*)((void *)rgb_led->mem_base + id * 4);
(pixel)->red = r;
(pixel)->green = g;
@@ 57,8 59,8 @@ void rgb_led_update(mzapo_rgb_led_t *rgb_led) {
if (rgb_led->states[i].timeout_ms != 0) {
struct timespec set_time = rgb_led->states[i].set_time;
uint32_t diff = (((now.tv_sec - set_time.tv_sec) * 1000) +
- (now.tv_nsec - set_time.tv_nsec)) /
- 1000000;
+ (now.tv_nsec - set_time.tv_nsec) / 1000000);
+ printf("%u\r\n", diff);
if (diff >= rgb_led->states[i].timeout_ms) {
rgb_led->states[i].timeout_ms = 0;
M text-viewer/src/text_viewer.c => text-viewer/src/text_viewer.c +15 -2
@@ 267,16 267,29 @@ void text_viewer_start_loop(text_viewer_t *text_viewer) {
// main loop
text_viewer->running = true;
+ uint32_t prev_lines_scrolled = 0;
while (text_viewer->running) {
commands_check_input(&commands);
gui_update(&text_viewer->gui);
gui_render(&text_viewer->gui);
+ rgb_led_update(text_viewer->pheripherals.rgb_leds);
+ uint32_t lines_scrolled = gui_text_view_get_lines_scrolled(text_view);
ledstrip_turn_on(text_viewer->pheripherals.ledstrip,
- ((double)gui_text_view_get_lines_scrolled(text_view) /
- text_viewer->multiline_text->lines_count) * LED_STRIP_COUNT,
+ ((double) lines_scrolled /
+ text_viewer->multiline_text->lines_count) *
+ LED_STRIP_COUNT,
1);
+
+ if (lines_scrolled != prev_lines_scrolled) {
+ rgb_led_set_timeout(text_viewer->pheripherals.rgb_leds, LED_LEFT, 0, 100,
+ 100, 150);
+ rgb_led_set_timeout(text_viewer->pheripherals.rgb_leds, LED_RIGHT, 0, 100,
+ 100, 150);
+
+ prev_lines_scrolled = lines_scrolled;
+ }
}
ledstrip_clear(text_viewer->pheripherals.ledstrip);