107 lines
2.7 KiB
C++
107 lines
2.7 KiB
C++
#include "Utils.h"
|
|
|
|
#include <ctype.h>
|
|
|
|
#include <tt_app_alertdialog.h>
|
|
|
|
void crash(const char* const message) {
|
|
tt_app_alertdialog_start("RadioSet has crashed!", message, nullptr, 0);
|
|
}
|
|
|
|
void crashassert(bool assertion, const char* const message) {
|
|
if (!assertion) {
|
|
crash(message);
|
|
}
|
|
}
|
|
|
|
void hexdump(Str& out, const uint8_t* data, size_t size) {
|
|
out.clear();
|
|
for (size_t i = 0; i < size; ++i) {
|
|
out.appendf("%02X ", data[i]);
|
|
}
|
|
}
|
|
|
|
bool isPrintable(const uint8_t* data, size_t size) {
|
|
for (size_t i = 0; i < (size - 1); ++i) {
|
|
if (!isprint(data[i])) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
char *const toString(Modulation m) {
|
|
switch (m) {
|
|
case MODULATION_NONE:
|
|
return "None";
|
|
case MODULATION_LORA:
|
|
return "LoRa";
|
|
case MODULATION_FSK:
|
|
return "FSK";
|
|
case MODULATION_LRFHSS:
|
|
return "LR-FHSS";
|
|
default:
|
|
break;
|
|
}
|
|
crash("Unknown modulation passed.");
|
|
return "Unknown";
|
|
}
|
|
|
|
char *const toString(RadioParameter p) {
|
|
switch (p) {
|
|
case RADIO_POWER:
|
|
return "Power";
|
|
case RADIO_BOOSTEDGAIN:
|
|
return "RX Boosted Gain";
|
|
case RADIO_FREQUENCY:
|
|
return "Center Frequency";
|
|
case RADIO_BANDWIDTH:
|
|
return "Bandwidth";
|
|
case RADIO_SPREADFACTOR:
|
|
return "Spread Factor";
|
|
case RADIO_CODINGRATE:
|
|
return "Coding Rate";
|
|
case RADIO_SYNCWORD:
|
|
return "Sync Word";
|
|
case RADIO_PREAMBLES:
|
|
return "Preamble Length";
|
|
case RADIO_FREQDIV:
|
|
return "Frequency Deviation";
|
|
case RADIO_DATARATE:
|
|
return "Data Rate";
|
|
case RADIO_ADDRWIDTH:
|
|
return "Address Width";
|
|
case RADIO_NARROWGRID:
|
|
return "Narrow Grid";
|
|
default:
|
|
break;
|
|
}
|
|
crash("Unknown parameter passed.");
|
|
return "Unknown";
|
|
}
|
|
|
|
void clownvomit(lv_obj_t *obj) {
|
|
static auto rng = []() {
|
|
static int color = 0xCCC0FE;
|
|
const int a = 4711;
|
|
const int m = 0x10001;
|
|
color = (a * color) % m;
|
|
return color;
|
|
};
|
|
|
|
const int darken = 0x0E0E0E;
|
|
const int lighten = 0xFEFEFE;
|
|
lv_obj_set_style_bg_color(obj, lv_color_hex(rng() & darken), 0);
|
|
|
|
uint32_t i;
|
|
for(i = 0; i < lv_obj_get_child_count(obj); i++) {
|
|
auto light = lv_color_lighten(lv_color_hex(rng()), 100);
|
|
auto dark = lv_color_darken(lv_color_hex(rng()), 100);
|
|
lv_obj_t * child = lv_obj_get_child(obj, i);
|
|
lv_obj_set_style_bg_color(child, dark, 0);
|
|
lv_obj_set_style_border_color(child, light, 0);
|
|
lv_obj_set_style_border_width(child, 1, 0);
|
|
clownvomit(child);
|
|
}
|
|
}
|