Compare commits

...
2 Commits
Author SHA1 Message Date
PoliEcho 47f2766bb8 some housekeeping 2026-08-11 12:51:19 +02:00
PoliEcho 839ea1490a format 2026-08-11 12:14:53 +02:00
3 changed files with 58 additions and 28 deletions
+2 -1
View File
@@ -8,4 +8,5 @@ compile_commands.json
.config.*
include/
!scripts/include/
*.o
*.o
test
+17 -1
View File
@@ -63,15 +63,31 @@ config VECTOR_FOLLOW_TRACK_RATE
This option will turn the vector from line into curve.
This is of course be more computationaly expensive.
config AIRCRAFT_RHOMBUS_RADIUS
int "Radius of rhombus or aircraft icon"
range 0 65535
default 8
config CHARACTER_SPACING
int "Spacing between character in pixels"
range 1 255
range 0 255
default 1
config X_TEXT_OFFSET
int "X offset of text from aircraft"
range 0 65535
default 10
config NO_CALLSIGN_IDENTIFICATION
string "Callsign used for aircraft with unknown callsign"
default "UNK"
config EXTRA_INFO
bool "Enable extra information on top of the screen"
default 1
help
Show information like number of tracked aircraft on top of the screen
comment "Receiver configuration"
config FALLBACK_LAT
+39 -26
View File
@@ -17,7 +17,6 @@
#include <iostream>
#include <numbers>
#include <string>
#include <algorithm>
#ifndef CONFIG_AUTOSCALE
constexpr
@@ -95,6 +94,11 @@ int main() {
nlohmann::json aircraft = net::http_get_json(
std::format("{}/aircraft.json", CONFIG_BASE_URL));
if (aircraft != nullptr) {
#ifdef CONFIG_EXTRA_INFO
font::puts(
std::format("Tracking {} aircraft", aircraft["aircraft"].size()),
0, 0, {0xff, 0xff, 0xff});
#endif
for (nlohmann::json &craft : aircraft["aircraft"]) {
uint32_t altitude;
@@ -135,9 +139,9 @@ int main() {
" aircraft with no ground speed or track data detected!\n";
speed = 0;
track = 0;
#ifndef CONFIG_METRIC
#ifndef CONFIG_METRIC
speed_knot = 0;
#endif
#endif
}
draw::color_t color = get_altitude_color(altitude);
try {
@@ -161,34 +165,41 @@ int main() {
// speed in pixels per hour
const float speed_pph = speed * pixels_per_km;
// track in radians
const float track_rad =
std::fmod((track - 90), 360.0f) *
(static_cast<float>(std::numbers::pi) / 180.0f);
#ifdef CONFIG_VECTOR_FOLLOW_TRACK_RATE
{
float track_rate_rads;
try {
track_rate_rads = craft["track_rate"].get<float>() * (static_cast<float>(std::numbers::pi) / 180.0f);
} catch (...) {
std::clog << YELLOW
"[WARNING]" RESET
" aircraft with no track_rate data detected!\n";
{
float track_rate_rads;
try {
track_rate_rads =
craft["track_rate"].get<float>() *
(static_cast<float>(std::numbers::pi) / 180.0f);
} catch (...) {
std::clog
<< YELLOW "[WARNING]" RESET
" aircraft with no track_rate data detected!\n";
track_rate_rads = 0;
}
draw::arc(x_center, y_center,track_rad,speed_pph/3600,track_rate_rads,CONFIG_TIME_BASED_VECTOR_LENGHT*60,color);
}
draw::arc(x_center, y_center, track_rad, speed_pph / 3600,
track_rate_rads, CONFIG_TIME_BASED_VECTOR_LENGHT * 60,
color);
}
#else
// lenght of Time-Based Vector
const float vector_lenght =
(speed_pph / 60) * CONFIG_TIME_BASED_VECTOR_LENGHT;
draw::line(x_center, y_center,
std::clamp(x_center + (vector_lenght * std::cos(track_rad)),0.0f, static_cast<float>(UINT16_MAX)),
std::clamp(y_center + (vector_lenght * std::sin(track_rad)),0.0f,static_cast<float>(UINT16_MAX)), color);
// lenght of Time-Based Vector
const float vector_lenght =
(speed_pph / 60) * CONFIG_TIME_BASED_VECTOR_LENGHT;
draw::line(
x_center, y_center,
std::clamp(x_center + (vector_lenght * std::cos(track_rad)),
0.0f, static_cast<float>(UINT16_MAX)),
std::clamp(y_center + (vector_lenght * std::sin(track_rad)),
0.0f, static_cast<float>(UINT16_MAX)),
color);
#endif
draw::rhombus(x_center, y_center, 8 /*TODO: remove magic*/,
draw::rhombus(x_center, y_center, CONFIG_AIRCRAFT_RHOMBUS_RADIUS,
color);
{
@@ -201,8 +212,9 @@ int main() {
callsign = CONFIG_NO_CALLSIGN_IDENTIFICATION;
}
// print some info
font::puts(callsign, x_center + 10 /*TODO: remove magic*/,
y_center, color);
font::puts(callsign, x_center + CONFIG_X_TEXT_OFFSET,
y_center - (FONT_HEIGHT + CONFIG_CHARACTER_SPACING),
color);
font::puts(std::to_string(static_cast<uint16_t>(
#ifdef CONFIG_METRIC
speed
@@ -211,10 +223,11 @@ int main() {
#endif
)) +
SPEED_UNIT,
x_center + 10 /*TODO: remove magic*/,
y_center + FONT_HEIGHT + CONFIG_CHARACTER_SPACING,
x_center + CONFIG_X_TEXT_OFFSET, y_center, color);
font::puts(std::to_string(altitude) + ALTITUDE_UNIT,
x_center + CONFIG_X_TEXT_OFFSET,
y_center + (FONT_HEIGHT + CONFIG_CHARACTER_SPACING),
color);
font::puts(std::to_string(altitude) + ALTITUDE_UNIT, x_center + 10 /*TODO: remove magic*/, y_center + (FONT_HEIGHT + CONFIG_CHARACTER_SPACING)*2,color);
}
} catch (...) {
std::clog << YELLOW "[WARNING]" RESET