Cleaned up automatically added comments

This commit is contained in:
Stanislav N Mikhailov
2026-03-27 20:40:28 +03:00
parent cee901faa4
commit 238542c31d
+23 -23
View File
@@ -21,42 +21,42 @@ static bool frame_timer_cb(repeating_timer_t* t) // Callback аппаратно
} }
static inline void wait_for_irq(void) // Вспомогательная функция для энергосберегающего ожидания прерываний. static inline void wait_for_irq(void) // Вспомогательная функция для энергосберегающего ожидания прерываний.
{ // Начало функции ожидания IRQ. {
__asm volatile ("wfi"); // Инструкция ARM Wait For Interrupt: CPU спит до любого IRQ. __asm volatile ("wfi"); // Инструкция ARM Wait For Interrupt: CPU спит до любого IRQ.
} // Конец функции ожидания IRQ. }
static uint16_t text_width_px(const wchar_t* str) // Считаем фактическую ширину строки в пикселях через таблицу ширин глифов. static uint16_t text_width_px(const wchar_t* str) // Считаем фактическую ширину строки в пикселях через таблицу ширин глифов.
{ // Начало функции расчета ширины строки. {
uint16_t width = 0; // Накапливаем итоговую ширину строки. uint16_t width = 0; // Накапливаем итоговую ширину строки.
while (*str) // Пока не дошли до нулевого терминатора строки. while (*str) // Пока не дошли до нулевого терминатора строки.
{ // Начало цикла по символам. {
width = (uint16_t)(width + get_char_width(*str)); // Добавляем ширину текущего символа. width = (uint16_t)(width + get_char_width(*str)); // Добавляем ширину текущего символа.
str++; // Переходим к следующему символу. str++; // Переходим к следующему символу.
} // Конец цикла по символам. }
return width; // Возвращаем итоговую ширину строки. return width; // Возвращаем итоговую ширину строки.
} // Конец функции расчета ширины строки. }
static void update_axis_reflect(int* pos, int* dir, int min_pos, int max_pos) // Обновляем одну координату с зеркальным отражением от границ. static void update_axis_reflect(int* pos, int* dir, int min_pos, int max_pos) // Обновляем одну координату с зеркальным отражением от границ.
{ // Начало функции обновления координаты. {
if (max_pos <= min_pos) // Если объект больше доступного диапазона или диапазон вырожден. if (max_pos <= min_pos) // Если объект больше доступного диапазона или диапазон вырожден.
{ // Начало обработки вырожденного диапазона. {
*pos = min_pos; // Фиксируем позицию в единственной доступной точке. *pos = min_pos; // Фиксируем позицию в единственной доступной точке.
*dir = 0; // Останавливаем движение по этой оси. *dir = 0; // Останавливаем движение по этой оси.
return; // Завершаем обработку оси. return; // Завершаем обработку оси.
} // Конец обработки вырожденного диапазона. }
*pos += *dir; // Двигаем объект на 1 пиксель по текущему направлению. *pos += *dir; // Двигаем объект на 1 пиксель по текущему направлению.
if (*pos < min_pos) // Проверяем удар о минимальную границу (верх/лево). if (*pos < min_pos) // Проверяем удар о минимальную границу (верх/лево).
{ // Начало отражения от минимальной границы. {
*pos = min_pos + (min_pos - *pos); // Зеркально отражаем координату внутрь диапазона. *pos = min_pos + (min_pos - *pos); // Зеркально отражаем координату внутрь диапазона.
*dir = -*dir; // Инвертируем направление движения. *dir = -*dir; // Инвертируем направление движения.
} // Конец отражения от минимальной границы. }
else if (*pos > max_pos) // Проверяем удар о максимальную границу (низ/право). else if (*pos > max_pos) // Проверяем удар о максимальную границу (низ/право).
{ // Начало отражения от максимальной границы. {
*pos = max_pos - (*pos - max_pos); // Зеркально отражаем координату внутрь диапазона. *pos = max_pos - (*pos - max_pos); // Зеркально отражаем координату внутрь диапазона.
*dir = -*dir; // Инвертируем направление движения. *dir = -*dir; // Инвертируем направление движения.
} // Конец отражения от максимальной границы. }
} // Конец функции обновления координаты. }
static void on_frame_done(void) {} // Callback завершения DMA-кадра оставлен пустым (логика в main). static void on_frame_done(void) {} // Callback завершения DMA-кадра оставлен пустым (логика в main).
@@ -100,19 +100,19 @@ int main()
render_ctx_t rc; // Контекст рендера, который будет привязываться к текущему буферу кадра. render_ctx_t rc; // Контекст рендера, который будет привязываться к текущему буферу кадра.
while (1) // Бесконечный основной цикл приложения. while (1) // Бесконечный основной цикл приложения.
{ // Начало тела основного цикла. {
display_poll(); // Обрабатываем внутренние события дисплейного движка (например, frame_done flag). display_poll(); // Обрабатываем внутренние события дисплейного движка (например, frame_done flag).
if (!frame_tick_due) // Если тик таймера еще не пришел. if (!frame_tick_due) // Если тик таймера еще не пришел.
{ // Начало ветки "тика нет". {
wait_for_irq(); // Спим до прерывания, чтобы не крутить пустой busy-loop. wait_for_irq(); // Спим до прерывания, чтобы не крутить пустой busy-loop.
continue; // Переходим к следующей итерации цикла. continue; // Переходим к следующей итерации цикла.
} // Конец ветки "тика нет". }
frame_tick_due = false; // Сбрасываем флаг и разрешаем обработать ровно один кадр на этот тик. frame_tick_due = false; // Сбрасываем флаг и разрешаем обработать ровно один кадр на этот тик.
if (!display_ready()) // Если прошлый кадр все еще передается DMA на дисплей. if (!display_ready()) // Если прошлый кадр все еще передается DMA на дисплей.
{ // Начало ветки "дисплей занят". {
continue; // Пропускаем этот кадр, не накапливая задержку. continue; // Пропускаем этот кадр, не накапливая задержку.
} // Конец ветки "дисплей занят". }
uint16_t* buf = display_get_draw_buffer(); // Получаем буфер, в который разрешено рисовать текущий кадр. uint16_t* buf = display_get_draw_buffer(); // Получаем буфер, в который разрешено рисовать текущий кадр.
render_begin(&rc, buf, WIDTH, HEIGHT); // Привязываем контекст рендера к буферу и размерам экрана. render_begin(&rc, buf, WIDTH, HEIGHT); // Привязываем контекст рендера к буферу и размерам экрана.
@@ -133,10 +133,10 @@ int main()
phase += 0.16f; // Продвигаем фазу синусоиды для плавной анимации. phase += 0.16f; // Продвигаем фазу синусоиды для плавной анимации.
if (phase > 6.2831853f) // Если фаза превысила 2*pi. if (phase > 6.2831853f) // Если фаза превысила 2*pi.
{ // Начало нормализации фазы. {
phase -= 6.2831853f; // Возвращаем фазу в базовый диапазон без скачка формы. phase -= 6.2831853f; // Возвращаем фазу в базовый диапазон без скачка формы.
} // Конец нормализации фазы. }
display_submit(); // Отправляем подготовленный кадр на вывод через DMA. display_submit(); // Отправляем подготовленный кадр на вывод через DMA.
} // Конец тела основного цикла. }
} // Конец функции main. }