57 lines
1.2 KiB
C
57 lines
1.2 KiB
C
#include "odroid/display.h"
|
|
#include "odroid/input.h"
|
|
#include "macros.h"
|
|
#include <esp_log.h>
|
|
#include <freertos/FreeRTOS.h>
|
|
#include <freertos/task.h>
|
|
#include <string.h>
|
|
|
|
|
|
static const char* LOG_TAG = "Main";
|
|
static uint16_t gFramebuffer[LCD_WIDTH * LCD_HEIGHT];
|
|
|
|
void app_main(void)
|
|
{
|
|
Odroid_InitializeInput();
|
|
Odroid_InitializeDisplay();
|
|
|
|
ESP_LOGI(LOG_TAG, "Odroid initialization complete - entering main loop");
|
|
|
|
int x = 0;
|
|
int y = 0;
|
|
|
|
uint16_t color = 0xffff;
|
|
|
|
for (;;)
|
|
{
|
|
memset(gFramebuffer, 0, 320 * 240 * 2);
|
|
|
|
Odroid_Input input = Odroid_PollInput();
|
|
|
|
if (input.left) { x -= 20; }
|
|
else if (input.right) { x += 20; }
|
|
|
|
if (input.up) { y -= 20; }
|
|
else if (input.down) { y += 20; }
|
|
|
|
if (input.a) { color = SWAP_ENDIAN_16(RGB565(0xff, 0, 0)); }
|
|
else if (input.b) { color = SWAP_ENDIAN_16(RGB565(0, 0xff, 0)); }
|
|
else if (input.start) { color = SWAP_ENDIAN_16(RGB565(0, 0, 0xff)); }
|
|
else if (input.select) { color = SWAP_ENDIAN_16(RGB565(0xff, 0xff, 0xff)); }
|
|
|
|
for (int row = y; row < y + 50; ++row)
|
|
{
|
|
for (int col = x; col < x + 50; ++col)
|
|
{
|
|
gFramebuffer[LCD_WIDTH * row + col] = color;
|
|
}
|
|
}
|
|
|
|
Odroid_DrawFrame(gFramebuffer);
|
|
}
|
|
|
|
// Should never get here
|
|
esp_restart();
|
|
}
|
|
|