C++ file for display control
Dependencies: 4DGL mbed ConfigFile
Fork of 4DGLtest by
main.cpp@11:a5b0d98794c0, 2014-07-16 (annotated)
- 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?
User | Revision | Line number | New 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&(1<<25)); //Link |
WillemBraat | 3:f7bce78b04c1 | 76 | Yellow= !(FIO1PIN&(1<<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 |