You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
992 B
51 lines
992 B
#pragma once |
|
|
|
#ifdef WITH_SITL_OSD |
|
|
|
#include "Display.h" |
|
#include "Display_Backend.h" |
|
|
|
#ifdef HAVE_SFML_GRAPHICS_H |
|
#include <SFML/Graphics.h> |
|
#else |
|
#include <SFML/Graphics.hpp> |
|
#endif |
|
|
|
|
|
class Display_SITL: public Display_Backend { |
|
|
|
public: |
|
|
|
static Display_SITL *probe(); |
|
|
|
void hw_update() override; |
|
void set_pixel(uint16_t x, uint16_t y) override; |
|
void clear_pixel(uint16_t x, uint16_t y) override; |
|
void clear_screen() override; |
|
|
|
protected: |
|
|
|
Display_SITL(); |
|
~Display_SITL() override; |
|
|
|
private: |
|
|
|
static constexpr const uint16_t COLUMNS = 132; |
|
static constexpr const uint8_t ROWS = 64; |
|
static constexpr const uint8_t SCALE = 4; // make it more readable |
|
|
|
bool hw_init() override; |
|
|
|
void _timer(); |
|
|
|
uint8_t _displaybuffer[COLUMNS * ROWS]; |
|
bool _need_hw_update; |
|
|
|
static void *update_thread_start(void *obj); |
|
void update_thread(void); |
|
sf::RenderWindow *w; |
|
pthread_t thread; |
|
HAL_Semaphore mutex; |
|
}; |
|
|
|
#endif // WITH_SITL_OSD
|
|
|