C++ file for display control

Dependencies:   4DGL mbed ConfigFile

Fork of 4DGLtest by Stephane ROCHON

Committer:
WillemBraat
Date:
Wed Jul 16 19:15:40 2014 +0000
Revision:
11:a5b0d98794c0
Parent:
7:779c5b8d3b14
Rewritten function CDU_DSP_CSS()

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kerpower 0:772a63029ab0 1
Kerpower 0:772a63029ab0 2 #include "mbed.h"
Kerpower 0:772a63029ab0 3 #include "TFT_4DGL.h"
WillemBraat 3:f7bce78b04c1 4 #include "keyboard.h"
WillemBraat 3:f7bce78b04c1 5 #include "display.h"
Kerpower 0:772a63029ab0 6
WillemBraat 3:f7bce78b04c1 7 #include <string>
WillemBraat 3:f7bce78b04c1 8 using namespace std;
WillemBraat 3:f7bce78b04c1 9
WillemBraat 7:779c5b8d3b14 10 // ---- FS-to-CDU data structures to be filled with received data --------------------------------
WillemBraat 7:779c5b8d3b14 11 // Background colour of display:
WillemBraat 7:779c5b8d3b14 12 struct { int BG_RED; // : RED value
WillemBraat 7:779c5b8d3b14 13 int BG_GREEN; // : GREEN value
WillemBraat 7:779c5b8d3b14 14 int BG_BLUE; // : BLUE value
WillemBraat 7:779c5b8d3b14 15 } BACKGROUND_COL;
WillemBraat 7:779c5b8d3b14 16
WillemBraat 7:779c5b8d3b14 17 // Maintext lines at selectkeys:
WillemBraat 7:779c5b8d3b14 18 struct { char text[52]; // : maintext string, ending with '\0'
WillemBraat 7:779c5b8d3b14 19 int font_size; // : fontsize of textline 0 or 1
WillemBraat 7:779c5b8d3b14 20 char font_style; // : style character S or N
WillemBraat 7:779c5b8d3b14 21 int text_RED; // : RED value of textline
WillemBraat 7:779c5b8d3b14 22 int text_GREEN; // : GREEN value of textline
WillemBraat 7:779c5b8d3b14 23 int text_BLUE; // : BLUE value of textline
WillemBraat 7:779c5b8d3b14 24 } SELKEY_MAINTEXT[100]; // : array of selectkey Maintext structures
WillemBraat 7:779c5b8d3b14 25
WillemBraat 7:779c5b8d3b14 26 // Subtext lines at selectkeys:
WillemBraat 7:779c5b8d3b14 27 struct { char text[52]; // : subtext string, ending with '\0'
WillemBraat 7:779c5b8d3b14 28 int font_size; // : fontsize of textline 0 or 1
WillemBraat 7:779c5b8d3b14 29 char font_style; // : style character S or N
WillemBraat 7:779c5b8d3b14 30 int text_RED; // : RED value of textline
WillemBraat 7:779c5b8d3b14 31 int text_GREEN; // : GREEN value of textline
WillemBraat 7:779c5b8d3b14 32 int text_BLUE; // : BLUE value of textline
WillemBraat 7:779c5b8d3b14 33 } SELKEY_SUBTEXT[100]; // : array of selectkey Subtext structures
WillemBraat 7:779c5b8d3b14 34
WillemBraat 7:779c5b8d3b14 35 // Screen textlines:
WillemBraat 7:779c5b8d3b14 36 struct { char text[52]; // : text line string, ending with '\0'
WillemBraat 7:779c5b8d3b14 37 int font_size; // : fontsize of textline 0 or 1
WillemBraat 7:779c5b8d3b14 38 char font_style; // : style character S or N
WillemBraat 7:779c5b8d3b14 39 int text_RED; // : RED value of textline
WillemBraat 7:779c5b8d3b14 40 int text_GREEN; // : GREEN value of textline
WillemBraat 7:779c5b8d3b14 41 int text_BLUE; // : BLUE value of textline
WillemBraat 7:779c5b8d3b14 42 } TEXTLINE[15]; // : array of textline structures
WillemBraat 7:779c5b8d3b14 43
WillemBraat 7:779c5b8d3b14 44 // CDU status:
WillemBraat 7:779c5b8d3b14 45 struct { int msg_indicator; // : MSG 0 = light OFF, 1 = light ON
WillemBraat 7:779c5b8d3b14 46 int exec_indicator; // : EXEC 0 = indicator OFF, 1 = indicator ON
WillemBraat 7:779c5b8d3b14 47 int fail_indicator; // : FAIL 0 = indicator OFF, 1 = indicator ON
WillemBraat 7:779c5b8d3b14 48 int dspy_indicator; // : DSPY 0 = indicator OFF, 1 = indicator ON
WillemBraat 7:779c5b8d3b14 49 int ofst_indicator; // : OFST 0 = indicator OFF, 1 = indicator ON
WillemBraat 7:779c5b8d3b14 50 int backlight; // : 0 = light OFF, 1 = light ON
WillemBraat 7:779c5b8d3b14 51 int stby_mode; // : 0 = operational mode, 1 = standby mode
WillemBraat 7:779c5b8d3b14 52 } CDU_STATUS;
WillemBraat 7:779c5b8d3b14 53
WillemBraat 7:779c5b8d3b14 54
WillemBraat 7:779c5b8d3b14 55 // FS_data_update_ID flags:
WillemBraat 7:779c5b8d3b14 56 // These global flags indicate what data has been updated.
WillemBraat 7:779c5b8d3b14 57 // Should be tested when FS_DATA_EVENT occurs.
WillemBraat 7:779c5b8d3b14 58 int Background_Col_Update = 0 ; // : 1 when color was updated, must be reset to 0 when data has been read
WillemBraat 7:779c5b8d3b14 59 int CDU_Status_Update = 0 ; // : 1 when status was updated, must be reset to 0 when data has been read
WillemBraat 7:779c5b8d3b14 60 int DO_CLR_SCREEN = 0 ; // : 1 when screen should be cleared, must be reset to 0 when done
WillemBraat 7:779c5b8d3b14 61 int Text_Line_Update = 0 ; // : equal to line number whose text was updated, must be reset to 0 when text has been read
WillemBraat 7:779c5b8d3b14 62 int Key_Maintext_Update = -1; // : equal to keynumber whose main text line was updated, must be reset to -1 text has been read
WillemBraat 7:779c5b8d3b14 63 int Key_Subtext_Update = -1; // : equal to keynumber whose sub text line was updated, must be reset to -1 text has been read
WillemBraat 7:779c5b8d3b14 64
WillemBraat 7:779c5b8d3b14 65 // ---- end of FS-to-CDU data structures --------------------------------------- --------------------------------
WillemBraat 7:779c5b8d3b14 66
WillemBraat 3:f7bce78b04c1 67 int key_hit_ID;
WillemBraat 6:904d00252480 68 int FSData_received_flag = false;
Kerpower 0:772a63029ab0 69
WillemBraat 7:779c5b8d3b14 70
WillemBraat 3:f7bce78b04c1 71 //Driving Ethernet Jack LED's
WillemBraat 3:f7bce78b04c1 72 /*
WillemBraat 3:f7bce78b04c1 73 #define FIO1PIN (*(unsigned long*)0x2009C034UL)
WillemBraat 3:f7bce78b04c1 74 DigitalOut Green(p30), Yellow(p29); //Leds are on pins 29 and 30
WillemBraat 3:f7bce78b04c1 75 Green = !(FIO1PIN&amp;(1&lt;&lt;25)); //Link
WillemBraat 3:f7bce78b04c1 76 Yellow= !(FIO1PIN&amp;(1&lt;&lt;26)); //Speed
WillemBraat 3:f7bce78b04c1 77 */
WillemBraat 3:f7bce78b04c1 78
WillemBraat 3:f7bce78b04c1 79 //Pin definition prototypes
WillemBraat 7:779c5b8d3b14 80 extern PwmOut BGL_LED; //Background lighting for keypad
WillemBraat 7:779c5b8d3b14 81 extern AnalogIn BGL_POT; //Potmeter input for background lighting
WillemBraat 7:779c5b8d3b14 82 extern InterruptIn CDU_KB_INT; //Keyboard interrupt line
WillemBraat 7:779c5b8d3b14 83 extern I2C CDU_I2C; //I2C bus for keyboard/temp chip. Defined in keyboard.cpp
Kerpower 0:772a63029ab0 84
WillemBraat 3:f7bce78b04c1 85 //VGA Control line definitions prototypes
WillemBraat 3:f7bce78b04c1 86 extern DigitalOut VGA_SOURCE; // control line for video switch between internal and external video
WillemBraat 3:f7bce78b04c1 87 extern DigitalOut VGA_SELECT; // select or deselect video switch
WillemBraat 3:f7bce78b04c1 88 extern TFT_4DGL display;
WillemBraat 3:f7bce78b04c1 89
WillemBraat 7:779c5b8d3b14 90 //CDU screen prototypes declared in display.cpp
WillemBraat 3:f7bce78b04c1 91 void CDU_StartScreen();
WillemBraat 3:f7bce78b04c1 92 void CDU_ScreenAlign();
WillemBraat 7:779c5b8d3b14 93 void CDU_TestScreen();
WillemBraat 7:779c5b8d3b14 94 void CDU_LogoScreen();
WillemBraat 3:f7bce78b04c1 95
WillemBraat 3:f7bce78b04c1 96 //Keyboard Function prototypes
WillemBraat 3:f7bce78b04c1 97 void CDU_KB_INT_ON( int p5);
WillemBraat 3:f7bce78b04c1 98 void CDU_KB_GET_KEY();
Kerpower 0:772a63029ab0 99
WillemBraat 6:904d00252480 100 //Temperature Sensor Function prototype
WillemBraat 6:904d00252480 101 float CDU_GetTemp();
WillemBraat 6:904d00252480 102
WillemBraat 3:f7bce78b04c1 103 //String manipulation prototypes
WillemBraat 3:f7bce78b04c1 104 char* str2char( string cString );
WillemBraat 3:f7bce78b04c1 105 int centertext( string cString, int nChars, int nCharWidth );
WillemBraat 3:f7bce78b04c1 106 int righttext( string cString, int nChars, int nCharWidth );
WillemBraat 3:f7bce78b04c1 107
WillemBraat 6:904d00252480 108 //Temporary stuff for testing
WillemBraat 3:f7bce78b04c1 109 DigitalIn pb_up( p27 );
WillemBraat 3:f7bce78b04c1 110 DigitalIn pb_dn( p28 );
WillemBraat 3:f7bce78b04c1 111 DigitalOut led1(LED1);
WillemBraat 3:f7bce78b04c1 112 DigitalOut led2(LED2);
WillemBraat 3:f7bce78b04c1 113
WillemBraat 3:f7bce78b04c1 114
WillemBraat 3:f7bce78b04c1 115
WillemBraat 3:f7bce78b04c1 116 int main() {
WillemBraat 3:f7bce78b04c1 117 char cText[24];
WillemBraat 3:f7bce78b04c1 118 int nLineCounter=0;
WillemBraat 3:f7bce78b04c1 119
Kerpower 0:772a63029ab0 120
WillemBraat 3:f7bce78b04c1 121 display.baudrate(9600); //115200
WillemBraat 3:f7bce78b04c1 122 //display.display_control(0x0c, 0x01); //Set resolution to 640*480
WillemBraat 7:779c5b8d3b14 123
WillemBraat 3:f7bce78b04c1 124 CDU_StartScreen();
WillemBraat 7:779c5b8d3b14 125 wait_ms(2000);
WillemBraat 7:779c5b8d3b14 126 CDU_TestScreen();
WillemBraat 7:779c5b8d3b14 127 wait_ms(2000);
WillemBraat 7:779c5b8d3b14 128 CDU_LogoScreen();
WillemBraat 3:f7bce78b04c1 129 wait_ms(2000);
WillemBraat 7:779c5b8d3b14 130 CDU_ScreenAlign();
WillemBraat 7:779c5b8d3b14 131 wait_ms(2000);
WillemBraat 7:779c5b8d3b14 132
WillemBraat 7:779c5b8d3b14 133
WillemBraat 3:f7bce78b04c1 134
WillemBraat 3:f7bce78b04c1 135 while (! pb_dn )
WillemBraat 3:f7bce78b04c1 136 {}
WillemBraat 3:f7bce78b04c1 137
WillemBraat 3:f7bce78b04c1 138 display.cls();
WillemBraat 3:f7bce78b04c1 139
WillemBraat 3:f7bce78b04c1 140 display.graphic_string( "PERF INIT" , 8*24, LINE1, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 141
WillemBraat 7:779c5b8d3b14 142 display.graphic_string( "GW/CRZ CG" , 0, LINE2, FONT_12X34, WHITE, 1, 1 );
WillemBraat 7:779c5b8d3b14 143 display.graphic_string( "CRZ ALT" , 41*12, LINE2, FONT_12X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 144
WillemBraat 3:f7bce78b04c1 145 display.graphic_string( "___._ / 26.2%" , 0, LINE3, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 146 display.graphic_string( "_____" , 19*24, LINE3, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 147
WillemBraat 7:779c5b8d3b14 148 display.graphic_string( "FUEL" , 0, LINE4, FONT_12X34, WHITE, 1, 1 );
WillemBraat 7:779c5b8d3b14 149 display.graphic_string( "CRZ/WIND" , 40*12, LINE4, FONT_12X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 150
WillemBraat 3:f7bce78b04c1 151 display.graphic_string( "0.0" , 0, LINE5, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 152 display.graphic_string( "000$ /---" , 15*24, LINE5, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 153
WillemBraat 7:779c5b8d3b14 154 display.graphic_string( "ZFW" , 0, LINE6, FONT_12X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 155 display.graphic_string( "___._ " , 0, LINE7, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 156
WillemBraat 7:779c5b8d3b14 157 display.graphic_string( "RESERVES" , 0, LINE8, FONT_12X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 158 display.graphic_string( "__._ " , 0, LINE9, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 159
WillemBraat 7:779c5b8d3b14 160 display.graphic_string( "COST INDEX" , 0, LINE10, FONT_12X34, WHITE, 1, 1 );
WillemBraat 7:779c5b8d3b14 161 display.graphic_string( "TRANS ALT" , 39*12, LINE10, FONT_12X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 162
WillemBraat 3:f7bce78b04c1 163 display.graphic_string( "___" , 0, LINE11, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 164 display.graphic_string( "_____" , 19*24, LINE11, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 165
WillemBraat 7:779c5b8d3b14 166 display.graphic_string( "------------------------------------------------" , 0, LINE12, FONT_12X34, WHITE, 1, 1 );
Kerpower 0:772a63029ab0 167
WillemBraat 3:f7bce78b04c1 168 display.graphic_string( "<INDEX" , 0, LINE13, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 169 display.graphic_string( "N1 LIMIT>" , 15*24, LINE13, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 170
WillemBraat 3:f7bce78b04c1 171 display.graphic_string( "SCRATCHPAD DATA LINE", righttext("SCRATCHPAD DATA LINE", 24, LARGECHAR) , LINE14, FONT_24X34, RED, 1, 1 );
WillemBraat 3:f7bce78b04c1 172
WillemBraat 3:f7bce78b04c1 173
WillemBraat 3:f7bce78b04c1 174 while (! pb_dn )
WillemBraat 3:f7bce78b04c1 175 {}
WillemBraat 3:f7bce78b04c1 176
WillemBraat 3:f7bce78b04c1 177 display.cls();
WillemBraat 3:f7bce78b04c1 178 sprintf( cText, "<--%03d", nLineCounter );
WillemBraat 3:f7bce78b04c1 179 display.graphic_string( cText , 0, nLineCounter, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 180
WillemBraat 3:f7bce78b04c1 181 led1=1;
WillemBraat 3:f7bce78b04c1 182 wait_ms(100);
WillemBraat 3:f7bce78b04c1 183 led1=0;
WillemBraat 3:f7bce78b04c1 184
WillemBraat 3:f7bce78b04c1 185 while (1)
WillemBraat 3:f7bce78b04c1 186 {
WillemBraat 3:f7bce78b04c1 187 if (pb_up)
WillemBraat 3:f7bce78b04c1 188 {
WillemBraat 3:f7bce78b04c1 189 nLineCounter++;
WillemBraat 3:f7bce78b04c1 190 if ( nLineCounter > 480 )
WillemBraat 3:f7bce78b04c1 191 {
WillemBraat 3:f7bce78b04c1 192 nLineCounter=480;
WillemBraat 3:f7bce78b04c1 193 }
WillemBraat 3:f7bce78b04c1 194 else
WillemBraat 3:f7bce78b04c1 195 {
WillemBraat 3:f7bce78b04c1 196 display.graphic_string( " " , 0, (nLineCounter-1), FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 197 //display.text_string( "ABCDEFGHIJKLMNOPQRSTUVWX" , 0,(nLineCounter-1), FONT_24X34, WHITE );
WillemBraat 3:f7bce78b04c1 198 }
WillemBraat 3:f7bce78b04c1 199
WillemBraat 3:f7bce78b04c1 200 }
WillemBraat 3:f7bce78b04c1 201 if (pb_dn)
WillemBraat 3:f7bce78b04c1 202
WillemBraat 3:f7bce78b04c1 203 {
WillemBraat 3:f7bce78b04c1 204 nLineCounter--;
WillemBraat 3:f7bce78b04c1 205 if ( nLineCounter < 0 )
WillemBraat 3:f7bce78b04c1 206 {
WillemBraat 3:f7bce78b04c1 207 nLineCounter=0;
WillemBraat 3:f7bce78b04c1 208 }
WillemBraat 3:f7bce78b04c1 209 else
WillemBraat 3:f7bce78b04c1 210 {
WillemBraat 3:f7bce78b04c1 211 display.graphic_string( " " , 0, (nLineCounter+1), FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 212 //display.text_string( " " , 0,(nLineCounter+1), FONT_24X34, WHITE );
WillemBraat 3:f7bce78b04c1 213 }
WillemBraat 3:f7bce78b04c1 214 }
WillemBraat 3:f7bce78b04c1 215
WillemBraat 3:f7bce78b04c1 216 sprintf( cText, "<--%03d", nLineCounter );
WillemBraat 3:f7bce78b04c1 217 display.graphic_string( cText , 0, nLineCounter, FONT_24X34, WHITE, 1, 1 );
WillemBraat 3:f7bce78b04c1 218
Kerpower 0:772a63029ab0 219 }
WillemBraat 3:f7bce78b04c1 220
WillemBraat 3:f7bce78b04c1 221
WillemBraat 6:904d00252480 222 }
WillemBraat 6:904d00252480 223