1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-24 00:35:18 +03:00

Warnings can now have an extra info displayed, which is useful for Lua

errors
This commit is contained in:
bsongis 2014-05-27 23:00:18 +02:00
parent 7cd7d0917e
commit 4797df176c
4 changed files with 25 additions and 21 deletions

View file

@ -317,13 +317,12 @@ void onModelSelectMenu(const char *result)
else if (result == STR_DELETE_MODEL) {
POPUP_CONFIRMATION(STR_DELETEMODEL);
#if defined(CPUARM)
s_warning_info = modelHeaders[sub].name;
SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), ZCHAR);
#else
char * name = reusableBuffer.modelsel.mainname;
eeLoadModelName(sub, name);
s_warning_info = name;
SET_WARNING_INFO(name, sizeof(g_model.header.name), ZCHAR);
#endif
s_warning_info_len = sizeof(g_model.header.name);
}
#if defined(SDCARD)
else {
@ -391,13 +390,12 @@ void menuModelSelect(uint8_t event)
if (s_copyMode && s_copyTgtOfs == 0 && g_eeGeneral.currModel != sub && eeModelExists(sub)) {
POPUP_CONFIRMATION(STR_DELETEMODEL);
#if defined(CPUARM)
s_warning_info = modelHeaders[sub].name;
SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), ZCHAR);
#else
char * name = reusableBuffer.modelsel.mainname;
eeLoadModelName(sub, name);
s_warning_info = name;
SET_WARNING_INFO(name, sizeof(g_model.header.name), ZCHAR);
#endif
s_warning_info_len = sizeof(g_model.header.name);
killEvents(event);
break;
}

View file

@ -1046,11 +1046,11 @@ void pushMenu(MenuFuncP newMenu)
const pm_char * s_warning = NULL;
const pm_char * s_warning_info;
uint8_t s_warning_info_len;
// uint8_t s_warning_info_att not needed now
uint8_t s_warning_type;
uint8_t s_warning_result = 0;
#if defined(CPUARM)
uint8_t s_warning_info_flags = ZCHAR;
int16_t s_warning_input_value;
int16_t s_warning_input_min;
int16_t s_warning_input_max;
@ -1081,7 +1081,7 @@ void displayWarning(uint8_t event)
s_warning_result = false;
displayBox();
if (s_warning_info)
lcd_putsnAtt(16, WARNING_LINE_Y+FH, s_warning_info, s_warning_info_len, ZCHAR);
lcd_putsnAtt(16, WARNING_LINE_Y+FH, s_warning_info, s_warning_info_len, WARNING_INFO_FLAGS);
lcd_puts(16, WARNING_LINE_Y+2*FH, s_warning_type == WARNING_TYPE_ASTERISK ? STR_EXIT : STR_POPUPS);
switch (event) {
#if defined(ROTARY_ENCODER_NAVIGATION)

View file

@ -356,7 +356,7 @@ extern uint8_t s_warning_type;
#define WARNING_LINE_X 16
#define WARNING_LINE_Y 3*FH
#if LCD_W >= 212
#define WARNING_LINE_LEN 30
#define WARNING_LINE_LEN 32
#else
#define WARNING_LINE_LEN 20
#endif
@ -370,17 +370,22 @@ void displayWarning(uint8_t event);
extern int16_t s_warning_input_value;
extern int16_t s_warning_input_min;
extern int16_t s_warning_input_max;
extern uint8_t s_warning_info_flags;
#endif
#if defined(CPUARM)
#define DISPLAY_WARNING (*popupFunc)
#define POPUP_WARNING(s) (s_warning = s, popupFunc = displayWarning)
#define POPUP_CONFIRMATION(s) (s_warning = s, s_warning_type = WARNING_TYPE_CONFIRM, popupFunc = displayWarning)
#define POPUP_WARNING(s) (s_warning = s, s_warning_info = 0, popupFunc = displayWarning)
#define POPUP_CONFIRMATION(s) (s_warning = s, s_warning_type = WARNING_TYPE_CONFIRM, s_warning_info = 0, popupFunc = displayWarning)
#define POPUP_INPUT(s, func, start, min, max) (s_warning = s, s_warning_type = WARNING_TYPE_INPUT, popupFunc = func, s_warning_input_value = start, s_warning_input_min = min, s_warning_input_max = max)
#define WARNING_INFO_FLAGS s_warning_info_flags
#define SET_WARNING_INFO(info, len, flags) (s_warning_info = info, s_warning_info_len = len, s_warning_info_flags = flags)
#else
#define DISPLAY_WARNING displayWarning
#define POPUP_WARNING(s) s_warning = s
#define POPUP_CONFIRMATION(s) (s_warning = s, s_warning_type = WARNING_TYPE_CONFIRM)
#define WARNING_INFO_FLAGS ZCHAR
#define SET_WARNING_INFO(info, len, flags) (s_warning_info = info, s_warning_info_len = len)
#endif
#if defined(SDCARD) || (defined(ROTARY_ENCODER_NAVIGATION) && !defined(CPUM64))

View file

@ -200,13 +200,6 @@ static int luaKillEvents(lua_State *L)
return 0;
}
static int luaRaise(lua_State *L)
{
const char * message = luaL_checkstring(L, 1);
// throw message;
return 0;
}
static int luaLcdLock(lua_State *L)
{
lcd_locked = true;
@ -1043,7 +1036,6 @@ void luaInit()
lua_register(L, "popupInput", luaPopupInput);
lua_register(L, "channelOrder", luaChannelOrder);
lua_register(L, "killEvents", luaKillEvents);
lua_register(L, "raise", luaRaise);
// Push OpenTX constants
lua_registerint(L, "FULLSCALE", RESX);
@ -1177,6 +1169,7 @@ void luaLoadModelScripts()
}
char lua_warning_str[WARNING_LINE_LEN+1];
char lua_warning_info[WARNING_LINE_LEN+1];
void luaError(uint8_t error)
{
@ -1189,7 +1182,15 @@ void luaError(uint8_t error)
#endif
strncpy(lua_warning_str, msg, WARNING_LINE_LEN);
lua_warning_str[WARNING_LINE_LEN] = '\0';
msg = lua_warning_str;
POPUP_WARNING(lua_warning_str);
for (int i=0; i<WARNING_LINE_LEN; i++) {
if (msg[i] == ':' && msg[i+1] == ' ') {
lua_warning_str[i] = '\0';
strncpy(lua_warning_info, &msg[i+2], WARNING_LINE_LEN);
lua_warning_info[WARNING_LINE_LEN] = '\0';
SET_WARNING_INFO(lua_warning_info, WARNING_LINE_LEN, 0);
}
}
}
else {
switch (error) {
@ -1203,9 +1204,9 @@ void luaError(uint8_t error)
msg = "Script memory leak";
break;
}
}
POPUP_WARNING(msg);
}
}
void luaExec(const char *filename)
{