Add debug view

This commit is contained in:
Jasper Blanckenburg 2023-03-21 18:37:50 +01:00
parent 629fcb9098
commit ff37c8503d
49 changed files with 1603 additions and 289 deletions

View File

@ -350,10 +350,13 @@ TouchGFX/generated/fonts/src/Table_verdana_20_4bpp.cpp \
TouchGFX/generated/fonts/src/UnmappedDataFont.cpp \ TouchGFX/generated/fonts/src/UnmappedDataFont.cpp \
TouchGFX/generated/gui_generated/src/ami_screen/AMIViewBase.cpp \ TouchGFX/generated/gui_generated/src/ami_screen/AMIViewBase.cpp \
TouchGFX/generated/gui_generated/src/common/FrontendApplicationBase.cpp \ TouchGFX/generated/gui_generated/src/common/FrontendApplicationBase.cpp \
TouchGFX/generated/gui_generated/src/containers/DebugViewItemBase.cpp \
TouchGFX/generated/gui_generated/src/containers/DebugViewLineBase.cpp \
TouchGFX/generated/gui_generated/src/containers/DriverViewFieldBase.cpp \ TouchGFX/generated/gui_generated/src/containers/DriverViewFieldBase.cpp \
TouchGFX/generated/gui_generated/src/containers/DriverViewFieldSelectionBase.cpp \ TouchGFX/generated/gui_generated/src/containers/DriverViewFieldSelectionBase.cpp \
TouchGFX/generated/gui_generated/src/containers/MissionSelectElementBase.cpp \ TouchGFX/generated/gui_generated/src/containers/MissionSelectElementBase.cpp \
TouchGFX/generated/gui_generated/src/containers/TireTempBase.cpp \ TouchGFX/generated/gui_generated/src/containers/TireTempBase.cpp \
TouchGFX/generated/gui_generated/src/debugview_screen/DebugViewViewBase.cpp \
TouchGFX/generated/gui_generated/src/driverview_screen/DriverViewViewBase.cpp \ TouchGFX/generated/gui_generated/src/driverview_screen/DriverViewViewBase.cpp \
TouchGFX/generated/gui_generated/src/missionselect_screen/MissionSelectViewBase.cpp \ TouchGFX/generated/gui_generated/src/missionselect_screen/MissionSelectViewBase.cpp \
TouchGFX/generated/images/src/BitmapDatabase.cpp \ TouchGFX/generated/images/src/BitmapDatabase.cpp \
@ -372,10 +375,14 @@ TouchGFX/gui/src/ami_screen/AMIPresenter.cpp \
TouchGFX/gui/src/ami_screen/AMIView.cpp \ TouchGFX/gui/src/ami_screen/AMIView.cpp \
TouchGFX/gui/src/common/DataField.cpp \ TouchGFX/gui/src/common/DataField.cpp \
TouchGFX/gui/src/common/FrontendApplication.cpp \ TouchGFX/gui/src/common/FrontendApplication.cpp \
TouchGFX/gui/src/containers/DebugViewItem.cpp \
TouchGFX/gui/src/containers/DebugViewLine.cpp \
TouchGFX/gui/src/containers/DriverViewField.cpp \ TouchGFX/gui/src/containers/DriverViewField.cpp \
TouchGFX/gui/src/containers/DriverViewFieldSelection.cpp \ TouchGFX/gui/src/containers/DriverViewFieldSelection.cpp \
TouchGFX/gui/src/containers/MissionSelectElement.cpp \ TouchGFX/gui/src/containers/MissionSelectElement.cpp \
TouchGFX/gui/src/containers/TireTemp.cpp \ TouchGFX/gui/src/containers/TireTemp.cpp \
TouchGFX/gui/src/debugview_screen/DebugViewPresenter.cpp \
TouchGFX/gui/src/debugview_screen/DebugViewView.cpp \
TouchGFX/gui/src/driverview_screen/DriverViewPresenter.cpp \ TouchGFX/gui/src/driverview_screen/DriverViewPresenter.cpp \
TouchGFX/gui/src/driverview_screen/DriverViewView.cpp \ TouchGFX/gui/src/driverview_screen/DriverViewView.cpp \
TouchGFX/gui/src/missionselect_screen/MissionSelectPresenter.cpp \ TouchGFX/gui/src/missionselect_screen/MissionSelectPresenter.cpp \

View File

@ -4,7 +4,13 @@
<Language Id="GB" /> <Language Id="GB" />
</Languages> </Languages>
<Texts> <Texts>
<TextGroup Id="DriverViewFields"> <TextGroup Id="DataFields">
<Text Id="DebugViewField_Title" Alignment="Left" TypographyId="Default">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="DriverViewField_Title" Alignment="Center" TypographyId="Chinat_Small">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="Field_BBal" Alignment="Center" TypographyId="Chinat_Small"> <Text Id="Field_BBal" Alignment="Center" TypographyId="Chinat_Small">
<Translation Language="GB">BBAL</Translation> <Translation Language="GB">BBAL</Translation>
</Text> </Text>
@ -68,7 +74,10 @@
<Text Id="NumberWildcard" Alignment="Center" TypographyId="Numbers"> <Text Id="NumberWildcard" Alignment="Center" TypographyId="Numbers">
<Translation Language="GB">&lt;value&gt;</Translation> <Translation Language="GB">&lt;value&gt;</Translation>
</Text> </Text>
<Text Id="DefaultWildcard" Alignment="Center" TypographyId="Default"> <Text Id="DefaultWildcard_Centered" Alignment="Center" TypographyId="Default">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="DefaultWildcard_RightAligned" Alignment="Right" TypographyId="Default">
<Translation Language="GB">&lt;value&gt;</Translation> <Translation Language="GB">&lt;value&gt;</Translation>
</Text> </Text>
<Text Id="Field_TSCurrent" Alignment="Center" TypographyId="Chinat_Small"> <Text Id="Field_TSCurrent" Alignment="Center" TypographyId="Chinat_Small">
@ -128,12 +137,6 @@
</Text> </Text>
</TextGroup> </TextGroup>
<TextGroup Id="Unsorted"> <TextGroup Id="Unsorted">
<Text Id="__SingleUse_PNKR" Alignment="Center" TypographyId="Chinat_Small">
<Translation Language="GB">????</Translation>
</Text>
<Text Id="__SingleUse_0FBJ" Alignment="Center" TypographyId="Chinat_Small">
<Translation Language="GB">FIELD</Translation>
</Text>
<Text Id="__SingleUse_4OBM" Alignment="Center" TypographyId="Chinat_Small"> <Text Id="__SingleUse_4OBM" Alignment="Center" TypographyId="Chinat_Small">
<Translation Language="GB">LV</Translation> <Translation Language="GB">LV</Translation>
</Text> </Text>
@ -160,7 +163,7 @@
<Typographies> <Typographies>
<Typography Id="Default" Font="verdana.ttf" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters="! &quot;" WildcardCharacterRanges="#-~" /> <Typography Id="Default" Font="verdana.ttf" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters="! &quot;" WildcardCharacterRanges="#-~" />
<Typography Id="Chinat_Large" Font="CHINN___.ttf" Size="30" Bpp="4" Direction="LTR" FallbackCharacter="?" /> <Typography Id="Chinat_Large" Font="CHINN___.ttf" Size="30" Bpp="4" Direction="LTR" FallbackCharacter="?" />
<Typography Id="Chinat_Small" Font="CHINN___.ttf" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" /> <Typography Id="Chinat_Small" Font="CHINN___.ttf" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters="_ ." WildcardCharacterRanges="0-9,a-z,A-Z" />
<Typography Id="Chinat_Huge" Font="CHINN___.ttf" Size="40" Bpp="4" Direction="LTR" FallbackCharacter="?" /> <Typography Id="Chinat_Huge" Font="CHINN___.ttf" Size="40" Bpp="4" Direction="LTR" FallbackCharacter="?" />
<Typography Id="Numbers" Font="lucon.TTF" Size="50" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters=". ," WildcardCharacterRanges="0-9" /> <Typography Id="Numbers" Font="lucon.TTF" Size="50" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters=". ," WildcardCharacterRanges="0-9" />
</Typographies> </Typographies>

View File

@ -1,5 +1,15 @@
32 32
46
48
49
50 50
51
52
53
54
55
56
57
63 63
65 65
66 66
@ -10,30 +20,47 @@
71 71
72 72
73 73
74
75
76 76
77 77
78 78
79 79
80 80
81
82 82
83 83
84 84
85
86 86
87
88 88
89 89
90
95
97 97
98
99 99
100 100
101 101
102
103 103
104
105 105
106
107 107
108 108
109
110 110
111 111
112 112
113
114 114
115 115
116 116
117 117
118 118
119
120
121
122

View File

@ -1,6 +1,16 @@
AH:0 BA:1 FC:63 EC:0 FF:0 CF:1 AH:0 BA:1 FC:63 EC:0 FF:0 CF:1
32 32
46
48
49
50 50
51
52
53
54
55
56
57
63 63
65 65
66 66
@ -11,30 +21,47 @@ AH:0 BA:1 FC:63 EC:0 FF:0 CF:1
71 71
72 72
73 73
74
75
76 76
77 77
78 78
79 79
80 80
81
82 82
83 83
84 84
85
86 86
87
88 88
89 89
90
95
97 97
98
99 99
100 100
101 101
102
103 103
104
105 105
106
107 107
108 108
109
110 110
111 111
112 112
113
114 114
115 115
116 116
117 117
118 118
119
120
121
122

View File

@ -4,6 +4,24 @@ FONT_GLYPH_LOCATION_FLASH_PRAGMA
KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = {
// Unicode: [0x0020, space] // Unicode: [0x0020, space]
// (Has no glyph data) // (Has no glyph data)
// Unicode: [0x002E, period]
0xD6, 0xDD, 0x07, 0xF7, 0xFF, 0x08, 0xF7, 0xFF, 0x08, 0xF7, 0xFF, 0x08,
// Unicode: [0x0030, zero]
0x00, 0xB4, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x3A, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xEF, 0x04, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0xF6, 0xFF,
0x33, 0x33, 0x33, 0x33, 0x33, 0x53, 0xFF, 0x2F, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0xFF, 0x3F, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0x4F, 0xF7, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x30, 0xFF, 0x4F, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0x4F,
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0x3F, 0xF5, 0xFF, 0x55, 0x55, 0x55, 0x55,
0x55, 0x75, 0xFF, 0x2F, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0x50, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0xA3, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
0x3B, 0x00,
// Unicode: [0x0031, one]
0x00, 0x40, 0xFB, 0x8D, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0x09, 0x70, 0xFF, 0xFF, 0xFF, 0x1F, 0xC1,
0xFF, 0xAF, 0xFF, 0x3F, 0x10, 0xFC, 0x36, 0xFF, 0x4F, 0x00, 0x51, 0x30, 0xFF, 0x4F, 0x00, 0x00,
0x30, 0xFF, 0x4F, 0x00, 0x00, 0x30, 0xFF, 0x4F, 0x00, 0x00, 0x30, 0xFF, 0x4F, 0x00, 0x00, 0x30,
0xFF, 0x4F, 0x00, 0x00, 0x30, 0xFF, 0x4F, 0x00, 0x00, 0x30, 0xFF, 0x4F, 0x00, 0x00, 0x30, 0xFF,
0x4F,
// Unicode: [0x0032, two] // Unicode: [0x0032, two]
0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x32, 0x33, 0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x32, 0x33,
@ -14,6 +32,76 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0x33, 0x33, 0x33, 0x03, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF6, 0xFF, 0x33, 0x33, 0x33, 0x03, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF6, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x0F, 0xFF, 0x0F,
// Unicode: [0x0033, three]
0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x3A, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x05, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x32, 0x33,
0x33, 0x33, 0x33, 0x33, 0x33, 0x63, 0xFF, 0x3F, 0x53, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x75,
0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0xF8, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0x4F, 0x42, 0x44, 0x44, 0x44, 0x44, 0x44,
0x44, 0x74, 0xFF, 0x3F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0xF7, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
0x3B, 0x00,
// Unicode: [0x0034, four]
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xCF, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFB, 0xCF, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xCF, 0x00, 0xF7, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xCF, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB,
0xCF, 0x00, 0xF6, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xCF, 0x00, 0xF2, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
0x00, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x32, 0x44, 0x44, 0x44,
0x44, 0xFC, 0xCF, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xCF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB,
0xCF, 0x00,
// Unicode: [0x0035, five]
0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x07, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF7, 0xFF,
0x34, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x01, 0xF7, 0xFF, 0x77, 0x77, 0x77, 0x77, 0x77, 0x67,
0x02, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0xF7, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x3F, 0x21, 0x22, 0x22, 0x22, 0x22, 0x22,
0x22, 0x52, 0xFF, 0x3F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0xF7, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x03, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE,
0x17, 0x00,
// Unicode: [0x0036, six]
0x00, 0xB4, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x09, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF6, 0xEF,
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x02, 0xF7, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0xF8, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E,
0xF7, 0xFF, 0x66, 0x66, 0x66, 0x66, 0x66, 0x86, 0xFF, 0x4F, 0xF6, 0xEF, 0x33, 0x33, 0x33, 0x33,
0x33, 0x53, 0xFF, 0x4F, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x70, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
0x3B, 0x00,
// Unicode: [0x0037, seven]
0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0A, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x31, 0x33,
0x33, 0x33, 0x33, 0x33, 0x33, 0xB4, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFD,
0xFF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xF9, 0xFF, 0xEF, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0xD4, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xFF, 0xFF, 0x7E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0xFD, 0xFF, 0xBF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFA, 0xFF, 0xEF,
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE5, 0xFF, 0xFF, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1,
0xFF, 0xFF, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFE, 0xFF, 0xAF, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00,
// Unicode: [0x0038, eight]
0x00, 0xB4, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x4B, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x06, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0xF6, 0xFF,
0x34, 0x33, 0x33, 0x33, 0x33, 0x73, 0xFF, 0x3F, 0xF5, 0xFF, 0x78, 0x77, 0x77, 0x77, 0x77, 0xA7,
0xFF, 0x1F, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xB0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E,
0xF6, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x3F, 0xF6, 0xFF, 0x46, 0x44, 0x44, 0x44,
0x44, 0x84, 0xFF, 0x3F, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0x50, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x04, 0x00, 0x92, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF,
0x29, 0x00,
// Unicode: [0x0039, nine]
0x00, 0xC4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x3B, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x04, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0xF6, 0xFF,
0x33, 0x33, 0x33, 0x33, 0x33, 0x53, 0xFF, 0x3F, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0xFF, 0x4F, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0xC0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x20, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F,
0x00, 0x40, 0x66, 0x66, 0x66, 0x66, 0x66, 0x86, 0xFF, 0x4F, 0x20, 0x33, 0x33, 0x33, 0x33, 0x33,
0x33, 0x53, 0xFF, 0x3F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xC0, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
0x3A, 0x00,
// Unicode: [0x003F, question] // Unicode: [0x003F, question]
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x44, 0x44, 0xFF, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x44, 0x44,
@ -107,6 +195,26 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
// Unicode: [0x0049, I] // Unicode: [0x0049, I]
0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF,
0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF,
// Unicode: [0x004A, J]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF,
0x82, 0x88, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0xF2, 0xFF, 0x49, 0x44, 0x44, 0x44,
0x44, 0x44, 0xFC, 0xBF, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x20, 0xFE,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x00, 0xA2, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x9E, 0x01,
// Unicode: [0x004B, K]
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x50, 0xFD, 0xFF, 0xFF, 0x2A, 0xF7, 0xFF, 0x00, 0x00, 0x40, 0xFC,
0xFF, 0xFF, 0x3B, 0x00, 0xF7, 0xFF, 0x00, 0x20, 0xFA, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0xF7, 0xFF,
0x00, 0xF8, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xC1, 0xFF, 0xFF, 0x9F, 0x01, 0x00,
0x00, 0x00, 0xF7, 0xFF, 0xFA, 0xFF, 0xAF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFA, 0xFF, 0x9F, 0x02, 0x00, 0x00, 0x00, 0x00,
0xF7, 0xFF, 0xD2, 0xFF, 0xFF, 0x8E, 0x01, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x10, 0xFA, 0xFF, 0xFF,
0x6E, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x30, 0xFB, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0xF7, 0xFF,
0x00, 0x00, 0x40, 0xFC, 0xFF, 0xFF, 0x3C, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x60, 0xFD, 0xFF,
0xFF, 0x2A,
// Unicode: [0x004C, L] // Unicode: [0x004C, L]
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF,
@ -157,6 +265,16 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0x03, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x03, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0051, Q]
0x00, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x3A, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
0x00, 0xF6, 0xFF, 0x44, 0x44, 0x44, 0x44, 0x44, 0x64, 0xFF, 0x3F, 0x00, 0xF7, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0xFF, 0x4F, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF,
0x4F, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x4F, 0x00, 0xF7, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x4F, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
0xFF, 0x4F, 0x00, 0xF6, 0xFF, 0x44, 0x44, 0x44, 0x44, 0x44, 0x64, 0xFF, 0x6F, 0x02, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0xC5, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A,
// Unicode: [0x0052, R] // Unicode: [0x0052, R]
0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x06, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF7, 0xFF,
@ -187,6 +305,16 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF6, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0055, U]
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF8, 0xEF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF, 0xF7, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xEF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF, 0xF7, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF,
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF, 0xF5, 0xFF, 0x44, 0x44, 0x44, 0x44,
0x44, 0x44, 0xFA, 0xEF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x50, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x00, 0xB4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x9E, 0x01,
// Unicode: [0x0056, V] // Unicode: [0x0056, V]
0xF2, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0x1E, 0x90, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0x1E, 0x90, 0xFF, 0x5F, 0x00, 0x00, 0x00,
0x00, 0xF8, 0xFF, 0x06, 0x10, 0xFE, 0xDF, 0x00, 0x00, 0x00, 0x20, 0xFE, 0xDF, 0x00, 0x00, 0xF7, 0x00, 0xF8, 0xFF, 0x06, 0x10, 0xFE, 0xDF, 0x00, 0x00, 0x00, 0x20, 0xFE, 0xDF, 0x00, 0x00, 0xF7,
@ -197,6 +325,16 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC1, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xE9, 0x7D, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xE9, 0x7D, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0057, W]
0xFE, 0x8F, 0x00, 0x80, 0xED, 0x5C, 0x00, 0xD0, 0xFF, 0x0A, 0xFC, 0xBF, 0x00, 0xF9, 0xFF, 0xFF,
0x05, 0xF0, 0xFF, 0x08, 0xFA, 0xDF, 0x20, 0xFF, 0xFF, 0xFF, 0x0C, 0xF2, 0xFF, 0x06, 0xF8, 0xFF,
0x50, 0xFF, 0xEF, 0xFF, 0x1F, 0xF4, 0xFF, 0x04, 0xF6, 0xFF, 0x82, 0xFF, 0x8F, 0xFF, 0x4F, 0xF6,
0xFF, 0x01, 0xF4, 0xFF, 0xB4, 0xFF, 0x3E, 0xFF, 0x6F, 0xF8, 0xEF, 0x00, 0xF2, 0xFF, 0xD6, 0xFF,
0x0B, 0xFF, 0x9F, 0xFA, 0xCF, 0x00, 0xF0, 0xFF, 0xF9, 0xFF, 0x08, 0xFC, 0xCF, 0xFC, 0xAF, 0x00,
0xD0, 0xFF, 0xFD, 0xFF, 0x05, 0xF9, 0xEF, 0xFE, 0x8F, 0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0x02, 0xF5,
0xFF, 0xFF, 0x6F, 0x00, 0x60, 0xFF, 0xFF, 0xCF, 0x00, 0xF1, 0xFF, 0xFF, 0x2F, 0x00, 0x10, 0xFD,
0xFF, 0x5F, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0xB2, 0xDF, 0x06, 0x00, 0x00, 0xE8, 0x9E,
0x01, 0x00,
// Unicode: [0x0058, X] // Unicode: [0x0058, X]
0xFA, 0xFF, 0x1C, 0x00, 0x00, 0x00, 0x30, 0xFE, 0xFF, 0x06, 0xB0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0x1C, 0x00, 0x00, 0x00, 0x30, 0xFE, 0xFF, 0x06, 0xB0, 0xFF, 0xBF, 0x00, 0x00, 0x00,
0xE2, 0xFF, 0x6F, 0x00, 0x00, 0xFB, 0xFF, 0x09, 0x00, 0x10, 0xFD, 0xFF, 0x07, 0x00, 0x00, 0xC1, 0xE2, 0xFF, 0x6F, 0x00, 0x00, 0xFB, 0xFF, 0x09, 0x00, 0x10, 0xFD, 0xFF, 0x07, 0x00, 0x00, 0xC1,
@ -217,6 +355,18 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Unicode: [0x005A, Z]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8D, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x3F, 0x41, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x96, 0xFC, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x10, 0x84, 0xEB, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x41, 0xA7, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x08, 0x10, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x4A, 0x00, 0xD1, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xCF, 0x59, 0x02, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xBE, 0x47, 0x01, 0x00,
0x00, 0x00, 0x00, 0xFB, 0xFF, 0xDF, 0x69, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x03, 0xF8, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0B, 0x10, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B,
// Unicode: [0x005F, underscore]
0x55, 0x55, 0x55, 0x55, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
// Unicode: [0x0061, a] // Unicode: [0x0061, a]
0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x01, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x01, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0B, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x40, 0x44, 0xFF, 0xFF, 0xFF, 0x0B, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x40, 0x44,
@ -227,6 +377,16 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0x44, 0x44, 0xFC, 0xCF, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xA0, 0xFF, 0x44, 0x44, 0xFC, 0xCF, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xA0, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xCF, 0xFF, 0xCF,
// Unicode: [0x0062, b]
0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x8C, 0x01, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x1D, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xF7, 0xFF,
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xFD, 0xBF, 0xF7, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0xFD, 0xAF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0xF7, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF,
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xEF, 0xF7, 0xFF, 0x44, 0x44, 0x44, 0x44,
0x44, 0x44, 0xFB, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF7, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2E, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x9E, 0x02,
// Unicode: [0x0063, c] // Unicode: [0x0063, c]
0x00, 0xB5, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xB5, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xCF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xF5, 0xFF,
@ -257,6 +417,16 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0x44, 0x44, 0x44, 0x14, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x70, 0xFF, 0x44, 0x44, 0x44, 0x14, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x70, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xC4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xC4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x3F, 0xFF, 0x3F,
// Unicode: [0x0066, f]
0x00, 0xA4, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x1F, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF6, 0xFF,
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x04, 0xF7, 0xFF, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
0x44, 0x04, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF7, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
// Unicode: [0x0067, g] // Unicode: [0x0067, g]
0x00, 0x93, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x93, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xCF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xF6, 0xFF,
@ -267,9 +437,29 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0x44, 0x44, 0xFC, 0xAF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x50, 0xFF, 0x44, 0x44, 0xFC, 0xAF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x50, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0xA3, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0xA3, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
0x6C, 0x00, 0x6C, 0x00,
// Unicode: [0x0068, h]
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xDF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF9, 0xDF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xDF, 0xF7, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xDF, 0xF7, 0xFF, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
0xFB, 0xDF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xF7, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF,
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xDF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF9, 0xDF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xDF, 0xF7, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xDF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF9, 0xDF,
// Unicode: [0x0069, i] // Unicode: [0x0069, i]
0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF,
0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF,
// Unicode: [0x006A, j]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF,
0x82, 0x88, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBF, 0xF2, 0xFF, 0x49, 0x44, 0x44, 0x44,
0x44, 0x44, 0xFC, 0xBF, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x20, 0xFE,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x00, 0xA2, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x9E, 0x01,
// Unicode: [0x006B, k] // Unicode: [0x006B, k]
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x50, 0xFD, 0xFF, 0xFF, 0x2A, 0xF7, 0xFF, 0x00, 0x00, 0x40, 0xFC, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x50, 0xFD, 0xFF, 0xFF, 0x2A, 0xF7, 0xFF, 0x00, 0x00, 0x40, 0xFC,
0xFF, 0xFF, 0x3B, 0x00, 0xF7, 0xFF, 0x00, 0x20, 0xFA, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0x3B, 0x00, 0xF7, 0xFF, 0x00, 0x20, 0xFA, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0xF7, 0xFF,
@ -288,6 +478,16 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x44, 0x44, 0x44, 0x44, 0x44, 0x01, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x44, 0x44, 0x44, 0x44, 0x44, 0x01,
0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
0x00, 0xA3, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xA3, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
// Unicode: [0x006D, m]
0x10, 0xE9, 0xAE, 0x01, 0x00, 0x00, 0x40, 0xEB, 0x7D, 0x00, 0xC0, 0xFF, 0xFF, 0x1D, 0x00, 0x00,
0xF3, 0xFF, 0xFF, 0x07, 0xF4, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0x0E, 0xF7, 0xFF,
0xFF, 0xCF, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0x2F, 0xF7, 0xFF, 0xFC, 0xFF, 0x02, 0x70, 0xFF, 0xBF,
0xFF, 0x2F, 0xF7, 0xFF, 0xF6, 0xFF, 0x07, 0xC0, 0xFF, 0x6F, 0xFF, 0x2F, 0xF7, 0xFF, 0xE1, 0xFF,
0x0C, 0xF2, 0xFF, 0x5A, 0xFF, 0x2F, 0xF7, 0xFF, 0xA0, 0xFF, 0x2F, 0xF7, 0xFF, 0x55, 0xFF, 0x2F,
0xF7, 0xFF, 0x40, 0xFF, 0x6F, 0xFC, 0xEF, 0x50, 0xFF, 0x2F, 0xF7, 0xFF, 0x00, 0xFD, 0xDF, 0xFF,
0x9F, 0x50, 0xFF, 0x2F, 0xF7, 0xFF, 0x00, 0xF7, 0xFF, 0xFF, 0x3F, 0x50, 0xFF, 0x2F, 0xF7, 0xFF,
0x00, 0xC1, 0xFF, 0xFF, 0x09, 0x50, 0xFF, 0x2F, 0xF7, 0xFF, 0x00, 0x10, 0xEA, 0x8E, 0x00, 0x50,
0xFF, 0x2F,
// Unicode: [0x006E, n] // Unicode: [0x006E, n]
0x20, 0xEA, 0x9E, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xE1, 0xFF, 0xFF, 0x2D, 0x00, 0x00, 0x20, 0xEA, 0x9E, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xE1, 0xFF, 0xFF, 0x2D, 0x00, 0x00,
0x00, 0x00, 0xFF, 0x7F, 0xF6, 0xFF, 0xFF, 0xEF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xF7, 0xFF, 0x00, 0x00, 0xFF, 0x7F, 0xF6, 0xFF, 0xFF, 0xEF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xF7, 0xFF,
@ -318,6 +518,16 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0x44, 0x34, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x44, 0x34, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0071, q]
0x00, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x3A, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
0x00, 0xF6, 0xFF, 0x44, 0x44, 0x44, 0x44, 0x44, 0x64, 0xFF, 0x3F, 0x00, 0xF7, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0xFF, 0x4F, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF,
0x4F, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x4F, 0x00, 0xF7, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x4F, 0x00, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
0xFF, 0x4F, 0x00, 0xF6, 0xFF, 0x44, 0x44, 0x44, 0x44, 0x44, 0x64, 0xFF, 0x6F, 0x02, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0xC5, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A,
// Unicode: [0x0072, r] // Unicode: [0x0072, r]
0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0A, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0xF7, 0xFF,
@ -367,5 +577,45 @@ KEEP extern const uint8_t unicodes_CHINN____20_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0x00, 0x00, 0xB0, 0xFF, 0x3F, 0xF7, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xCF, 0xFE, 0x00, 0x00, 0xB0, 0xFF, 0x3F, 0xF7, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xCF, 0xFE,
0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC1, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xE9, 0x7D, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xE9, 0x7D, 0x00, 0x00,
0x00, 0x00 0x00, 0x00,
// Unicode: [0x0077, w]
0xFE, 0xAF, 0x00, 0x00, 0x91, 0xEE, 0x1A, 0x00, 0x00, 0xF9, 0xCF, 0xFB, 0xDF, 0x00, 0x00, 0xFC,
0xFF, 0xDF, 0x00, 0x00, 0xFC, 0x9F, 0xF8, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0xFF,
0x6F, 0xF5, 0xFF, 0x04, 0xA0, 0xFF, 0xEF, 0xFF, 0x0A, 0x30, 0xFF, 0x3F, 0xF2, 0xFF, 0x07, 0xE0,
0xFF, 0x9B, 0xFF, 0x1E, 0x60, 0xFF, 0x1F, 0xE0, 0xFF, 0x0A, 0xF4, 0xFF, 0x56, 0xFF, 0x5F, 0x90,
0xFF, 0x0C, 0xB0, 0xFF, 0x0C, 0xF9, 0xFF, 0x11, 0xFF, 0xAF, 0xD0, 0xFF, 0x09, 0x80, 0xFF, 0x1F,
0xFE, 0xBF, 0x00, 0xFB, 0xEF, 0xF1, 0xFF, 0x06, 0x50, 0xFF, 0x7F, 0xFF, 0x7F, 0x00, 0xF6, 0xFF,
0xF8, 0xFF, 0x03, 0x20, 0xFF, 0xEF, 0xFF, 0x2F, 0x00, 0xF2, 0xFF, 0xFE, 0xFF, 0x01, 0x00, 0xFD,
0xFF, 0xFF, 0x0C, 0x00, 0xC0, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x04, 0x00, 0x40,
0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x60, 0xED, 0x5C, 0x00, 0x00, 0x00, 0xC5, 0xCE, 0x05, 0x00,
// Unicode: [0x0078, x]
0xFA, 0xFF, 0x1C, 0x00, 0x00, 0x00, 0x30, 0xFE, 0xFF, 0x06, 0xB0, 0xFF, 0xBF, 0x00, 0x00, 0x00,
0xE2, 0xFF, 0x6F, 0x00, 0x00, 0xFB, 0xFF, 0x09, 0x00, 0x10, 0xFD, 0xFF, 0x07, 0x00, 0x00, 0xC1,
0xFF, 0x8F, 0x00, 0xC1, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0x06, 0xFA, 0xFF, 0x09,
0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0x9F, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF,
0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0x9F, 0xFF, 0xAF, 0x00, 0x00, 0x00,
0x00, 0x10, 0xFC, 0xFF, 0x07, 0xFB, 0xFF, 0x09, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0x9F, 0x00, 0xD1,
0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0x0B, 0x00, 0x20, 0xFE, 0xFF, 0x05, 0x00, 0x80, 0xFF,
0xDF, 0x01, 0x00, 0x00, 0xF4, 0xFF, 0x4F, 0x00, 0xF6, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x50, 0xFF,
0xEF, 0x03,
// Unicode: [0x0079, y]
0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF8, 0xEF, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF, 0xF7, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF, 0xF6, 0xFF, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
0xFA, 0xEF, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x70, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF, 0x42, 0x44, 0x44, 0x44, 0x44, 0x44,
0x44, 0x44, 0xFA, 0xDF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xF7, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x8D, 0x01,
// Unicode: [0x007A, z]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8D, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x3F, 0x41, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x96, 0xFC, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x10, 0x84, 0xEB, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x41, 0xA7, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x08, 0x10, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x4A, 0x00, 0xD1, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xCF, 0x59, 0x02, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xBE, 0x47, 0x01, 0x00,
0x00, 0x00, 0x00, 0xFB, 0xFF, 0xDF, 0x69, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x03, 0xF8, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0B, 0x10, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B
}; };

View File

@ -5,44 +5,71 @@
FONT_TABLE_LOCATION_FLASH_PRAGMA FONT_TABLE_LOCATION_FLASH_PRAGMA
KEEP extern const touchgfx::GlyphNode glyphs_CHINN____20_4bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { KEEP extern const touchgfx::GlyphNode glyphs_CHINN____20_4bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = {
{ 0, 0x0020, 0, 0, 0, 0, 5, 0, 0, 0x00 }, // space { 0, 0x0020, 0, 0, 0, 0, 5, 0, 0, 0x00 }, // space
{ 0, 0x0032, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // two { 0, 0x002E, 5, 4, 4, 0, 5, 0, 0, 0x00 }, // period
{ 130, 0x003F, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // question { 12, 0x0030, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // zero
{ 260, 0x0041, 20, 13, 13, -1, 18, 0, 0, 0x00 }, // A { 142, 0x0031, 10, 13, 13, 3, 20, 0, 0, 0x00 }, // one
{ 390, 0x0042, 20, 13, 13, 0, 21, 0, 0, 0x00 }, // B { 207, 0x0032, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // two
{ 520, 0x0043, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // C { 337, 0x0033, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // three
{ 650, 0x0044, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // D { 467, 0x0034, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // four
{ 780, 0x0045, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // E { 597, 0x0035, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // five
{ 910, 0x0046, 20, 13, 13, 0, 19, 0, 0, 0x00 }, // F { 727, 0x0036, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // six
{ 1040, 0x0047, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // G { 857, 0x0037, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // seven
{ 1170, 0x0048, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // H { 987, 0x0038, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // eight
{ 1300, 0x0049, 4, 13, 13, 0, 5, 0, 0, 0x00 }, // I { 1117, 0x0039, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // nine
{ 1326, 0x004C, 20, 13, 13, 0, 19, 0, 0, 0x00 }, // L { 1247, 0x003F, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // question
{ 1456, 0x004D, 21, 13, 13, 0, 21, 0, 0, 0x00 }, // M { 1377, 0x0041, 20, 13, 13, -1, 18, 0, 0, 0x00 }, // A
{ 1599, 0x004E, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // N { 1507, 0x0042, 20, 13, 13, 0, 21, 0, 0, 0x00 }, // B
{ 1729, 0x004F, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // O { 1637, 0x0043, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // C
{ 1859, 0x0050, 21, 13, 13, 0, 20, 0, 0, 0x00 }, // P { 1767, 0x0044, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // D
{ 2002, 0x0052, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // R { 1897, 0x0045, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // E
{ 2132, 0x0053, 22, 13, 13, 0, 22, 0, 0, 0x00 }, // S { 2027, 0x0046, 20, 13, 13, 0, 19, 0, 0, 0x00 }, // F
{ 2275, 0x0054, 20, 13, 13, -1, 19, 0, 0, 0x00 }, // T { 2157, 0x0047, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // G
{ 2405, 0x0056, 20, 13, 13, -1, 18, 0, 0, 0x00 }, // V { 2287, 0x0048, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // H
{ 2535, 0x0058, 19, 13, 13, 0, 19, 0, 0, 0x00 }, // X { 2417, 0x0049, 4, 13, 13, 0, 5, 0, 0, 0x00 }, // I
{ 2665, 0x0059, 19, 13, 13, -1, 18, 0, 0, 0x00 }, // Y { 2443, 0x004A, 20, 13, 13, -1, 19, 0, 0, 0x00 }, // J
{ 2795, 0x0061, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // a { 2573, 0x004B, 20, 13, 13, 0, 19, 0, 0, 0x00 }, // K
{ 2925, 0x0063, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // c { 2703, 0x004C, 20, 13, 13, 0, 19, 0, 0, 0x00 }, // L
{ 3055, 0x0064, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // d { 2833, 0x004D, 21, 13, 13, 0, 21, 0, 0, 0x00 }, // M
{ 3185, 0x0065, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // e { 2976, 0x004E, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // N
{ 3315, 0x0067, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // g { 3106, 0x004F, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // O
{ 3445, 0x0069, 4, 13, 13, 0, 5, 0, 0, 0x00 }, // i { 3236, 0x0050, 21, 13, 13, 0, 20, 0, 0, 0x00 }, // P
{ 3471, 0x006B, 20, 13, 13, 0, 19, 0, 0, 0x00 }, // k { 3379, 0x0051, 21, 13, 13, 0, 20, 0, 0, 0x00 }, // Q
{ 3601, 0x006C, 15, 13, 13, 0, 14, 0, 0, 0x00 }, // l { 3522, 0x0052, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // R
{ 3705, 0x006E, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // n { 3652, 0x0053, 22, 13, 13, 0, 22, 0, 0, 0x00 }, // S
{ 3835, 0x006F, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // o { 3795, 0x0054, 20, 13, 13, -1, 19, 0, 0, 0x00 }, // T
{ 3965, 0x0070, 20, 13, 13, 0, 19, 0, 0, 0x00 }, // p { 3925, 0x0055, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // U
{ 4095, 0x0072, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // r { 4055, 0x0056, 20, 13, 13, -1, 18, 0, 0, 0x00 }, // V
{ 4225, 0x0073, 22, 13, 13, 0, 22, 0, 0, 0x00 }, // s { 4185, 0x0057, 19, 13, 13, 0, 19, 0, 0, 0x00 }, // W
{ 4368, 0x0074, 20, 13, 13, -1, 19, 0, 0, 0x00 }, // t { 4315, 0x0058, 19, 13, 13, 0, 19, 0, 0, 0x00 }, // X
{ 4498, 0x0075, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // u { 4445, 0x0059, 19, 13, 13, -1, 18, 0, 0, 0x00 }, // Y
{ 4628, 0x0076, 20, 13, 13, -1, 18, 0, 0, 0x00 } // v { 4575, 0x005A, 22, 13, 13, 0, 22, 0, 0, 0x00 }, // Z
{ 4718, 0x005F, 10, 3, 255, 0, 10, 0, 0, 0x60 }, // underscore
{ 4733, 0x0061, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // a
{ 4863, 0x0062, 20, 13, 13, 0, 21, 0, 0, 0x00 }, // b
{ 4993, 0x0063, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // c
{ 5123, 0x0064, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // d
{ 5253, 0x0065, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // e
{ 5383, 0x0066, 20, 13, 13, 0, 19, 0, 0, 0x00 }, // f
{ 5513, 0x0067, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // g
{ 5643, 0x0068, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // h
{ 5773, 0x0069, 4, 13, 13, 0, 5, 0, 0, 0x00 }, // i
{ 5799, 0x006A, 20, 13, 13, -1, 19, 0, 0, 0x00 }, // j
{ 5929, 0x006B, 20, 13, 13, 0, 19, 0, 0, 0x00 }, // k
{ 6059, 0x006C, 15, 13, 13, 0, 14, 0, 0, 0x00 }, // l
{ 6163, 0x006D, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // m
{ 6293, 0x006E, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // n
{ 6423, 0x006F, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // o
{ 6553, 0x0070, 20, 13, 13, 0, 19, 0, 0, 0x00 }, // p
{ 6683, 0x0071, 21, 13, 13, 0, 20, 0, 0, 0x00 }, // q
{ 6826, 0x0072, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // r
{ 6956, 0x0073, 22, 13, 13, 0, 22, 0, 0, 0x00 }, // s
{ 7099, 0x0074, 20, 13, 13, -1, 19, 0, 0, 0x00 }, // t
{ 7229, 0x0075, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // u
{ 7359, 0x0076, 20, 13, 13, -1, 18, 0, 0, 0x00 }, // v
{ 7489, 0x0077, 22, 13, 13, 0, 22, 0, 0, 0x00 }, // w
{ 7632, 0x0078, 19, 13, 13, 0, 19, 0, 0, 0x00 }, // x
{ 7762, 0x0079, 20, 13, 13, 0, 20, 0, 0, 0x00 }, // y
{ 7892, 0x007A, 22, 13, 13, 0, 22, 0, 0, 0x00 } // z
}; };
// CHINN____20_4bpp // CHINN____20_4bpp
@ -60,6 +87,6 @@ touchgfx::GeneratedFont& getFont_CHINN____20_4bpp();
touchgfx::GeneratedFont& getFont_CHINN____20_4bpp() touchgfx::GeneratedFont& getFont_CHINN____20_4bpp()
{ {
static touchgfx::GeneratedFont CHINN____20_4bpp(glyphs_CHINN____20_4bpp, 39, 20, 20, 0, 0, 4, 1, 1, 1, unicodes_CHINN____20_4bpp, kerning_CHINN____20_4bpp, 63, 0, 0, 0); static touchgfx::GeneratedFont CHINN____20_4bpp(glyphs_CHINN____20_4bpp, 66, 24, 20, 0, 0, 4, 1, 1, 1, unicodes_CHINN____20_4bpp, kerning_CHINN____20_4bpp, 63, 0, 0, 0);
return CHINN____20_4bpp; return CHINN____20_4bpp;
} }

View File

@ -17,25 +17,37 @@ public:
virtual void changeToStartScreen() virtual void changeToStartScreen()
{ {
gotoDriverViewScreenNoTransition(); gotoMissionSelectScreenNoTransition();
} }
// MissionSelect
void gotoMissionSelectScreenNoTransition();
// AMI // AMI
void gotoAMIScreenNoTransition(); void gotoAMIScreenNoTransition();
// DriverView // DriverView
void gotoDriverViewScreenNoTransition(); void gotoDriverViewScreenNoTransition();
// DebugView
void gotoDebugViewScreenNoTransition();
protected: protected:
touchgfx::Callback<FrontendApplicationBase> transitionCallback; touchgfx::Callback<FrontendApplicationBase> transitionCallback;
FrontendHeap& frontendHeap; FrontendHeap& frontendHeap;
Model& model; Model& model;
// MissionSelect
void gotoMissionSelectScreenNoTransitionImpl();
// AMI // AMI
void gotoAMIScreenNoTransitionImpl(); void gotoAMIScreenNoTransitionImpl();
// DriverView // DriverView
void gotoDriverViewScreenNoTransitionImpl(); void gotoDriverViewScreenNoTransitionImpl();
// DebugView
void gotoDebugViewScreenNoTransitionImpl();
}; };
#endif // FRONTENDAPPLICATIONBASE_HPP #endif // FRONTENDAPPLICATIONBASE_HPP

View File

@ -18,6 +18,8 @@
#include <gui/ami_screen/AMIPresenter.hpp> #include <gui/ami_screen/AMIPresenter.hpp>
#include <gui/driverview_screen/DriverViewView.hpp> #include <gui/driverview_screen/DriverViewView.hpp>
#include <gui/driverview_screen/DriverViewPresenter.hpp> #include <gui/driverview_screen/DriverViewPresenter.hpp>
#include <gui/debugview_screen/DebugViewView.hpp>
#include <gui/debugview_screen/DebugViewPresenter.hpp>
/** /**
@ -43,7 +45,8 @@ public:
typedef touchgfx::meta::TypeList< MissionSelectView, typedef touchgfx::meta::TypeList< MissionSelectView,
touchgfx::meta::TypeList< AMIView, touchgfx::meta::TypeList< AMIView,
touchgfx::meta::TypeList< DriverViewView, touchgfx::meta::TypeList< DriverViewView,
touchgfx::meta::Nil > > touchgfx::meta::TypeList< DebugViewView,
touchgfx::meta::Nil > > >
> GeneratedViewTypes; > GeneratedViewTypes;
/** /**
@ -58,7 +61,8 @@ public:
typedef touchgfx::meta::TypeList< MissionSelectPresenter, typedef touchgfx::meta::TypeList< MissionSelectPresenter,
touchgfx::meta::TypeList< AMIPresenter, touchgfx::meta::TypeList< AMIPresenter,
touchgfx::meta::TypeList< DriverViewPresenter, touchgfx::meta::TypeList< DriverViewPresenter,
touchgfx::meta::Nil > > touchgfx::meta::TypeList< DebugViewPresenter,
touchgfx::meta::Nil > > >
> GeneratedPresenterTypes; > GeneratedPresenterTypes;
/** /**
@ -81,7 +85,7 @@ public:
virtual void gotoStartScreen(FrontendApplication& app) virtual void gotoStartScreen(FrontendApplication& app)
{ {
app.gotoDriverViewScreenNoTransition(); app.gotoMissionSelectScreenNoTransition();
} }
protected: protected:
FrontendHeapBase(touchgfx::AbstractPartition& presenters, touchgfx::AbstractPartition& views, touchgfx::AbstractPartition& transitions, FrontendApplication& app) FrontendHeapBase(touchgfx::AbstractPartition& presenters, touchgfx::AbstractPartition& views, touchgfx::AbstractPartition& transitions, FrontendApplication& app)

View File

@ -0,0 +1,33 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#ifndef DEBUGVIEWITEMBASE_HPP
#define DEBUGVIEWITEMBASE_HPP
#include <gui/common/FrontendApplication.hpp>
#include <touchgfx/containers/Container.hpp>
#include <touchgfx/widgets/TextAreaWithWildcard.hpp>
class DebugViewItemBase : public touchgfx::Container
{
public:
DebugViewItemBase();
virtual ~DebugViewItemBase();
virtual void initialize();
protected:
FrontendApplication& application() {
return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
}
/*
* Member Declarations
*/
touchgfx::TextAreaWithOneWildcard label;
touchgfx::TextAreaWithOneWildcard value;
private:
};
#endif // DEBUGVIEWITEMBASE_HPP

View File

@ -0,0 +1,41 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#ifndef DEBUGVIEWLINEBASE_HPP
#define DEBUGVIEWLINEBASE_HPP
#include <gui/common/FrontendApplication.hpp>
#include <touchgfx/containers/Container.hpp>
#include <touchgfx/widgets/Box.hpp>
#include <touchgfx/widgets/canvas/Line.hpp>
#include <touchgfx/widgets/canvas/PainterRGB565.hpp>
#include <gui/containers/DebugViewItem.hpp>
class DebugViewLineBase : public touchgfx::Container
{
public:
DebugViewLineBase();
virtual ~DebugViewLineBase();
virtual void initialize();
protected:
FrontendApplication& application() {
return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
}
/*
* Member Declarations
*/
touchgfx::Box bg;
touchgfx::Line line1;
touchgfx::PainterRGB565 line1Painter;
touchgfx::Line line2;
touchgfx::PainterRGB565 line2Painter;
DebugViewItem item1;
DebugViewItem item2;
private:
};
#endif // DEBUGVIEWLINEBASE_HPP

View File

@ -7,7 +7,6 @@
#include <gui/common/FrontendApplication.hpp> #include <gui/common/FrontendApplication.hpp>
#include <touchgfx/containers/Container.hpp> #include <touchgfx/containers/Container.hpp>
#include <touchgfx/widgets/BoxWithBorder.hpp> #include <touchgfx/widgets/BoxWithBorder.hpp>
#include <touchgfx/widgets/TextArea.hpp>
#include <touchgfx/widgets/TextAreaWithWildcard.hpp> #include <touchgfx/widgets/TextAreaWithWildcard.hpp>
class DriverViewFieldBase : public touchgfx::Container class DriverViewFieldBase : public touchgfx::Container
@ -26,7 +25,7 @@ protected:
* Member Declarations * Member Declarations
*/ */
touchgfx::BoxWithBorder box; touchgfx::BoxWithBorder box;
touchgfx::TextArea title; touchgfx::TextAreaWithOneWildcard title;
touchgfx::TextAreaWithOneWildcard value; touchgfx::TextAreaWithOneWildcard value;
private: private:

View File

@ -7,7 +7,7 @@
#include <gui/common/FrontendApplication.hpp> #include <gui/common/FrontendApplication.hpp>
#include <touchgfx/containers/Container.hpp> #include <touchgfx/containers/Container.hpp>
#include <touchgfx/widgets/Box.hpp> #include <touchgfx/widgets/Box.hpp>
#include <touchgfx/widgets/TextArea.hpp> #include <touchgfx/widgets/TextAreaWithWildcard.hpp>
#include <touchgfx/widgets/canvas/Line.hpp> #include <touchgfx/widgets/canvas/Line.hpp>
#include <touchgfx/widgets/canvas/PainterRGB565.hpp> #include <touchgfx/widgets/canvas/PainterRGB565.hpp>
@ -27,7 +27,7 @@ protected:
* Member Declarations * Member Declarations
*/ */
touchgfx::Box bg; touchgfx::Box bg;
touchgfx::TextArea name; touchgfx::TextAreaWithOneWildcard name;
touchgfx::Line line1; touchgfx::Line line1;
touchgfx::PainterRGB565 line1Painter; touchgfx::PainterRGB565 line1Painter;
touchgfx::Line line2; touchgfx::Line line2;

View File

@ -0,0 +1,62 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#ifndef DEBUGVIEWVIEWBASE_HPP
#define DEBUGVIEWVIEWBASE_HPP
#include <gui/common/FrontendApplication.hpp>
#include <mvp/View.hpp>
#include <gui/debugview_screen/DebugViewPresenter.hpp>
#include <touchgfx/widgets/Box.hpp>
#include <touchgfx/containers/scrollers/ScrollList.hpp>
#include <gui/containers/DebugViewLine.hpp>
#include <touchgfx/widgets/canvas/Line.hpp>
#include <touchgfx/widgets/canvas/PainterRGB565.hpp>
class DebugViewViewBase : public touchgfx::View<DebugViewPresenter>
{
public:
DebugViewViewBase();
virtual ~DebugViewViewBase();
virtual void setupScreen();
virtual void listUpdateItem(DebugViewLine& item, int16_t itemIndex)
{
// Override and implement this function in DebugView
}
protected:
FrontendApplication& application() {
return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
}
/*
* Member Declarations
*/
touchgfx::Box __background;
touchgfx::ScrollList list;
touchgfx::DrawableListItems<DebugViewLine, 13> listListItems;
touchgfx::Line line1;
touchgfx::PainterRGB565 line1Painter;
private:
/*
* Canvas Buffer Size
*/
static const uint32_t CANVAS_BUFFER_SIZE = 7200;
uint8_t canvasBuffer[CANVAS_BUFFER_SIZE];
/*
* Callback Declarations
*/
touchgfx::Callback<DebugViewViewBase, touchgfx::DrawableListItemsInterface*, int16_t, int16_t> updateItemCallback;
/*
* Callback Handler Declarations
*/
void updateItemCallbackHandler(touchgfx::DrawableListItemsInterface* items, int16_t containerIndex, int16_t itemIndex);
};
#endif // DEBUGVIEWVIEWBASE_HPP

View File

@ -15,6 +15,8 @@
#include <gui/ami_screen/AMIPresenter.hpp> #include <gui/ami_screen/AMIPresenter.hpp>
#include <gui/driverview_screen/DriverViewView.hpp> #include <gui/driverview_screen/DriverViewView.hpp>
#include <gui/driverview_screen/DriverViewPresenter.hpp> #include <gui/driverview_screen/DriverViewPresenter.hpp>
#include <gui/debugview_screen/DebugViewView.hpp>
#include <gui/debugview_screen/DebugViewPresenter.hpp>
using namespace touchgfx; using namespace touchgfx;
@ -33,6 +35,19 @@ FrontendApplicationBase::FrontendApplicationBase(Model& m, FrontendHeap& heap)
* Screen Transition Declarations * Screen Transition Declarations
*/ */
// MissionSelect
void FrontendApplicationBase::gotoMissionSelectScreenNoTransition()
{
transitionCallback = touchgfx::Callback<FrontendApplicationBase>(this, &FrontendApplication::gotoMissionSelectScreenNoTransitionImpl);
pendingScreenTransitionCallback = &transitionCallback;
}
void FrontendApplicationBase::gotoMissionSelectScreenNoTransitionImpl()
{
touchgfx::makeTransition<MissionSelectView, MissionSelectPresenter, touchgfx::NoTransition, Model >(&currentScreen, &currentPresenter, frontendHeap, &currentTransition, &model);
}
// AMI // AMI
void FrontendApplicationBase::gotoAMIScreenNoTransition() void FrontendApplicationBase::gotoAMIScreenNoTransition()
@ -58,3 +73,16 @@ void FrontendApplicationBase::gotoDriverViewScreenNoTransitionImpl()
{ {
touchgfx::makeTransition<DriverViewView, DriverViewPresenter, touchgfx::NoTransition, Model >(&currentScreen, &currentPresenter, frontendHeap, &currentTransition, &model); touchgfx::makeTransition<DriverViewView, DriverViewPresenter, touchgfx::NoTransition, Model >(&currentScreen, &currentPresenter, frontendHeap, &currentTransition, &model);
} }
// DebugView
void FrontendApplicationBase::gotoDebugViewScreenNoTransition()
{
transitionCallback = touchgfx::Callback<FrontendApplicationBase>(this, &FrontendApplication::gotoDebugViewScreenNoTransitionImpl);
pendingScreenTransitionCallback = &transitionCallback;
}
void FrontendApplicationBase::gotoDebugViewScreenNoTransitionImpl()
{
touchgfx::makeTransition<DebugViewView, DebugViewPresenter, touchgfx::NoTransition, Model >(&currentScreen, &currentPresenter, frontendHeap, &currentTransition, &model);
}

View File

@ -0,0 +1,33 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#include <gui_generated/containers/DebugViewItemBase.hpp>
#include <texts/TextKeysAndLanguages.hpp>
#include <touchgfx/Color.hpp>
DebugViewItemBase::DebugViewItemBase()
{
setWidth(240);
setHeight(26);
label.setPosition(5, 0, 105, 25);
label.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
label.setLinespacing(0);
label.setTypedText(touchgfx::TypedText(T_DEBUGVIEWFIELD_TITLE));
add(label);
value.setPosition(110, 0, 125, 25);
value.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
value.setLinespacing(0);
value.setTypedText(touchgfx::TypedText(T_DEFAULTWILDCARD_RIGHTALIGNED));
add(value);
}
DebugViewItemBase::~DebugViewItemBase()
{
}
void DebugViewItemBase::initialize()
{
}

View File

@ -0,0 +1,49 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#include <gui_generated/containers/DebugViewLineBase.hpp>
#include <touchgfx/Color.hpp>
DebugViewLineBase::DebugViewLineBase()
{
setWidth(480);
setHeight(26);
bg.setPosition(0, 0, 480, 26);
bg.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
add(bg);
line1.setPosition(240, 0, 1, 26);
line1Painter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
line1.setPainter(line1Painter);
line1.setStart(0, 0);
line1.setEnd(0, 26);
line1.setLineWidth(10);
line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
add(line1);
line2.setPosition(0, 25, 480, 1);
line2Painter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
line2.setPainter(line2Painter);
line2.setStart(0, 0);
line2.setEnd(480, 0);
line2.setLineWidth(10);
line2.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
add(line2);
item1.setXY(0, 0);
add(item1);
item2.setXY(240, 0);
add(item2);
}
DebugViewLineBase::~DebugViewLineBase()
{
}
void DebugViewLineBase::initialize()
{
item1.initialize();
item2.initialize();
}

View File

@ -18,7 +18,7 @@ DriverViewFieldBase::DriverViewFieldBase()
title.setPosition(0, 0, 160, 25); title.setPosition(0, 0, 160, 25);
title.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255)); title.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
title.setLinespacing(0); title.setLinespacing(0);
title.setTypedText(touchgfx::TypedText(T___SINGLEUSE_0FBJ)); title.setTypedText(touchgfx::TypedText(T_DRIVERVIEWFIELD_TITLE));
add(title); add(title);
value.setPosition(0, 20, 160, 57); value.setPosition(0, 20, 160, 57);

View File

@ -16,7 +16,7 @@ DriverViewFieldSelectionBase::DriverViewFieldSelectionBase()
name.setPosition(0, 0, 160, 25); name.setPosition(0, 0, 160, 25);
name.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255)); name.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
name.setLinespacing(0); name.setLinespacing(0);
name.setTypedText(touchgfx::TypedText(T___SINGLEUSE_PNKR)); name.setTypedText(touchgfx::TypedText(T_DRIVERVIEWFIELD_TITLE));
add(name); add(name);
line1.setPosition(0, 25, 160, 1); line1.setPosition(0, 25, 160, 1);

View File

@ -0,0 +1,62 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#include <gui_generated/debugview_screen/DebugViewViewBase.hpp>
#include <touchgfx/canvas_widget_renderer/CanvasWidgetRenderer.hpp>
#include <touchgfx/Color.hpp>
DebugViewViewBase::DebugViewViewBase() :
updateItemCallback(this, &DebugViewViewBase::updateItemCallbackHandler)
{
touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE);
__background.setPosition(0, 0, 480, 320);
__background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
add(__background);
list.setPosition(0, 4, 480, 312);
list.setHorizontal(false);
list.setCircular(true);
list.setEasingEquation(touchgfx::EasingEquations::backEaseOut);
list.setSwipeAcceleration(10);
list.setDragAcceleration(10);
list.setNumberOfItems(1);
list.setPadding(0, 0);
list.setSnapping(false);
list.setDrawableSize(26, 0);
list.setDrawables(listListItems, updateItemCallback);
add(list);
line1.setPosition(0, 3, 480, 1);
line1Painter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
line1.setPainter(line1Painter);
line1.setStart(0, 0);
line1.setEnd(480, 0);
line1.setLineWidth(10);
line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
add(line1);
}
DebugViewViewBase::~DebugViewViewBase()
{
touchgfx::CanvasWidgetRenderer::resetBuffer();
}
void DebugViewViewBase::setupScreen()
{
list.initialize();
for (int i = 0; i < listListItems.getNumberOfDrawables(); i++)
{
listListItems[i].initialize();
}
}
void DebugViewViewBase::updateItemCallbackHandler(touchgfx::DrawableListItemsInterface* items, int16_t containerIndex, int16_t itemIndex)
{
if (items == &listListItems)
{
touchgfx::Drawable* d = items->getDrawable(containerIndex);
DebugViewLine* cc = (DebugViewLine*)d;
listUpdateItem(*cc, itemIndex);
}
}

View File

@ -117,4 +117,13 @@ void MissionSelectViewBase::handleKeyEvent(uint8_t key)
application().gotoDriverViewScreenNoTransition(); application().gotoDriverViewScreenNoTransition();
} }
if(252 == key)
{
//DummyChangeDebugView
//When hardware button 252 clicked change screen to DebugView
//Go to DebugView with no screen transition
application().gotoDebugViewScreenNoTransition();
}
} }

View File

@ -1 +1 @@
{"remap":"yes","language":"GB","language_index":0,"indices":[["257","T_FIELD_BBAL"],["209","T_FIELD_TSVOLTVEH"],["202","T_FIELD_TSVOLTBAT"],["228","T_FIELD_LVSOC"],["246","T_FIELD_TSSOC"],["267","T_FIELD_MAXCELLTEMP"],["272","T_FIELD_TIREFL"],["277","T_FIELD_TIREFR"],["282","T_FIELD_TIRERL"],["287","T_FIELD_TIRERR"],["262","T_FIELD_LAPCOUNT"],["146","T_FIELD_INICHKSTATE"],["216","T_FIELD_ERR"],["301","T_FIELD_SDC"],["162","T_FIELD_INVRREADY"],["154","T_FIELD_INVLREADY"],["178","T_FIELD_R2DPROGRESS"],["170","T_FIELD_ACTIVEMISSION"],["138","T_FIELD_ASSTATE"],["194","T_FIELD_TSSTATE"],["136","T_NUMBERWILDCARD"],["136","T_DEFAULTWILDCARD"],["297","T_FIELD_TSCURRENT"],["292","T_FIELD_MINCELLVOLT"],["234","T_FIELD_SPEED"],["95","T_INSPECTION_HUGE"],["127","T_EBS_HUGE"],["106","T_TRACKDRIVE_HUGE"],["117","T_AUTOX_HUGE"],["186","T_SKIDPAD_HUGE"],["82","T_ACCEL_HUGE"],["34","T_INVALID_HUGE"],["67","T_MANUAL"],["95","T_INSPECTION"],["127","T_EBS"],["106","T_TRACKDRIVE"],["117","T_AUTOX"],["186","T_SKIDPAD"],["82","T_ACCEL"],["252","T___SINGLEUSE_PNKR"],["222","T___SINGLEUSE_0FBJ"],["305","T___SINGLEUSE_4OBM"],["298","T___SINGLEUSE_PHFD"],["240","T___SINGLEUSE_H6UX"],["136","T___SINGLEUSE_20H3"],["17","T___SINGLEUSE_SDGP"],["51","T___SINGLEUSE_M5X7"],["0","T___SINGLEUSE_6GPV"]]} {"remap":"yes","language":"GB","language_index":0,"indices":[["136","T_DEBUGVIEWFIELD_TITLE"],["136","T_DRIVERVIEWFIELD_TITLE"],["246","T_FIELD_BBAL"],["209","T_FIELD_TSVOLTVEH"],["202","T_FIELD_TSVOLTBAT"],["222","T_FIELD_LVSOC"],["240","T_FIELD_TSSOC"],["256","T_FIELD_MAXCELLTEMP"],["261","T_FIELD_TIREFL"],["266","T_FIELD_TIREFR"],["271","T_FIELD_TIRERL"],["276","T_FIELD_TIRERR"],["251","T_FIELD_LAPCOUNT"],["146","T_FIELD_INICHKSTATE"],["216","T_FIELD_ERR"],["290","T_FIELD_SDC"],["162","T_FIELD_INVRREADY"],["154","T_FIELD_INVLREADY"],["178","T_FIELD_R2DPROGRESS"],["170","T_FIELD_ACTIVEMISSION"],["138","T_FIELD_ASSTATE"],["194","T_FIELD_TSSTATE"],["136","T_NUMBERWILDCARD"],["136","T_DEFAULTWILDCARD_CENTERED"],["136","T_DEFAULTWILDCARD_RIGHTALIGNED"],["286","T_FIELD_TSCURRENT"],["281","T_FIELD_MINCELLVOLT"],["228","T_FIELD_SPEED"],["95","T_INSPECTION_HUGE"],["127","T_EBS_HUGE"],["106","T_TRACKDRIVE_HUGE"],["117","T_AUTOX_HUGE"],["186","T_SKIDPAD_HUGE"],["82","T_ACCEL_HUGE"],["34","T_INVALID_HUGE"],["67","T_MANUAL"],["95","T_INSPECTION"],["127","T_EBS"],["106","T_TRACKDRIVE"],["117","T_AUTOX"],["186","T_SKIDPAD"],["82","T_ACCEL"],["294","T___SINGLEUSE_4OBM"],["287","T___SINGLEUSE_PHFD"],["234","T___SINGLEUSE_H6UX"],["136","T___SINGLEUSE_20H3"],["17","T___SINGLEUSE_SDGP"],["51","T___SINGLEUSE_M5X7"],["0","T___SINGLEUSE_6GPV"]]}

View File

@ -1 +1 @@
{"languages":["GB"],"textids":["T_FIELD_BBAL","T_FIELD_TSVOLTVEH","T_FIELD_TSVOLTBAT","T_FIELD_LVSOC","T_FIELD_TSSOC","T_FIELD_MAXCELLTEMP","T_FIELD_TIREFL","T_FIELD_TIREFR","T_FIELD_TIRERL","T_FIELD_TIRERR","T_FIELD_LAPCOUNT","T_FIELD_INICHKSTATE","T_FIELD_ERR","T_FIELD_SDC","T_FIELD_INVRREADY","T_FIELD_INVLREADY","T_FIELD_R2DPROGRESS","T_FIELD_ACTIVEMISSION","T_FIELD_ASSTATE","T_FIELD_TSSTATE","T_NUMBERWILDCARD","T_DEFAULTWILDCARD","T_FIELD_TSCURRENT","T_FIELD_MINCELLVOLT","T_FIELD_SPEED","T_INSPECTION_HUGE","T_EBS_HUGE","T_TRACKDRIVE_HUGE","T_AUTOX_HUGE","T_SKIDPAD_HUGE","T_ACCEL_HUGE","T_INVALID_HUGE","T_MANUAL","T_INSPECTION","T_EBS","T_TRACKDRIVE","T_AUTOX","T_SKIDPAD","T_ACCEL","T___SINGLEUSE_PNKR","T___SINGLEUSE_0FBJ","T___SINGLEUSE_4OBM","T___SINGLEUSE_PHFD","T___SINGLEUSE_H6UX","T___SINGLEUSE_20H3","T___SINGLEUSE_SDGP","T___SINGLEUSE_M5X7","T___SINGLEUSE_6GPV"]} {"languages":["GB"],"textids":["T_DEBUGVIEWFIELD_TITLE","T_DRIVERVIEWFIELD_TITLE","T_FIELD_BBAL","T_FIELD_TSVOLTVEH","T_FIELD_TSVOLTBAT","T_FIELD_LVSOC","T_FIELD_TSSOC","T_FIELD_MAXCELLTEMP","T_FIELD_TIREFL","T_FIELD_TIREFR","T_FIELD_TIRERL","T_FIELD_TIRERR","T_FIELD_LAPCOUNT","T_FIELD_INICHKSTATE","T_FIELD_ERR","T_FIELD_SDC","T_FIELD_INVRREADY","T_FIELD_INVLREADY","T_FIELD_R2DPROGRESS","T_FIELD_ACTIVEMISSION","T_FIELD_ASSTATE","T_FIELD_TSSTATE","T_NUMBERWILDCARD","T_DEFAULTWILDCARD_CENTERED","T_DEFAULTWILDCARD_RIGHTALIGNED","T_FIELD_TSCURRENT","T_FIELD_MINCELLVOLT","T_FIELD_SPEED","T_INSPECTION_HUGE","T_EBS_HUGE","T_TRACKDRIVE_HUGE","T_AUTOX_HUGE","T_SKIDPAD_HUGE","T_ACCEL_HUGE","T_INVALID_HUGE","T_MANUAL","T_INSPECTION","T_EBS","T_TRACKDRIVE","T_AUTOX","T_SKIDPAD","T_ACCEL","T___SINGLEUSE_4OBM","T___SINGLEUSE_PHFD","T___SINGLEUSE_H6UX","T___SINGLEUSE_20H3","T___SINGLEUSE_SDGP","T___SINGLEUSE_M5X7","T___SINGLEUSE_6GPV"]}

View File

@ -1 +1 @@
{"remap":"yes","languages":["Gb"],"characters":[67,104,111,111,115,101,32,97,32,109,105,115,115,105,111,110,0,67,117,114,114,101,110,116,32,77,105,115,115,105,111,110,58,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,33,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,0,77,97,110,117,97,108,32,68,114,105,118,105,110,103,0,65,99,99,101,108,101,114,97,116,105,111,110,0,73,110,115,112,101,99,116,105,111,110,0,84,114,97,99,107,100,114,105,118,101,0,65,117,116,111,99,114,111,115,115,0,69,66,83,32,84,101,115,116,0,2,0,65,83,83,84,65,84,69,0,73,67,83,84,65,84,69,0,73,78,86,76,82,68,89,0,73,78,86,82,82,68,89,0,77,73,83,83,73,79,78,0,82,50,68,80,82,79,71,0,83,107,105,100,112,97,100,0,84,83,83,84,65,84,69,0,84,83,86,66,65,84,0,84,83,86,86,69,72,0,69,82,82,79,82,0,70,73,69,76,68,0,76,86,83,79,67,0,83,80,69,69,68,0,84,73,82,69,83,0,84,83,83,79,67,0,63,63,63,63,0,66,66,65,76,0,76,65,80,83,0,84,77,65,88,0,84,84,70,76,0,84,84,70,82,0,84,84,82,76,0,84,84,82,82,0,86,77,73,78,0,73,84,83,0,83,68,67,0,76,86,0]} {"remap":"yes","languages":["Gb"],"characters":[67,104,111,111,115,101,32,97,32,109,105,115,115,105,111,110,0,67,117,114,114,101,110,116,32,77,105,115,115,105,111,110,58,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,33,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,0,77,97,110,117,97,108,32,68,114,105,118,105,110,103,0,65,99,99,101,108,101,114,97,116,105,111,110,0,73,110,115,112,101,99,116,105,111,110,0,84,114,97,99,107,100,114,105,118,101,0,65,117,116,111,99,114,111,115,115,0,69,66,83,32,84,101,115,116,0,2,0,65,83,83,84,65,84,69,0,73,67,83,84,65,84,69,0,73,78,86,76,82,68,89,0,73,78,86,82,82,68,89,0,77,73,83,83,73,79,78,0,82,50,68,80,82,79,71,0,83,107,105,100,112,97,100,0,84,83,83,84,65,84,69,0,84,83,86,66,65,84,0,84,83,86,86,69,72,0,69,82,82,79,82,0,76,86,83,79,67,0,83,80,69,69,68,0,84,73,82,69,83,0,84,83,83,79,67,0,66,66,65,76,0,76,65,80,83,0,84,77,65,88,0,84,84,70,76,0,84,84,70,82,0,84,84,82,76,0,84,84,82,82,0,86,77,73,78,0,73,84,83,0,83,68,67,0,76,86,0]}

View File

@ -1 +1 @@
{"databases":{"DEFAULT":[[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]]},"database_list":["DEFAULT"],"fonts":{"getFont_verdana_20_4bpp":0,"getFont_CHINN____30_4bpp":1,"getFont_CHINN____20_4bpp":2,"getFont_CHINN____40_4bpp":3,"getFont_lucon_TTF_50_4bpp":4},"generate_font_format":"0"} {"databases":{"DEFAULT":[[0,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[0,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]]},"database_list":["DEFAULT"],"fonts":{"getFont_verdana_20_4bpp":0,"getFont_CHINN____30_4bpp":1,"getFont_CHINN____20_4bpp":2,"getFont_CHINN____40_4bpp":3,"getFont_lucon_TTF_50_4bpp":4},"generate_font_format":"0"}

View File

@ -12,6 +12,8 @@ enum LANGUAGES
enum TEXTS enum TEXTS
{ {
T_DEBUGVIEWFIELD_TITLE,
T_DRIVERVIEWFIELD_TITLE,
T_FIELD_BBAL, T_FIELD_BBAL,
T_FIELD_TSVOLTVEH, T_FIELD_TSVOLTVEH,
T_FIELD_TSVOLTBAT, T_FIELD_TSVOLTBAT,
@ -33,7 +35,8 @@ enum TEXTS
T_FIELD_ASSTATE, T_FIELD_ASSTATE,
T_FIELD_TSSTATE, T_FIELD_TSSTATE,
T_NUMBERWILDCARD, T_NUMBERWILDCARD,
T_DEFAULTWILDCARD, T_DEFAULTWILDCARD_CENTERED,
T_DEFAULTWILDCARD_RIGHTALIGNED,
T_FIELD_TSCURRENT, T_FIELD_TSCURRENT,
T_FIELD_MINCELLVOLT, T_FIELD_MINCELLVOLT,
T_FIELD_SPEED, T_FIELD_SPEED,
@ -51,8 +54,6 @@ enum TEXTS
T_AUTOX, T_AUTOX,
T_SKIDPAD, T_SKIDPAD,
T_ACCEL, T_ACCEL,
T___SINGLEUSE_PNKR,
T___SINGLEUSE_0FBJ,
T___SINGLEUSE_4OBM, T___SINGLEUSE_4OBM,
T___SINGLEUSE_PHFD, T___SINGLEUSE_PHFD,
T___SINGLEUSE_H6UX, T___SINGLEUSE_H6UX,

View File

@ -10,20 +10,22 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE;
// Remap all strings // Remap all strings
TEXT_LOCATION_FLASH_PRAGMA TEXT_LOCATION_FLASH_PRAGMA
KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = { KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
257, // T_FIELD_BBAL: "BBAL" 136, // T_DEBUGVIEWFIELD_TITLE: "<>"
136, // T_DRIVERVIEWFIELD_TITLE: "<>"
246, // T_FIELD_BBAL: "BBAL"
209, // T_FIELD_TSVOLTVEH: "TSVVEH" 209, // T_FIELD_TSVOLTVEH: "TSVVEH"
202, // T_FIELD_TSVOLTBAT: "TSVBAT" 202, // T_FIELD_TSVOLTBAT: "TSVBAT"
228, // T_FIELD_LVSOC: "LVSOC" 222, // T_FIELD_LVSOC: "LVSOC"
246, // T_FIELD_TSSOC: "TSSOC" 240, // T_FIELD_TSSOC: "TSSOC"
267, // T_FIELD_MAXCELLTEMP: "TMAX" 256, // T_FIELD_MAXCELLTEMP: "TMAX"
272, // T_FIELD_TIREFL: "TTFL" 261, // T_FIELD_TIREFL: "TTFL"
277, // T_FIELD_TIREFR: "TTFR" 266, // T_FIELD_TIREFR: "TTFR"
282, // T_FIELD_TIRERL: "TTRL" 271, // T_FIELD_TIRERL: "TTRL"
287, // T_FIELD_TIRERR: "TTRR" 276, // T_FIELD_TIRERR: "TTRR"
262, // T_FIELD_LAPCOUNT: "LAPS" 251, // T_FIELD_LAPCOUNT: "LAPS"
146, // T_FIELD_INICHKSTATE: "ICSTATE" 146, // T_FIELD_INICHKSTATE: "ICSTATE"
216, // T_FIELD_ERR: "ERROR" 216, // T_FIELD_ERR: "ERROR"
301, // T_FIELD_SDC: "SDC" 290, // T_FIELD_SDC: "SDC"
162, // T_FIELD_INVRREADY: "INVRRDY" 162, // T_FIELD_INVRREADY: "INVRRDY"
154, // T_FIELD_INVLREADY: "INVLRDY" 154, // T_FIELD_INVLREADY: "INVLRDY"
178, // T_FIELD_R2DPROGRESS: "R2DPROG" 178, // T_FIELD_R2DPROGRESS: "R2DPROG"
@ -31,10 +33,11 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
138, // T_FIELD_ASSTATE: "ASSTATE" 138, // T_FIELD_ASSTATE: "ASSTATE"
194, // T_FIELD_TSSTATE: "TSSTATE" 194, // T_FIELD_TSSTATE: "TSSTATE"
136, // T_NUMBERWILDCARD: "<>" 136, // T_NUMBERWILDCARD: "<>"
136, // T_DEFAULTWILDCARD: "<>" 136, // T_DEFAULTWILDCARD_CENTERED: "<>"
297, // T_FIELD_TSCURRENT: "ITS" 136, // T_DEFAULTWILDCARD_RIGHTALIGNED: "<>"
292, // T_FIELD_MINCELLVOLT: "VMIN" 286, // T_FIELD_TSCURRENT: "ITS"
234, // T_FIELD_SPEED: "SPEED" 281, // T_FIELD_MINCELLVOLT: "VMIN"
228, // T_FIELD_SPEED: "SPEED"
95, // T_INSPECTION_HUGE: "Inspection" 95, // T_INSPECTION_HUGE: "Inspection"
127, // T_EBS_HUGE: "EBS Test" 127, // T_EBS_HUGE: "EBS Test"
106, // T_TRACKDRIVE_HUGE: "Trackdrive" 106, // T_TRACKDRIVE_HUGE: "Trackdrive"
@ -49,11 +52,9 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
117, // T_AUTOX: "Autocross" 117, // T_AUTOX: "Autocross"
186, // T_SKIDPAD: "Skidpad" 186, // T_SKIDPAD: "Skidpad"
82, // T_ACCEL: "Acceleration" 82, // T_ACCEL: "Acceleration"
252, // T___SINGLEUSE_PNKR: "????" 294, // T___SINGLEUSE_4OBM: "LV"
222, // T___SINGLEUSE_0FBJ: "FIELD" 287, // T___SINGLEUSE_PHFD: "TS"
305, // T___SINGLEUSE_4OBM: "LV" 234, // T___SINGLEUSE_H6UX: "TIRES"
298, // T___SINGLEUSE_PHFD: "TS"
240, // T___SINGLEUSE_H6UX: "TIRES"
136, // T___SINGLEUSE_20H3: "<>" 136, // T___SINGLEUSE_20H3: "<>"
17, // T___SINGLEUSE_SDGP: "Current Mission:" 17, // T___SINGLEUSE_SDGP: "Current Mission:"
51, // T___SINGLEUSE_M5X7: "Invalid Mission" 51, // T___SINGLEUSE_M5X7: "Invalid Mission"

View File

@ -82,23 +82,21 @@ KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCA
0x54, 0x53, 0x56, 0x42, 0x41, 0x54, 0x0, // @202 "TSVBAT" 0x54, 0x53, 0x56, 0x42, 0x41, 0x54, 0x0, // @202 "TSVBAT"
0x54, 0x53, 0x56, 0x56, 0x45, 0x48, 0x0, // @209 "TSVVEH" 0x54, 0x53, 0x56, 0x56, 0x45, 0x48, 0x0, // @209 "TSVVEH"
0x45, 0x52, 0x52, 0x4f, 0x52, 0x0, // @216 "ERROR" 0x45, 0x52, 0x52, 0x4f, 0x52, 0x0, // @216 "ERROR"
0x46, 0x49, 0x45, 0x4c, 0x44, 0x0, // @222 "FIELD" 0x4c, 0x56, 0x53, 0x4f, 0x43, 0x0, // @222 "LVSOC"
0x4c, 0x56, 0x53, 0x4f, 0x43, 0x0, // @228 "LVSOC" 0x53, 0x50, 0x45, 0x45, 0x44, 0x0, // @228 "SPEED"
0x53, 0x50, 0x45, 0x45, 0x44, 0x0, // @234 "SPEED" 0x54, 0x49, 0x52, 0x45, 0x53, 0x0, // @234 "TIRES"
0x54, 0x49, 0x52, 0x45, 0x53, 0x0, // @240 "TIRES" 0x54, 0x53, 0x53, 0x4f, 0x43, 0x0, // @240 "TSSOC"
0x54, 0x53, 0x53, 0x4f, 0x43, 0x0, // @246 "TSSOC" 0x42, 0x42, 0x41, 0x4c, 0x0, // @246 "BBAL"
0x3f, 0x3f, 0x3f, 0x3f, 0x0, // @252 "????" 0x4c, 0x41, 0x50, 0x53, 0x0, // @251 "LAPS"
0x42, 0x42, 0x41, 0x4c, 0x0, // @257 "BBAL" 0x54, 0x4d, 0x41, 0x58, 0x0, // @256 "TMAX"
0x4c, 0x41, 0x50, 0x53, 0x0, // @262 "LAPS" 0x54, 0x54, 0x46, 0x4c, 0x0, // @261 "TTFL"
0x54, 0x4d, 0x41, 0x58, 0x0, // @267 "TMAX" 0x54, 0x54, 0x46, 0x52, 0x0, // @266 "TTFR"
0x54, 0x54, 0x46, 0x4c, 0x0, // @272 "TTFL" 0x54, 0x54, 0x52, 0x4c, 0x0, // @271 "TTRL"
0x54, 0x54, 0x46, 0x52, 0x0, // @277 "TTFR" 0x54, 0x54, 0x52, 0x52, 0x0, // @276 "TTRR"
0x54, 0x54, 0x52, 0x4c, 0x0, // @282 "TTRL" 0x56, 0x4d, 0x49, 0x4e, 0x0, // @281 "VMIN"
0x54, 0x54, 0x52, 0x52, 0x0, // @287 "TTRR" 0x49, 0x54, 0x53, 0x0, // @286 "ITS"
0x56, 0x4d, 0x49, 0x4e, 0x0, // @292 "VMIN" 0x53, 0x44, 0x43, 0x0, // @290 "SDC"
0x49, 0x54, 0x53, 0x0, // @297 "ITS" 0x4c, 0x56, 0x0 // @294 "LV"
0x53, 0x44, 0x43, 0x0, // @301 "SDC"
0x4c, 0x56, 0x0 // @305 "LV"
}; };
TEXT_LOCATION_FLASH_PRAGMA TEXT_LOCATION_FLASH_PRAGMA

View File

@ -24,6 +24,8 @@ extern const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[];
TEXT_LOCATION_FLASH_PRAGMA TEXT_LOCATION_FLASH_PRAGMA
const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCATION_FLASH_ATTRIBUTE = { const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
{ 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
@ -46,6 +48,7 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 0, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 0, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
@ -66,8 +69,6 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },

View File

@ -2,6 +2,7 @@
#define DATAFIELD_HPP #define DATAFIELD_HPP
#include "touchgfx/TypedText.hpp" #include "touchgfx/TypedText.hpp"
#include "touchgfx/Unicode.hpp"
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
@ -20,17 +21,51 @@ CountedEnum(DataFieldType, size_t, DF_TSState, DF_ASState, DF_ActiveMission,
DF_TSSoC, DF_LVSoC, DF_TSCurrent, DF_TSVoltageBat, DF_TSVoltageVeh, DF_TSSoC, DF_LVSoC, DF_TSCurrent, DF_TSVoltageBat, DF_TSVoltageVeh,
DF_Speed, DF_BBal); DF_Speed, DF_BBal);
enum class DataFieldKind { Numeric, Bool, Text }; enum class DataFieldKind { Float, Bool, Text, Int };
struct DataFieldDescription { struct DataFieldDescription {
DataFieldKind kind; DataFieldKind kind;
touchgfx::TypedText title; const char *title;
size_t int_digits; size_t int_digits;
size_t decimal_digits; size_t decimal_digits;
void* (*getValue)(void); void *(*getValue)(void);
}; };
extern DataFieldDescription dataFieldDescs[]; extern DataFieldDescription dataFieldDescs[];
class DataField {
public:
virtual ~DataField() {}
void setType(DataFieldType type);
DataFieldType getType();
virtual void updateValue();
protected:
touchgfx::Unicode::UnicodeChar titleBuffer[16];
touchgfx::Unicode::UnicodeChar valueBuffer[16];
DataFieldType type;
const DataFieldDescription *desc;
union {
float f;
int b;
int i;
} fieldValue;
virtual void typeUpdated() = 0;
virtual void titleBufferUpdated() = 0;
virtual void valueBufferUpdated() = 0;
private:
void setFloatValue(float floatValue);
void setBoolValue(int boolValue);
void setIntValue(int intValue);
void setStrValue(const char *strValue);
void updateValueBuffer();
};
#endif // DATAFIELD_HPP #endif // DATAFIELD_HPP

View File

@ -0,0 +1,20 @@
#ifndef DEBUGVIEWITEM_HPP
#define DEBUGVIEWITEM_HPP
#include "gui/common/DataField.hpp"
#include <gui_generated/containers/DebugViewItemBase.hpp>
class DebugViewItem : public DebugViewItemBase, public DataField {
public:
DebugViewItem();
virtual ~DebugViewItem() {}
virtual void initialize() override;
protected:
virtual void typeUpdated() override;
virtual void titleBufferUpdated() override;
virtual void valueBufferUpdated() override;
};
#endif // DEBUGVIEWITEM_HPP

View File

@ -0,0 +1,27 @@
#ifndef DEBUGVIEWLINE_HPP
#define DEBUGVIEWLINE_HPP
#include "gui/common/DataField.hpp"
#include "gui/containers/DebugViewItem.hpp"
#include <gui_generated/containers/DebugViewLineBase.hpp>
class DebugViewLine : public DebugViewLineBase {
public:
DebugViewLine();
virtual ~DebugViewLine() {}
virtual void initialize();
void setFieldType(size_t i, DataFieldType type);
void setFieldVisible(size_t i, int visible);
void updateFieldValues();
void setLightBG(int light);
static constexpr size_t NUM_FIELDS = 2;
protected:
private:
DebugViewItem *fields[NUM_FIELDS];
};
#endif // DEBUGVIEWLINE_HPP

View File

@ -7,31 +7,20 @@
#include "gui/common/DataField.hpp" #include "gui/common/DataField.hpp"
class DriverViewField : public DriverViewFieldBase { class DriverViewField : public DriverViewFieldBase, public DataField {
public: public:
DriverViewField(); DriverViewField();
virtual ~DriverViewField() {} virtual ~DriverViewField() {}
virtual void initialize(); virtual void initialize() override;
void setType(const DataFieldDescription &desc);
void setValue(float newValue);
void setValue(const char *str);
void setValue(int boolValue);
void setSelected(int selected); void setSelected(int selected);
protected: protected:
private: private:
Unicode::UnicodeChar valueBuffer[16]; virtual void typeUpdated() override;
virtual void titleBufferUpdated() override;
DataFieldKind fieldKind; virtual void valueBufferUpdated() override;
size_t intDigits;
size_t decimalDigits;
float floatValue;
int boolValue;
void updateValueBuffer();
}; };
#endif // DRIVERVIEWFIELD_HPP #endif // DRIVERVIEWFIELD_HPP

View File

@ -2,6 +2,7 @@
#define DRIVERVIEWFIELDSELECTION_HPP #define DRIVERVIEWFIELDSELECTION_HPP
#include "touchgfx/TypedText.hpp" #include "touchgfx/TypedText.hpp"
#include "touchgfx/Unicode.hpp"
#include <gui_generated/containers/DriverViewFieldSelectionBase.hpp> #include <gui_generated/containers/DriverViewFieldSelectionBase.hpp>
class DriverViewFieldSelection : public DriverViewFieldSelectionBase { class DriverViewFieldSelection : public DriverViewFieldSelectionBase {
@ -11,10 +12,12 @@ public:
virtual void initialize(); virtual void initialize();
void setName(const touchgfx::TypedText &name); void setName(const char *name);
void setSelected(int selected); void setSelected(int selected);
protected: protected:
private:
Unicode::UnicodeChar nameBuffer[16];
}; };
#endif // DRIVERVIEWFIELDSELECTION_HPP #endif // DRIVERVIEWFIELDSELECTION_HPP

View File

@ -0,0 +1,38 @@
#ifndef DEBUGVIEWPRESENTER_HPP
#define DEBUGVIEWPRESENTER_HPP
#include <gui/model/ModelListener.hpp>
#include <mvp/Presenter.hpp>
using namespace touchgfx;
class DebugViewView;
class DebugViewPresenter : public touchgfx::Presenter, public ModelListener {
public:
DebugViewPresenter(DebugViewView &v);
/**
* The activate function is called automatically when this screen is "switched
* in" (ie. made active). Initialization logic can be placed here.
*/
virtual void activate() override;
/**
* The deactivate function is called automatically when this screen is
* "switched out" (ie. made inactive). Teardown functionality can be placed
* here.
*/
virtual void deactivate() override;
virtual ~DebugViewPresenter(){};
virtual void vehicleStateUpdated() override;
private:
DebugViewPresenter();
DebugViewView &view;
};
#endif // DEBUGVIEWPRESENTER_HPP

View File

@ -0,0 +1,21 @@
#ifndef DEBUGVIEWVIEW_HPP
#define DEBUGVIEWVIEW_HPP
#include <gui/debugview_screen/DebugViewPresenter.hpp>
#include <gui_generated/debugview_screen/DebugViewViewBase.hpp>
class DebugViewView : public DebugViewViewBase {
public:
DebugViewView();
virtual ~DebugViewView() {}
virtual void setupScreen() override;
virtual void tearDownScreen() override;
virtual void listUpdateItem(DebugViewLine &line, int16_t itemIndex) override;
void updateFieldValues();
protected:
};
#endif // DEBUGVIEWVIEW_HPP

View File

@ -18,19 +18,21 @@ public:
* The activate function is called automatically when this screen is "switched * The activate function is called automatically when this screen is "switched
* in" (ie. made active). Initialization logic can be placed here. * in" (ie. made active). Initialization logic can be placed here.
*/ */
virtual void activate(); virtual void activate() override;
/** /**
* The deactivate function is called automatically when this screen is * The deactivate function is called automatically when this screen is
* "switched out" (ie. made inactive). Teardown functionality can be placed * "switched out" (ie. made inactive). Teardown functionality can be placed
* here. * here.
*/ */
virtual void deactivate(); virtual void deactivate() override;
virtual ~DriverViewPresenter(){}; virtual ~DriverViewPresenter(){};
void vehicleStateUpdated() override; void vehicleStateUpdated() override;
void setFieldType(size_t i, DataFieldType type);
private: private:
DriverViewPresenter(); DriverViewPresenter();

View File

@ -12,16 +12,14 @@ class DriverViewView : public DriverViewViewBase {
public: public:
DriverViewView(); DriverViewView();
virtual ~DriverViewView() {} virtual ~DriverViewView() {}
virtual void setupScreen(); virtual void setupScreen() override;
virtual void tearDownScreen(); virtual void tearDownScreen() override;
void fieldTypeSelectionUpdateItem(DriverViewFieldSelection &item, void fieldTypeSelectionUpdateItem(DriverViewFieldSelection &item,
int16_t itemIndex) override; int16_t itemIndex) override;
void setFieldType(size_t i, const DataFieldDescription &desc); void setFieldType(size_t i, DataFieldType type);
void setFieldValue(size_t i, float value); void updateFieldValues();
void setFieldValue(size_t i, const char *value);
void setFieldValue(size_t i, int value);
void setTireTemps(const TireTemps &temps); void setTireTemps(const TireTemps &temps);
void setTSSoC(uint8_t soc); void setTSSoC(uint8_t soc);
@ -37,7 +35,6 @@ public:
protected: protected:
private: private:
DriverViewField &getField(size_t i); DriverViewField &getField(size_t i);
DriverViewFieldSelection *getFieldType(size_t i);
void updateSelectedField(size_t select); void updateSelectedField(size_t select);
void updateSelectedFieldType(size_t select); void updateSelectedFieldType(size_t select);

View File

@ -1,6 +1,7 @@
#include "gui/common/DataField.hpp" #include "gui/common/DataField.hpp"
#include "texts/TextKeysAndLanguages.hpp" #include "texts/TextKeysAndLanguages.hpp"
#include "touchgfx/Unicode.hpp"
#include "vehicle.h" #include "vehicle.h"
#define VEH_FIELD(FIELD) []() { return (void *)&vehicle_state.FIELD; } #define VEH_FIELD(FIELD) []() { return (void *)&vehicle_state.FIELD; }
@ -11,50 +12,219 @@
return (void *)&x; \ return (void *)&x; \
} }
void *get_sdc_text() { void *get_tsstate_text() {
if (vehicle_state.errors.sdc_bfl) { const char *text;
return (void *)"BFL"; switch (vehicle_state.ts_state) {
} else if (vehicle_state.errors.sdc_brl) { case TS_INACTIVE:
return (void *)"BRL"; text = "INACT";
} else if (vehicle_state.errors.sdc_acc) { break;
return (void *)"ACC"; case TS_ACTIVE:
} else if (vehicle_state.errors.sdc_hvb) { text = "ACT";
return (void *)"HVB"; break;
} else { case TS_PRECHARGE:
return (void *)"CLOSED"; text = "PRECH";
break;
case TS_DISCHARGE:
text = "DISCH";
break;
case TS_ERROR:
text = "ERROR";
break;
case TS_CHARGING_CHECK:
text = "CH_CHK";
break;
case TS_CHARGING:
text = "CH";
break;
default:
text = "UNKNOWN";
} }
return (void *)text;
}
void *get_asstate_text() {
const char *text;
switch (vehicle_state.as_state) {
case AS_OFF:
text = "OFF";
break;
case AS_MANUAL:
text = "MAN";
break;
case AS_READY:
text = "RDY";
break;
case AS_DRIVING:
text = "DRIVE";
break;
case AS_FINISHED:
text = "FIN";
break;
case AS_EMERGENCY:
text = "EMERG";
break;
default:
text = "UNKNOWN";
}
return (void *)text;
}
void *get_mission_text() {
const char *text;
switch (vehicle_state.active_mission) {
case MISSION_NONE:
text = "NONE";
break;
case MISSION_ACCEL:
text = "ACCEL";
break;
case MISSION_SKIDPAD:
text = "SKIDPAD";
break;
case MISSION_AUTOX:
text = "AUTOX";
break;
case MISSION_TRACKDRIVE:
text = "TRACK";
break;
case MISSION_EBS:
text = "EBS";
break;
case MISSION_INSPECTION:
text = "INSPECT";
break;
case MISSION_MANUAL:
text = "MAN";
break;
default:
text = "UNKNOWN";
}
return (void *)text;
}
void *get_r2dprog_text() {
const char *text;
switch (vehicle_state.r2d_progress) {
case R2D_NONE:
text = "NONE";
break;
case R2D_TSMS:
text = "TSMS";
break;
case R2D_TSACTIVE:
text = "TSACT";
break;
case R2D_RESETTING_NODES:
text = "RST NODE";
break;
case R2D_RESETTING_COMMS:
text = "RST COM";
break;
case R2D_WAITING_INIT:
text = "WAIT INIT";
break;
case R2D_INIT_STAGE1:
text = "INIT S1";
break;
case R2D_INIT_STAGE2:
text = "INIT S2";
break;
case R2D_INIT_SUCCESS:
text = "INIT SUCC";
break;
default:
text = "UNKNOWN";
}
return (void *)text;
}
void *get_inichk_text() {
const char *text;
switch (vehicle_state.ini_chk_state) {
case INICHK_START:
text = "START";
break;
case INICHK_WD_CHECK:
text = "WD CHK";
break;
case INICHK_WD_OK:
text = "WD OK";
break;
case INICHK_ASB_CHECK_1:
text = "ASB CHK1";
break;
case INICHK_ASB_CHECK_2:
text = "ASB CHK2";
break;
case INICHK_WAIT_TS:
text = "WAIT TS";
break;
case INICHK_EBS_CHECK_A:
text = "EBS CHKA";
break;
case INICHK_EBS_CHECK_B:
text = "EBS CHKB";
break;
case INICHK_DONE:
text = "DONE";
break;
case INICHK_ERROR:
text = "ERROR";
break;
default:
text = "UNKNOWN";
}
return (void *)text;
}
void *get_sdc_text() {
const char *text;
if (vehicle_state.errors.sdc_bfl) {
text = "BFL";
} else if (vehicle_state.errors.sdc_brl) {
text = "BRL";
} else if (vehicle_state.errors.sdc_acc) {
text = "ACC";
} else if (vehicle_state.errors.sdc_hvb) {
text = "HVB";
} else {
text = "CLOSED";
}
return (void *)text;
} }
void *get_err_text() { void *get_err_text() {
const char *text;
if (vehicle_state.errors.err_sdc) { if (vehicle_state.errors.err_sdc) {
return (void *)"SDC"; text = "SDC";
} else if (vehicle_state.errors.err_ams) { } else if (vehicle_state.errors.err_ams) {
return (void *)"AMS"; text = "AMS";
} else if (vehicle_state.errors.err_pdu) { } else if (vehicle_state.errors.err_pdu) {
return (void *)"PDU"; text = "PDU";
} else if (vehicle_state.errors.err_ini_chk) { } else if (vehicle_state.errors.err_ini_chk) {
return (void *)"IniChk"; text = "IniChk";
} else if (vehicle_state.errors.err_con_mon) { } else if (vehicle_state.errors.err_con_mon) {
return (void *)"ConMon"; text = "ConMon";
} else if (vehicle_state.errors.err_scs) { } else if (vehicle_state.errors.err_scs) {
return (void *)"SCS"; text = "SCS";
} else if (vehicle_state.errors.err_sbspd) { } else if (vehicle_state.errors.err_sbspd) {
return (void *)"sBSPD"; text = "sBSPD";
} else if (vehicle_state.errors.err_appsp) { } else if (vehicle_state.errors.err_appsp) {
return (void *)"APPSp"; text = "APPSp";
} else if (vehicle_state.errors.err_as) { } else if (vehicle_state.errors.err_as) {
return (void *)"AS"; text = "AS";
} else if (vehicle_state.errors.err_ros) { } else if (vehicle_state.errors.err_ros) {
return (void *)"ROS"; text = "ROS";
} else if (vehicle_state.errors.err_res) { } else if (vehicle_state.errors.err_res) {
return (void *)"RES"; text = "RES";
} else if (vehicle_state.errors.err_invl) { } else if (vehicle_state.errors.err_invl) {
return (void *)"INVL"; text = "INVL";
} else if (vehicle_state.errors.err_invr) { } else if (vehicle_state.errors.err_invr) {
return (void *)"INVR"; text = "INVR";
} else { } else {
return (void *)"NONE"; text = "NONE";
} }
return (void *)text;
} }
void *get_zero() { void *get_zero() {
@ -63,48 +233,124 @@ void *get_zero() {
} }
DataFieldDescription dataFieldDescs[] = { DataFieldDescription dataFieldDescs[] = {
[DF_TSState] = {DataFieldKind::Numeric, T_FIELD_TSSTATE, 1, 0, [DF_TSState] = {DataFieldKind::Text, "TSSTATE", 1, 0, get_tsstate_text},
VEH_FIELD(ts_state)}, [DF_ASState] = {DataFieldKind::Text, "ASSTATE", 1, 0, get_asstate_text},
[DF_ASState] = {DataFieldKind::Numeric, T_FIELD_ASSTATE, 1, 0, [DF_ActiveMission] = {DataFieldKind::Text, "MISSION", 1, 0,
VEH_FIELD(as_state)}, get_mission_text},
[DF_ActiveMission] = {DataFieldKind::Numeric, T_FIELD_ACTIVEMISSION, 1, 0, [DF_R2DProgress] = {DataFieldKind::Text, "R2DPROG", 1, 0, get_r2dprog_text},
VEH_FIELD(active_mission)}, [DF_INVLReady] = {DataFieldKind::Bool, "INVLRDY", 0, 0,
[DF_R2DProgress] = {DataFieldKind::Numeric, T_FIELD_R2DPROGRESS, 1, 0,
VEH_FIELD(r2d_progress)},
[DF_INVLReady] = {DataFieldKind::Bool, T_FIELD_INVLREADY, 0, 0,
VEH_BIT_FIELD(errors.invl_ready)}, VEH_BIT_FIELD(errors.invl_ready)},
[DF_INVRReady] = {DataFieldKind::Bool, T_FIELD_INVRREADY, 0, 0, [DF_INVRReady] = {DataFieldKind::Bool, "INVRRDY", 0, 0,
VEH_BIT_FIELD(errors.invr_ready)}, VEH_BIT_FIELD(errors.invr_ready)},
[DF_SDC] = {DataFieldKind::Text, T_FIELD_SDC, 0, 0, get_sdc_text}, [DF_SDC] = {DataFieldKind::Text, "SDC", 0, 0, get_sdc_text},
[DF_ERR] = {DataFieldKind::Text, T_FIELD_ERR, 0, 0, get_err_text}, [DF_ERR] = {DataFieldKind::Text, "ERROR", 0, 0, get_err_text},
[DF_IniChkState] = {DataFieldKind::Numeric, T_FIELD_INICHKSTATE, 1, 0, [DF_IniChkState] = {DataFieldKind::Text, "ICSTATE", 1, 0, get_inichk_text},
VEH_FIELD(ini_chk_state)}, [DF_LapCount] = {DataFieldKind::Int, "LAPS", 3, 0, VEH_FIELD(lap_count)},
[DF_LapCount] = {DataFieldKind::Numeric, T_FIELD_LAPCOUNT, 3, 0, [DF_TireTempFL] = {DataFieldKind::Float, "TTFL", 2, 1,
VEH_FIELD(lap_count)},
[DF_TireTempFL] = {DataFieldKind::Numeric, T_FIELD_TIREFL, 2, 1,
VEH_FIELD(tire_temps.fl)}, VEH_FIELD(tire_temps.fl)},
[DF_TireTempFR] = {DataFieldKind::Numeric, T_FIELD_TIREFR, 2, 1, [DF_TireTempFR] = {DataFieldKind::Float, "TTFR", 2, 1,
VEH_FIELD(tire_temps.fr)}, VEH_FIELD(tire_temps.fr)},
[DF_TireTempRL] = {DataFieldKind::Numeric, T_FIELD_TIRERL, 2, 1, [DF_TireTempRL] = {DataFieldKind::Float, "TTRL", 2, 1,
VEH_FIELD(tire_temps.rl)}, VEH_FIELD(tire_temps.rl)},
[DF_TireTempRR] = {DataFieldKind::Numeric, T_FIELD_TIRERR, 2, 1, [DF_TireTempRR] = {DataFieldKind::Float, "TTRR", 2, 1,
VEH_FIELD(tire_temps.rr)}, VEH_FIELD(tire_temps.rr)},
[DF_MinCellVolt] = {DataFieldKind::Numeric, T_FIELD_MINCELLVOLT, 1, 2, [DF_MinCellVolt] = {DataFieldKind::Float, "VMIN", 1, 2,
VEH_FIELD(min_cell_volt)}, VEH_FIELD(min_cell_volt)},
[DF_MaxCellTemp] = {DataFieldKind::Numeric, T_FIELD_MAXCELLTEMP, 2, 1, [DF_MaxCellTemp] = {DataFieldKind::Float, "TMAX", 2, 1,
VEH_FIELD(max_cell_temp)}, VEH_FIELD(max_cell_temp)},
[DF_TSSoC] = {DataFieldKind::Numeric, T_FIELD_TSSOC, 3, 0, VEH_FIELD(soc)}, [DF_TSSoC] = {DataFieldKind::Int, "TSSOC", 3, 0, VEH_FIELD(soc)},
[DF_LVSoC] = {DataFieldKind::Numeric, T_FIELD_LVSOC, 3, 0, get_zero}, [DF_LVSoC] = {DataFieldKind::Float, "LVSOC", 3, 0, get_zero},
[DF_TSCurrent] = {DataFieldKind::Numeric, T_FIELD_TSCURRENT, 3, 0, [DF_TSCurrent] = {DataFieldKind::Float, "ITS", 3, 0, VEH_FIELD(ts_current)},
VEH_FIELD(ts_current)}, [DF_TSVoltageBat] = {DataFieldKind::Float, "TSVBAT", 3, 1,
[DF_TSVoltageBat] = {DataFieldKind::Numeric, T_FIELD_TSVOLTBAT, 3, 1,
VEH_FIELD(ts_voltage_bat)}, VEH_FIELD(ts_voltage_bat)},
[DF_TSVoltageVeh] = {DataFieldKind::Numeric, T_FIELD_TSVOLTVEH, 3, 1, [DF_TSVoltageVeh] = {DataFieldKind::Float, "TSVVEH", 3, 1,
VEH_FIELD(ts_voltage_veh)}, VEH_FIELD(ts_voltage_veh)},
[DF_Speed] = {DataFieldKind::Numeric, T_FIELD_SPEED, 3, 0, get_zero}, [DF_Speed] = {DataFieldKind::Float, "SPEED", 3, 0, get_zero},
[DF_BBal] = {DataFieldKind::Numeric, T_FIELD_BBAL, 3, 1, get_zero}, [DF_BBal] = {DataFieldKind::Float, "BBAL", 3, 1, get_zero},
}; };
static_assert(sizeof(dataFieldDescs) / sizeof(dataFieldDescs[0]) == static_assert(sizeof(dataFieldDescs) / sizeof(dataFieldDescs[0]) ==
DataFieldType_COUNT, DataFieldType_COUNT,
"Incorrect number of data field descriptions"); "Incorrect number of data field descriptions");
void DataField::setType(DataFieldType type) {
this->type = type;
desc = &dataFieldDescs[type];
touchgfx::Unicode::strncpy(titleBuffer, desc->title,
sizeof(titleBuffer) / sizeof(*titleBuffer));
titleBufferUpdated();
typeUpdated();
updateValue();
}
void DataField::updateValue() {
void *val = desc->getValue();
switch (desc->kind) {
case DataFieldKind::Float:
setFloatValue(*static_cast<float *>(val));
break;
case DataFieldKind::Bool:
setBoolValue(*static_cast<int *>(val));
break;
case DataFieldKind::Text:
setStrValue(static_cast<const char *>(val));
break;
case DataFieldKind::Int:
setIntValue(*static_cast<int *>(val));
break;
}
}
void DataField::setFloatValue(float floatValue) {
fieldValue.f = floatValue;
updateValueBuffer();
}
void DataField::setBoolValue(int boolValue) {
fieldValue.b = boolValue;
updateValueBuffer();
}
void DataField::setIntValue(int intValue) {
fieldValue.i = intValue;
updateValueBuffer();
}
void DataField::setStrValue(const char *strValue) {
touchgfx::Unicode::strncpy(valueBuffer, strValue,
sizeof(valueBuffer) / sizeof(*valueBuffer));
updateValueBuffer();
}
void DataField::updateValueBuffer() {
switch (desc->kind) {
case DataFieldKind::Float: {
size_t width = desc->int_digits;
if (desc->decimal_digits != 0) {
width += desc->decimal_digits + 1; // 1 digit for the decimal point
}
float params[3] = {(float)width, (float)desc->decimal_digits, fieldValue.f};
touchgfx::Unicode::snprintfFloats(
valueBuffer, sizeof(valueBuffer) / sizeof(*valueBuffer), "%*.*f",
params);
break;
}
case DataFieldKind::Bool: {
const char *str = fieldValue.b ? "YES" : "NO";
touchgfx::Unicode::strncpy(valueBuffer, str,
sizeof(valueBuffer) / sizeof(*valueBuffer));
break;
}
case DataFieldKind::Text:
// This is handled by the child class in setValue()
break;
case DataFieldKind::Int:
touchgfx::Unicode::snprintf(valueBuffer,
sizeof(valueBuffer) / sizeof(*valueBuffer),
"%*d", desc->int_digits, fieldValue.i);
break;
}
valueBufferUpdated();
}

View File

@ -0,0 +1,19 @@
#include <gui/containers/DebugViewItem.hpp>
DebugViewItem::DebugViewItem() {}
void DebugViewItem::initialize() { DebugViewItemBase::initialize(); }
void DebugViewItem::typeUpdated() {
// We don't really need to do anything
}
void DebugViewItem::titleBufferUpdated() {
label.setWildcard(titleBuffer);
label.invalidate();
}
void DebugViewItem::valueBufferUpdated() {
value.setWildcard(valueBuffer);
value.invalidate();
}

View File

@ -0,0 +1,29 @@
#include "gui/common/DataField.hpp"
#include "touchgfx/Color.hpp"
#include <gui/containers/DebugViewLine.hpp>
DebugViewLine::DebugViewLine() : fields{&item1, &item2} {}
void DebugViewLine::initialize() { DebugViewLineBase::initialize(); }
void DebugViewLine::setFieldType(size_t i, DataFieldType type) {
assert(i < NUM_FIELDS);
fields[i]->setType(type);
}
void DebugViewLine::setFieldVisible(size_t i, int visible) {
fields[i]->setVisible(visible);
fields[i]->invalidate();
}
void DebugViewLine::updateFieldValues() {
for (size_t i = 0; i < NUM_FIELDS; i++) {
fields[i]->updateValue();
}
}
void DebugViewLine::setLightBG(int light) {
uint8_t val = light ? 0x33 : 0x00;
bg.setColor(Color::getColorFromRGB(val, val, val));
bg.invalidate();
}

View File

@ -1,79 +1,40 @@
#include "gui/common/DataField.hpp" #include "gui/common/DataField.hpp"
#include "texts/TextKeysAndLanguages.hpp" #include "texts/TextKeysAndLanguages.hpp"
#include "touchgfx/Color.hpp" #include "touchgfx/Color.hpp"
#include "touchgfx/TypedText.hpp"
#include "touchgfx/Unicode.hpp" #include "touchgfx/Unicode.hpp"
#include <gui/containers/DriverViewField.hpp> #include <gui/containers/DriverViewField.hpp>
DriverViewField::DriverViewField() DriverViewField::DriverViewField() {}
: intDigits{0}, decimalDigits{0}, floatValue{0}, boolValue{0} {}
void DriverViewField::initialize() { DriverViewFieldBase::initialize(); } void DriverViewField::initialize() { DriverViewFieldBase::initialize(); }
void DriverViewField::setType(const DataFieldDescription &desc) {
title.setTypedText(desc.title);
title.invalidate();
fieldKind = desc.kind;
switch (desc.kind) {
case DataFieldKind::Numeric:
value.setTypedText(T_NUMBERWILDCARD);
break;
case DataFieldKind::Bool:
case DataFieldKind::Text:
value.setTypedText(T_DEFAULTWILDCARD);
break;
}
intDigits = desc.int_digits;
decimalDigits = desc.decimal_digits;
updateValueBuffer();
}
void DriverViewField::setValue(float newValue) {
floatValue = newValue;
updateValueBuffer();
}
void DriverViewField::setValue(const char *str) {
Unicode::strncpy(valueBuffer, str,
sizeof(valueBuffer) / sizeof(Unicode::UnicodeChar));
value.setWildcard(valueBuffer);
value.invalidate();
}
void DriverViewField::setValue(int boolValue) {
this->boolValue = boolValue;
updateValueBuffer();
}
void DriverViewField::setSelected(int selected) { void DriverViewField::setSelected(int selected) {
uint8_t v = selected ? 0x44 : 0x00; uint8_t v = selected ? 0x44 : 0x00;
box.setColor(touchgfx::Color::getColorFromRGB(v, v, v)); box.setColor(touchgfx::Color::getColorFromRGB(v, v, v));
box.invalidate(); box.invalidate();
} }
void DriverViewField::updateValueBuffer() { void DriverViewField::typeUpdated() {
switch (fieldKind) { switch (desc->kind) {
case DataFieldKind::Numeric: { case DataFieldKind::Float:
size_t width = intDigits; case DataFieldKind::Int:
if (decimalDigits != 0) { value.setTypedText(T_NUMBERWILDCARD);
width += decimalDigits + 1; // 1 digit for the decimal point
}
float params[3] = {(float)width, (float)decimalDigits, floatValue};
Unicode::snprintfFloats(valueBuffer,
sizeof(valueBuffer) / sizeof(Unicode::UnicodeChar),
"%*.*f", params);
value.setWildcard(valueBuffer);
break; break;
} case DataFieldKind::Bool:
case DataFieldKind::Bool: {
const char *str = boolValue ? "YES" : "NO";
Unicode::strncpy(valueBuffer, str,
sizeof(valueBuffer) / sizeof(valueBuffer[0]));
value.setWildcard(valueBuffer);
break;
}
case DataFieldKind::Text: case DataFieldKind::Text:
// This is updated directly in setValue() value.setTypedText(T_DEFAULTWILDCARD_CENTERED);
break; break;
} }
value.invalidate(); value.invalidate();
} }
void DriverViewField::titleBufferUpdated() {
title.setWildcard(titleBuffer);
title.invalidate();
}
void DriverViewField::valueBufferUpdated() {
value.setWildcard(valueBuffer);
value.invalidate();
}

View File

@ -1,4 +1,5 @@
#include "touchgfx/Color.hpp" #include "touchgfx/Color.hpp"
#include "touchgfx/Unicode.hpp"
#include <gui/containers/DriverViewFieldSelection.hpp> #include <gui/containers/DriverViewFieldSelection.hpp>
DriverViewFieldSelection::DriverViewFieldSelection() {} DriverViewFieldSelection::DriverViewFieldSelection() {}
@ -7,8 +8,10 @@ void DriverViewFieldSelection::initialize() {
DriverViewFieldSelectionBase::initialize(); DriverViewFieldSelectionBase::initialize();
} }
void DriverViewFieldSelection::setName(const touchgfx::TypedText &name) { void DriverViewFieldSelection::setName(const char *name) {
this->name.setTypedText(name); Unicode::strncpy(nameBuffer, name, sizeof(nameBuffer) / sizeof(*nameBuffer));
this->name.setWildcard(nameBuffer);
this->name.invalidate();
} }
void DriverViewFieldSelection::setSelected(int selected) { void DriverViewFieldSelection::setSelected(int selected) {

View File

@ -0,0 +1,11 @@
#include <gui/debugview_screen/DebugViewPresenter.hpp>
#include <gui/debugview_screen/DebugViewView.hpp>
DebugViewPresenter::DebugViewPresenter(DebugViewView &v) : view(v) {}
void DebugViewPresenter::activate() {}
void DebugViewPresenter::deactivate() {}
void DebugViewPresenter::vehicleStateUpdated() { view.updateFieldValues(); }

View File

@ -0,0 +1,34 @@
#include "gui/common/DataField.hpp"
#include <gui/debugview_screen/DebugViewView.hpp>
DebugViewView::DebugViewView() {}
void DebugViewView::setupScreen() {
DebugViewViewBase::setupScreen();
size_t numItems = DataFieldType_COUNT / 2;
if (DataFieldType_COUNT % 2 == 1) {
numItems++;
}
list.setNumberOfItems(numItems);
}
void DebugViewView::tearDownScreen() { DebugViewViewBase::tearDownScreen(); }
void DebugViewView::listUpdateItem(DebugViewLine &line, int16_t itemIndex) {
size_t idx = itemIndex * 2;
line.setFieldType(0, static_cast<DataFieldType>(idx));
idx++;
if (idx < DataFieldType_COUNT) {
line.setFieldType(1, static_cast<DataFieldType>(idx));
line.setFieldVisible(1, true);
} else {
line.setFieldVisible(1, false);
}
line.setLightBG(itemIndex % 2 == 1);
}
void DebugViewView::updateFieldValues() {
for (DebugViewLine &el : listListItems.element) {
el.updateFieldValues();
}
}

View File

@ -9,7 +9,7 @@ DriverViewPresenter::DriverViewPresenter(DriverViewView &v)
void DriverViewPresenter::activate() { void DriverViewPresenter::activate() {
for (size_t i = 0; i < 3; i++) { for (size_t i = 0; i < 3; i++) {
view.setFieldType(i, dataFieldDescs[fields[i]]); view.setFieldType(i, fields[i]);
} }
} }
@ -19,19 +19,10 @@ void DriverViewPresenter::vehicleStateUpdated() {
view.setTireTemps(vehicle_state.tire_temps); view.setTireTemps(vehicle_state.tire_temps);
view.setTSSoC(vehicle_state.soc); view.setTSSoC(vehicle_state.soc);
for (size_t i = 0; i < 3; i++) { view.updateFieldValues();
DataFieldType field = fields[i]; }
// void *val = dataFieldDescs[field].getValue();
// switch (dataFieldDescs[field].kind) { void DriverViewPresenter::setFieldType(size_t i, DataFieldType type) {
// case DataFieldKind::Numeric: fields[i] = type;
// view.setFieldValue(i, *((float *)val)); view.setFieldType(i, type);
// break;
// case DataFieldKind::Bool:
// view.setFieldValue(i, *((int *)val));
// break;
// case DataFieldKind::Text:
// view.setFieldValue(i, (const char *)val);
// break;
// }
}
} }

View File

@ -1,7 +1,9 @@
#include "gui/common/DataField.hpp" #include "gui/common/DataField.hpp"
#include "gui/containers/DriverViewField.hpp" #include "gui/containers/DriverViewField.hpp"
#include "gui/driverview_screen/DriverViewPresenter.hpp"
#include "texts/TextKeysAndLanguages.hpp" #include "texts/TextKeysAndLanguages.hpp"
#include <gui/driverview_screen/DriverViewView.hpp> #include <gui/driverview_screen/DriverViewView.hpp>
#include <stddef.h>
DriverViewView::DriverViewView() DriverViewView::DriverViewView()
: fieldTypes{DF_MinCellVolt, DF_Speed, DF_TSCurrent} {} : fieldTypes{DF_MinCellVolt, DF_Speed, DF_TSCurrent} {}
@ -9,7 +11,7 @@ DriverViewView::DriverViewView()
void DriverViewView::setupScreen() { void DriverViewView::setupScreen() {
DriverViewViewBase::setupScreen(); DriverViewViewBase::setupScreen();
for (size_t i = 0; i < NUM_FIELDS; i++) { for (size_t i = 0; i < NUM_FIELDS; i++) {
getField(i).setType(dataFieldDescs[fieldTypes[i]]); getField(i).setType(fieldTypes[i]);
} }
fieldTypeSelection.setNumberOfItems(DataFieldType_COUNT); fieldTypeSelection.setNumberOfItems(DataFieldType_COUNT);
} }
@ -22,20 +24,14 @@ void DriverViewView::fieldTypeSelectionUpdateItem(
item.setSelected(itemIndex == selectedFieldType); item.setSelected(itemIndex == selectedFieldType);
} }
void DriverViewView::setFieldType(size_t i, const DataFieldDescription &desc) { void DriverViewView::setFieldType(size_t i, DataFieldType type) {
getField(i).setType(desc); getField(i).setType(type);
} }
void DriverViewView::setFieldValue(size_t i, float value) { void DriverViewView::updateFieldValues() {
getField(i).setValue(value); for (size_t i = 0; i < NUM_FIELDS; i++) {
} getField(i).updateValue();
}
void DriverViewView::setFieldValue(size_t i, const char *value) {
getField(i).setValue(value);
}
void DriverViewView::setFieldValue(size_t i, int value) {
getField(i).setValue(value);
} }
void DriverViewView::setTireTemps(const TireTemps &temps) { void DriverViewView::setTireTemps(const TireTemps &temps) {
@ -53,6 +49,7 @@ void DriverViewView::setTSSoC(uint8_t soc) {
void DriverViewView::selectNextField() { void DriverViewView::selectNextField() {
if (!fieldTypeSelection.isVisible()) { if (!fieldTypeSelection.isVisible()) {
fieldTypeSelection.setVisible(true); fieldTypeSelection.setVisible(true);
fieldTypeSelection.invalidate();
updateSelectedField(0); updateSelectedField(0);
} else { } else {
updateSelectedField((selectedField + 1) % NUM_FIELDS); updateSelectedField((selectedField + 1) % NUM_FIELDS);
@ -62,6 +59,7 @@ void DriverViewView::selectNextField() {
void DriverViewView::selectPrevField() { void DriverViewView::selectPrevField() {
if (!fieldTypeSelection.isVisible()) { if (!fieldTypeSelection.isVisible()) {
fieldTypeSelection.setVisible(true); fieldTypeSelection.setVisible(true);
fieldTypeSelection.invalidate();
updateSelectedField(NUM_FIELDS - 1); updateSelectedField(NUM_FIELDS - 1);
} else { } else {
if (selectedField == 0) { if (selectedField == 0) {
@ -98,10 +96,12 @@ void DriverViewView::confirmFieldType() {
} }
DriverViewField &field = getField(selectedField); DriverViewField &field = getField(selectedField);
field.setType(dataFieldDescs[selectedFieldType]); presenter->setFieldType(selectedField,
static_cast<DataFieldType>(selectedFieldType));
field.setSelected(false); field.setSelected(false);
fieldTypes[selectedField] = static_cast<DataFieldType>(selectedFieldType); fieldTypes[selectedField] = static_cast<DataFieldType>(selectedFieldType);
fieldTypeSelection.setVisible(false); fieldTypeSelection.setVisible(false);
fieldTypeSelection.invalidate();
} }
DriverViewField &DriverViewView::getField(size_t i) { DriverViewField &DriverViewView::getField(size_t i) {
@ -115,11 +115,6 @@ DriverViewField &DriverViewView::getField(size_t i) {
} }
} }
DriverViewFieldSelection *DriverViewView::getFieldType(size_t i) {
return static_cast<DriverViewFieldSelection *>(
fieldTypeSelectionListItems.getDrawable(i));
}
void DriverViewView::updateSelectedField(size_t selected) { void DriverViewView::updateSelectedField(size_t selected) {
getField(selectedField).setSelected(false); getField(selectedField).setSelected(false);
DriverViewField &field = getField(selected); DriverViewField &field = getField(selected);

View File

@ -39,6 +39,13 @@
<ClCompile Include="..\..\gui\src\common\DataField.cpp"/> <ClCompile Include="..\..\gui\src\common\DataField.cpp"/>
<ClCompile Include="..\..\gui\src\containers\DriverViewFieldSelection.cpp"/> <ClCompile Include="..\..\gui\src\containers\DriverViewFieldSelection.cpp"/>
<ClCompile Include="..\..\generated\gui_generated\src\containers\DriverViewFieldSelectionBase.cpp"/> <ClCompile Include="..\..\generated\gui_generated\src\containers\DriverViewFieldSelectionBase.cpp"/>
<ClCompile Include="..\..\gui\src\containers\DebugViewItem.cpp"/>
<ClCompile Include="..\..\generated\gui_generated\src\containers\DebugViewItemBase.cpp"/>
<ClCompile Include="..\..\gui\src\debugview_screen\DebugViewPresenter.cpp"/>
<ClCompile Include="..\..\gui\src\debugview_screen\DebugViewView.cpp"/>
<ClCompile Include="..\..\generated\gui_generated\src\debugview_screen\DebugViewViewBase.cpp"/>
<ClCompile Include="..\..\gui\src\containers\DebugViewLine.cpp"/>
<ClCompile Include="..\..\generated\gui_generated\src\containers\DebugViewLineBase.cpp"/>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="$(ApplicationRoot)\assets\texts\texts.xml"/> <None Include="$(ApplicationRoot)\assets\texts\texts.xml"/>
@ -207,6 +214,13 @@
<ClInclude Include="..\..\gui\include\gui\common\DataField.hpp"/> <ClInclude Include="..\..\gui\include\gui\common\DataField.hpp"/>
<ClInclude Include="..\..\gui\include\gui\containers\DriverViewFieldSelection.hpp"/> <ClInclude Include="..\..\gui\include\gui\containers\DriverViewFieldSelection.hpp"/>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\containers\DriverViewFieldSelectionBase.hpp"/> <ClInclude Include="..\..\generated\gui_generated\include\gui_generated\containers\DriverViewFieldSelectionBase.hpp"/>
<ClInclude Include="..\..\gui\include\gui\containers\DebugViewItem.hpp"/>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\containers\DebugViewItemBase.hpp"/>
<ClInclude Include="..\..\gui\include\gui\debugview_screen\DebugViewPresenter.hpp"/>
<ClInclude Include="..\..\gui\include\gui\debugview_screen\DebugViewView.hpp"/>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\debugview_screen\DebugViewViewBase.hpp"/>
<ClInclude Include="..\..\gui\include\gui\containers\DebugViewLine.hpp"/>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\containers\DebugViewLineBase.hpp"/>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="$(ApplicationRoot)\generated\simulator\touchgfx.rc"/> <ResourceCompile Include="$(ApplicationRoot)\generated\simulator\touchgfx.rc"/>

View File

@ -220,6 +220,18 @@
<Filter Include="Source Files\generated\gui_generated\driverview_screen"> <Filter Include="Source Files\generated\gui_generated\driverview_screen">
<UniqueIdentifier>B2E02187-8256-B0BB-0B38-41E0CEB82DC4</UniqueIdentifier> <UniqueIdentifier>B2E02187-8256-B0BB-0B38-41E0CEB82DC4</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\gui\debugview_screen">
<UniqueIdentifier>9C41F5A3-1862-77F5-FFA6-73C00C1091C0</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\gui\debugview_screen">
<UniqueIdentifier>6BEE44E9-1803-AA97-5B96-A16955B2A089</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\gui_generated\debugview_screen">
<UniqueIdentifier>1B9E4F5D-C4C8-78A8-AA28-0515479B020E</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\generated\gui_generated\debugview_screen">
<UniqueIdentifier>3CC29751-0B47-BADD-4836-593204B16ED3</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="$(TouchGFXReleasePath)\framework\source\platform\driver\touch\SDL2TouchController.cpp"> <ClCompile Include="$(TouchGFXReleasePath)\framework\source\platform\driver\touch\SDL2TouchController.cpp">
@ -306,6 +318,27 @@
<ClCompile Include="..\..\generated\gui_generated\src\containers\DriverViewFieldSelectionBase.cpp"> <ClCompile Include="..\..\generated\gui_generated\src\containers\DriverViewFieldSelectionBase.cpp">
<Filter>Source Files\generated\gui_generated\containers</Filter> <Filter>Source Files\generated\gui_generated\containers</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\gui\src\containers\DebugViewItem.cpp">
<Filter>Source Files\gui\containers</Filter>
</ClCompile>
<ClCompile Include="..\..\generated\gui_generated\src\containers\DebugViewItemBase.cpp">
<Filter>Source Files\generated\gui_generated\containers</Filter>
</ClCompile>
<ClCompile Include="..\..\gui\src\debugview_screen\DebugViewPresenter.cpp">
<Filter>Source Files\gui\debugview_screen</Filter>
</ClCompile>
<ClCompile Include="..\..\gui\src\debugview_screen\DebugViewView.cpp">
<Filter>Source Files\gui\debugview_screen</Filter>
</ClCompile>
<ClCompile Include="..\..\generated\gui_generated\src\debugview_screen\DebugViewViewBase.cpp">
<Filter>Source Files\generated\gui_generated\debugview_screen</Filter>
</ClCompile>
<ClCompile Include="..\..\gui\src\containers\DebugViewLine.cpp">
<Filter>Source Files\gui\containers</Filter>
</ClCompile>
<ClCompile Include="..\..\generated\gui_generated\src\containers\DebugViewLineBase.cpp">
<Filter>Source Files\generated\gui_generated\containers</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="$(ApplicationRoot)\assets\texts\texts.xml"> <None Include="$(ApplicationRoot)\assets\texts\texts.xml">
@ -802,6 +835,27 @@
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\containers\DriverViewFieldSelectionBase.hpp"> <ClInclude Include="..\..\generated\gui_generated\include\gui_generated\containers\DriverViewFieldSelectionBase.hpp">
<Filter>Header Files\generated\gui_generated\containers</Filter> <Filter>Header Files\generated\gui_generated\containers</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\gui\include\gui\containers\DebugViewItem.hpp">
<Filter>Header Files\gui\containers</Filter>
</ClInclude>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\containers\DebugViewItemBase.hpp">
<Filter>Header Files\generated\gui_generated\containers</Filter>
</ClInclude>
<ClInclude Include="..\..\gui\include\gui\debugview_screen\DebugViewPresenter.hpp">
<Filter>Header Files\gui\debugview_screen</Filter>
</ClInclude>
<ClInclude Include="..\..\gui\include\gui\debugview_screen\DebugViewView.hpp">
<Filter>Header Files\gui\debugview_screen</Filter>
</ClInclude>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\debugview_screen\DebugViewViewBase.hpp">
<Filter>Header Files\generated\gui_generated\debugview_screen</Filter>
</ClInclude>
<ClInclude Include="..\..\gui\include\gui\containers\DebugViewLine.hpp">
<Filter>Header Files\gui\containers</Filter>
</ClInclude>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\containers\DebugViewLineBase.hpp">
<Filter>Header Files\generated\gui_generated\containers</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="$(ApplicationRoot)\generated\simulator\touchgfx.rc"> <ResourceCompile Include="$(ApplicationRoot)\generated\simulator\touchgfx.rc">

View File

@ -167,6 +167,18 @@
"ScreenTransitionType": "ScreenTransitionNone", "ScreenTransitionType": "ScreenTransitionNone",
"ActionComponent": "DriverView" "ActionComponent": "DriverView"
} }
},
{
"InteractionName": "DummyChangeDebugView",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 252
},
"Action": {
"Type": "ActionGotoScreen",
"ScreenTransitionType": "ScreenTransitionNone",
"ActionComponent": "DebugView"
}
} }
] ]
}, },
@ -478,6 +490,42 @@
} }
} }
] ]
},
{
"Name": "DebugView",
"CanvasBufferSize": 7200,
"Components": [
{
"Type": "ScrollList",
"Name": "list",
"Y": 4,
"Width": 480,
"Height": 312,
"IsCircular": true,
"ItemTemplateName": "DebugViewLine",
"NumberofItems": 1,
"Easing": "Back",
"EasingOption": "Out",
"SwipeAcceleration": 1.0,
"DragAcceleration": 1.0
},
{
"Type": "Line",
"Name": "line1",
"Y": 3,
"Width": 480,
"Height": 1,
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"EndX": 480.0,
"LineWidth": 10.0,
"LineEndingStyle": "Round"
}
],
"Interactions": []
} }
], ],
"CustomContainerDefinitions": [ "CustomContainerDefinitions": [
@ -584,13 +632,14 @@
"Name": "title", "Name": "title",
"Width": 160, "Width": 160,
"Height": 25, "Height": 25,
"TextId": "__SingleUse_0FBJ", "TextId": "DriverViewField_Title",
"TextRotation": "0", "TextRotation": "0",
"Color": { "Color": {
"Red": 255, "Red": 255,
"Green": 255, "Green": 255,
"Blue": 255 "Blue": 255
} },
"Wildcard1": {}
}, },
{ {
"Type": "TextArea", "Type": "TextArea",
@ -633,13 +682,14 @@
"Name": "name", "Name": "name",
"Width": 160, "Width": 160,
"Height": 25, "Height": 25,
"TextId": "__SingleUse_PNKR", "TextId": "DriverViewField_Title",
"TextRotation": "0", "TextRotation": "0",
"Color": { "Color": {
"Red": 255, "Red": 255,
"Green": 255, "Green": 255,
"Blue": 255 "Blue": 255
} },
"Wildcard1": {}
}, },
{ {
"Type": "Line", "Type": "Line",
@ -687,6 +737,107 @@
} }
], ],
"Interactions": [] "Interactions": []
},
{
"Name": "DebugViewLine",
"X": -80,
"Y": 80,
"Width": 480,
"Height": 26,
"Components": [
{
"Type": "Box",
"Name": "bg",
"Width": 480,
"Height": 26
},
{
"Type": "Line",
"Name": "line1",
"X": 240,
"Width": 1,
"Height": 26,
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"EndY": 26.0,
"LineWidth": 10.0,
"LineEndingStyle": "Round"
},
{
"Type": "Line",
"Name": "line2",
"Y": 25,
"Width": 480,
"Height": 1,
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"EndX": 480.0,
"LineWidth": 10.0,
"LineEndingStyle": "Round"
},
{
"Type": "CustomContainerInstance",
"Name": "item1",
"Width": 240,
"Height": 26,
"CustomContainerDefinitionName": "DebugViewItem"
},
{
"Type": "CustomContainerInstance",
"Name": "item2",
"X": 240,
"Width": 240,
"Height": 26,
"CustomContainerDefinitionName": "DebugViewItem"
}
],
"Interactions": []
},
{
"Name": "DebugViewItem",
"X": 40,
"Y": 227,
"Width": 240,
"Height": 26,
"Components": [
{
"Type": "TextArea",
"Name": "label",
"X": 5,
"Width": 105,
"Height": 25,
"TextId": "DebugViewField_Title",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
},
{
"Type": "TextArea",
"Name": "value",
"X": 110,
"Width": 125,
"Height": 25,
"TextId": "DefaultWildcard_RightAligned",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
}
],
"Interactions": []
} }
], ],
"Name": "MyApplication", "Name": "MyApplication",
@ -695,7 +846,7 @@
"Height": 480 "Height": 480
}, },
"SelectedColorDepth": 16, "SelectedColorDepth": 16,
"StartupScreenName": "DriverView", "StartupScreenName": "MissionSelect",
"SelectedStartupLanguage": "GB", "SelectedStartupLanguage": "GB",
"TouchGfxPath": "../Middlewares/ST/touchgfx", "TouchGfxPath": "../Middlewares/ST/touchgfx",
"UIPath": ".", "UIPath": ".",