mirror of
https://github.com/opentx/opentx.git
synced 2025-07-24 00:35:18 +03:00
Lua scripts now in custom functions!
This commit is contained in:
parent
c23f1e974a
commit
89433127c4
17 changed files with 239 additions and 93 deletions
|
@ -4828,19 +4828,27 @@ void menuModelLogicalSwitches(uint8_t event)
|
|||
void onCustomFunctionsFileSelectionMenu(const char *result)
|
||||
{
|
||||
int8_t sub = m_posVert - 1;
|
||||
CustomFnData * cf = &g_model.funcSw[sub];
|
||||
uint8_t func = CFN_FUNC(cf);
|
||||
|
||||
if (result == STR_UPDATE_LIST) {
|
||||
char directory[] = SOUNDS_PATH;
|
||||
if (func == FUNC_PLAY_SCRIPT)
|
||||
strcpy(directory, SCRIPTS_PATH);
|
||||
else
|
||||
strncpy(directory+SOUNDS_PATH_LNG_OFS, currentLanguagePack->id, 2);
|
||||
if (!listSdFiles(directory, SOUNDS_EXT, sizeof(g_model.funcSw[sub].play.name), NULL)) {
|
||||
POPUP_WARNING(STR_NO_SOUNDS_ON_SD);
|
||||
if (!listSdFiles(directory, func==FUNC_PLAY_SCRIPT ? SCRIPTS_EXT : SOUNDS_EXT, sizeof(cf->play.name), NULL)) {
|
||||
POPUP_WARNING(func==FUNC_PLAY_SCRIPT ? STR_NO_SCRIPTS_ON_SD : STR_NO_SOUNDS_ON_SD);
|
||||
s_menu_flags = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// The user choosed a wav file in the list
|
||||
memcpy(g_model.funcSw[sub].play.name, result, sizeof(g_model.funcSw[sub].play.name));
|
||||
// The user choosed a file in the list
|
||||
memcpy(cf->play.name, result, sizeof(cf->play.name));
|
||||
eeDirty(EE_MODEL);
|
||||
if (func == FUNC_PLAY_SCRIPT) {
|
||||
LUA_LOAD_MODEL_SCRIPTS();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -4874,7 +4882,6 @@ void onCustomFunctionsMenu(const char *result)
|
|||
eeDirty(EE_MODEL);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void menuModelCustomFunctions(uint8_t event)
|
||||
|
@ -5018,7 +5025,7 @@ void menuModelCustomFunctions(uint8_t event)
|
|||
}
|
||||
#endif
|
||||
#if defined(CPUARM) && defined(SDCARD)
|
||||
else if (func == FUNC_PLAY_TRACK || func == FUNC_BACKGND_MUSIC) {
|
||||
else if (func == FUNC_PLAY_TRACK || func == FUNC_BACKGND_MUSIC || func == FUNC_PLAY_SCRIPT) {
|
||||
#if LCD_W >= 212
|
||||
xcoord_t x = MODEL_CUSTOM_FUNC_3RD_COLUMN;
|
||||
#else
|
||||
|
@ -5031,12 +5038,15 @@ void menuModelCustomFunctions(uint8_t event)
|
|||
if (active && event==EVT_KEY_BREAK(KEY_ENTER)) {
|
||||
s_editMode = 0;
|
||||
char directory[] = SOUNDS_PATH;
|
||||
if (func==FUNC_PLAY_SCRIPT)
|
||||
strcpy(directory, SCRIPTS_PATH);
|
||||
else
|
||||
strncpy(directory+SOUNDS_PATH_LNG_OFS, currentLanguagePack->id, 2);
|
||||
if (listSdFiles(directory, SOUNDS_EXT, sizeof(sd->play.name), sd->play.name)) {
|
||||
if (listSdFiles(directory, func==FUNC_PLAY_SCRIPT ? SCRIPTS_EXT : SOUNDS_EXT, sizeof(sd->play.name), sd->play.name)) {
|
||||
menuHandler = onCustomFunctionsFileSelectionMenu;
|
||||
}
|
||||
else {
|
||||
POPUP_WARNING(STR_NO_SOUNDS_ON_SD);
|
||||
POPUP_WARNING(func==FUNC_PLAY_SCRIPT ? STR_NO_SCRIPTS_ON_SD : STR_NO_SOUNDS_ON_SD);
|
||||
s_menu_flags = 0;
|
||||
}
|
||||
}
|
||||
|
@ -5235,7 +5245,7 @@ void menuModelCustomScriptOne(uint8_t event)
|
|||
|
||||
putsStrIdx(lcdLastPos+FW, 0, "LUA", s_currIdx+1, 0);
|
||||
|
||||
SUBMENU_NOTITLE(3+scriptInternalData[s_currIdx].inputsCount, { 0, 0, LABEL(inputs), 0/*repeated*/ });
|
||||
SUBMENU_NOTITLE(3+scriptInputsOutputs[s_currIdx].inputsCount, { 0, 0, LABEL(inputs), 0/*repeated*/ });
|
||||
|
||||
int8_t sub = m_posVert;
|
||||
|
||||
|
@ -5268,32 +5278,32 @@ void menuModelCustomScriptOne(uint8_t event)
|
|||
else if (i == ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL) {
|
||||
lcd_putsLeft(y, STR_INPUTS);
|
||||
}
|
||||
else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInternalData[s_currIdx].inputsCount) {
|
||||
else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInputsOutputs[s_currIdx].inputsCount) {
|
||||
int inputIdx = i-ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL-1;
|
||||
lcd_putsnAtt(INDENT_WIDTH, y, scriptInternalData[s_currIdx].inputs[inputIdx].name, 10, 0);
|
||||
if (scriptInternalData[s_currIdx].inputs[inputIdx].type == 0) {
|
||||
lcd_outdezAtt(SCRIPT_ONE_2ND_COLUMN_POS, y, g_model.scriptsData[s_currIdx].inputs[inputIdx]+scriptInternalData[s_currIdx].inputs[inputIdx].def, attr|LEFT);
|
||||
lcd_putsnAtt(INDENT_WIDTH, y, scriptInputsOutputs[s_currIdx].inputs[inputIdx].name, 10, 0);
|
||||
if (scriptInputsOutputs[s_currIdx].inputs[inputIdx].type == 0) {
|
||||
lcd_outdezAtt(SCRIPT_ONE_2ND_COLUMN_POS, y, g_model.scriptsData[s_currIdx].inputs[inputIdx]+scriptInputsOutputs[s_currIdx].inputs[inputIdx].def, attr|LEFT);
|
||||
if (attr) {
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.scriptsData[s_currIdx].inputs[inputIdx], scriptInternalData[s_currIdx].inputs[inputIdx].min-scriptInternalData[s_currIdx].inputs[inputIdx].def, scriptInternalData[s_currIdx].inputs[inputIdx].max-scriptInternalData[s_currIdx].inputs[inputIdx].def);
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.scriptsData[s_currIdx].inputs[inputIdx], scriptInputsOutputs[s_currIdx].inputs[inputIdx].min-scriptInputsOutputs[s_currIdx].inputs[inputIdx].def, scriptInputsOutputs[s_currIdx].inputs[inputIdx].max-scriptInputsOutputs[s_currIdx].inputs[inputIdx].def);
|
||||
}
|
||||
}
|
||||
else {
|
||||
putsMixerSource(SCRIPT_ONE_2ND_COLUMN_POS, y, g_model.scriptsData[s_currIdx].inputs[inputIdx]+scriptInternalData[s_currIdx].inputs[inputIdx].def, attr);
|
||||
putsMixerSource(SCRIPT_ONE_2ND_COLUMN_POS, y, g_model.scriptsData[s_currIdx].inputs[inputIdx]+scriptInputsOutputs[s_currIdx].inputs[inputIdx].def, attr);
|
||||
if (attr) {
|
||||
uint8_t *source = (uint8_t *)&g_model.scriptsData[s_currIdx].inputs[inputIdx];
|
||||
CHECK_INCDEC_MODELSOURCE(event, *source, scriptInternalData[s_currIdx].inputs[inputIdx].min-scriptInternalData[s_currIdx].inputs[inputIdx].def, scriptInternalData[s_currIdx].inputs[inputIdx].max-scriptInternalData[s_currIdx].inputs[inputIdx].def);
|
||||
CHECK_INCDEC_MODELSOURCE(event, *source, scriptInputsOutputs[s_currIdx].inputs[inputIdx].min-scriptInputsOutputs[s_currIdx].inputs[inputIdx].def, scriptInputsOutputs[s_currIdx].inputs[inputIdx].max-scriptInputsOutputs[s_currIdx].inputs[inputIdx].def);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (scriptInternalData[s_currIdx].outputsCount > 0) {
|
||||
if (scriptInputsOutputs[s_currIdx].outputsCount > 0) {
|
||||
lcd_vline(SCRIPT_ONE_3RD_COLUMN_POS-4, FH+1, LCD_H-FH-1);
|
||||
lcd_puts(SCRIPT_ONE_3RD_COLUMN_POS, FH+1, STR_OUTPUTS);
|
||||
|
||||
for (int i=0; i<scriptInternalData[s_currIdx].outputsCount; i++) {
|
||||
for (int i=0; i<scriptInputsOutputs[s_currIdx].outputsCount; i++) {
|
||||
putsMixerSource(SCRIPT_ONE_3RD_COLUMN_POS+INDENT_WIDTH, FH+1+FH+i*FH, MIXSRC_FIRST_LUA+(s_currIdx*MAX_SCRIPT_OUTPUTS)+i, 0);
|
||||
lcd_outdezNAtt(SCRIPT_ONE_3RD_COLUMN_POS+11*FW+3, FH+1+FH+i*FH, calcRESXto1000(scriptInternalData[s_currIdx].outputs[i].value), PREC1);
|
||||
lcd_outdezNAtt(SCRIPT_ONE_3RD_COLUMN_POS+11*FW+3, FH+1+FH+i*FH, calcRESXto1000(scriptInputsOutputs[s_currIdx].outputs[i].value), PREC1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5320,7 +5330,7 @@ void menuModelCustomScripts(uint8_t event)
|
|||
break;
|
||||
}
|
||||
|
||||
for (int i=0; i<MAX_SCRIPTS; i++) {
|
||||
for (int i=0, scriptIndex=0; i<MAX_SCRIPTS; i++) {
|
||||
y = 1 + (i+1)*FH;
|
||||
|
||||
ScriptData &sd = g_model.scriptsData[i];
|
||||
|
@ -5331,7 +5341,7 @@ void menuModelCustomScripts(uint8_t event)
|
|||
// LUA script
|
||||
if (ZEXIST(sd.file)) {
|
||||
lcd_putsnAtt(5*FW, y, sd.file, sizeof(sd.file), 0);
|
||||
switch (scriptInternalData[i].state) {
|
||||
switch (scriptInternalData[scriptIndex].state) {
|
||||
case SCRIPT_SYNTAX_ERROR:
|
||||
lcd_puts(28*FW+2, y, "(error)");
|
||||
break;
|
||||
|
@ -5342,12 +5352,13 @@ void menuModelCustomScripts(uint8_t event)
|
|||
lcd_puts(29*FW+2, y, "(leak)");
|
||||
break;
|
||||
default:
|
||||
lcd_outdezAtt(31*FW, y, luaGetCpuUsed(i));
|
||||
lcd_outdezAtt(31*FW, y, luaGetCpuUsed(scriptIndex));
|
||||
lcd_putc(31*FW, y, '%');
|
||||
lcd_outdezAtt(34*FW+2, y, luaGetMemUsed(i));
|
||||
lcd_outdezAtt(34*FW+2, y, luaGetMemUsed(scriptIndex));
|
||||
lcd_putc(34*FW+2, y, 'k');
|
||||
break;
|
||||
}
|
||||
scriptIndex++;
|
||||
}
|
||||
else {
|
||||
lcd_putsiAtt(5*FW, y, STR_VCSWFUNC, 0, 0);
|
||||
|
|
|
@ -341,16 +341,11 @@ uint8_t scrollbar_X = LCD_W-1;
|
|||
#if defined(CPUARM)
|
||||
bool modelHasNotes()
|
||||
{
|
||||
FILINFO info;
|
||||
TCHAR lfn[_MAX_LFN + 1];
|
||||
info.lfname = lfn;
|
||||
info.lfsize = sizeof(lfn);
|
||||
|
||||
char filename[sizeof(MODELS_PATH)+1+sizeof(g_model.header.name)+sizeof(TEXT_EXT)] = MODELS_PATH "/";
|
||||
char *buf = strcat_modelname(&filename[sizeof(MODELS_PATH)], g_eeGeneral.currModel);
|
||||
strcpy(buf, TEXT_EXT);
|
||||
|
||||
return (f_stat(filename, &info) == FR_OK);
|
||||
return isFileAvailable(filename);
|
||||
}
|
||||
|
||||
void pushModelNotes()
|
||||
|
@ -1391,7 +1386,7 @@ bool isSourceAvailable(int source)
|
|||
#if defined(LUA_MODEL_SCRIPTS)
|
||||
if (source>=MIXSRC_FIRST_LUA && source<=MIXSRC_LAST_LUA) {
|
||||
div_t qr = div(source-MIXSRC_FIRST_LUA, MAX_SCRIPT_OUTPUTS);
|
||||
return (scriptInternalData[qr.quot].state==SCRIPT_OK && qr.rem<scriptInternalData[qr.quot].outputsCount);
|
||||
return (qr.rem<scriptInputsOutputs[qr.quot].outputsCount);
|
||||
}
|
||||
#elif defined(PCBTARANIS)
|
||||
if (source>=MIXSRC_FIRST_LUA && source<=MIXSRC_LAST_LUA)
|
||||
|
@ -1568,7 +1563,9 @@ bool isAssignableFunctionAvailable(int function)
|
|||
case FUNC_RESERVE1:
|
||||
case FUNC_RESERVE2:
|
||||
case FUNC_RESERVE3:
|
||||
case FUNC_RESERVE4:
|
||||
#if !defined(LUA)
|
||||
case FUNC_PLAY_SCRIPT:
|
||||
#endif
|
||||
case FUNC_RESERVE5:
|
||||
return false;
|
||||
|
||||
|
|
|
@ -976,10 +976,10 @@ void putsMixerSource(xcoord_t x, uint8_t y, uint8_t idx, LcdFlags att)
|
|||
else if (idx <= MIXSRC_LAST_LUA) {
|
||||
div_t qr = div(idx-MIXSRC_FIRST_LUA, MAX_SCRIPT_OUTPUTS);
|
||||
#if defined(LUA_MODEL_SCRIPTS)
|
||||
if (qr.quot < MAX_SCRIPTS && qr.rem < scriptInternalData[qr.quot].outputsCount) {
|
||||
if (qr.quot < MAX_SCRIPTS && qr.rem < scriptInputsOutputs[qr.quot].outputsCount) {
|
||||
lcd_putcAtt(x+2, y+1, '1'+qr.quot, TINSIZE);
|
||||
lcd_filled_rect(x, y, 7, 7);
|
||||
lcd_putsnAtt(x+8, y, scriptInternalData[qr.quot].outputs[qr.rem].name, att & STREXPANDED ? 9 : 4, att);
|
||||
lcd_putsnAtt(x+8, y, scriptInputsOutputs[qr.quot].outputs[qr.rem].name, att & STREXPANDED ? 9 : 4, att);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
|
|
@ -58,7 +58,9 @@ extern "C" {
|
|||
|
||||
lua_State *L = NULL;
|
||||
uint8_t luaState = 0;
|
||||
uint8_t luaScriptsCount = 0;
|
||||
ScriptInternalData scriptInternalData[MAX_SCRIPTS] = { { SCRIPT_NOFILE, 0 } };
|
||||
ScriptInputsOutputs scriptInputsOutputs[MAX_SCRIPTS] = { 0 };
|
||||
ScriptInternalData standaloneScript = { SCRIPT_NOFILE, 0 };
|
||||
uint16_t maxLuaInterval = 0;
|
||||
uint16_t maxLuaDuration = 0;
|
||||
|
@ -915,7 +917,7 @@ static int luaDefaultChannel(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int luaGetInputs(ScriptInternalData & sid)
|
||||
int luaGetInputs(ScriptInputsOutputs & sid)
|
||||
{
|
||||
if (!lua_istable(L, -1))
|
||||
return -1;
|
||||
|
@ -969,7 +971,7 @@ int luaGetInputs(ScriptInternalData & sid)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int luaGetOutputs(ScriptInternalData & sid)
|
||||
int luaGetOutputs(ScriptInputsOutputs & sid)
|
||||
{
|
||||
if (!lua_istable(L, -1))
|
||||
return -1;
|
||||
|
@ -1107,7 +1109,7 @@ void luaFree(ScriptInternalData & sid)
|
|||
}
|
||||
}
|
||||
|
||||
int luaLoad(const char *filename, ScriptInternalData & sid)
|
||||
int luaLoad(const char *filename, ScriptInternalData & sid, ScriptInputsOutputs * sio=NULL)
|
||||
{
|
||||
int init = 0;
|
||||
|
||||
|
@ -1136,11 +1138,11 @@ int luaLoad(const char *filename, ScriptInternalData & sid)
|
|||
sid.run = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||
lua_pushnil(L);
|
||||
}
|
||||
else if (!strcmp(key, "input")) {
|
||||
luaGetInputs(sid);
|
||||
else if (sio && !strcmp(key, "input")) {
|
||||
luaGetInputs(*sio);
|
||||
}
|
||||
else if (!strcmp(key, "output")) {
|
||||
luaGetOutputs(sid);
|
||||
else if (sio && !strcmp(key, "output")) {
|
||||
luaGetOutputs(*sio);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1170,26 +1172,65 @@ int luaLoad(const char *filename, ScriptInternalData & sid)
|
|||
void luaLoadModelScript(uint8_t index)
|
||||
{
|
||||
ScriptData & sd = g_model.scriptsData[index];
|
||||
ScriptInternalData & sid = scriptInternalData[index];
|
||||
|
||||
memset(&sid, 0, sizeof(sid));
|
||||
sid.state = SCRIPT_NOFILE;
|
||||
|
||||
if (ZEXIST(sd.file)) {
|
||||
ScriptInternalData & sid = scriptInternalData[luaScriptsCount++];
|
||||
ScriptInputsOutputs * sio = &scriptInputsOutputs[index];
|
||||
memset(&sid, 0, sizeof(sid));
|
||||
sid.reference = SCRIPT_MIX_FIRST+index;
|
||||
sid.state = SCRIPT_NOFILE;
|
||||
char filename[sizeof(SCRIPTS_PATH)+sizeof(sd.file)+sizeof(SCRIPTS_EXT)] = SCRIPTS_PATH "/";
|
||||
strncpy(filename+sizeof(SCRIPTS_PATH), sd.file, sizeof(sd.file));
|
||||
filename[sizeof(SCRIPTS_PATH)+sizeof(sd.file)] = '\0';
|
||||
strcat(filename+sizeof(SCRIPTS_PATH), SCRIPTS_EXT);
|
||||
luaLoad(filename, sid, sio);
|
||||
}
|
||||
}
|
||||
|
||||
bool luaLoadFunctionScript(uint8_t index)
|
||||
{
|
||||
CustomFnData & fn = g_model.funcSw[index];
|
||||
|
||||
if (fn.func == FUNC_PLAY_SCRIPT && ZEXIST(fn.play.name)) {
|
||||
if (luaScriptsCount < MAX_SCRIPTS) {
|
||||
ScriptInternalData & sid = scriptInternalData[luaScriptsCount++];
|
||||
memset(&sid, 0, sizeof(sid));
|
||||
sid.reference = SCRIPT_FUNC_FIRST+index;
|
||||
sid.state = SCRIPT_NOFILE;
|
||||
char filename[sizeof(SCRIPTS_PATH)+sizeof(fn.play.name)+sizeof(SCRIPTS_EXT)] = SCRIPTS_PATH "/";
|
||||
strncpy(filename+sizeof(SCRIPTS_PATH), fn.play.name, sizeof(fn.play.name));
|
||||
filename[sizeof(SCRIPTS_PATH)+sizeof(fn.play.name)] = '\0';
|
||||
strcat(filename+sizeof(SCRIPTS_PATH), SCRIPTS_EXT);
|
||||
luaLoad(filename, sid);
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void luaLoadModelScripts()
|
||||
{
|
||||
luaScriptsCount = 0;
|
||||
|
||||
// Load model scripts
|
||||
for (int i=0; i<MAX_SCRIPTS; i++) {
|
||||
luaLoadModelScript(i);
|
||||
}
|
||||
|
||||
// Load custom function scripts
|
||||
for (int i=0; i<NUM_CFN; i++) {
|
||||
if (!luaLoadFunctionScript(i)) {
|
||||
POPUP_WARNING("Too many Lua scripts!"); // TODO translation
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
// Load telemetry screen script
|
||||
#endif
|
||||
}
|
||||
|
||||
char lua_warning_str[WARNING_LINE_LEN+1];
|
||||
|
@ -1333,37 +1374,60 @@ void luaTask(uint8_t evt)
|
|||
luaLoadModelScripts();
|
||||
}
|
||||
|
||||
for (int i=0; i<MAX_SCRIPTS; i++) {
|
||||
ScriptData & sd = g_model.scriptsData[i];
|
||||
for (int i=0; i<luaScriptsCount; i++) {
|
||||
ScriptInternalData & sid = scriptInternalData[i];
|
||||
if (sid.state == SCRIPT_OK) {
|
||||
uint8_t prev_mem = lua_gc(L, LUA_GCCOUNT, 0);
|
||||
SET_LUA_INSTRUCTIONS_COUNT(PERMANENT_SCRIPTS_MAX_INSTRUCTIONS);
|
||||
const char *filename;
|
||||
ScriptInputsOutputs * sio = NULL;
|
||||
if (sid.reference >= SCRIPT_MIX_FIRST && sid.reference <= SCRIPT_MIX_LAST) {
|
||||
ScriptData & sd = g_model.scriptsData[sid.reference-SCRIPT_MIX_FIRST];
|
||||
sio = &scriptInputsOutputs[sid.reference-SCRIPT_MIX_FIRST];
|
||||
filename = sd.file;
|
||||
lua_rawgeti(L, LUA_REGISTRYINDEX, sid.run);
|
||||
for (int j=0; j<sid.inputsCount; j++) {
|
||||
if (sid.inputs[j].type == 1)
|
||||
for (int j=0; j<sio->inputsCount; j++) {
|
||||
if (sio->inputs[j].type == 1)
|
||||
luaGetValueAndPush((uint8_t)sd.inputs[j]);
|
||||
else
|
||||
lua_pushinteger(L, sd.inputs[j] + sid.inputs[j].def);
|
||||
lua_pushinteger(L, sd.inputs[j] + sio->inputs[j].def);
|
||||
}
|
||||
if (lua_pcall(L, sid.inputsCount, sid.outputsCount, 0) == 0) {
|
||||
for (int j=sid.outputsCount-1; j>=0; j--) {
|
||||
}
|
||||
else if (sid.reference >= SCRIPT_FUNC_FIRST && sid.reference <= SCRIPT_FUNC_LAST) {
|
||||
CustomFnData & fn = g_model.funcSw[sid.reference-SCRIPT_FUNC_FIRST];
|
||||
if (!getSwitch(fn.swtch)) {
|
||||
continue;
|
||||
}
|
||||
filename = fn.play.name;
|
||||
lua_rawgeti(L, LUA_REGISTRYINDEX, sid.run);
|
||||
}
|
||||
#if 0
|
||||
else {
|
||||
// SCRIPT_TELEMETRY_SCREEN
|
||||
filename = "telem";
|
||||
lua_rawgeti(L, LUA_REGISTRYINDEX, sid.run);
|
||||
}
|
||||
#endif
|
||||
if (lua_pcall(L, sio ? sio->inputsCount : 0, sio ? sio->outputsCount : 0, 0) == 0) {
|
||||
if (sio) {
|
||||
for (int j=sio->outputsCount-1; j>=0; j--) {
|
||||
if (!lua_isnumber(L, -1)) {
|
||||
sid.state = (instructionsPercent > 100 ? SCRIPT_KILLED : SCRIPT_SYNTAX_ERROR);
|
||||
TRACE("Script %10s disabled", sd.file);
|
||||
TRACE("Script %8s disabled", filename);
|
||||
break;
|
||||
}
|
||||
sid.outputs[j].value = lua_tointeger(L, -1);
|
||||
sio->outputs[j].value = lua_tointeger(L, -1);
|
||||
lua_pop(L, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (instructionsPercent > 100) {
|
||||
TRACE("Script %10s killed", sd.file);
|
||||
TRACE("Script %8s killed", filename);
|
||||
sid.state = SCRIPT_KILLED;
|
||||
}
|
||||
else {
|
||||
TRACE("Script %10s error: %s", sd.file, lua_tostring(L, -1));
|
||||
TRACE("Script %8s error: %s", filename, lua_tostring(L, -1));
|
||||
sid.state = SCRIPT_SYNTAX_ERROR;
|
||||
}
|
||||
}
|
||||
|
@ -1392,6 +1456,7 @@ void luaTask(uint8_t evt)
|
|||
if (max_idx >= 0) {
|
||||
ScriptInternalData & sid = scriptInternalData[max_idx];
|
||||
TRACE("Script %d killed", max_idx);
|
||||
// TODO Global Warning
|
||||
sid.state = SCRIPT_LEAK;
|
||||
luaFree(sid);
|
||||
}
|
||||
|
|
|
@ -267,7 +267,7 @@ getvalue_t getValue(uint8_t i)
|
|||
else if (i<MIXSRC_LAST_LUA) {
|
||||
#if defined(LUA_MODEL_SCRIPTS)
|
||||
div_t qr = div(i-MIXSRC_FIRST_LUA, MAX_SCRIPT_OUTPUTS);
|
||||
return scriptInternalData[qr.quot].outputs[qr.rem].value;
|
||||
return scriptInputsOutputs[qr.quot].outputs[qr.rem].value;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
|
|
|
@ -824,7 +824,7 @@ enum Functions {
|
|||
FUNC_PLAY_VALUE,
|
||||
#if defined(CPUARM)
|
||||
FUNC_PLAY_DIFF,
|
||||
FUNC_RESERVE4,
|
||||
FUNC_PLAY_SCRIPT,
|
||||
FUNC_RESERVE5,
|
||||
FUNC_BACKGND_MUSIC,
|
||||
FUNC_BACKGND_MUSIC_PAUSE,
|
||||
|
|
|
@ -1018,6 +1018,7 @@ void generalDefault();
|
|||
void modelDefault(uint8_t id);
|
||||
|
||||
#if defined(CPUARM)
|
||||
bool isFileAvailable(const char * filename);
|
||||
void checkModelIdUnique(uint8_t id);
|
||||
#endif
|
||||
|
||||
|
@ -1450,11 +1451,21 @@ enum AUDIO_SOUNDS {
|
|||
SCRIPT_KILLED,
|
||||
SCRIPT_LEAK
|
||||
};
|
||||
enum ScriptReference {
|
||||
SCRIPT_MIX_FIRST,
|
||||
SCRIPT_MIX_LAST=SCRIPT_MIX_FIRST+MAX_SCRIPTS-1,
|
||||
SCRIPT_FUNC_FIRST,
|
||||
SCRIPT_FUNC_LAST=SCRIPT_FUNC_FIRST+MAX_SCRIPTS-1,
|
||||
SCRIPT_TELEMETRY_SCREEN,
|
||||
};
|
||||
struct ScriptInternalData {
|
||||
uint8_t reference;
|
||||
uint8_t state;
|
||||
int run;
|
||||
uint8_t instructions;
|
||||
uint8_t memory;
|
||||
};
|
||||
struct ScriptInputsOutputs {
|
||||
uint8_t inputsCount;
|
||||
ScriptInput inputs[MAX_SCRIPT_INPUTS];
|
||||
uint8_t outputsCount;
|
||||
|
@ -1463,8 +1474,10 @@ enum AUDIO_SOUNDS {
|
|||
#define LUASTATE_STANDALONE_SCRIPT_RUNNING 1
|
||||
#define LUASTATE_RELOAD_MODEL_SCRIPTS 2
|
||||
extern uint8_t luaState;
|
||||
extern ScriptInternalData scriptInternalData[MAX_SCRIPTS];
|
||||
extern uint8_t luaScriptsCount;
|
||||
extern ScriptInternalData standaloneScript;
|
||||
extern ScriptInternalData scriptInternalData[MAX_SCRIPTS];
|
||||
extern ScriptInputsOutputs scriptInputsOutputs[MAX_SCRIPTS];
|
||||
void luaInit();
|
||||
void luaTask(uint8_t evt);
|
||||
void luaExec(const char *filename);
|
||||
|
|
|
@ -249,7 +249,13 @@
|
|||
#define TR_ADJUST_GVAR "[AdjustGV]\0"
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#if defined(LUA)
|
||||
#define TR_CFN_PLAY_SCRIPT "Lua Script "
|
||||
#else
|
||||
#define TR_CFN_PLAY_SCRIPT "[Lua]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define TR_CFN_TEST "Test\0 "
|
||||
#else
|
||||
#define TR_CFN_TEST
|
||||
|
@ -258,7 +264,7 @@
|
|||
#define TR_CFN_RESERVE "[rezerva]\0 "
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_VFSWFUNC "Zámek \0 ""Trenér \0 ""Insta-Trim\0""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Hlasitost\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Podsvětlení" TR_CFN_TEST
|
||||
#define TR_VFSWFUNC "Zámek \0 ""Trenér \0 ""Insta-Trim\0""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Hlasitost\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_PLAY_SCRIPT TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Podsvětlení" TR_CFN_TEST
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#define TR_VFSWFUNC "Zámek \0 ""Trenér \0 ""Insta-Trim\0""Reset\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Podsvětlení" TR_CFN_TEST
|
||||
#else
|
||||
|
|
|
@ -249,7 +249,13 @@
|
|||
#define TR_ADJUST_GVAR "[AdjustGV]"
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#if defined(LUA)
|
||||
#define TR_CFN_PLAY_SCRIPT "Lua Script"
|
||||
#else
|
||||
#define TR_CFN_PLAY_SCRIPT "[Lua]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define TR_CFN_TEST "Test\0"
|
||||
#else
|
||||
#define TR_CFN_TEST
|
||||
|
@ -258,7 +264,7 @@
|
|||
#define TR_CFN_RESERVE "[Reserve]\0"
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_VFSWFUNC "Sicher\0 ""Lehrer \0 ""Inst. Trim""Rücksetz.\0""Setze \0 " TR_ADJUST_GVAR "Lautstr.\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "LCD Licht\0" TR_CFN_TEST
|
||||
#define TR_VFSWFUNC "Sicher\0 ""Lehrer \0 ""Inst. Trim""Rücksetz.\0""Setze \0 " TR_ADJUST_GVAR "Lautstr.\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_PLAY_SCRIPT TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "LCD Licht\0" TR_CFN_TEST
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#define TR_VFSWFUNC "Sicher\0 ""Lehrer \0 ""Inst. Trim""Rücksetz.\0" TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "LCD Licht\0" TR_CFN_TEST
|
||||
#else
|
||||
|
|
|
@ -249,7 +249,13 @@
|
|||
#define TR_ADJUST_GVAR "[AdjustGV]"
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#if defined(LUA)
|
||||
#define TR_CFN_PLAY_SCRIPT "Lua Script"
|
||||
#else
|
||||
#define TR_CFN_PLAY_SCRIPT "[Lua]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define TR_CFN_TEST "Test\0"
|
||||
#else
|
||||
#define TR_CFN_TEST
|
||||
|
@ -258,7 +264,7 @@
|
|||
#define TR_CFN_RESERVE "[reserve]\0"
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST
|
||||
#define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_PLAY_SCRIPT TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST
|
||||
#else
|
||||
|
|
|
@ -243,13 +243,19 @@
|
|||
#define TR_SDCLOGS "[SD Logs]\0"
|
||||
#endif
|
||||
|
||||
#ifdef GVARS
|
||||
#if defined(GVARS)
|
||||
#define TR_ADJUST_GVAR "Ajuste\0 "
|
||||
#else
|
||||
#define TR_ADJUST_GVAR "[AdjustGV]"
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#if defined(LUA)
|
||||
#define TR_CFN_PLAY_SCRIPT "Lua Script"
|
||||
#else
|
||||
#define TR_CFN_PLAY_SCRIPT "[Lua]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define TR_CFN_TEST "Test\0"
|
||||
#else
|
||||
#define TR_CFN_TEST
|
||||
|
@ -258,7 +264,7 @@
|
|||
#define TR_CFN_RESERVE "[reserve]\0"
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_VFSWFUNC "Seguro\0 ""Aprendiz\0 ""Inst. Trim""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volumen\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Luz fondo\0" TR_CFN_TEST
|
||||
#define TR_VFSWFUNC "Seguro\0 ""Aprendiz\0 ""Inst. Trim""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volumen\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_PLAY_SCRIPT TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Luz fondo\0" TR_CFN_TEST
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#define TR_VFSWFUNC "Seguro\0 ""Aprendiz\0 ""Inst. Trim""Reset\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Luz fondo\0" TR_CFN_TEST
|
||||
#else
|
||||
|
|
|
@ -249,7 +249,13 @@
|
|||
#define TR_ADJUST_GVAR "[AdjustGV]"
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#if defined(LUA)
|
||||
#define TR_CFN_PLAY_SCRIPT "Lua Script"
|
||||
#else
|
||||
#define TR_CFN_PLAY_SCRIPT "[Lua]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define TR_CFN_TEST "Test\0"
|
||||
#else
|
||||
#define TR_CFN_TEST
|
||||
|
@ -258,7 +264,7 @@
|
|||
#define TR_CFN_RESERVE "[reserve]\0"
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST
|
||||
#define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_PLAY_SCRIPT TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST
|
||||
#else
|
||||
|
|
|
@ -249,7 +249,13 @@
|
|||
#define TR_ADJUST_GVAR "[AjusteGV]\0 "
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#if defined(LUA)
|
||||
#define TR_CFN_PLAY_SCRIPT "Script Lua\0 "
|
||||
#else
|
||||
#define TR_CFN_PLAY_SCRIPT "[Lua]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define TR_CFN_TEST "Test\0 "
|
||||
#else
|
||||
#define TR_CFN_TEST
|
||||
|
@ -258,7 +264,7 @@
|
|||
#define TR_CFN_RESERVE "[reserve]\0 "
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_VFSWFUNC "Sécur.\0 ""Ecolage\0 ""Trim instant.""Remise à 0\0 ""Déf.\0 " TR_ADJUST_GVAR "Volume\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Rétroécl.\0 " TR_CFN_TEST
|
||||
#define TR_VFSWFUNC "Sécur.\0 ""Ecolage\0 ""Trim instant.""Remise à 0\0 ""Déf.\0 " TR_ADJUST_GVAR "Volume\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_PLAY_SCRIPT TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Rétroécl.\0 " TR_CFN_TEST
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#define TR_VFSWFUNC "Sécur.\0 ""Ecolage\0 ""Trim instant.""Remise à 0\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Rétroécl.\0 " TR_CFN_TEST
|
||||
#else
|
||||
|
|
|
@ -249,7 +249,13 @@
|
|||
#define TR_ADJUST_GVAR "[RegolaVG]\0 "
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#if defined(LUA)
|
||||
#define TR_CFN_PLAY_SCRIPT "Lua Script\0 "
|
||||
#else
|
||||
#define TR_CFN_PLAY_SCRIPT "[Lua]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define TR_CFN_TEST "Test\0 "
|
||||
#else
|
||||
#define TR_CFN_TEST
|
||||
|
@ -258,7 +264,7 @@
|
|||
#define TR_CFN_RESERVE "[riserva] \0"
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_VFSWFUNC "Blocco\0 ""Maestro \0 ""Trim Instant.""Azzera\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Retroillum.\0 " TR_CFN_TEST
|
||||
#define TR_VFSWFUNC "Blocco\0 ""Maestro \0 ""Trim Instant.""Azzera\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_PLAY_SCRIPT TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Retroillum.\0 " TR_CFN_TEST
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#define TR_VFSWFUNC "Blocco\0 ""Maestro \0 ""Trim Instant.""Azzera\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Retroillum.\0 " TR_CFN_TEST
|
||||
#else
|
||||
|
|
|
@ -249,7 +249,13 @@
|
|||
#define TR_ADJUST_GVAR "[UstawZG] "
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#if defined(LUA)
|
||||
#define TR_CFN_PLAY_SCRIPT "Lua Script"
|
||||
#else
|
||||
#define TR_CFN_PLAY_SCRIPT "[Lua]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define TR_CFN_TEST "Test\0"
|
||||
#else
|
||||
#define TR_CFN_TEST
|
||||
|
@ -258,7 +264,7 @@
|
|||
#define TR_CFN_RESERVE "[rezerwa]\0"
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_VFSWFUNC "Bezp.\0 ""Trener \0 ""Inst-Trim ""Resetuj\0 ""Ustaw\0 " TR_ADJUST_GVAR "Głośność\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Podświetl\0" TR_CFN_TEST
|
||||
#define TR_VFSWFUNC "Bezp.\0 ""Trener \0 ""Inst-Trim ""Resetuj\0 ""Ustaw\0 " TR_ADJUST_GVAR "Głośność\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_PLAY_SCRIPT TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Podświetl\0" TR_CFN_TEST
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#define TR_VFSWFUNC "Bezp.\0 ""Trener \0 ""Inst-Trim ""Resetuj\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Podświetl\0" TR_CFN_TEST
|
||||
#else
|
||||
|
|
|
@ -249,7 +249,13 @@
|
|||
#define TR_ADJUST_GVAR "[AdjustGV]\0 "
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#if defined(LUA)
|
||||
#define TR_CFN_PLAY_SCRIPT "Lua Script\0 "
|
||||
#else
|
||||
#define TR_CFN_PLAY_SCRIPT "[Lua]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define TR_CFN_TEST "Teste\0 "
|
||||
#else
|
||||
#define TR_CFN_TEST
|
||||
|
@ -258,7 +264,7 @@
|
|||
#define TR_CFN_RESERVE "[reserve]\0 "
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_VFSWFUNC "Seguro\0 ""Aprendiz\0 ""Ajuste Rapido""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0 " TR_CFN_TEST
|
||||
#define TR_VFSWFUNC "Seguro\0 ""Aprendiz\0 ""Ajuste Rapido""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_PLAY_SCRIPT TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0 " TR_CFN_TEST
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#define TR_VFSWFUNC "Seguro\0 ""Aprendiz\0 ""Ajuste Rapido""Reset\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0 " TR_CFN_TEST
|
||||
#else
|
||||
|
|
|
@ -249,7 +249,13 @@
|
|||
#define TR_ADJUST_GVAR "[Just. GV]"
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#if defined(LUA)
|
||||
#define TR_CFN_PLAY_SCRIPT "Lua Script"
|
||||
#else
|
||||
#define TR_CFN_PLAY_SCRIPT "[Lua]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define TR_CFN_TEST "Test\0"
|
||||
#else
|
||||
#define TR_CFN_TEST
|
||||
|
@ -258,7 +264,7 @@
|
|||
#define TR_CFN_RESERVE "[reserve]\0"
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_VFSWFUNC "Säkra \0 ""Trainer\0 ""Sätt Trim\0""Nollställ\0""Sätt\0 " TR_ADJUST_GVAR "Volym\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Belysning\0" TR_CFN_TEST
|
||||
#define TR_VFSWFUNC "Säkra \0 ""Trainer\0 ""Sätt Trim\0""Nollställ\0""Sätt\0 " TR_ADJUST_GVAR "Volym\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_PLAY_SCRIPT TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Belysning\0" TR_CFN_TEST
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#define TR_VFSWFUNC "Säkra \0 ""Trainer \0 ""Sätt Trim\0""Nollställ\0" TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Belysning\0" TR_CFN_TEST
|
||||
#else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue