Add debug view
This commit is contained in:
		@ -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 \
 | 
				
			||||||
 | 
				
			|||||||
@ -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"><value></Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="DriverViewField_Title" Alignment="Center" TypographyId="Chinat_Small">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value></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"><value></Translation>
 | 
					        <Translation Language="GB"><value></Translation>
 | 
				
			||||||
      </Text>
 | 
					      </Text>
 | 
				
			||||||
      <Text Id="DefaultWildcard" Alignment="Center" TypographyId="Default">
 | 
					      <Text Id="DefaultWildcard_Centered" Alignment="Center" TypographyId="Default">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value></Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="DefaultWildcard_RightAligned" Alignment="Right" TypographyId="Default">
 | 
				
			||||||
        <Translation Language="GB"><value></Translation>
 | 
					        <Translation Language="GB"><value></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="! "" WildcardCharacterRanges="#-~" />
 | 
					    <Typography Id="Default" Font="verdana.ttf" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters="! "" 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>
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
@ -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
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
 | 
				
			|||||||
@ -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)
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
@ -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
 | 
				
			||||||
@ -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:
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
@ -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 >(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// AMI
 | 
					// AMI
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void FrontendApplicationBase::gotoAMIScreenNoTransition()
 | 
					void FrontendApplicationBase::gotoAMIScreenNoTransition()
 | 
				
			||||||
@ -58,3 +73,16 @@ void FrontendApplicationBase::gotoDriverViewScreenNoTransitionImpl()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    touchgfx::makeTransition<DriverViewView, DriverViewPresenter, touchgfx::NoTransition, Model >(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model);
 | 
					    touchgfx::makeTransition<DriverViewView, DriverViewPresenter, touchgfx::NoTransition, Model >(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DebugView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FrontendApplicationBase::gotoDebugViewScreenNoTransition()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    transitionCallback = touchgfx::Callback<FrontendApplicationBase>(this, &FrontendApplication::gotoDebugViewScreenNoTransitionImpl);
 | 
				
			||||||
 | 
					    pendingScreenTransitionCallback = &transitionCallback;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FrontendApplicationBase::gotoDebugViewScreenNoTransitionImpl()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    touchgfx::makeTransition<DebugViewView, DebugViewPresenter, touchgfx::NoTransition, Model >(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -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();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -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);
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -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();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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"]]}
 | 
				
			||||||
@ -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"]}
 | 
				
			||||||
@ -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]}
 | 
				
			||||||
@ -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"}
 | 
				
			||||||
@ -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,
 | 
				
			||||||
 | 
				
			|||||||
@ -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"
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
 | 
				
			|||||||
@ -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 },
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										20
									
								
								TouchGFX/gui/include/gui/containers/DebugViewItem.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								TouchGFX/gui/include/gui/containers/DebugViewItem.hpp
									
									
									
									
									
										Normal 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
 | 
				
			||||||
							
								
								
									
										27
									
								
								TouchGFX/gui/include/gui/containers/DebugViewLine.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								TouchGFX/gui/include/gui/containers/DebugViewLine.hpp
									
									
									
									
									
										Normal 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
 | 
				
			||||||
@ -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
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
							
								
								
									
										21
									
								
								TouchGFX/gui/include/gui/debugview_screen/DebugViewView.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								TouchGFX/gui/include/gui/debugview_screen/DebugViewView.hpp
									
									
									
									
									
										Normal 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
 | 
				
			||||||
@ -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();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
				
			||||||
 | 
				
			|||||||
@ -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();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										19
									
								
								TouchGFX/gui/src/containers/DebugViewItem.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								TouchGFX/gui/src/containers/DebugViewItem.cpp
									
									
									
									
									
										Normal 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();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										29
									
								
								TouchGFX/gui/src/containers/DebugViewLine.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								TouchGFX/gui/src/containers/DebugViewLine.cpp
									
									
									
									
									
										Normal 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();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -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();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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) {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										11
									
								
								TouchGFX/gui/src/debugview_screen/DebugViewPresenter.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								TouchGFX/gui/src/debugview_screen/DebugViewPresenter.cpp
									
									
									
									
									
										Normal 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(); }
 | 
				
			||||||
							
								
								
									
										34
									
								
								TouchGFX/gui/src/debugview_screen/DebugViewView.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								TouchGFX/gui/src/debugview_screen/DebugViewView.cpp
									
									
									
									
									
										Normal 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();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -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;
 | 
					 | 
				
			||||||
    // }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
				
			||||||
 | 
				
			|||||||
@ -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"/>
 | 
				
			||||||
 | 
				
			|||||||
@ -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">
 | 
				
			||||||
 | 
				
			|||||||
@ -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": ".",
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user