#include <stdlib.h> #include "canvas.h" #include "PontCoopScheduler.h" static canvas_t *canvas; #define MAX_COLOR 0x0d void displayTestExec(void *args) { static uint8_t last = 0xff; static uint8_t current = 0; static uint8_t color = 0x01; static uint8_t state = 1; switch (state) { case 0: for (uint16_t i = 0; i < canvas->height; i++) { canvasSetPixel(last, i, 0); } last = 0xff; state = 1; case 1: if (last != 0xff) { *((canvas->canvas)+last) = 0x80; } last = current; *((canvas->canvas)+current) = (color + 0x80); current++; if (current >= canvas->size) { current = 0; state = 2; } break; case 2: *((canvas->canvas)+last) = 0x80; last = 0xff; state = 3; case 3: if (last != 0xff) { for (uint16_t i = 0; i < canvas->width; i++) { canvasSetPixel(i, last, 0); } } last = current; for (uint16_t i = 0; i < canvas->width; i++) { canvasSetPixel(i, current, color); } current++; if (current >= canvas->height) { current = 0; state = 4; } break; case 4: for (uint16_t i = 0; i < canvas->width; i++) { canvasSetPixel(i, last, 0); } last = 0xff; state = 5; case 5: if (last != 0xff) { for (uint16_t i = 0; i < canvas->height; i++) { canvasSetPixel(last, i, 0); } } last = current; for (uint16_t i = 0; i < canvas->height; i++) { canvasSetPixel(current, i, color); } current++; if (current >= canvas->width) { current = 0; state = 0; } break; } color++; if (color > MAX_COLOR) { color = 1; } canvasShow(); } void displayTestInit() { canvas = canvasGet(); schAdd(displayTestExec, NULL, 0, 50); }