rcbench
Servo and ESC test bench: panel, IOmcu and shared C
Loading...
Searching...
No Matches
panel_frame.c File Reference

The render loop, from app_main once the tasks are running. More...

#include <stdatomic.h>
#include <string.h>
#include "esp_timer.h"
#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"
#include "freertos/semphr.h"
#include "busfault_screen.h"
#include "display.h"
#include "esc_stick_panel.h"
#include "flash_gate.h"
#include "knob.h"
#include "motor_screen.h"
#include "outputs_pages.h"
#include "outputs_screen.h"
#include "overview_screen.h"
#include "panel.h"
#include "panel_main.h"
#include "panel_perf.h"
#include "panel_trial.h"
#include "pdmini.h"
#include "picker_screen.h"
#include "sensors_rows.h"
#include "servo_link.h"
#include "servo_screen.h"
#include "settings.h"
#include "settings_screen.h"
#include "splash_screen.h"
#include "supply_screen.h"
#include "touch.h"
#include "ui_band.h"
#include "ui_screen.h"
#include "ui_text.h"

Macros

#define LINK_LOST_SCREEN_MS   4000u
 A link that was up and stopped, said on the panel rather than on a console.

Functions

gfx_canvas_t * panel_canvas (void)
 The canvas the next frame is drawn on (display_canvas()), after what Screen rotation asks of the UI: a whole repaint when the canvas changed between a logical buffer and a frame buffer, and the band's alert when 180° fell back to NORMAL. Every loop that renders takes its canvas here, on the task that flips (panel_frame.c).
void panel_frame_loop (void)
 The render loop (panel_main.h). Does not return.

Detailed Description

The render loop, from app_main once the tasks are running.

What the control task published goes into the screens; touch, into the router; the screens' commands, back to the control task; then one frame is drawn and flipped, and panel_perf.c accounts it for the console: every 300 frames the frame rate, the panel's own refresh and the touch losses, then the draw, wait and turn times on the screen shown, and every stack and the internal heap whose lowest figure fell. panel_frame_loop() does not return.

SPDX-License-Identifier: MIT

Macro Definition Documentation

◆ LINK_LOST_SCREEN_MS

#define LINK_LOST_SCREEN_MS   4000u

A link that was up and stopped, said on the panel rather than on a console.

The panel has no console an operator can reach while the bench runs: the board sits beside the bench with no computer on its USB (Universal Serial Bus) sockets. A fault that only a console can explain is one nobody in the field can report.

Four seconds, not one: the link drops for a poll now and then, and a screen that took over on every blip would be a screen operators learn to dismiss.

Function Documentation

◆ panel_canvas()

gfx_canvas_t * panel_canvas ( void )

The canvas the next frame is drawn on (display_canvas()), after what Screen rotation asks of the UI: a whole repaint when the canvas changed between a logical buffer and a frame buffer, and the band's alert when 180° fell back to NORMAL. Every loop that renders takes its canvas here, on the task that flips (panel_frame.c).

Returns
the canvas

◆ panel_frame_loop()

void panel_frame_loop ( void )

The render loop (panel_main.h). Does not return.

The render loop. Does not return.

The render loop (panel_main.h). Does not return.