#ifndef MATRIX_H
#define MATRIX_H

#include <stdint.h>

#define MATRIX_WIDTH   32
#define MATRIX_HEIGHT  16

// Тип буфера кадра (16 строк x 32 пикселя x 3 байта RGB).
typedef uint8_t matrix_frame_t[MATRIX_HEIGHT][MATRIX_WIDTH][3];

// Инициализация: порты, таймер, запоминание указателя на буфер.
// Прерывания не разрешает - пользователь вызывает sei() сам.
void matrix_init(matrix_frame_t *frame);

// Флаг: 1 = кадр выведен, можно рисовать следующий.
// Пользователь проверяет "между делом" в основном цикле.
extern volatile uint8_t matrix_frame_ready;

// Удобные макросы для доступа к флагу.
#define MATRIX_FRAME_READY()    (matrix_frame_ready)
#define MATRIX_FRAME_CONSUMED() do { matrix_frame_ready = 0; } while (0)

#endif
