chore(radio): Cleanup startup code, fix throttle warning led color, startup haptic option (#4027)

This commit is contained in:
philmoz
2023-11-05 18:53:26 +10:00
committed by GitHub
parent 4bdbf74327
commit 7190f00374
48 changed files with 448 additions and 541 deletions
-6
View File
@@ -9,8 +9,6 @@ set(PCB "X9D+" CACHE STRING "Radio type, one of: ${PCB_TYPES}")
set_property(CACHE PCB PROPERTY STRINGS ${PCB_TYPES})
set(TRANSLATIONS "EN" CACHE STRING "Radio language, one of: ${RADIO_LANGUAGES}")
set_property(CACHE TRANSLATIONS PROPERTY STRINGS ${RADIO_LANGUAGES})
set(SPLASH "DEFAULT" CACHE STRING "Splash (DEFAULT/OFF/FRSKY)")
set_property(CACHE SPLASH PROPERTY STRINGS DEFAULT OFF FRSKY)
set(DEFAULT_MODE "" CACHE STRING "Default sticks mode")
set(POPUP_LEVEL 2 CACHE STRING "Popup level")
@@ -269,10 +267,6 @@ if(DANGEROUS_MODULE_FUNCTIONS)
add_definitions(-DDANGEROUS_MODULE_FUNCTIONS)
endif()
if(NOT SPLASH STREQUAL OFF)
add_definitions(-DSPLASH)
endif()
if(NOT DEFAULT_MODE STREQUAL "")
add_definitions(-DDEFAULT_MODE=${DEFAULT_MODE})
endif()
+1
View File
@@ -24,6 +24,7 @@
#include "keys.h"
#include "common/stdlcd/menus.h"
#include "common/stdlcd/features.h"
#if defined(PCBTARANIS)
#define NAVIGATION_LINE_BY_LINE 0x40
+2 -9
View File
@@ -38,13 +38,6 @@ void menuRadioDiagAnalogs(event_t event)
static int viewpage = ANAVIEW_FIRST;
// TODO enum
#if defined(TX_CAPACITY_MEASUREMENT)
#define ANAS_ITEMS_COUNT 3
#else
#define ANAS_ITEMS_COUNT 1
#endif
switch (event) {
case EVT_KEY_FIRST(KEY_RIGHT):
case EVT_KEY_BREAK(KEY_PAGEDN):
@@ -74,11 +67,11 @@ void menuRadioDiagAnalogs(event_t event)
switch (viewpage) {
case (ANAVIEW_CALIB):
SIMPLE_SUBMENU(STR_MENU_RADIO_ANALOGS_CALIB,
HEADER_LINE+ANAS_ITEMS_COUNT);
HEADER_LINE+1);
break;
case (ANAVIEW_RAWLOWFPS):
SIMPLE_SUBMENU(STR_MENU_RADIO_ANALOGS_RAWLOWFPS,
HEADER_LINE+ANAS_ITEMS_COUNT);
HEADER_LINE+1);
break;
}
+1 -18
View File
@@ -38,12 +38,6 @@ const unsigned char sticks[] = {
value = editChoice(RADIO_SETUP_2ND_COLUMN, y, nullptr, nullptr, tmp, -2, +2, attr, event); \
}
#if defined(SPLASH)
#define CASE_SPLASH_PARAM(x) x,
#else
#define CASE_SPLASH_PARAM(x)
#endif
#if defined(BATTGRAPH)
#define CASE_BATTGRAPH(x) x,
#else
@@ -83,7 +77,6 @@ enum {
CASE_IMU(ITEM_RADIO_SETUP_IMU_OFFSET)
ITEM_RADIO_SETUP_ALARMS_LABEL,
ITEM_RADIO_SETUP_BATTERY_WARNING,
CASE_CAPACITY(ITEM_RADIO_SETUP_CAPACITY_WARNING)
ITEM_RADIO_SETUP_INACTIVITY_ALARM,
ITEM_RADIO_SETUP_MEMORY_WARNING,
ITEM_RADIO_SETUP_ALARM_WARNING,
@@ -188,7 +181,7 @@ void menuRadioSetup(event_t event)
CASE_IMU(LABEL(IMU))
CASE_IMU(0)
CASE_IMU(0)
LABEL(ALARMS), 0, CASE_CAPACITY(0)
LABEL(ALARMS), 0,
0, 0, 0, 0, /* ITEM_RADIO_SETUP_INACTIVITY_ALARM ITEM_RADIO_SETUP_MEMORY_WARNING ITEM_RADIO_SETUP_ALARM_WARNING ITEM_RADIO_SETUP_RSSI_POWEROFF_ALARM */
CASE_BACKLIGHT(LABEL(BACKLIGHT))
CASE_BACKLIGHT(0)
@@ -526,14 +519,6 @@ void menuRadioSetup(event_t event)
break;
}
#if defined(TX_CAPACITY_MEASUREMENT)
case ITEM_RADIO_SETUP_CAPACITY_WARNING:
lcdDrawTextAlignedLeft(y, STR_CAPAWARNING);
drawValueWithUnit(LCD_W-2, y, g_eeGeneral.mAhWarn*50, UNIT_MAH, attr|RIGHT) ;
if(attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.mAhWarn, 0, 100);
break;
#endif
case ITEM_RADIO_SETUP_INACTIVITY_ALARM:
lcdDrawText(INDENT_WIDTH, y, STR_INACTIVITYALARM);
lcdDrawNumber(LCD_W-7, y, g_eeGeneral.inactivityTimer, attr|RIGHT);
@@ -588,7 +573,6 @@ void menuRadioSetup(event_t event)
break;
#endif
#if defined(SPLASH)
case ITEM_RADIO_SETUP_DISABLE_SPLASH:
{
lcdDrawTextAlignedLeft(y, STR_SPLASHSCREEN);
@@ -602,7 +586,6 @@ void menuRadioSetup(event_t event)
if (attr) g_eeGeneral.splashMode = -checkIncDecGen(event, -g_eeGeneral.splashMode, -3, 4);
break;
}
#endif
case ITEM_RADIO_SETUP_START_SOUND:
lcdDrawTextAlignedLeft(y, STR_PLAY_HELLO);
-2
View File
@@ -21,7 +21,6 @@
#include "opentx.h"
#if defined(SPLASH)
const unsigned char splashdata[] = {
'S','P','S',0,
#include "bitmaps/128x64/splash.lbm"
@@ -35,4 +34,3 @@ void drawSplash()
lcdDraw1bitBitmap(0, 0, splash_lbm, 0, 0);
lcdRefresh();
}
#endif
-17
View File
@@ -169,25 +169,8 @@ void menuStatisticsDebug(event_t event)
break;
}
uint8_t y = FH + 1;
#if defined(TX_CAPACITY_MEASUREMENT)
// current
lcdDrawTextAlignedLeft(y, STR_CPU_CURRENT);
drawValueWithUnit(MENU_DEBUG_COL1_OFS, y, getCurrent(), UNIT_MILLIAMPS, LEFT);
uint32_t current_scale = 488 + g_eeGeneral.txCurrentCalibration;
lcdDrawChar(MENU_DEBUG_COL2_OFS, y, '>');
drawValueWithUnit(MENU_DEBUG_COL2_OFS+FW+1, y, Current_max*10*current_scale/8192, UNIT_RAW, LEFT);
y += FH;
// consumption
lcdDrawTextAlignedLeft(y, STR_CPU_MAH);
drawValueWithUnit(MENU_DEBUG_COL1_OFS, y, g_eeGeneral.mAhUsed + Current_used*current_scale/8192/36, UNIT_MAH, LEFT|PREC1);
y += FH;
#endif
lcdDrawTextAlignedLeft(y, STR_FREE_MEM_LABEL);
lcdDrawNumber(MENU_DEBUG_COL1_OFS, y, availableMemory(), LEFT);
lcdDrawText(lcdLastRightPos+FW, y, STR_BYTES);
+1
View File
@@ -24,6 +24,7 @@
#include "keys.h"
#include "common/stdlcd/menus.h"
#include "common/stdlcd/features.h"
inline bool isRadioMenuDisplayed()
{
-8
View File
@@ -41,12 +41,6 @@ const unsigned char sticks[] = {
value = editChoice(RADIO_SETUP_2ND_COLUMN, y, nullptr, nullptr, tmp, -2, +2, attr, event); \
}
#if defined(SPLASH)
#define CASE_SPLASH_PARAM(x) x,
#else
#define CASE_SPLASH_PARAM(x)
#endif
enum MenuRadioSetupItems {
CASE_RTCLOCK(ITEM_RADIO_SETUP_DATE)
CASE_RTCLOCK(ITEM_RADIO_SETUP_TIME)
@@ -535,7 +529,6 @@ void menuRadioSetup(event_t event)
break;
#endif
#if defined(SPLASH)
case ITEM_RADIO_SETUP_DISABLE_SPLASH:
lcdDrawTextAlignedLeft(y, STR_SPLASHSCREEN);
if (SPLASH_NEEDED()) {
@@ -547,7 +540,6 @@ void menuRadioSetup(event_t event)
}
if (attr) g_eeGeneral.splashMode = -checkIncDecGen(event, -g_eeGeneral.splashMode, -3, 4);
break;
#endif
case ITEM_RADIO_SETUP_START_SOUND:
lcdDrawTextAlignedLeft(y, STR_PLAY_HELLO);
-2
View File
@@ -21,7 +21,6 @@
#include "opentx.h"
#if defined(SPLASH)
#define MAXIMUM_SPLASH_IMAGE_SIZE 3072
const struct {
const uint8_t __magic_prefix[4] = { 'S','P','S',0 };
@@ -39,4 +38,3 @@ void drawSplash()
lcdDrawRleBitmap(0, 0, splash_lbm);
lcdRefresh();
}
#endif
+49 -41
View File
@@ -49,36 +49,63 @@ FullScreenDialog::FullScreenDialog(
bringToTop();
init();
build();
lv_obj_add_event_cb(lvobj, FullScreenDialog::long_pressed, LV_EVENT_LONG_PRESSED, nullptr);
lv_obj_add_event_cb(lvobj, FullScreenDialog::on_draw, LV_EVENT_DRAW_MAIN_BEGIN, nullptr);
}
void FullScreenDialog::init()
void FullScreenDialog::on_draw(lv_event_t* e)
{
if (!loaded) {
loaded = true;
std::string t;
if (type == WARNING_TYPE_ALERT) {
#if defined(TRANSLATIONS_FR) || defined(TRANSLATIONS_IT) || defined(TRANSLATIONS_CZ)
t = std::string(STR_WARNING) + "\n" + title;
#else
t = title + "\n" + STR_WARNING;
#endif
} else if (!title.empty()) {
t = title;
auto dlg = (FullScreenDialog*)lv_obj_get_user_data(lv_event_get_target(e));
if (dlg) {
if (!dlg->loaded) {
dlg->loaded = true;
dlg->delayedInit();
}
new StaticText(this,
rect_t{ALERT_TITLE_LEFT, ALERT_TITLE_TOP, LCD_W - ALERT_TITLE_LEFT - PAGE_PADDING, LCD_H - ALERT_TITLE_TOP - PAGE_PADDING},
t.c_str(), 0, COLOR_THEME_WARNING | FONT(XL));
}
}
messageLabel = new StaticText(this,
rect_t{ALERT_MESSAGE_LEFT, ALERT_MESSAGE_TOP, LCD_W - ALERT_MESSAGE_LEFT - PAGE_PADDING, LCD_H - ALERT_MESSAGE_TOP - PAGE_PADDING},
message.c_str(), 0, COLOR_THEME_PRIMARY1 | FONT(BOLD));
void FullScreenDialog::build()
{
std::string t;
if (type == WARNING_TYPE_ALERT) {
#if defined(TRANSLATIONS_FR) || defined(TRANSLATIONS_IT) || defined(TRANSLATIONS_CZ)
t = std::string(STR_WARNING) + "\n" + title;
#else
t = title + "\n" + STR_WARNING;
#endif
} else if (!title.empty()) {
t = title;
}
new StaticText(this,
rect_t{ALERT_TITLE_LEFT, ALERT_TITLE_TOP, LCD_W - ALERT_TITLE_LEFT - PAGE_PADDING, LCD_H - ALERT_TITLE_TOP - PAGE_PADDING},
t.c_str(), 0, COLOR_THEME_WARNING | FONT(XL));
if (!action.empty()) {
auto btn = new TextButton(this, { (LCD_W - 280) / 2, LCD_H - 48, 280, 40 }, action.c_str(),
messageLabel = new StaticText(this,
rect_t{ALERT_MESSAGE_LEFT, ALERT_MESSAGE_TOP, LCD_W - ALERT_MESSAGE_LEFT - PAGE_PADDING, LCD_H - ALERT_MESSAGE_TOP - PAGE_PADDING},
message.c_str(), 0, COLOR_THEME_PRIMARY1 | FONT(BOLD));
if (!action.empty()) {
auto btn = new TextButton(this, { (LCD_W - 280) / 2, LCD_H - 48, 280, 40 }, action.c_str(),
[=]() {
closeDialog();
return 0;
}, COLOR_THEME_PRIMARY1 | FONT(BOLD));
lv_obj_set_style_bg_color(btn->getLvObj(), makeLvColor(COLOR_THEME_SECONDARY3), 0);
lv_obj_set_style_bg_opa(btn->getLvObj(), LV_OPA_COVER, 0);
lv_obj_set_style_text_color(btn->getLvObj(), makeLvColor(COLOR_THEME_PRIMARY1), 0);
} else {
if (type == WARNING_TYPE_CONFIRM) {
auto btn = new TextButton(this, { LCD_W / 3 - 50, LCD_H - 48, 100, 40 }, STR_EXIT,
[=]() {
deleteLater();
return 0;
}, COLOR_THEME_PRIMARY1 | FONT(BOLD));
lv_obj_set_style_bg_color(btn->getLvObj(), makeLvColor(COLOR_THEME_SECONDARY3), 0);
lv_obj_set_style_bg_opa(btn->getLvObj(), LV_OPA_COVER, 0);
lv_obj_set_style_text_color(btn->getLvObj(), makeLvColor(COLOR_THEME_PRIMARY1), 0);
btn = new TextButton(this, { LCD_W * 2 / 3 - 50, LCD_H - 48, 100, 40 }, STR_OK,
[=]() {
closeDialog();
return 0;
@@ -86,25 +113,6 @@ void FullScreenDialog::init()
lv_obj_set_style_bg_color(btn->getLvObj(), makeLvColor(COLOR_THEME_SECONDARY3), 0);
lv_obj_set_style_bg_opa(btn->getLvObj(), LV_OPA_COVER, 0);
lv_obj_set_style_text_color(btn->getLvObj(), makeLvColor(COLOR_THEME_PRIMARY1), 0);
} else {
if (type == WARNING_TYPE_CONFIRM) {
auto btn = new TextButton(this, { LCD_W / 3 - 50, LCD_H - 48, 100, 40 }, STR_EXIT,
[=]() {
deleteLater();
return 0;
}, COLOR_THEME_PRIMARY1 | FONT(BOLD));
lv_obj_set_style_bg_color(btn->getLvObj(), makeLvColor(COLOR_THEME_SECONDARY3), 0);
lv_obj_set_style_bg_opa(btn->getLvObj(), LV_OPA_COVER, 0);
lv_obj_set_style_text_color(btn->getLvObj(), makeLvColor(COLOR_THEME_PRIMARY1), 0);
btn = new TextButton(this, { LCD_W * 2 / 3 - 50, LCD_H - 48, 100, 40 }, STR_OK,
[=]() {
closeDialog();
return 0;
}, COLOR_THEME_PRIMARY1 | FONT(BOLD));
lv_obj_set_style_bg_color(btn->getLvObj(), makeLvColor(COLOR_THEME_SECONDARY3), 0);
lv_obj_set_style_bg_opa(btn->getLvObj(), LV_OPA_COVER, 0);
lv_obj_set_style_text_color(btn->getLvObj(), makeLvColor(COLOR_THEME_PRIMARY1), 0);
}
}
}
}
+3 -1
View File
@@ -79,9 +79,11 @@ class FullScreenDialog : public Window
bool loaded = false;
StaticText* messageLabel;
virtual void init();
virtual void delayedInit() {}
void build();
static void long_pressed(lv_event_t* e);
static void on_draw(lv_event_t* e);
};
#endif // _FULLSCREEN_DIALOG_H_
+51 -2
View File
@@ -19,7 +19,11 @@
* GNU General Public License for more details.
*/
#if defined(SPLASH)
#include "opentx.h"
#include "inactivity_timer.h"
#include "stamp.h"
extern void checkSpeakerVolume();
#include "opentx.h"
#include "stamp.h"
@@ -125,4 +129,49 @@ void drawSplash()
MainWindow::instance()->setActiveScreen();
}
#endif
static tmr10ms_t splashStartTime = 0;
void startSplash()
{
if (!UNEXPECTED_SHUTDOWN()) {
splashStartTime = get_tmr10ms();
drawSplash();
}
}
void waitSplash()
{
// Handle color splash screen
if (splashStartTime) {
#if defined(SIMU)
// Simulator - inputsMoved() returns true immediately without this!
RTOS_WAIT_TICKS(30);
#endif // defined(SIMU)
splashStartTime += SPLASH_TIMEOUT;
while (splashStartTime > get_tmr10ms()) {
WDG_RESET();
checkSpeakerVolume();
checkBacklight();
RTOS_WAIT_TICKS(10);
auto evt = getEvent();
if (evt || inactivityCheckInputs()) {
if (evt)
killEvents(evt);
break;
}
#if defined(SIMU)
// Allow simulator to exit if closed while splash showing
uint32_t pwr_check = pwrCheck();
if (pwr_check == e_power_off) {
break;
}
#endif // defined(SIMU)
}
// Reset timer so special/global functions set to !1x don't get triggered
START_SILENCE_PERIOD();
}
}
+27 -20
View File
@@ -26,33 +26,30 @@ SwitchWarnDialog::SwitchWarnDialog() :
FullScreenDialog(WARNING_TYPE_ALERT, STR_SWITCHWARN, "", STR_PRESS_ANY_KEY_TO_SKIP)
{
last_bad_switches = 0xff;
bad_pots = 0;
last_bad_pots = 0x0;
setCloseCondition(std::bind(&SwitchWarnDialog::warningInactive, this));
}
void SwitchWarnDialog::init()
void SwitchWarnDialog::delayedInit()
{
if (!loaded) {
FullScreenDialog::init();
lv_label_set_long_mode(messageLabel->getLvObj(), LV_LABEL_LONG_DOT);
}
lv_label_set_long_mode(messageLabel->getLvObj(), LV_LABEL_LONG_DOT);
AUDIO_ERROR_MESSAGE(AU_SWITCH_ALERT);
}
bool SwitchWarnDialog::warningInactive()
{
uint16_t bad_pots;
if (!isSwitchWarningRequired(bad_pots))
return true;
if (last_bad_switches != switches_states || last_bad_pots != bad_pots) {
// Redraw to update list of switches that need attention
invalidate();
if (last_bad_switches == 0xff || last_bad_pots & 0x7ff) {
AUDIO_ERROR_MESSAGE(AU_SWITCH_ALERT);
}
}
last_bad_pots = bad_pots;
last_bad_switches = switches_states;
last_bad_pots = bad_pots;
last_bad_switches = switches_states;
}
return false;
}
@@ -61,14 +58,6 @@ void SwitchWarnDialog::paint(BitmapBuffer * dc)
{
if (!running) return;
FullScreenDialog::paint(dc);
}
void SwitchWarnDialog::checkEvents()
{
if (!running) return;
FullScreenDialog::checkEvents();
if (deleted()) return;
std::string warn_txt;
swarnstate_t states = g_model.switchWarningState;
@@ -98,3 +87,21 @@ void SwitchWarnDialog::checkEvents()
messageLabel->setText(warn_txt);
}
ThrottleWarnDialog::ThrottleWarnDialog(const char* msg) :
FullScreenDialog(WARNING_TYPE_ALERT, TR_THROTTLE_UPPERCASE, msg, STR_PRESS_ANY_KEY_TO_SKIP)
{
setCloseCondition(std::bind(&ThrottleWarnDialog::warningInactive, this));
}
void ThrottleWarnDialog::delayedInit()
{
lv_label_set_long_mode(messageLabel->getLvObj(), LV_LABEL_LONG_DOT);
AUDIO_ERROR_MESSAGE(AU_THROTTLE_ALERT);
}
bool ThrottleWarnDialog::warningInactive()
{
extern bool isThrottleWarningAlertNeeded();
return !isThrottleWarningAlertNeeded();
}
+15 -6
View File
@@ -19,8 +19,7 @@
* GNU General Public License for more details.
*/
#ifndef _SWITCH_WARN_DIALOG_H_
#define _SWITCH_WARN_DIALOG_H_
#pragma once
#include "fullscreen_dialog.h"
#include "mainwindow.h"
@@ -35,18 +34,28 @@ class SwitchWarnDialog : public FullScreenDialog
std::string getName() const override { return "SwitchWarnDialog"; }
#endif
void checkEvents() override;
void paint(BitmapBuffer* dc) override;
protected:
swarnstate_t last_bad_switches;
uint16_t bad_pots;
uint16_t last_bad_pots;
StaticText* warn_label;
bool warningInactive();
void init() override;
void delayedInit() override;
};
class ThrottleWarnDialog : public FullScreenDialog
{
public:
ThrottleWarnDialog(const char* msg);
#if defined(DEBUG_WINDOWS)
std::string getName() const override { return "ThrottleWarnDialog"; }
#endif
protected:
bool warningInactive();
void delayedInit() override;
};
@@ -17,6 +17,7 @@ set(GUI_SRC
../common/stdlcd/radio_trainer.cpp
../common/stdlcd/view_telemetry.cpp
../common/stdlcd/calibration.cpp
../common/stdlcd/splash.cpp
model_curve_edit.cpp
)
+140
View File
@@ -0,0 +1,140 @@
/*
* Copyright (C) EdgeTX
*
* Based on code named
* opentx - https://github.com/opentx/opentx
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#pragma once
// Macros for B&W menus
#if defined(VARIO)
#define CASE_VARIO(x) x,
#else
#define CASE_VARIO(x)
#endif
#if defined(IMU)
#define CASE_IMU(x) x,
#else
#define CASE_IMU(x)
#endif
#if defined(BACKLIGHT_GPIO)
#define CASE_BACKLIGHT(x) x,
#else
#define CASE_BACKLIGHT(x)
#endif
#if defined(RTCLOCK)
#define CASE_RTCLOCK(x) x,
#else
#define CASE_RTCLOCK(x)
#endif
#if defined(BUZZER)
#define CASE_BUZZER(x) x,
#else
#define CASE_BUZZER(x)
#endif
#if defined(AUDIO)
#define CASE_AUDIO(x) x,
#else
#define CASE_AUDIO(x)
#endif
#if defined(PWM_BACKLIGHT)
#define CASE_PWM_BACKLIGHT(x) x,
#else
#define CASE_PWM_BACKLIGHT(x)
#endif
#if defined(GPS)
#define CASE_GPS(x) x,
#else
#define CASE_GPS(x)
#endif
#if defined(HAPTIC)
#define CASE_HAPTIC(x) x,
#else
#define CASE_HAPTIC(x)
#endif
#if defined(PWR_BUTTON_PRESS)
#define CASE_PWR_BUTTON_PRESS(x) x,
#else
#define CASE_PWR_BUTTON_PRESS(x)
#endif
#if defined(PXX1)
#define CASE_PXX1(x) x,
#else
#define CASE_PXX1(x)
#endif
#if defined(PXX2)
#define CASE_PXX2(x) x,
#else
#define CASE_PXX2(x)
#endif
#if defined(BLUETOOTH)
#define CASE_BLUETOOTH(x) x,
#else
#define CASE_BLUETOOTH(x)
#endif
#if defined(HELI)
#define CASE_HELI(x) x,
#else
#define CASE_HELI(x)
#endif
#if defined(FLIGHT_MODES)
#define CASE_FLIGHT_MODES(x) x,
#else
#define CASE_FLIGHT_MODES(x)
#endif
#if defined(GVARS)
#define CASE_GVARS(x) x,
#else
#define CASE_GVARS(x)
#endif
#if defined(LUA_MODEL_SCRIPTS)
#define CASE_LUA_MODEL_SCRIPTS(x) x,
#else
#define CASE_LUA_MODEL_SCRIPTS(x)
#endif
#if defined(PCBX9DP) || defined(PCBX9E)
#define CASE_PCBX9E_PCBX9DP(x) x,
#else
#define CASE_PCBX9E_PCBX9DP(x)
#endif
#if defined(SDCARD)
#define CASE_SDCARD(x) x,
#else
#define CASE_SDCARD(x)
#endif
#define CASE_SPLASH_PARAM(x) x,
+76
View File
@@ -0,0 +1,76 @@
/*
* Copyright (C) EdgeTX
*
* Based on code named
* opentx - https://github.com/opentx/opentx
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "opentx.h"
#include "inactivity_timer.h"
void startSplash()
{
}
void waitSplash()
{
// Handle B&W splash screen
#if defined(PWR_BUTTON_PRESS)
bool refresh = false;
#endif
if (SPLASH_NEEDED()) {
resetBacklightTimeout();
drawSplash();
getADC(); // init ADC array
inactivityCheckInputs();
tmr10ms_t tgtime = get_tmr10ms() + SPLASH_TIMEOUT;
while (tgtime > get_tmr10ms()) {
RTOS_WAIT_TICKS(1);
getADC();
if (getEvent() || inactivityCheckInputs())
return;
#if defined(PWR_BUTTON_PRESS)
uint32_t pwr_check = pwrCheck();
if (pwr_check == e_power_off) {
break;
}
else if (pwr_check == e_power_press) {
refresh = true;
}
else if (pwr_check == e_power_on && refresh) {
drawSplash();
refresh = false;
}
#else
if (pwrCheck() == e_power_off) {
return;
}
#endif
checkBacklight();
}
}
}
+7
View File
@@ -85,3 +85,10 @@ int32_t getGVarFieldValuePrec1(int16_t val, int16_t min, int16_t max, int8_t fm)
}
return limit<int>(min*10, val, max*10);
}
void getGVarIncDecRange(int16_t & valMin, int16_t & valMax)
{
int16_t rng = abs(valMax - valMin);
valMin = -rng;
valMax = rng;
}
+11 -12
View File
@@ -19,18 +19,17 @@
* GNU General Public License for more details.
*/
#ifndef _GVARS_H_
#define _GVARS_H_
#pragma once
// GVars have one value per flight mode
#define GVAR_VALUE(gv, fm) g_model.flightModeData[fm].gvars[gv]
#define SET_GVAR_VALUE(idx, phase, value) \
GVAR_VALUE(idx, phase) = value; \
storageDirty(EE_MODEL); \
if (g_model.gvars[idx].popup) { \
gvarLastChanged = idx; \
gvarDisplayTimer = GVAR_DISPLAY_TIME; \
}
// GVars have one value per flight mode
#define GVAR_VALUE(gv, fm) g_model.flightModeData[fm].gvars[gv]
#define SET_GVAR_VALUE(idx, phase, value) \
GVAR_VALUE(idx, phase) = value; \
storageDirty(EE_MODEL); \
if (g_model.gvars[idx].popup) { \
gvarLastChanged = idx; \
gvarDisplayTimer = GVAR_DISPLAY_TIME; \
}
#if defined(GVARS)
uint8_t getGVarFlightMode(uint8_t fm, uint8_t gv);
@@ -72,4 +71,4 @@ constexpr int32_t MIX_WEIGHT_MIN = -500;
constexpr int32_t MIX_OFFSET_MAX = 500;
constexpr int32_t MIX_OFFSET_MIN = -500;
#endif // _GVARS_H_
void getGVarIncDecRange(int16_t & valMin, int16_t & valMax);
+2 -2
View File
@@ -160,7 +160,7 @@ void handleUsbConnection()
if (getSelectedUsbMode() != USB_UNSELECTED_MODE) {
if (getSelectedUsbMode() == USB_MASS_STORAGE_MODE) {
opentxClose(false);
edgeTxClose(false);
}
#if defined(USB_SERIAL)
else if (getSelectedUsbMode() == USB_SERIAL_MODE) {
@@ -177,7 +177,7 @@ void handleUsbConnection()
usbStop();
TRACE("USB stopped");
if (getSelectedUsbMode() == USB_MASS_STORAGE_MODE) {
opentxResume();
edgeTxResume();
pushEvent(EVT_ENTRY);
} else if (getSelectedUsbMode() == USB_SERIAL_MODE) {
serialStop(SP_VCP);
+46 -134
View File
@@ -46,11 +46,11 @@
#if defined(LIBOPENUI)
#include "libopenui.h"
// #include "shutdown_animation.h"
#include "radio_calibration.h"
#include "view_main.h"
#include "view_text.h"
#include "theme.h"
#include "switch_warn_dialog.h"
#include "gui/colorlcd/LvglWrapper.h"
#endif
@@ -59,6 +59,9 @@
#include <malloc.h>
#endif
extern void startSplash();
extern void waitSplash();
RadioData g_eeGeneral;
ModelData g_model;
@@ -69,6 +72,8 @@ Clipboard clipboard;
GlobalData globalData;
uint32_t maxMixerDuration; // microseconds
constexpr uint8_t HEART_TIMER_10MS = 0x01;
uint8_t heartbeat;
#if defined(OVERRIDE_CHANNEL_FUNCTION)
@@ -558,58 +563,6 @@ void resetBacklightTimeout()
lightOffCounter = (autoOff*250) << 1;
}
#if defined(SPLASH)
void doSplash()
{
#if defined(PWR_BUTTON_PRESS)
bool refresh = false;
#endif
if (SPLASH_NEEDED()) {
resetBacklightTimeout();
drawSplash();
getADC(); // init ADC array
inactivityCheckInputs();
tmr10ms_t tgtime = get_tmr10ms() + SPLASH_TIMEOUT;
while (tgtime > get_tmr10ms()) {
RTOS_WAIT_TICKS(1);
getADC();
if (getEvent() || inactivityCheckInputs())
return;
#if defined(PWR_BUTTON_PRESS)
uint32_t pwr_check = pwrCheck();
if (pwr_check == e_power_off) {
break;
}
else if (pwr_check == e_power_press) {
refresh = true;
}
else if (pwr_check == e_power_on && refresh) {
drawSplash();
refresh = false;
}
#else
if (pwrCheck() == e_power_off) {
return;
}
#endif
checkBacklight();
}
#if defined(LIBOPENUI)
MainWindow::instance()->setActiveScreen();
#endif
}
}
#endif
#if defined(MULTIMODULE)
void checkMultiLowPower()
@@ -802,14 +755,10 @@ void checkThrottleStick()
strcpy(throttleNotIdle, STR_THROTTLE_NOT_IDLE);
}
LED_ERROR_BEGIN();
AUDIO_ERROR_MESSAGE(AU_THROTTLE_ALERT);
auto dialog =
new FullScreenDialog(WARNING_TYPE_ALERT, TR_THROTTLE_UPPERCASE,
throttleNotIdle, STR_PRESS_ANY_KEY_TO_SKIP);
dialog->setCloseCondition([]() { return !isThrottleWarningAlertNeeded(); });
auto dialog = new ThrottleWarnDialog(throttleNotIdle);
dialog->runForever();
LED_ERROR_END();
}
LED_ERROR_END();
}
#else
void checkThrottleStick()
@@ -1087,9 +1036,9 @@ void flightReset(uint8_t check)
}
}
void opentxClose(uint8_t shutdown)
void edgeTxClose(uint8_t shutdown)
{
TRACE("opentxClose");
TRACE("edgeTxClose");
watchdogSuspend(2000/*20s*/);
@@ -1150,9 +1099,9 @@ void opentxClose(uint8_t shutdown)
#endif
}
void opentxResume()
void edgeTxResume()
{
TRACE("opentxResume");
TRACE("edgeTxResume");
sdMount();
#if defined(COLORLCD) && defined(LUA)
@@ -1317,7 +1266,10 @@ void runStartupAnimation()
else if (!isPowerOn) {
isPowerOn = true;
pwrOn();
haptic.play(15, 3, PLAY_NOW);
#if defined(HAPTIC)
if (g_eeGeneral.hapticMode != e_mode_quiet)
haptic.play(15, 3, PLAY_NOW);
#endif
}
}
@@ -1370,26 +1322,15 @@ void moveTrimsToOffsets() // copy state of 3 primary to subtrim
AUDIO_WARNING2();
}
#if !defined(OPENTX_START_DEFAULT_ARGS)
#define OPENTX_START_DEFAULT_ARGS 0
#endif
// Overridden by simulator startup
uint8_t startOptions = 0;
const uint8_t startOptions = OPENTX_START_DEFAULT_ARGS;
void opentxInit()
void edgeTxInit()
{
TRACE("opentxInit");
TRACE("edgeTxInit");
#if defined(SPLASH) && !defined(STARTUP_ANIMATION)
tmr10ms_t splashStartTime = 0;
bool waitSplash = false;
if (!UNEXPECTED_SHUTDOWN()) {
splashStartTime = get_tmr10ms();
waitSplash = true;
drawSplash();
TRACE("drawSplash() completed");
}
#endif
// Show splash screen (color LCD)
startSplash();
#if defined(HARDWARE_TOUCH) && !defined(PCBFLYSKY) && !defined(SIMU)
touchPanelInit();
@@ -1411,13 +1352,21 @@ void opentxInit()
lcdClear();
lcdRefresh();
lcdRefreshWait();
#endif
bool radioSettingsValid = storageReadRadioSettings(false);
(void)radioSettingsValid;
// Load radio.yml so radio settings can be used
bool radioSettingsValid = false;
#if defined(RTC_BACKUP_RAM)
// Skip loading if EM startup and radio has RTC backup data
if (!UNEXPECTED_SHUTDOWN())
radioSettingsValid = storageReadRadioSettings(false);
#else
// No RTC backup - try and load even for EM startup
radioSettingsValid = storageReadRadioSettings(false);
#endif
#if defined(GUI) && !defined(COLORLCD)
lcdSetContrast();
#endif
#endif
BACKLIGHT_ENABLE(); // we start the backlight during the startup animation
@@ -1429,9 +1378,12 @@ void opentxInit()
else {
runStartupAnimation();
}
#else // defined(PWR_BUTTON_PRESS)
#else // defined(STARTUP_ANIMATION)
pwrOn();
haptic.play(15, 3, PLAY_NOW);
#if defined(HAPTIC)
if (g_eeGeneral.hapticMode != e_mode_quiet)
haptic.play(15, 3, PLAY_NOW);
#endif
#endif
// Radios handle UNEXPECTED_SHUTDOWN() differently:
@@ -1486,6 +1438,8 @@ void opentxInit()
if (!radioSettingsValid)
storageReadRadioSettings();
storageReadCurrentModel();
#else
(void)radioSettingsValid;
#endif
#if defined(COLORLCD) && defined(LUA)
@@ -1510,11 +1464,6 @@ void opentxInit()
storageReadAll();
#endif
#endif // #if !defined(EEPROM)
// TODO: move to board on hook (onStorageReady()?)
// #if defined(SPORT_UPDATE_PWR_GPIO)
// SPORT_UPDATE_POWER_INIT();
// #endif
initSerialPorts();
@@ -1555,48 +1504,8 @@ void opentxInit()
if (!g_eeGeneral.dontPlayHello)
AUDIO_HELLO();
// TODO: This needs some refactoring and cleanup
#if defined(SPLASH)
// Handle B&W splash screen
doSplash();
// Handle color splash screen
#if !defined(STARTUP_ANIMATION)
if (waitSplash) {
extern bool inactivityCheckInputs();
extern void checkSpeakerVolume();
#if defined(SIMU)
// Simulator - inputsMoved() returns true immediately without this!
RTOS_WAIT_TICKS(30);
#endif // defined(SIMU)
splashStartTime += SPLASH_TIMEOUT;
while (splashStartTime > get_tmr10ms()) {
WDG_RESET();
checkSpeakerVolume();
checkBacklight();
RTOS_WAIT_TICKS(10);
auto evt = getEvent();
if (evt || inactivityCheckInputs()) {
if (evt)
killEvents(evt);
break;
}
#if defined(SIMU)
// Allow simulator to exit if closed while splash showing
uint32_t pwr_check = pwrCheck();
if (pwr_check == e_power_off) {
break;
}
#endif // defined(SIMU)
}
// Reset timer so special/global functions set to !1x don't get triggered
START_SILENCE_PERIOD();
}
#endif // !defined(STARTUP_ANIMATION)
#endif // defined(SPLASH)
// Wait until splash screen done
waitSplash();
}
#endif // defined(GUI)
@@ -1882,7 +1791,10 @@ uint32_t pwrCheck()
#endif // COLORLCD
}
haptic.play(15, 3, PLAY_NOW);
#if defined(HAPTIC)
if (g_eeGeneral.hapticMode != e_mode_quiet)
haptic.play(15, 3, PLAY_NOW);
#endif
pwr_check_state = PWR_CHECK_OFF;
return e_power_off;
}
+6 -189
View File
@@ -41,159 +41,6 @@
#include "libopenui/src/libopenui_file.h"
#endif
#if defined(SIMU)
#define SWITCH_SIMU(a, b) (a)
#else
#define SWITCH_SIMU(a, b) (b)
#endif
#if defined(VARIO)
#define CASE_VARIO(x) x,
#else
#define CASE_VARIO(x)
#endif
#if defined(IMU)
#define CASE_IMU(x) x,
#else
#define CASE_IMU(x)
#endif
#if defined(BACKLIGHT_GPIO)
#define CASE_BACKLIGHT(x) x,
#else
#define CASE_BACKLIGHT(x)
#endif
#if defined(OLED_SCREEN)
#define CASE_CONTRAST(x)
#else
#define CASE_CONTRAST(x) x,
#endif
#if defined(LUA)
#define CASE_LUA(x) x,
#else
#define CASE_LUA(x)
#endif
#if defined(RTCLOCK)
#define CASE_RTCLOCK(x) x,
#else
#define CASE_RTCLOCK(x)
#endif
#if defined(BUZZER)
#define CASE_BUZZER(x) x,
#else
#define CASE_BUZZER(x)
#endif
#if defined(AUDIO)
#define CASE_AUDIO(x) x,
#else
#define CASE_AUDIO(x)
#endif
#if defined(PWM_BACKLIGHT)
#define CASE_PWM_BACKLIGHT(x) x,
#else
#define CASE_PWM_BACKLIGHT(x)
#endif
#if defined(GPS)
#define CASE_GPS(x) x,
#else
#define CASE_GPS(x)
#endif
#if defined(VARIO)
#define CASE_VARIO(x) x,
#else
#define CASE_VARIO(x)
#endif
#if defined(HAPTIC)
#define CASE_HAPTIC(x) x,
#else
#define CASE_HAPTIC(x)
#endif
#if defined(SPLASH)
#define CASE_SPLASH(x) x,
#else
#define CASE_SPLASH(x)
#endif
#if defined(PWR_BUTTON_PRESS)
#define CASE_PWR_BUTTON_PRESS(x) x,
#else
#define CASE_PWR_BUTTON_PRESS(x)
#endif
#if defined(PXX1)
#define CASE_PXX1(x) x,
#else
#define CASE_PXX1(x)
#endif
#if defined(PXX2)
#define CASE_PXX2(x) x,
#else
#define CASE_PXX2(x)
#endif
#if defined(SDCARD)
#define CASE_SDCARD(x) x,
#else
#define CASE_SDCARD(x)
#endif
#if defined(BLUETOOTH)
#define CASE_BLUETOOTH(x) x,
#else
#define CASE_BLUETOOTH(x)
#endif
#if defined(HELI)
#define CASE_HELI(x) x,
#else
#define CASE_HELI(x)
#endif
#if defined(FLIGHT_MODES)
#define CASE_FLIGHT_MODES(x) x,
#else
#define CASE_FLIGHT_MODES(x)
#endif
#if defined(GVARS)
#define CASE_GVARS(x) x,
#else
#define CASE_GVARS(x)
#endif
#if defined(LUA_MODEL_SCRIPTS)
#define CASE_LUA_MODEL_SCRIPTS(x) x,
#else
#define CASE_LUA_MODEL_SCRIPTS(x)
#endif
#if defined(PCBX9DP) || defined(PCBX9E)
#define CASE_PCBX9E_PCBX9DP(x) x,
#else
#define CASE_PCBX9E_PCBX9DP(x)
#endif
#if defined(PCBX9E)
#define CASE_PCBX9E(x) x,
#else
#define CASE_PCBX9E(x)
#endif
#define CASE_CAPACITY(x)
#if defined(FAI)
#define IS_FAI_ENABLED() true
#define IF_FAI_CHOICE(x)
@@ -334,35 +181,17 @@ struct CustomFunctionsContext {
#define THRCHK_DEADBAND 16
#if !defined(COLORLCD)
inline bool SPLASH_NEEDED()
{
#if defined(COLORLCD)
return false;
#else
return g_eeGeneral.splashMode != 3;
#endif
}
#if defined(SPLASH)
#define SPLASH_TIMEOUT (g_eeGeneral.splashMode == -4 ? 1500 : (g_eeGeneral.splashMode <= 0 ? (400-g_eeGeneral.splashMode * 200) : (400 - g_eeGeneral.splashMode * 100)))
#endif
constexpr uint8_t HEART_TIMER_10MS = 0x01;
constexpr uint8_t HEART_TIMER_PULSES = 0x02; // when multiple modules this is the first one
constexpr uint8_t HEART_WDT_CHECK = HEART_TIMER_10MS
#if defined(HARDWARE_INTERNAL_MODULE)
+ (HEART_TIMER_PULSES << INTERNAL_MODULE)
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
+ (HEART_TIMER_PULSES << EXTERNAL_MODULE)
#endif
; // end of HEART_WDT_CHECK
#define SPLASH_TIMEOUT (g_eeGeneral.splashMode == -4 ? 1500 : (g_eeGeneral.splashMode <= 0 ? (400-g_eeGeneral.splashMode * 200) : (400 - g_eeGeneral.splashMode * 100)))
extern uint8_t heartbeat;
#define MAX_ALERT_TIME 60
#define LEN_STD_CHARS 40
#if defined(TRANSLATIONS_CZ)
@@ -499,10 +328,6 @@ void flightReset(uint8_t check=true);
#define RESET_THR_TRACE() s_timeCum16ThrP = s_timeCumThr = 0
#endif
#if defined(SPLASH)
void doSplash();
#endif
// disabled function (not used anywhere)
#define READ_ONLY() false
#define READ_ONLY_UNLOCKED() true
@@ -613,14 +438,6 @@ inline void getMixSrcRange(const int source, int16_t & valMin, int16_t & valMax,
valMin = -valMax;
}
}
#if defined(GVAR_MAX)
inline void getGVarIncDecRange(int16_t & valMin, int16_t & valMax)
{
int16_t rng = abs(valMax - valMin);
valMin = -rng;
valMax = rng;
}
#endif
void applyExpos(int16_t * anas, uint8_t mode, uint8_t ovwrIdx=0, int16_t ovwrValue=0);
int16_t applyLimits(uint8_t channel, int32_t value);
@@ -808,9 +625,9 @@ enum AUDIO_SOUNDS {
void checkBattery();
void opentxClose(uint8_t shutdown=true);
void opentxInit();
void opentxResume();
void edgeTxClose(uint8_t shutdown=true);
void edgeTxInit();
void edgeTxResume();
constexpr uint8_t OPENTX_START_NO_SPLASH = 0x01;
constexpr uint8_t OPENTX_START_NO_CALIBRATION = 0x02;
@@ -831,7 +648,6 @@ constexpr uint8_t OPENTX_START_NO_CHECKS = 0x04;
#define LED_ERROR_END()
#endif
// Re-useable byte array to save having multiple buffers
#if LCD_W <= 212
constexpr uint8_t SD_SCREEN_FILE_LENGTH = 32;
#else
@@ -848,6 +664,7 @@ constexpr uint8_t TEXT_FILENAME_MAXLEN = 40;
#include "telemetry/ghost_menu.h"
#endif
// Re-useable byte array to save having multiple buffers
union ReusableBuffer
{
struct {
-4
View File
@@ -37,10 +37,6 @@ endif()
set(CPU_TYPE_FULL STM32F429xI)
set(SIZE_TARGET_MEM_DEFINE "MEM_SIZE_SDRAM2=8192")
if(SPLASH STREQUAL OFF)
message(FATAL_ERROR "Option SPLASH=OFF not supported on Horus")
endif()
add_definitions(-DPCBFRSKY)
# defines existing internal modules
+2
View File
@@ -29,6 +29,8 @@
#include "hal.h"
#include "hal/serial_port.h"
#include "watchdog_driver.h"
#define FLASHSIZE 0x200000
#define BOOTLOADER_SIZE 0x20000
#define FIRMWARE_ADDRESS 0x08000000
+3 -2
View File
@@ -43,7 +43,8 @@
int g_snapshot_idx = 0;
uint8_t simu_start_mode = 0;
extern uint8_t startOptions;
char * main_thread_error = nullptr;
bool simu_shutdown = false;
@@ -159,7 +160,7 @@ void simuStart(bool tests, const char * sdPath, const char * settingsPath)
menuLevel = 0;
#endif
simu_start_mode = (tests ? 0 : OPENTX_START_NO_SPLASH | OPENTX_START_NO_CALIBRATION | OPENTX_START_NO_CHECKS);
startOptions = (tests ? 0 : OPENTX_START_NO_SPLASH | OPENTX_START_NO_CALIBRATION | OPENTX_START_NO_CHECKS);
simu_shutdown = false;
simuFatfsSetPaths(sdPath, settingsPath);
-3
View File
@@ -39,11 +39,8 @@ extern uint8_t * eeprom;
#define __disable_irq()
#define __enable_irq()
extern uint8_t simu_start_mode;
extern char * main_thread_error;
#define OPENTX_START_DEFAULT_ARGS simu_start_mode
uint64_t simuTimerMicros(void);
uint8_t simuSleep(uint32_t ms); // returns true if thread shutdown requested
-4
View File
@@ -553,10 +553,6 @@ set(SDCARD YES)
set(TARGET_DIR taranis)
set(PPM_LIMITS_SYMETRICAL YES)
if(SPLASH STREQUAL OFF)
message(FATAL_ERROR "Option SPLASH=OFF not supported on Taranis")
endif()
add_definitions(-DPCBTARANIS)
add_definitions(-DAUDIO -DVOICE )
+2 -2
View File
@@ -47,7 +47,7 @@ TASK_FUNCTION(menusTask)
LvglWrapper::instance();
#endif
opentxInit();
edgeTxInit();
mixerTaskInit();
@@ -90,7 +90,7 @@ TASK_FUNCTION(menusTask)
#endif
drawSleepBitmap();
opentxClose();
edgeTxClose();
boardOff();
TASK_RETURN();
+2
View File
@@ -25,6 +25,8 @@
volatile tmr10ms_t g_tmr10ms;
#define MAX_ALERT_TIME 60
#if TIMERS > MAX_TIMERS
#error "Timers cannot exceed " .. MAX_TIMERS
#endif
-3
View File
@@ -490,13 +490,10 @@ const char STR_VOLUME[] = TR_VOLUME;
const char STR_LCD[] = TR_LCD;
const char STR_BRIGHTNESS[] = TR_BRIGHTNESS;
const char STR_CPU_TEMP[] = TR_CPU_TEMP;
const char STR_CPU_CURRENT[] = TR_CPU_CURRENT;
const char STR_CPU_MAH[] = TR_CPU_MAH;
const char STR_COPROC[] = TR_COPROC;
const char STR_COPROC_TEMP[] = TR_COPROC_TEMP;
const char STR_TEMPWARNING[] = TR_TEMPWARNING;
const char STR_TTL_WARNING[] = TR_TTL_WARNING;
const char STR_CAPAWARNING[] = TR_CAPAWARNING;
const char STR_FUNC[] = TR_FUNC;
const char STR_V1[] = TR_V1;
const char STR_V2[] = TR_V2;
-3
View File
@@ -748,11 +748,8 @@ extern const char STR_VOLUME[];
extern const char STR_LCD[];
extern const char STR_BRIGHTNESS[];
extern const char STR_CPU_TEMP[];
extern const char STR_CPU_CURRENT[];
extern const char STR_CPU_MAH[];
extern const char STR_COPROC[];
extern const char STR_COPROC_TEMP[];
extern const char STR_CAPAWARNING[];
extern const char STR_TEMPWARNING[];
extern const char STR_TTL_WARNING[];
extern const char STR_FUNC[];
-3
View File
@@ -647,11 +647,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "亮度"
#define TR_CPU_TEMP "CPU 温度"
#define TR_CPU_CURRENT "电流"
#define TR_CPU_MAH "消耗量"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "主板温度"
#define TR_CAPAWARNING INDENT "电流过低"
#define TR_TEMPWARNING INDENT "过热"
#define TR_TTL_WARNING "注意串口使用逻辑电平3.3V"
#define TR_FUNC "功能"
-3
View File
@@ -665,11 +665,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Jas"
#define TR_CPU_TEMP "Tepl. CPU\016>"
#define TR_CPU_CURRENT "Proud\030>"
#define TR_CPU_MAH "Spotřeba"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "Tepl. MB \016>"
#define TR_CAPAWARNING INDENT "Nízká kapacita"
#define TR_TEMPWARNING INDENT "Přehřátí"
#define TR_TTL_WARNING "Varování: používat 3.3V hodnoty"
#define TR_FUNC "Funkce"
-3
View File
@@ -663,11 +663,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Skarphed"
#define TR_CPU_TEMP "CPU temp."
#define TR_CPU_CURRENT "CPU strøm"
#define TR_CPU_MAH "Forbrug"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp."
#define TR_CAPAWARNING INDENT "Kapacitet lav"
#define TR_TEMPWARNING INDENT "For varm"
#define TR_TTL_WARNING "Advarsel: brug 3.3V logisk niveau"
#define TR_FUNC "Funktion"
-3
View File
@@ -658,11 +658,8 @@
#define TR_LCD "Bildschirm"
#define TR_BRIGHTNESS "Helligkeit"
#define TR_CPU_TEMP "CPU-Temp.\016>"
#define TR_CPU_CURRENT "Strom\022>"
#define TR_CPU_MAH "Verbrauch"
#define TR_COPROC "CoProz."
#define TR_COPROC_TEMP "MB Temp. \016>"
#define TR_CAPAWARNING INDENT "Kapaz. niedrig" // wg 9XR-Pro
#define TR_TEMPWARNING INDENT "Temp. größer" //wg 9XR-Pro
#define TR_TTL_WARNING "Warning: use 3.3V logic levels"
#define TR_FUNC "Funktion"
-3
View File
@@ -658,11 +658,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Brightness"
#define TR_CPU_TEMP "CPU temp."
#define TR_CPU_CURRENT "Current"
#define TR_CPU_MAH "Consumpt."
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp."
#define TR_CAPAWARNING INDENT "Capacity low"
#define TR_TEMPWARNING INDENT "Overheat"
#define TR_TTL_WARNING "Warning: use 3.3V logic levels"
#define TR_FUNC "Function"
-3
View File
@@ -654,11 +654,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Brillo"
#define TR_CPU_TEMP "CPU Temp.\016>"
#define TR_CPU_CURRENT "Actual\022>"
#define TR_CPU_MAH "Consumo"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp. \016>"
#define TR_CAPAWARNING INDENT "Capacidad baja"
#define TR_TEMPWARNING INDENT "Sobrecalent"
#define TR_TTL_WARNING "Warning: use 3.3V logic levels"
#define TR_FUNC "Función"
-3
View File
@@ -669,11 +669,8 @@
#define TR_LCD "LCD-näyttö"
#define TR_BRIGHTNESS "Kirkkaus"
#define TR_CPU_TEMP "CPU:n lämpötila\016>"
#define TR_CPU_CURRENT "Virta\022>"
#define TR_CPU_MAH "Kulutus"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp. \016>"
#define TR_CAPAWARNING INDENT "Capacity Low"
#define TR_TEMPWARNING INDENT "Ylikuumentunut"
#define TR_TTL_WARNING "Varoitus: käytä 3,3V:n logiikkatasoja"
#define TR_FUNC "Func"
-3
View File
@@ -662,11 +662,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Luminosité"
#define TR_CPU_TEMP "Temp. CPU\016>"
#define TR_CPU_CURRENT "Courant\022>"
#define TR_CPU_MAH "Consomm."
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "Temp. CM \016>"
#define TR_CAPAWARNING INDENT "Capacité Faible"
#define TR_TEMPWARNING INDENT "Surchauffe"
#define TR_TTL_WARNING "Attention: utiliser val. logique 3.3V"
#define TR_FUNC "Fonction"
-3
View File
@@ -662,11 +662,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "בהירות"
#define TR_CPU_TEMP "CPU temp."
#define TR_CPU_CURRENT "Current"
#define TR_CPU_MAH "Consumpt."
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp."
#define TR_CAPAWARNING INDENT "Capacity low"
#define TR_TEMPWARNING INDENT "Overheat"
#define TR_TTL_WARNING "אזהרה חיבורים אלה עם מתח 3.3 וולט !"
#define TR_FUNC "Function"
-3
View File
@@ -657,11 +657,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Luminosità"
#define TR_CPU_TEMP "Temp CPU \016>"
#define TR_CPU_CURRENT "Corrente\022>"
#define TR_CPU_MAH "Consumo"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "Temp. MB \016>"
#define TR_CAPAWARNING INDENT "Capacità Bassa"
#define TR_TEMPWARNING INDENT "Temp. Alta"
#define TR_TTL_WARNING "Attenzione: usa livelli logici 3.3V"
#define TR_FUNC "Funzione"
-3
View File
@@ -653,11 +653,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "輝度"
#define TR_CPU_TEMP "CPU温度"
#define TR_CPU_CURRENT "電流"
#define TR_CPU_MAH "消費量"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB温度"
#define TR_CAPAWARNING INDENT "電流が低すぎます"
#define TR_TEMPWARNING INDENT "オーバーヒートです"
#define TR_TTL_WARNING "警告: 論理値3.3Vを使用します"
#define TR_FUNC TR("機能", "ファンクション")
-3
View File
@@ -655,11 +655,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Helderheid"
#define TR_CPU_TEMP "CPU-Temp.\016>"
#define TR_CPU_CURRENT "Stroom\022>"
#define TR_CPU_MAH "Verbruik"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp. \016>"
#define TR_CAPAWARNING INDENT "Capaciteit laag" // wg 9XR-Pro
#define TR_TEMPWARNING INDENT "Overhitting" //wg 9XR-Pro
#define TR_TTL_WARNING "Warning: use 3.3V logic levels"
#define TR_FUNC "Funktie"
-3
View File
@@ -651,11 +651,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Jasność"
#define TR_CPU_TEMP "Temp. CPU\016>"
#define TR_CPU_CURRENT "Prąd"
#define TR_CPU_MAH "Zużycie"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "Temp. MB"
#define TR_CAPAWARNING INDENT "Mała pojemność"
#define TR_TEMPWARNING INDENT "Przegrzanie"
#define TR_TTL_WARNING "Uwaga: use 3.3V logic levels"
#define TR_FUNC "Funkcja"
-3
View File
@@ -661,11 +661,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Brilho"
#define TR_CPU_TEMP "CPU temp."
#define TR_CPU_CURRENT "Current"
#define TR_CPU_MAH "Consumo."
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp."
#define TR_CAPAWARNING INDENT "Capacit baixa"
#define TR_TEMPWARNING INDENT "SobrAquec."
#define TR_TTL_WARNING "Alerta: use 3.3V logic levels"
#define TR_FUNC "Funcao"
-3
View File
@@ -660,11 +660,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Подсветка"
#define TR_CPU_TEMP "Темпер проц"
#define TR_CPU_CURRENT "Ток"
#define TR_CPU_MAH "Расход"
#define TR_COPROC "Сопроцессор"
#define TR_COPROC_TEMP "Темпер сопроц"
#define TR_CAPAWARNING INDENT "Низкая емкость"
#define TR_TEMPWARNING INDENT "Перегрев"
#define TR_TTL_WARNING "Предупреждение: испол лог уровни 3.3В"
#define TR_FUNC "Функция"
-3
View File
@@ -674,11 +674,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Ljusstyrka"
#define TR_CPU_TEMP "CPU temp.\016>"
#define TR_CPU_CURRENT "Ström\022>"
#define TR_CPU_MAH "Förbrukn."
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB temp. \016>"
#define TR_CAPAWARNING INDENT "Låg kapacitet"
#define TR_TEMPWARNING TR(INDENT "Hög temp", INDENT "Hög temperatur")
#define TR_TTL_WARNING "Varning: använd 3.3V logiska nivåer"
#define TR_FUNC "Funktion"
-3
View File
@@ -653,11 +653,8 @@
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "亮度"
#define TR_CPU_TEMP "CPU 溫度"
#define TR_CPU_CURRENT "電流"
#define TR_CPU_MAH "消耗量"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "主板溫度"
#define TR_CAPAWARNING INDENT "電流過低"
#define TR_TEMPWARNING INDENT "過熱"
#define TR_TTL_WARNING "注意串口使用逻辑电平3.3V"
#define TR_FUNC "功能"