diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc index 65757d6e0f2..9c7399586de 100644 --- a/companion/src/companion.qrc +++ b/companion/src/companion.qrc @@ -1288,5 +1288,6 @@ images/layouts/mask_layout2x3.png images/layouts/mask_layout2x4.png images/layouts/mask_layout4+2.png + images/layouts/mask_layout4+2b.png diff --git a/companion/src/firmwares/customisation_data.h b/companion/src/firmwares/customisation_data.h index 9fe6f58a8b8..7496bcca1ad 100644 --- a/companion/src/firmwares/customisation_data.h +++ b/companion/src/firmwares/customisation_data.h @@ -40,7 +40,7 @@ constexpr int WIDGET_NAME_LEN {10}; constexpr int MAX_WIDGET_OPTIONS {5}; constexpr int MAX_TOPBAR_ZONES {4}; constexpr int MAX_TOPBAR_OPTIONS {1}; -constexpr int LAYOUT_ID_LEN {10}; +constexpr int LAYOUT_ID_LEN {12}; // Common 'ZoneOptionValue's among all layouts enum { diff --git a/companion/src/images/layouts/mask_layout4+2b.png b/companion/src/images/layouts/mask_layout4+2b.png new file mode 100644 index 00000000000..b79eb0095a3 Binary files /dev/null and b/companion/src/images/layouts/mask_layout4+2b.png differ diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index f94a917baf5..66a4a56db7f 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -85,7 +85,7 @@ static inline void check_struct() CHKSIZE(SwashRingData, 8); CHKSIZE(ModelHeader, 131); CHKSIZE(CurveHeader, 4); - CHKSIZE(CustomScreenData, 850); + CHKSIZE(CustomScreenData, 852); CHKTYPE(TopBarPersistentData, 300); #elif defined(PCBNV14) // TODO @@ -140,14 +140,14 @@ static inline void check_struct() #elif defined(PCBHORUS) #if defined(PCBX10) CHKSIZE(RadioData, 950); - CHKSIZE(ModelData, 15431); + CHKSIZE(ModelData, 15451); #else CHKSIZE(RadioData, 932); - CHKSIZE(ModelData, 15429); + CHKSIZE(ModelData, 15449); #endif #elif defined(PCBNV14) CHKSIZE(RadioData, 878); - CHKSIZE(ModelData, 15245); + CHKSIZE(ModelData, 15265); #endif #undef CHKSIZE diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index d1a71726ef0..5eccbee3cf1 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -577,7 +577,7 @@ typedef uint32_t swarnstate_t; #elif defined(COLORLCD) #include "gui/colorlcd/layout.h" #include "gui/colorlcd/topbar.h" -#define LAYOUT_ID_LEN 10 +#define LAYOUT_ID_LEN 12 PACK(struct CustomScreenData { char LayoutId[LAYOUT_ID_LEN]; LayoutPersistentData layoutData; diff --git a/radio/src/gui/colorlcd/layouts/layout4+2b.cpp b/radio/src/gui/colorlcd/layouts/layout4+2b.cpp new file mode 100644 index 00000000000..9019754935b --- /dev/null +++ b/radio/src/gui/colorlcd/layouts/layout4+2b.cpp @@ -0,0 +1,36 @@ +/* + * 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 "layout.h" +#include "layout_factory_impl.h" + +static uint8_t zmap[] = { + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, + LAYOUT_MAP_0, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, + LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, + LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, + LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_3QTR, + LAYOUT_MAP_HALF, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, +}; + +BaseLayoutFactory layout4P2B("Layout4P2B", "4 + 2B", + defaultZoneOptions, + 6, zmap); diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index 495bd7ecf4f..197597dbf5b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -847,7 +847,7 @@ static const struct YamlNode struct_LayoutPersistentData[] = { }; static const struct YamlNode struct_CustomScreenData[] = { YAML_IDX, - YAML_STRING("LayoutId", 10), + YAML_STRING("LayoutId", 12), YAML_STRUCT("layoutData", 6720, struct_LayoutPersistentData, NULL), YAML_END }; @@ -914,7 +914,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_UNSIGNED( "potsWarnEnabled", 16 ), YAML_ARRAY("potsWarnPosition", 8, 5, struct_signed_8, NULL), YAML_ARRAY("telemetrySensors", 112, 60, struct_TelemetrySensor, NULL), - YAML_ARRAY("screenData", 6800, 10, struct_CustomScreenData, NULL), + YAML_ARRAY("screenData", 6816, 10, struct_CustomScreenData, NULL), YAML_STRUCT("topbarData", 1248, struct_TopBarPersistentData, NULL), YAML_UNSIGNED( "view", 8 ), YAML_STRING("modelRegistrationID", 8), diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp index e7e88710f70..6b25a83afc1 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -878,7 +878,7 @@ static const struct YamlNode struct_LayoutPersistentData[] = { }; static const struct YamlNode struct_CustomScreenData[] = { YAML_IDX, - YAML_STRING("LayoutId", 10), + YAML_STRING("LayoutId", 12), YAML_STRUCT("layoutData", 6720, struct_LayoutPersistentData, NULL), YAML_END }; @@ -945,7 +945,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_UNSIGNED( "potsWarnEnabled", 16 ), YAML_ARRAY("potsWarnPosition", 8, 11, struct_signed_8, NULL), YAML_ARRAY("telemetrySensors", 112, 60, struct_TelemetrySensor, NULL), - YAML_ARRAY("screenData", 6800, 10, struct_CustomScreenData, NULL), + YAML_ARRAY("screenData", 6816, 10, struct_CustomScreenData, NULL), YAML_STRUCT("topbarData", 2400, struct_TopBarPersistentData, NULL), YAML_UNSIGNED( "view", 8 ), YAML_STRING("modelRegistrationID", 8), diff --git a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp index 10cd695bf14..b83531ff10b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp @@ -876,7 +876,7 @@ static const struct YamlNode struct_LayoutPersistentData[] = { }; static const struct YamlNode struct_CustomScreenData[] = { YAML_IDX, - YAML_STRING("LayoutId", 10), + YAML_STRING("LayoutId", 12), YAML_STRUCT("layoutData", 6720, struct_LayoutPersistentData, NULL), YAML_END }; @@ -943,7 +943,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_UNSIGNED( "potsWarnEnabled", 16 ), YAML_ARRAY("potsWarnPosition", 8, 9, struct_signed_8, NULL), YAML_ARRAY("telemetrySensors", 112, 60, struct_TelemetrySensor, NULL), - YAML_ARRAY("screenData", 6800, 10, struct_CustomScreenData, NULL), + YAML_ARRAY("screenData", 6816, 10, struct_CustomScreenData, NULL), YAML_STRUCT("topbarData", 2400, struct_TopBarPersistentData, NULL), YAML_UNSIGNED( "view", 8 ), YAML_STRING("modelRegistrationID", 8),