1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-16 12:55:12 +03:00

Merge branch 'next' into schwabe/ar9x_test_and_fix

This commit is contained in:
Bertrand Songis 2016-08-01 07:03:17 +02:00
commit 67eb04e44c
404 changed files with 3963 additions and 6172 deletions

View file

@ -24,4 +24,4 @@ install:
- sudo dpkg --install gcc-avr_1%3a4.8-2.1_amd64.deb avr-libc_1%3a1.8.0-4.1_all.deb libmpfr4_3.1.2-1_amd64.deb binutils-avr_2.23.1-2.1_amd64.deb libmpc3_1.0.1-1ubuntu1_amd64.deb
script:
- ./radio/util/commit-tests.sh .
- ./tools/commit-tests.sh .

View file

@ -130,10 +130,12 @@ QString FirmwareInterface::seekLabel(const QString & label)
QString FirmwareInterface::getFlavour() const
{
if (flavour == "opentx-x9dp")
return "opentx-taranis-plus";
else if (flavour == "opentx-x9d")
return "opentx-taranis";
if (flavour == "opentx-taranis-x9e")
return "opentx-x9e";
else if (flavour == "opentx-x9dp" || flavour == "opentx-taranis-plus")
return "opentx-x9d+";
else if (flavour == "opentx-taranis")
return "opentx-x9d";
else
return flavour;
}

View file

@ -1147,7 +1147,7 @@ void addOpenTxTaranisOptions(OpenTxFirmware * firmware)
Option usb_options[] = { { "massstorage", QObject::tr("Instead of Joystick emulation, USB connection is Mass Storage (as in the Bootloader)") }, { "cli", QObject::tr("Instead of Joystick emulation, USB connection is Command Line Interface") }, { NULL } };
firmware->addOptions(usb_options);
firmware->addOption("mixersmon", QObject::tr("Adds mixers output view to the CHANNELS MONITOR screen, pressing [ENT] switches between the views"));
firmware->addOption("eu", QObject::tr("Removes D8 and LR12 FrSky protocols that are not legal for use in the EU on radios sold after Jan 1st, 2015"));
firmware->addOption("eu", QObject::tr("Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015"));
firmware->addOption("internalppm", QObject::tr("Support for PPM internal module hack"));
firmware->addOption("multimodule", QObject::tr("Support for the DIY-Multiprotocol-TX-Module"));
firmware->addOption("sqt5font", QObject::tr("Use alternative SQT5 font"));
@ -1176,20 +1176,20 @@ void registerOpenTxFirmwares()
Option dsm2_options[] = { { "DSM2", QObject::tr("Support for DSM2 modules"), 0 }, { "DSM2PPM", QObject::tr("Support for DSM2 modules using ppm instead of true serial"), 0 }, { NULL } };
/* Taranis Plus board */
firmware = new OpenTxFirmware("opentx-taranisplus", QObject::tr("FrSky Taranis Plus"), BOARD_TARANIS_PLUS);
firmware = new OpenTxFirmware("opentx-x9d+", QObject::tr("FrSky Taranis Plus"), BOARD_TARANIS_PLUS);
addOpenTxTaranisOptions(firmware);
addOpenTxCommonOptions(firmware);
firmwares.push_back(firmware);
/* Taranis board */
firmware = new OpenTxFirmware("opentx-taranis", QObject::tr("FrSky Taranis"), BOARD_TARANIS);
firmware = new OpenTxFirmware("opentx-x9d", QObject::tr("FrSky Taranis"), BOARD_TARANIS);
firmware->addOption("haptic", QObject::tr("Haptic module installed"));
addOpenTxTaranisOptions(firmware);
addOpenTxCommonOptions(firmware);
firmwares.push_back(firmware);
/* Taranis X9E board */
firmware = new OpenTxFirmware("opentx-taranisx9e", QObject::tr("FrSky Taranis X9E"), BOARD_TARANIS_X9E);
firmware = new OpenTxFirmware("opentx-x9e", QObject::tr("FrSky Taranis X9E"), BOARD_TARANIS_X9E);
firmware->addOption("shutdownconfirm", QObject::tr("Confirmation before radio shutdown"));
addOpenTxTaranisOptions(firmware);
addOpenTxCommonOptions(firmware);
@ -1460,7 +1460,7 @@ void registerOpenTxFirmwares()
addOpenTxCommonOptions(firmware);
firmwares.push_back(firmware);
default_firmware_variant = GetFirmware("opentx-taranisplus-en");
default_firmware_variant = GetFirmware("opentx-x9d+");
current_firmware_variant = default_firmware_variant;
}

View file

@ -50,7 +50,7 @@ if (inputs.rotenc) pind |= 0x20;
if (inputs.rotenc) PIOB->PIO_PDSR &= ~0x40; else PIOB->PIO_PDSR |= 0x40;
#endif
#if defined(PCBFLAMENCO) || (defined(PCBTARANIS) && defined(REV9E))
#if defined(PCBFLAMENCO) || defined(PCBX9E)
if (inputs.rotenc) simuSetKey(KEY_ENTER, true);
#endif
#endif

View file

@ -8067,8 +8067,8 @@ Mixage actif par défaut si non-renseigné.</translation>
</message>
<message>
<location filename="../firmwares/opentx/opentxinterface.cpp" line="1144"/>
<source>Removes D8 and LR12 FrSky protocols that are not legal for use in the EU on radios sold after Jan 1st, 2015</source>
<translation>Supprime les protocoles RF D8 et LR12 qui ne sont plus utilisable légalementen Europe sur les radios vendues après le 1er janvier 2015</translation>
<source>Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015</source>
<translation>Supprime le protocole RF D8 qui n&apos;est plus utilisable légalement en Europe sur les radios vendues après le 1er janvier 2015</translation>
</message>
<message>
<location filename="../firmwares/opentx/opentxinterface.cpp" line="1145"/>

View file

@ -1,25 +1,37 @@
local COLUMN_2 = 140
local edit = false
local pages = { }
local pageIndex = 1
local fieldIndex = 1
local pageOffset = 0
local pages = { }
local edit = false
local charIndex = 1
-- Change display attribute to current field
local function incrField(step)
local fields = pages[pageIndex].fields
local field = fields[fieldIndex]
local min, max = 0, 0
if field.type <= 5 then
min = field.min
max = field.max
elseif field.type == 9 then
min = 0
max = #field.values - 1
end
if (step < 0 and field.value > min) or (step > 0 and field.value < max) then
field.value = field.value + step
if field.type == 10 then
local byte = string.byte(field.value, charIndex) + step
if byte < 32 then
byte = 32
elseif byte > 122 then
byte = 122
end
field.value = string.sub(field.value, 1, charIndex-1) .. string.char(byte) .. string.sub(field.value, charIndex+1)
else
local min, max = 0, 0
if field.type <= 5 then
min = field.min
max = field.max
step = field.step * step
elseif field.type == 9 then
min = 0
max = #field.values - 1
end
if (step < 0 and field.value > min) or (step > 0 and field.value < max) then
field.value = field.value + step
end
end
end
@ -32,9 +44,11 @@ end
local function selectField(step)
local fields = pages[pageIndex].fields
local newFieldIndex = fieldIndex
local field = fields[newFieldIndex]
repeat
newFieldIndex = 1 + ((newFieldIndex + step - 1 + #fields) % #fields)
until newFieldIndex == fieldIndex or (pages[pageIndex].fields[newFieldIndex].type ~= 11 and pages[pageIndex].fields[newFieldIndex].name ~= nil)
field = fields[newFieldIndex]
until newFieldIndex == fieldIndex or (field.type ~= 11 and field.type ~= 12 and field.name ~= nil)
fieldIndex = newFieldIndex
if fieldIndex > 7 + pageOffset then
pageOffset = fieldIndex - 7
@ -135,45 +149,140 @@ local function fieldGetString(data, offset)
return result, offset
end
-- UINT8
local function fieldUint8SelectionLoad(field, data, offset)
field.value = data[offset]
field.min = data[offset+1]
field.max = data[offset+2]
field.unit, offset = fieldGetString(data, offset+4)
local function fieldGetValue(data, offset, size)
local result = 0
for i=0, size-1 do
result = bit32.lshift(result, 8) + data[offset + i]
end
return result
end
local function fieldUint8SelectionSave(fieldIndex)
crossfireTelemetryPush(0x2D, { pages[pageIndex].id, 0xEA, fieldIndex, pages[pageIndex].fields[fieldIndex].value })
local function fieldUnsignedSelectionLoad(field, data, offset, size)
field.value = fieldGetValue(data, offset, size)
field.min = fieldGetValue(data, offset+size, size)
field.max = fieldGetValue(data, offset+2*size, size)
field.unit, offset = fieldGetString(data, offset+3*size)
field.step = 1
end
local function fieldIntSelectionDisplay(field, y, attr)
local function fieldUnsignedToSigned(field, size)
local bandval = bit32.lshift(0x80, (size-1)*8)
field.value = field.value - bit32.band(field.value, bandval) * 2
field.min = field.min - bit32.band(field.min, bandval) * 2
field.max = field.max - bit32.band(field.max, bandval) * 2
end
local function fieldSignedSelectionLoad(field, data, offset, size)
fieldUnsignedSelectionLoad(field, data, offset, size)
fieldUnsignedToSigned(field, size)
end
local function fieldIntSave(fieldIndex, value, size)
local frame = { pages[pageIndex].id, 0xEA, fieldIndex }
for i=size-1, 0, -1 do
frame[#frame + 1] = (bit32.rshift(value, 8*i) % 256)
end
crossfireTelemetryPush(0x2D, frame)
end
local function fieldUnsignedSelectionSave(fieldIndex, size)
local value = pages[pageIndex].fields[fieldIndex].value
fieldIntSave(fieldIndex, value, size)
end
local function fieldSignedSelectionSave(fieldIndex, size)
local value = pages[pageIndex].fields[fieldIndex].value
if value < 0 then
value = bit32.lshift(0x100, (size-1)*8) - value
end
fieldIntSave(fieldIndex, value, size)
end
local function fieldIntDisplay(field, y, attr)
lcd.drawNumber(COLUMN_2, y, field.value, LEFT + attr)
lcd.drawText(lcd.getLastPos(), y, field.unit, attr)
end
-- UINT16
local function fieldUint16SelectionLoad(field, data, offset)
field.value = bit32.lshift(data[offset], 8) + data[offset+1]
field.min = bit32.lshift(data[offset+2], 8) + data[offset+3]
field.max = bit32.lshift(data[offset+4], 8) + data[offset+5]
field.unit, offset = fieldGetString(data, offset+6)
-- UINT8
local function fieldUint8Load(field, data, offset)
fieldUnsignedSelectionLoad(field, data, offset, 1)
end
local function fieldUint16SelectionSave(fieldIndex)
crossfireTelemetryPush(0x2D, { pages[pageIndex].id, 0xEA, fieldIndex, bit32.rshift(pages[pageIndex].fields[fieldIndex].value, 8), pages[pageIndex].fields[fieldIndex].value % 255 })
local function fieldUint8Save(fieldIndex)
fieldUnsignedSelectionSave(fieldIndex, 1)
end
-- INT8
local function fieldInt8Load(field, data, offset)
fieldSignedSelectionLoad(field, data, offset, 1)
end
local function fieldInt8Save(fieldIndex)
fieldSignedSelectionSave(fieldIndex, 1)
end
-- UINT16
local function fieldUint16Load(field, data, offset)
fieldUnsignedSelectionLoad(field, data, offset, 2)
end
local function fieldUint16Save(fieldIndex)
fieldUnsignedSelectionSave(fieldIndex, 2)
end
-- INT16
local function fieldInt16Load(field, data, offset)
fieldSignedSelectionLoad(field, data, offset, 2)
end
local function fieldInt16Save(fieldIndex)
fieldSignedSelectionSave(fieldIndex, 2)
end
-- UINT32
local function fieldUint32SelectionLoad(field, data, offset)
field.value = bit32.lshift(data[offset], 24) + bit32.lshift(data[offset+1], 16) + bit32.lshift(data[offset+2], 8) + data[offset+3]
field.min = bit32.lshift(data[offset+4], 24) + bit32.lshift(data[offset+5], 16) + bit32.lshift(data[offset+6], 8) + data[offset+7]
field.max = bit32.lshift(data[offset+8], 24) + bit32.lshift(data[offset+9], 16) + bit32.lshift(data[offset+10], 8) + data[offset+11]
field.unit, offset = fieldGetString(data, offset+12)
local function fieldUint32Load(field, data, offset)
fieldUnsignedSelectionLoad(field, data, offset, 4)
end
local function fieldUint32SelectionSave(fieldIndex)
crossfireTelemetryPush(0x2D, { pages[pageIndex].id, 0xEA, fieldIndex, bit32.rshift(pages[pageIndex].fields[fieldIndex].value, 24), bit32.rshift(pages[pageIndex].fields[fieldIndex].value, 16) % 255, bit32.rshift(pages[pageIndex].fields[fieldIndex].value, 8) % 255, pages[pageIndex].fields[fieldIndex].value % 255 })
local function fieldUint32Save(fieldIndex)
fieldUnsignedSelectionSave(fieldIndex, 4)
end
-- INT32
local function fieldInt32Load(field, data, offset)
fieldSignedSelectionLoad(field, data, offset, 4)
end
local function fieldInt32Save(fieldIndex)
fieldSignedSelectionSave(fieldIndex, 4)
end
-- FLOAT
local function fieldFloatSelectionLoad(field, data, offset)
field.value = fieldGetValue(data, offset, 4)
field.min = fieldGetValue(data, offset+4, 4)
field.max = fieldGetValue(data, offset+8, 4)
fieldUnsignedToSigned(field, 4)
field.prec = data[offset+12]
if field.prec > 2 then
field.prec = 2
end
field.step = fieldGetValue(data, offset+13, 4)
field.unit, offset = fieldGetString(data, offset+14)
end
local function fieldFloatSelectionDisplay(field, y, attr)
local attrnum
if field.prec == 1 then
attrnum = LEFT + attr + PREC1
elseif field.prec == 2 then
attrnum = LEFT + attr + PREC2
else
attrnum = LEFT + attr
end
lcd.drawNumber(COLUMN_2, y, field.value, attrnum)
lcd.drawText(lcd.getLastPos(), y, field.unit, attr)
end
-- TEXT SELECTION
@ -193,36 +302,54 @@ local function fieldTextSelectionDisplay(field, y, attr)
end
-- STRING
local function fieldStringSelectionLoad(field, data, offset)
local function fieldStringLoad(field, data, offset)
field.value, offset = fieldGetString(data, offset)
if #data >= offset then
field.maxlen = data[offset]
end
end
local function fieldStringSelectionSave(fieldIndex)
-- crossfireTelemetryPush(0x2D, { pages[pageIndex].id, 0xEA, fieldIndex, })
local function fieldStringSave(fieldIndex)
local frame = { pages[pageIndex].id, 0xEA, fieldIndex }
for i=1, string.len(field.value) do
frame[#frame + 1] = string.byte(field.value, i)
end
frame[#frame + 1] = 0
crossfireTelemetryPush(0x2D, frame)
end
local function fieldStringSelectionDisplay(field, y, attr)
lcd.drawText(COLUMN_2, y, field.value, attr)
local function fieldStringDisplay(field, y, attr)
if edit == true and attr ~= 0 then
lcd.drawText(COLUMN_2, y, field.value, FIXEDWIDTH)
lcd.drawText(COLUMN_2+6*charIndex-6, y, string.sub(field.value, charIndex, charIndex), FIXEDWIDTH + attr)
else
lcd.drawText(COLUMN_2, y, field.value, FIXEDWIDTH + attr)
end
end
local function fieldCommandLoad(field, data, offset)
-- TODO
end
local function fieldCommandDisplay(field, y, attr)
lcd.drawText(0, y, field.name, attr)
end
local types_functions = {
{ load=fieldUint8SelectionLoad, save=fieldUint8SelectionSave, display=fieldIntSelectionDisplay },
{ load=fieldUint8SelectionLoad, save=fieldUint8SelectionSave, display=fieldIntSelectionDisplay },
{ load=fieldUint16SelectionLoad, save=fieldUint16SelectionSave, display=fieldIntSelectionDisplay },
{ load=fieldUint16SelectionLoad, save=fieldUint16SelectionSave, display=fieldIntSelectionDisplay },
{ load=fieldUint32SelectionLoad, save=fieldUint32SelectionSave, display=fieldIntSelectionDisplay },
{ load=fieldUint32SelectionLoad, save=fieldUint32SelectionSave, display=fieldIntSelectionDisplay },
nil,
{ load=fieldUint8Load, save=fieldUint8Save, display=fieldIntDisplay },
{ load=fieldInt8Load, save=fieldInt8Save, display=fieldIntDisplay },
{ load=fieldUint16Load, save=fieldUint16Save, display=fieldIntDisplay },
{ load=fieldInt16Load, save=fieldInt16Save, display=fieldIntDisplay },
{ load=fieldUint32Load, save=fieldUint32Save, display=fieldIntDisplay },
{ load=fieldInt32Load, save=fieldInt32Save, display=fieldIntDisplay },
nil,
nil,
{ load=fieldFloatSelectionLoad, save=fieldInt32Save, display=fieldFloatSelectionDisplay },
{ load=fieldTextSelectionLoad, save=fieldTextSelectionSave, display=fieldTextSelectionDisplay },
{ load=fieldStringSelectionLoad, save=fieldStringSelectionSave, display=fieldStringSelectionDisplay },
{ load=fieldStringLoad, save=fieldStringSave, display=fieldStringDisplay },
nil,
{ load=fieldStringSelectionLoad, save=fieldStringSelectionSave, display=fieldStringSelectionDisplay },
{ load=fieldStringLoad, save=nil, display=fieldStringDisplay },
{ load=fieldCommandLoad, save=nil, display=fieldCommandDisplay },
}
local function parseParameterInfoMessage(data)
@ -295,11 +422,24 @@ end
local function runDevicePage(index, event)
local page = pages[index]
if event == EVT_EXIT_BREAK then -- exit script
return 2
if edit == true then
edit = false
else
return 2
end
elseif event == EVT_ENTER_BREAK then -- toggle editing/selecting current field
local field = page.fields[fieldIndex]
if field.name ~= nil then
edit = not edit
if field.type == 10 then
if edit == false then
edit = true
charIndex = 1
else
charIndex = charIndex + 1
end
else
edit = not edit
end
if edit == false and field.functions.save ~= nil then
field.functions.save(fieldIndex)
end

View file

@ -1,7 +1,7 @@
include(CMakeForceCompiler)
include(Bitmaps)
set(PCB "TARANIS" CACHE STRING "Radio type")
set(PCB "X9D+" CACHE STRING "Radio type")
set(TRANSLATIONS "EN" CACHE STRING "Radio language")
option(HELI "Heli menu" ON)
option(FLIGHT_MODES "Flight Modes" ON)
@ -53,9 +53,9 @@ set(M128_VARIANT 32768)
set(FIRMWARE_DEPENDENCIES firmware_translations)
set(9X_GUI_SRC
menu_model_inputs_mixes.cpp
menu_general_diagkeys.cpp
menu_general_diaganas.cpp
model_inputs_mixes.cpp
radio_diagkeys.cpp
radio_diaganas.cpp
)
set(FATFS_SRC
@ -66,7 +66,7 @@ set(FATFS_SRC
if(PCB STREQUAL HORUS)
include(targets/horus/CMakeLists.txt)
elseif(PCB STREQUAL TARANIS)
elseif(PCB STREQUAL X9E OR PCB STREQUAL X9D+ OR PCB STREQUAL X9D OR PCB STREQUAL X7D)
include(targets/taranis/CMakeLists.txt)
elseif(PCB STREQUAL SKY9X OR PCB STREQUAL 9XRPRO OR PCB STREQUAL AR9X)
include(targets/sky9x/CMakeLists.txt)
@ -78,11 +78,11 @@ elseif(PCB STREQUAL 9X2561)
string(TOLOWER ${PCB} FLAVOUR)
set(EEPROM EEPROM_RLC)
add_definitions(-DEEPROM_VARIANT=${M2561_VARIANT})
set(GUI_DIR 9x)
set(GUI_DIR 128x64)
set(TARGET_DIR 9x)
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} 9x_bitmaps)
add_definitions(-DPCBSTD -DPCB${PCB} -DCPUM2561)
set(TARGET_SRC ${TARGET_SRC} board_stock.cpp)
set(TARGET_SRC ${TARGET_SRC} board.cpp)
set(GUI_SRC ${GUI_SRC} ${9X_GUI_SRC})
if(SP22)
add_definitions(-DSP22)
@ -99,6 +99,8 @@ else()
message(FATAL_ERROR "Unknown PCB '${PCB}'")
endif()
include_directories(gui gui/${GUI_DIR})
if(NOT PCB STREQUAL 9XR AND NOT PCB STREQUAL 9XRPRO)
option(DBLKEYS "Double Keys" ON)
if(DBLKEYS)
@ -107,23 +109,25 @@ if(NOT PCB STREQUAL 9XR AND NOT PCB STREQUAL 9XRPRO)
endif()
if(CPU_TYPE STREQUAL STM32F4)
include(common/arm/stm32/f4/CMakeLists.txt)
include(targets/common/arm/stm32/f4/CMakeLists.txt)
endif()
if(CPU_TYPE STREQUAL STM32F2)
include(common/arm/stm32/f2/CMakeLists.txt)
include(targets/common/arm/stm32/f2/CMakeLists.txt)
endif()
if(CPU_FAMILY STREQUAL STM32)
include(common/arm/stm32/CMakeLists.txt)
include(targets/common/arm/stm32/CMakeLists.txt)
endif()
if(ARCH STREQUAL ARM)
include(common/arm/CMakeLists.txt)
include(targets/common/arm/CMakeLists.txt)
else()
include(common/avr/CMakeLists.txt)
include(targets/common/avr/CMakeLists.txt)
endif()
include_directories(targets/${TARGET_DIR} ${THIRDPARTY_DIR})
foreach(LANGUAGE ${GUI_LANGUAGES})
string(TOUPPER ${LANGUAGE} LANGUAGE_CAPITALIZED)
if(TRANSLATIONS STREQUAL ${LANGUAGE_CAPITALIZED})
@ -158,7 +162,6 @@ set(GUI_SRC
lcd.cpp
splash.cpp
fonts.cpp
helpers.cpp
navigation.cpp
popups.cpp
widgets.cpp
@ -168,16 +171,16 @@ set(GUI_SRC
set(GUI_SRC
${GUI_SRC}
menu_model.cpp
menu_model_select.cpp
menu_model_setup.cpp
menu_model_limits.cpp
menu_model_logical_switches.cpp
model_select.cpp
model_setup.cpp
model_outputs.cpp
model_logical_switches.cpp
model_special_functions.cpp
menu_model_telemetry.cpp
menu_general.cpp
model_telemetry.cpp
menu_radio.cpp
radio_setup.cpp
menu_general_trainer.cpp
menu_general_version.cpp
radio_trainer.cpp
radio_version.cpp
radio_calibration.cpp
view_main.cpp
view_statistics.cpp
@ -198,7 +201,7 @@ endif()
if(TEMPLATES)
add_definitions(-DTEMPLATES)
set(SRC ${SRC} templates.cpp)
set(GUI_SRC ${GUI_SRC} menu_model_templates.cpp)
set(GUI_SRC ${GUI_SRC} model_templates.cpp)
endif()
if(NOT LUA STREQUAL NO)
@ -207,7 +210,7 @@ if(NOT LUA STREQUAL NO)
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} ${LUA_EXPORT})
if(LUA STREQUAL YES)
add_definitions(-DLUA_MODEL_SCRIPTS)
set(GUI_SRC ${GUI_SRC} menu_model_custom_scripts.cpp)
set(GUI_SRC ${GUI_SRC} model_custom_scripts.cpp)
endif()
set(SRC ${SRC} lua/interface.cpp lua/api_general.cpp lua/api_lcd.cpp lua/api_model.cpp)
set(LUA_SRC lapi.c lcode.c lctype.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c lmem.c lobject.c lopcodes.c lparser.c
@ -221,17 +224,17 @@ endif()
if(HELI)
add_definitions(-DHELI)
set(GUI_SRC ${GUI_SRC} menu_model_heli.cpp)
set(GUI_SRC ${GUI_SRC} model_heli.cpp)
endif()
if(FLIGHT_MODES)
add_definitions(-DFLIGHT_MODES)
set(GUI_SRC ${GUI_SRC} menu_model_flightmodes.cpp)
set(GUI_SRC ${GUI_SRC} model_flightmodes.cpp)
endif()
if(CURVES)
add_definitions(-DCURVES)
set(GUI_SRC ${GUI_SRC} menu_model_curves.cpp)
set(GUI_SRC ${GUI_SRC} model_curves.cpp)
endif()
if(GVARS)
@ -273,7 +276,7 @@ if(SDCARD)
add_definitions(-DSDCARD)
include_directories(${FATFS_DIR} ${FATFS_DIR}/option)
set(SRC ${SRC} sdcard.cpp rtc.cpp logs.cpp)
set(GUI_SRC ${GUI_SRC} menu_general_sdmanager.cpp)
set(GUI_SRC ${GUI_SRC} radio_sdmanager.cpp)
set(FIRMWARE_SRC ${FIRMWARE_SRC} ${FATFS_SRC})
endif()
@ -399,7 +402,7 @@ endif()
set(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CPP_FLAGS} -g")
set(CMAKE_EXE_LINKER_FLAGS "-mcpu=${MCU} -mthumb -lm -T${RADIO_SRC_DIRECTORY}/${LINKER_SCRIPT} -Wl,-Map=firmware.map,--cref,--no-warn-mismatch,--gc-sections")
if(PCB STREQUAL TARANIS)
if(PCB STREQUAL X9D OR PCB STREQUAL X9D+ OR PCB STREQUAL X9E)
add_subdirectory(targets/${TARGET_DIR}/bootloader)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/targets/${TARGET_DIR}/bootloader)
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} bootloader)

View file

@ -1,4 +1,4 @@
add_bitmaps_target(9x_xbm_1bit ${RADIO_SRC_DIRECTORY}/bitmaps/sticks.xbm 128 1bit 4)
add_bitmaps_target(9x_fonts_1bit ${RADIO_SRC_DIRECTORY}/fonts/std/*.png 128 "")
add_bitmaps_target(9x_bitmaps ${RADIO_SRC_DIRECTORY}/bitmaps/9x/*.png 128 1bit)
add_bitmaps_target(9x_bitmaps ${RADIO_SRC_DIRECTORY}/bitmaps/128x64/*.png 128 1bit)
add_dependencies(9x_bitmaps 9x_fonts_1bit 9x_xbm_1bit)

View file

Before

Width:  |  Height:  |  Size: 212 B

After

Width:  |  Height:  |  Size: 212 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 196 B

After

Width:  |  Height:  |  Size: 196 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 353 B

Before After
Before After

View file

@ -1,4 +1,4 @@
add_bitmaps_target(taranis_xbm ${RADIO_SRC_DIRECTORY}/bitmaps/sticks.xbm 128 1bit 4)
add_bitmaps_target(taranis_fonts ${RADIO_SRC_DIRECTORY}/fonts/std/*.png 128 "")
add_bitmaps_target(taranis_bitmaps ${RADIO_SRC_DIRECTORY}/bitmaps/taranis/*.png 212 4bits)
add_dependencies(taranis_bitmaps taranis_fonts taranis_xbm)
add_bitmaps_target(taranis_bitmaps ${RADIO_SRC_DIRECTORY}/bitmaps/212x64/*.png 212 4bits)
add_dependencies(taranis_bitmaps taranis_fonts taranis_xbm)

View file

Before

Width:  |  Height:  |  Size: 740 B

After

Width:  |  Height:  |  Size: 740 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 583 B

After

Width:  |  Height:  |  Size: 583 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 502 B

After

Width:  |  Height:  |  Size: 502 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 559 B

After

Width:  |  Height:  |  Size: 559 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 999 B

After

Width:  |  Height:  |  Size: 999 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 532 B

After

Width:  |  Height:  |  Size: 532 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 559 B

After

Width:  |  Height:  |  Size: 559 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 690 B

After

Width:  |  Height:  |  Size: 690 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 478 B

After

Width:  |  Height:  |  Size: 478 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 538 B

After

Width:  |  Height:  |  Size: 538 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 386 B

After

Width:  |  Height:  |  Size: 386 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 598 B

After

Width:  |  Height:  |  Size: 598 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 566 B

After

Width:  |  Height:  |  Size: 566 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 696 B

After

Width:  |  Height:  |  Size: 696 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 636 B

After

Width:  |  Height:  |  Size: 636 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 682 B

After

Width:  |  Height:  |  Size: 682 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 708 B

After

Width:  |  Height:  |  Size: 708 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 494 B

After

Width:  |  Height:  |  Size: 494 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 570 B

After

Width:  |  Height:  |  Size: 570 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 434 B

After

Width:  |  Height:  |  Size: 434 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 615 B

After

Width:  |  Height:  |  Size: 615 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 652 B

After

Width:  |  Height:  |  Size: 652 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 550 B

After

Width:  |  Height:  |  Size: 550 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 548 B

After

Width:  |  Height:  |  Size: 548 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 790 B

After

Width:  |  Height:  |  Size: 790 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 653 B

After

Width:  |  Height:  |  Size: 653 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 392 B

After

Width:  |  Height:  |  Size: 392 B

Before After
Before After

View file

@ -1,12 +1,12 @@
add_bitmaps_target(horus_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/horus/bmp_*.png" 480 5/6/5)
add_bitmaps_target(horus_calibration_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/horus/calibration/bmp_*.png" 480 5/6/5)
add_bitmaps_target(horus_button_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/horus/button/alpha_*.png" 480 4/4/4/4)
add_bitmaps_target(horus_alpha_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/horus/alpha_*.png" 480 4/4/4/4)
add_bitmaps_target(horus_alpha_calibration_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/horus/calibration/alpha_*.png" 480 4/4/4/4)
add_bitmaps_target(horus_masks ${RADIO_SRC_DIRECTORY}/bitmaps/horus/mask_*.png 480 8bits)
add_bitmaps_target(horus_slider_masks "${RADIO_SRC_DIRECTORY}/bitmaps/horus/slider/*.png" 480 8bits)
add_bitmaps_target(horus_layouts_masks "${RADIO_SRC_DIRECTORY}/gui/horus/layouts/*.png" 480 8bits)
add_bitmaps_target(horus_themes_bitmaps "${RADIO_SRC_DIRECTORY}/gui/horus/themes/*.png" 480 5/6/5)
add_bitmaps_target(horus_fonts ${RADIO_SRC_DIRECTORY}/fonts/horus/*.png 480 8bits)
add_bitmaps_target(horus_volume_masks ${RADIO_SRC_DIRECTORY}/bitmaps/horus/volume/*.png 480 8bits)
add_bitmaps_target(horus_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/480x272/bmp_*.png" 480 5/6/5)
add_bitmaps_target(horus_calibration_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/480x272/calibration/bmp_*.png" 480 5/6/5)
add_bitmaps_target(horus_button_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/480x272/button/alpha_*.png" 480 4/4/4/4)
add_bitmaps_target(horus_alpha_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/480x272/alpha_*.png" 480 4/4/4/4)
add_bitmaps_target(horus_alpha_calibration_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/480x272/calibration/alpha_*.png" 480 4/4/4/4)
add_bitmaps_target(horus_masks ${RADIO_SRC_DIRECTORY}/bitmaps/480x272/mask_*.png 480 8bits)
add_bitmaps_target(horus_slider_masks "${RADIO_SRC_DIRECTORY}/bitmaps/480x272/slider/*.png" 480 8bits)
add_bitmaps_target(horus_layouts_masks "${RADIO_SRC_DIRECTORY}/gui/480x272/layouts/*.png" 480 8bits)
add_bitmaps_target(horus_themes_bitmaps "${RADIO_SRC_DIRECTORY}/gui/480x272/themes/*.png" 480 5/6/5)
add_bitmaps_target(horus_fonts ${RADIO_SRC_DIRECTORY}/fonts/480x272/*.png 480 8bits)
add_bitmaps_target(horus_volume_masks ${RADIO_SRC_DIRECTORY}/bitmaps/480x272/volume/*.png 480 8bits)
add_dependencies(horus_bitmaps horus_calibration_bitmaps horus_button_bitmaps horus_alpha_bitmaps horus_alpha_calibration_bitmaps horus_masks horus_slider_masks horus_layouts_masks horus_themes_bitmaps horus_fonts horus_volume_masks)

View file

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 454 B

After

Width:  |  Height:  |  Size: 454 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 618 B

After

Width:  |  Height:  |  Size: 618 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 664 B

After

Width:  |  Height:  |  Size: 664 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 405 B

After

Width:  |  Height:  |  Size: 405 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 423 B

After

Width:  |  Height:  |  Size: 423 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 251 B

After

Width:  |  Height:  |  Size: 251 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 369 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 222 B

After

Width:  |  Height:  |  Size: 222 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 270 B

After

Width:  |  Height:  |  Size: 270 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 485 B

After

Width:  |  Height:  |  Size: 485 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 402 B

After

Width:  |  Height:  |  Size: 402 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 244 B

After

Width:  |  Height:  |  Size: 244 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 315 B

After

Width:  |  Height:  |  Size: 315 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 432 B

After

Width:  |  Height:  |  Size: 432 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 433 B

After

Width:  |  Height:  |  Size: 433 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 257 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 312 B

After

Width:  |  Height:  |  Size: 312 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 212 B

After

Width:  |  Height:  |  Size: 212 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 304 B

After

Width:  |  Height:  |  Size: 304 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 345 B

After

Width:  |  Height:  |  Size: 345 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 315 B

After

Width:  |  Height:  |  Size: 315 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 412 B

After

Width:  |  Height:  |  Size: 412 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 785 B

After

Width:  |  Height:  |  Size: 785 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 684 B

After

Width:  |  Height:  |  Size: 684 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 516 B

After

Width:  |  Height:  |  Size: 516 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 302 B

After

Width:  |  Height:  |  Size: 302 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 436 B

After

Width:  |  Height:  |  Size: 436 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 210 B

After

Width:  |  Height:  |  Size: 210 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 601 B

After

Width:  |  Height:  |  Size: 601 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 440 B

After

Width:  |  Height:  |  Size: 440 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 171 B

After

Width:  |  Height:  |  Size: 171 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 154 B

After

Width:  |  Height:  |  Size: 154 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 227 B

After

Width:  |  Height:  |  Size: 227 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 232 B

After

Width:  |  Height:  |  Size: 232 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 259 B

After

Width:  |  Height:  |  Size: 259 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 866 B

After

Width:  |  Height:  |  Size: 866 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 833 B

After

Width:  |  Height:  |  Size: 833 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 922 B

After

Width:  |  Height:  |  Size: 922 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1,012 B

After

Width:  |  Height:  |  Size: 1,012 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 604 B

After

Width:  |  Height:  |  Size: 604 B

Before After
Before After

View file

@ -1,3 +1,3 @@
add_subdirectory(9x)
add_subdirectory(taranis)
add_subdirectory(horus)
add_subdirectory(128x64)
add_subdirectory(212x64)
add_subdirectory(480x272)

View file

@ -502,7 +502,7 @@ int cliDisplay(const char ** argv)
name[len] = '\0';
serialPrint("[%s] = %s", name, switchState(EnumKeys(i)) ? "on" : "off");
}
#if defined(ROTARY_ENCODER_NAVIGATION) || defined(REV9E) || defined(PCBHORUS) || defined(PCBFLAMENCO)
#if defined(ROTARY_ENCODER_NAVIGATION) || defined(PCBX9E) || defined(PCBHORUS) || defined(PCBFLAMENCO)
serialPrint("[Enc.] = %d", rotencValue / 2);
#endif
for (int i=TRM_BASE; i<=TRM_LAST; i++) {

View file

@ -73,7 +73,7 @@
#define MAX_SCRIPTS 7
#define MAX_INPUTS 32
#define NUM_TRAINER 16
#if defined(REV9E)
#if defined(PCBX9E)
#define NUM_POTS 8
#define NUM_XPOTS 4
#else
@ -207,7 +207,7 @@ enum CurveType {
#if defined(PCBFLAMENCO)
#define NUM_SWITCHES 5
#elif defined(PCBTARANIS) && defined(REV9E)
#elif defined(PCBX9E)
#define NUM_SWITCHES 18 // yes, it's a lot!
#elif defined(PCBTARANIS) || defined(PCBHORUS)
#define NUM_SWITCHES 8
@ -606,7 +606,7 @@ enum SwitchSources {
SWSRC_SH1,
SWSRC_SH2,
SWSRC_TRAINER = SWSRC_SH2,
#if defined(REV9E)
#if defined(PCBX9E)
SWSRC_SI0,
SWSRC_SI1,
SWSRC_SI2,
@ -773,13 +773,13 @@ enum MixSources {
MIXSRC_POT1 = MIXSRC_FIRST_POT, LUA_EXPORT("s1", "Potentiometer 1")
MIXSRC_POT2, LUA_EXPORT("s2", "Potentiometer 2")
MIXSRC_POT3, LUA_EXPORT("s3", "Potentiometer 3")
#if defined(REV9E)
#if defined(PCBX9E)
MIXSRC_POT4, LUA_EXPORT("s4", "Potentiometer 4 (X9E only)")
#endif
MIXSRC_FIRST_SLIDER,
MIXSRC_SLIDER1 = MIXSRC_FIRST_SLIDER, LUA_EXPORT("ls", "Left slider")
MIXSRC_SLIDER2, LUA_EXPORT("rs", "Right slider")
#if defined(REV9E)
#if defined(PCBX9E)
MIXSRC_SLIDER3, LUA_EXPORT("lcs", "Left center slider (X9E only)")
MIXSRC_SLIDER4, LUA_EXPORT("rcs", "Right center slider (X9E only)")
MIXSRC_LAST_POT = MIXSRC_SLIDER4,
@ -851,7 +851,7 @@ enum MixSources {
MIXSRC_SF, LUA_EXPORT("sf", "Switch F")
MIXSRC_SG, LUA_EXPORT("sg", "Switch G")
MIXSRC_SH, LUA_EXPORT("sh", "Switch H")
#if defined(REV9E)
#if defined(PCBX9E)
MIXSRC_SI, LUA_EXPORT("si", "Switch I (X9E only)")
MIXSRC_SJ, LUA_EXPORT("sj", "Switch J (X9E only)")
MIXSRC_SK, LUA_EXPORT("sk", "Switch K (X9E only)")

View file

@ -46,10 +46,10 @@
#define TARANIS_FIELD(x)
#endif
#if defined(PCBTARANIS) && defined(REV9E)
#define TARANIS_REV9E_FIELD(x) x;
#if defined(PCBX9E)
#define TARANIS_PCBX9E_FIELD(x) x;
#else
#define TARANIS_REV9E_FIELD(x)
#define TARANIS_PCBX9E_FIELD(x)
#endif
#if defined(PCBHORUS)
@ -728,7 +728,7 @@ PACK(struct ModelHeader {
#if defined(COLORLCD)
typedef uint16_t swconfig_t;
typedef uint32_t swarnstate_t;
#elif defined(PCBTARANIS) && defined(REV9E)
#elif defined(PCBX9E)
typedef uint64_t swconfig_t;
typedef uint64_t swarnstate_t;
typedef uint32_t swarnenable_t;
@ -767,8 +767,8 @@ typedef uint8_t swarnenable_t;
#endif
#if defined(PCBHORUS)
#include "gui/horus/layout.h"
#include "gui/horus/topbar.h"
#include "gui/480x272/layout.h"
#include "gui/480x272/topbar.h"
PACK(struct CustomScreenData {
char layoutName[10];
Layout::PersistentData layoutData;
@ -842,7 +842,7 @@ PACK(struct ModelData {
ARM_FIELD(NOBACKUP(TelemetrySensor telemetrySensors[MAX_SENSORS]))
TARANIS_REV9E_FIELD(uint8_t toplcdTimer)
TARANIS_PCBX9E_FIELD(uint8_t toplcdTimer)
CUSTOM_SCREENS_DATA
@ -929,7 +929,7 @@ PACK(struct TrainerData {
char switchNames[NUM_SWITCHES][LEN_SWITCH_NAME]; \
char anaNames[NUM_STICKS+NUM_POTS][LEN_ANA_NAME];
#elif defined(PCBTARANIS)
#if defined(REV9E)
#if defined(PCBX9E)
#define BLUETOOTH_FIELDS \
uint8_t bluetoothEnable; \
char bluetoothName[LEN_BLUETOOTH_NAME];
@ -967,7 +967,7 @@ PACK(struct TrainerData {
#endif
#if defined(PCBHORUS)
#include "gui/horus/theme.h"
#include "gui/480x272/theme.h"
#define THEME_DATA \
NOBACKUP(char themeName[8]); \
NOBACKUP(Theme::PersistentData themeData);
@ -1078,7 +1078,7 @@ static inline void check_struct()
CHKSIZE(ModelHeader, 24);
CHKSIZE(CurveData, 4);
#if defined(REV9E)
#if defined(PCBX9E)
CHKSIZE(RadioData, 952);
CHKSIZE(ModelData, 6520);
#else

Some files were not shown because too many files have changed in this diff Show more