mirror of https://github.com/ArduPilot/ardupilot
AP_OSD: allow size of SITL OSD to be set with parameters
This commit is contained in:
parent
feb8c3be67
commit
17a61ab14b
|
@ -27,6 +27,7 @@
|
||||||
#include <AP_HAL/Semaphores.h>
|
#include <AP_HAL/Semaphores.h>
|
||||||
#include <AP_HAL/Scheduler.h>
|
#include <AP_HAL/Scheduler.h>
|
||||||
#include <AP_ROMFS/AP_ROMFS.h>
|
#include <AP_ROMFS/AP_ROMFS.h>
|
||||||
|
#include <SITL/SITL.h>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
@ -100,7 +101,7 @@ void AP_OSD_SITL::write(uint8_t x, uint8_t y, const char* text)
|
||||||
WITH_SEMAPHORE(mutex);
|
WITH_SEMAPHORE(mutex);
|
||||||
|
|
||||||
while ((x < video_cols) && (*text != 0)) {
|
while ((x < video_cols) && (*text != 0)) {
|
||||||
buffer[y][x] = *text;
|
getbuffer(buffer, y, x) = *text;
|
||||||
++text;
|
++text;
|
||||||
++x;
|
++x;
|
||||||
}
|
}
|
||||||
|
@ -110,7 +111,7 @@ void AP_OSD_SITL::clear(void)
|
||||||
{
|
{
|
||||||
AP_OSD_Backend::clear();
|
AP_OSD_Backend::clear();
|
||||||
WITH_SEMAPHORE(mutex);
|
WITH_SEMAPHORE(mutex);
|
||||||
memset(buffer, 0, sizeof(buffer));
|
memset(buffer, 0, video_cols*video_lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AP_OSD_SITL::flush(void)
|
void AP_OSD_SITL::flush(void)
|
||||||
|
@ -207,6 +208,10 @@ AP_OSD_Backend *AP_OSD_SITL::probe(AP_OSD &osd)
|
||||||
AP_OSD_SITL::AP_OSD_SITL(AP_OSD &osd):
|
AP_OSD_SITL::AP_OSD_SITL(AP_OSD &osd):
|
||||||
AP_OSD_Backend(osd)
|
AP_OSD_Backend(osd)
|
||||||
{
|
{
|
||||||
|
const auto *_sitl = AP::sitl();
|
||||||
|
video_lines = _sitl->osd_rows;
|
||||||
|
video_cols = _sitl->osd_columns;
|
||||||
|
buffer = (uint8_t *)malloc(video_lines*video_cols);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // WITH_SITL_OSD
|
#endif // WITH_SITL_OSD
|
||||||
|
|
|
@ -72,14 +72,19 @@ private:
|
||||||
// setup to match MAX7456 layout
|
// setup to match MAX7456 layout
|
||||||
static const uint8_t char_width = 12;
|
static const uint8_t char_width = 12;
|
||||||
static const uint8_t char_height = 18;
|
static const uint8_t char_height = 18;
|
||||||
static const uint8_t video_lines = 16; // PAL
|
uint8_t video_lines;
|
||||||
static const uint8_t video_cols = 30;
|
uint8_t video_cols;
|
||||||
static const uint8_t char_spacing = 0;
|
static const uint8_t char_spacing = 0;
|
||||||
|
|
||||||
// scaling factor to make it easier to read
|
// scaling factor to make it easier to read
|
||||||
static const uint8_t char_scale = 2;
|
static const uint8_t char_scale = 2;
|
||||||
|
|
||||||
uint8_t buffer[video_lines][video_cols];
|
// get a byte from a buffer
|
||||||
|
uint8_t &getbuffer(uint8_t *buf, uint8_t y, uint8_t x) const {
|
||||||
|
return buf[y*uint32_t(video_cols) + x];
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t *buffer;
|
||||||
|
|
||||||
void update_thread();
|
void update_thread();
|
||||||
static void *update_thread_start(void *obj);
|
static void *update_thread_start(void *obj);
|
||||||
|
|
Loading…
Reference in New Issue