x

Dependencies:   AP3000 ARM_RTC Beep BurstSPI FRAMSPI FT813 I2CEEBlockDevice I2CList MCP79412 NMEA0183 PCA9745B SDBlockDevice SPIFBlockDevice SystemClock WDT nmea_parser

Committer:
JackB
Date:
Mon Jul 23 12:32:19 2018 +0000
Revision:
0:a3b629f6dab5
x

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JackB 0:a3b629f6dab5 1 #include "mbed.h"
JackB 0:a3b629f6dab5 2 // string::substr
JackB 0:a3b629f6dab5 3 //#include <iostream>
JackB 0:a3b629f6dab5 4 //#include <string>
JackB 0:a3b629f6dab5 5
JackB 0:a3b629f6dab5 6 #include "main.h"
JackB 0:a3b629f6dab5 7
JackB 0:a3b629f6dab5 8 #include "AP3000.h"
JackB 0:a3b629f6dab5 9 #include "SetupPage.h"
JackB 0:a3b629f6dab5 10
JackB 0:a3b629f6dab5 11 // https://github.com/ARMmbed/sd-driver
JackB 0:a3b629f6dab5 12 // https://github.com/ARMmbed/mbed-os-example-fat-filesystem/blob/master/main.cpp
JackB 0:a3b629f6dab5 13 // https://github.com/RudolphRiedel/FT800-FT813
JackB 0:a3b629f6dab5 14 // https://github.com/RudolphRiedel/FT800-FT813/blob/master/FT8_commands.c
JackB 0:a3b629f6dab5 15 // https://os.mbed.com/components/EVE-FT800/
JackB 0:a3b629f6dab5 16 // https://os.mbed.com/users/dreschpe/code/FT800_2/file/16e22c789f7d/FT_CoPro_Cmds.cpp/
JackB 0:a3b629f6dab5 17 // https://os.mbed.com/users/dreschpe/code/FT800_RGB_demo2/
JackB 0:a3b629f6dab5 18 // https://os.mbed.com/users/dreschpe/code/FT800_RGB_demo2/docs/tip/main_8cpp_source.html
JackB 0:a3b629f6dab5 19 // https://os.mbed.com/users/dreschpe/code/FT800_2/file/16e22c789f7d/FT_CoPro_Cmds.cpp/
JackB 0:a3b629f6dab5 20 // https://os.mbed.com/users/dreschpe/code/FT800_JPG/
JackB 0:a3b629f6dab5 21 // https://os.mbed.com/users/dreschpe/code/FT800_JPG/file/c603024cbd1d/main.cpp/
JackB 0:a3b629f6dab5 22 // https://os.mbed.com/users/cpm219/code/FT810/rev/2d0ef4830603/
JackB 0:a3b629f6dab5 23 // https://os.mbed.com/users/davidchilds/code/FT810_RGB_demo/file/7a29cc1298ef/main.cpp/
JackB 0:a3b629f6dab5 24 // https://os.mbed.com/users/mozillain/code/FT810/
JackB 0:a3b629f6dab5 25 // https://os.mbed.com/teams/The-Best/code/FT800_3/rev/a69ac4d39afd/
JackB 0:a3b629f6dab5 26 // https://www.mikrocontroller.net/topic/395608
JackB 0:a3b629f6dab5 27 // https://os.mbed.com/users/cpm219/code/FT810/docs/ca6a7c6a2f4b/FT__GPU__Hal_8cpp_source.html
JackB 0:a3b629f6dab5 28 // https://os.mbed.com/users/mozillain/code/FT810/file/74108436751e/src/FT_Hal_Utils.cpp/
JackB 0:a3b629f6dab5 29 // https://os.mbed.com/teams/mbed-os-examples/code/mbed-os-example-fat-filesystem/rev/ab69df6f1c47/
JackB 0:a3b629f6dab5 30 // https://os.mbed.com/questions/79055/How-can-I-get-a-library-for-a-SD-card-re/
JackB 0:a3b629f6dab5 31 // https://docs.mbed.com/docs/mbed-os-api-reference/en/latest/APIs/storage/filesystem/
JackB 0:a3b629f6dab5 32 // Existing block devices:
JackB 0:a3b629f6dab5 33 // SDBlockDevice - block device for SD cards.
JackB 0:a3b629f6dab5 34 // SPIFBlockDevice - block device for NOR based SPI flash devices.
JackB 0:a3b629f6dab5 35 // I2CEEBlockDevice - block device for EEPROM based I2C devices.
JackB 0:a3b629f6dab5 36 // HeapBlockDevice - block device backed by the heap for quick testing.
JackB 0:a3b629f6dab5 37 // https://github.com/armmbed/sd-driver
JackB 0:a3b629f6dab5 38 // https://github.com/ARMmbed/spif-driver
JackB 0:a3b629f6dab5 39 // https://github.com/ARMmbed/i2cee-driver
JackB 0:a3b629f6dab5 40 // https://www.mikroe.com/flash-click
JackB 0:a3b629f6dab5 41 // https://www.tindie.com/products/Bazinga/micron-1gb-serial-nor-flash-memory-breakout/
JackB 0:a3b629f6dab5 42 // https://os.mbed.com/teams/Embedded-Artists/wiki/LPC4088DM-Using-Images
JackB 0:a3b629f6dab5 43 // https://github.com/ARMmbed/spif-driver
JackB 0:a3b629f6dab5 44 // http://nl.farnell.com/integrated-silicon-solution-issi/is25lp128-jble/nor-flash-memory-128mbit-133mhz/dp/2787056 € 2,36
JackB 0:a3b629f6dab5 45 // http://nl.farnell.com/cypress-semiconductor/s25fl128lagmfv010/flash-memory-128mbit-133mhz-soic/dp/2771141 € 3,81
JackB 0:a3b629f6dab5 46 // http://nl.farnell.com/spansion/s25fl256sagmfi011/memory-flash-256mb-16soic/dp/2340545?st=Flash%20Memory%20NOR
JackB 0:a3b629f6dab5 47 // http://nl.farnell.com/cypress-semiconductor/s25fl512sagmfi011/memory-flash-512mbit-16soic/dp/2136298?st=Flash%20Memory%20NOR%20512mbit
JackB 0:a3b629f6dab5 48 // http://nl.farnell.com/cypress-semiconductor/s25fl128lagmfm010/flash-memory-aec-q100-128mbit/dp/2771145 € 5,54
JackB 0:a3b629f6dab5 49 // https://os.mbed.com/users/Decimus/code/FRAMSPI/
JackB 0:a3b629f6dab5 50 // http://www.ftdicommunity.com/index.php?board=3.0
JackB 0:a3b629f6dab5 51 // https://github.com/nopnop2002/STM32_GD2/blob/master/STM32_GD2.cpp
JackB 0:a3b629f6dab5 52 // http://www.ftdichip.com/Support/Documents/AppNotes/AN_269_FT_App_Signature.pdf
JackB 0:a3b629f6dab5 53 // http://forum.arduino.cc/index.php?topic=296126.0
JackB 0:a3b629f6dab5 54 // https://www.youtube.com/watch?v=2FKN5UdqCKg
JackB 0:a3b629f6dab5 55 // https://os.mbed.com/users/Sissors/code/BurstSPI/
JackB 0:a3b629f6dab5 56
JackB 0:a3b629f6dab5 57
JackB 0:a3b629f6dab5 58 //#define BAUD_RATE 9600
JackB 0:a3b629f6dab5 59 //// NUCLEO-F746ZG
JackB 0:a3b629f6dab5 60 //#define USB_TX SERIAL_TX // PD_8 USART3 TX
JackB 0:a3b629f6dab5 61 //#define USB_RX SERIAL_RX // PD_9 USART3 RX
JackB 0:a3b629f6dab5 62 //
JackB 0:a3b629f6dab5 63 //#define BUFFER_SIZE 8192
JackB 0:a3b629f6dab5 64 //
JackB 0:a3b629f6dab5 65 //#define BUTTON_ACCEPT_ALARM_TAG 1
JackB 0:a3b629f6dab5 66 //#define BUTTON_ACCEPT_HORN_TAG 2
JackB 0:a3b629f6dab5 67 //#define BUTTON_SET_TAG 3
JackB 0:a3b629f6dab5 68 //#define BUTTON_DIM_TAG 4
JackB 0:a3b629f6dab5 69 //
JackB 0:a3b629f6dab5 70 //#define TFT_MOSI PA_7
JackB 0:a3b629f6dab5 71 //#define TFT_MISO PA_6
JackB 0:a3b629f6dab5 72 //#define TFT_SCLK PA_5
JackB 0:a3b629f6dab5 73 //#define TFT_CS PC_7
JackB 0:a3b629f6dab5 74 //#define TFT_INT PB_4
JackB 0:a3b629f6dab5 75 //#define TFT_PD PA_4
JackB 0:a3b629f6dab5 76 //
JackB 0:a3b629f6dab5 77 //// Pinout on Nucleo-F746ZG
JackB 0:a3b629f6dab5 78 //#define SD_MOSI PE_14
JackB 0:a3b629f6dab5 79 //#define SD_MISO PE_13
JackB 0:a3b629f6dab5 80 //#define SD_SCLK PE_12
JackB 0:a3b629f6dab5 81 //#define SD_CS PE_11
JackB 0:a3b629f6dab5 82 //
JackB 0:a3b629f6dab5 83 //#define SF_MOSI PB_15
JackB 0:a3b629f6dab5 84 //#define SF_MISO PC_2
JackB 0:a3b629f6dab5 85 //#define SF_SCLK PB_13
JackB 0:a3b629f6dab5 86 //#define SF_CS PB_12
JackB 0:a3b629f6dab5 87 //
JackB 0:a3b629f6dab5 88 //#define EE_SDA PB_9
JackB 0:a3b629f6dab5 89 //#define EE_SCL PB_8
JackB 0:a3b629f6dab5 90 //#define EE_ADDR 0xa0
JackB 0:a3b629f6dab5 91 //#define EE_SIZE 32*1024
JackB 0:a3b629f6dab5 92 //#define EE_BLOCK_SIZE 16
JackB 0:a3b629f6dab5 93 //
JackB 0:a3b629f6dab5 94 //#define MBED_CONF_SD_SPI_TRANSFER_FREQ 40000000
JackB 0:a3b629f6dab5 95 //
JackB 0:a3b629f6dab5 96 //#define INDICATOR_RUN_STATUS_OFF 0
JackB 0:a3b629f6dab5 97 //#define INDICATOR_RUN_STATUS_RUNNING 1
JackB 0:a3b629f6dab5 98 //#define INDICATOR_RUN_STATUS_WARNING 2
JackB 0:a3b629f6dab5 99 //#define INDICATOR_RUN_STATUS_OFF_RED 3
JackB 0:a3b629f6dab5 100 //
JackB 0:a3b629f6dab5 101 //#define INDICATOR_ALARM_STATUS_OFF 0
JackB 0:a3b629f6dab5 102 //#define INDICATOR_ALARM_STATUS_WARNING 1
JackB 0:a3b629f6dab5 103 //#define INDICATOR_ALARM_STATUS_FAILURE 2
JackB 0:a3b629f6dab5 104 //
JackB 0:a3b629f6dab5 105 Serial pc(USBTX, USBRX);
JackB 0:a3b629f6dab5 106
JackB 0:a3b629f6dab5 107 DigitalOut myled(LED1);
JackB 0:a3b629f6dab5 108
JackB 0:a3b629f6dab5 109 // Setup the watchdog timer
JackB 0:a3b629f6dab5 110 WDT wdt;
JackB 0:a3b629f6dab5 111
JackB 0:a3b629f6dab5 112 FT813 TFT(TFT_MOSI, TFT_MISO, TFT_SCLK, TFT_CS, TFT_INT, TFT_PD); // mosi, miso, sck, ss, int, pd // the FT813 is connected to SPI 11-13
JackB 0:a3b629f6dab5 113
JackB 0:a3b629f6dab5 114 // PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, PinName ssel=NC, int mode=0
JackB 0:a3b629f6dab5 115 //QSPI qspi(PF_8, PF_9, PF_7, PF_6, PF_10, PB_10);
JackB 0:a3b629f6dab5 116 DigitalOut myledPF8(PF_8);
JackB 0:a3b629f6dab5 117
JackB 0:a3b629f6dab5 118 //HeapBlockDevice bd(128 * 512, 512);
JackB 0:a3b629f6dab5 119
JackB 0:a3b629f6dab5 120 // Instantiate the SDBlockDevice by specifying the SPI pins connected to the SDCard socket.
JackB 0:a3b629f6dab5 121 SDBlockDevice sd(MBED_CONF_SD_SPI_MOSI, MBED_CONF_SD_SPI_MISO, MBED_CONF_SD_SPI_CLK, MBED_CONF_SD_SPI_CS, MBED_CONF_SD_SPI_TRANSFER_FREQ);
JackB 0:a3b629f6dab5 122
JackB 0:a3b629f6dab5 123 // Create flash device on SPI bus with PTE5 as chip select
JackB 0:a3b629f6dab5 124 SPIFBlockDevice spif(SF_MOSI, SF_MISO, SF_SCLK, SF_CS, 100000); // mosi, miso, sclk, cs, freq
JackB 0:a3b629f6dab5 125
JackB 0:a3b629f6dab5 126 // Create EEPROM device on I2C bus with 32kbytes of memory
JackB 0:a3b629f6dab5 127 //I2CEEBlockDevice ee(EE_SDA, EE_SCL, EE_ADDR, EE_SIZE, EE_BLOCK_SIZE); // sda, scl, addr, size, block, freq
JackB 0:a3b629f6dab5 128
JackB 0:a3b629f6dab5 129 //I2C i2c(EE_SDA, EE_SCL); // sda, scl
JackB 0:a3b629f6dab5 130 //
JackB 0:a3b629f6dab5 131 //I2CList I2C_List(EE_SDA, EE_SCL); // sda, scl
JackB 0:a3b629f6dab5 132
JackB 0:a3b629f6dab5 133 //SPI spi(SF_MOSI, SF_MOSI, SF_SCLK); // mosi, miso, sclk
JackB 0:a3b629f6dab5 134 //FRAMSPI fram(spi, SF_CS);
JackB 0:a3b629f6dab5 135
JackB 0:a3b629f6dab5 136 BurstSPI bspi(SF_MOSI, SF_MISO, SF_SCLK); // PinName mosi, PinName miso, PinName sclk
JackB 0:a3b629f6dab5 137 SPI rspi(SF_MOSI, SF_MISO, SF_SCLK); // PinName mosi, PinName miso, PinName sclk
JackB 0:a3b629f6dab5 138
JackB 0:a3b629f6dab5 139 FATFileSystem fs("fs");
JackB 0:a3b629f6dab5 140
JackB 0:a3b629f6dab5 141 //AP3000 ap3000(&TFT);
JackB 0:a3b629f6dab5 142
JackB 0:a3b629f6dab5 143 Timer timer;
JackB 0:a3b629f6dab5 144
JackB 0:a3b629f6dab5 145 NMEA0183 nmea0183;
JackB 0:a3b629f6dab5 146
JackB 0:a3b629f6dab5 147 MCP79412 rtc(EE_SDA, EE_SCL); // sda, scl
JackB 0:a3b629f6dab5 148
JackB 0:a3b629f6dab5 149 uint8_t setting_block_size;
JackB 0:a3b629f6dab5 150
JackB 0:a3b629f6dab5 151 struct t_setting {
JackB 0:a3b629f6dab5 152 uint8_t version;
JackB 0:a3b629f6dab5 153 char name[32];
JackB 0:a3b629f6dab5 154 double value;
JackB 0:a3b629f6dab5 155 } setting = {
JackB 0:a3b629f6dab5 156 1,
JackB 0:a3b629f6dab5 157 "Hello World!",
JackB 0:a3b629f6dab5 158 3.1415926536
JackB 0:a3b629f6dab5 159 };
JackB 0:a3b629f6dab5 160
JackB 0:a3b629f6dab5 161 //struct button {
JackB 0:a3b629f6dab5 162 // uint8_t accept_alarm_pressed;
JackB 0:a3b629f6dab5 163 // uint8_t accept_horn_pressed;
JackB 0:a3b629f6dab5 164 // uint8_t set_pressed;
JackB 0:a3b629f6dab5 165 // uint8_t dim_pressed;
JackB 0:a3b629f6dab5 166 //};
JackB 0:a3b629f6dab5 167 //
JackB 0:a3b629f6dab5 168 //struct indicator {
JackB 0:a3b629f6dab5 169 // uint8_t md_main_running;
JackB 0:a3b629f6dab5 170 // uint8_t rb_main_phase_fail;
JackB 0:a3b629f6dab5 171 // uint8_t rb_main_main_power;
JackB 0:a3b629f6dab5 172 // uint8_t rb_main_ctrl_power;
JackB 0:a3b629f6dab5 173 // uint8_t rb_main_oil_press;
JackB 0:a3b629f6dab5 174 // uint8_t rb_main_hydr_lock;
JackB 0:a3b629f6dab5 175 // uint8_t rb_main_overload;
JackB 0:a3b629f6dab5 176 // uint8_t rb_main_oil_level;
JackB 0:a3b629f6dab5 177 // uint8_t rb_main_oil_filter;
JackB 0:a3b629f6dab5 178 // uint8_t rb_main_oil_temp;
JackB 0:a3b629f6dab5 179 //
JackB 0:a3b629f6dab5 180 // uint8_t md_aux_running;
JackB 0:a3b629f6dab5 181 // uint8_t rb_aux_phase_fail;
JackB 0:a3b629f6dab5 182 // uint8_t rb_aux_main_power;
JackB 0:a3b629f6dab5 183 // uint8_t rb_aux_ctrl_power;
JackB 0:a3b629f6dab5 184 // uint8_t rb_aux_oil_press;
JackB 0:a3b629f6dab5 185 // uint8_t rb_aux_hydr_lock;
JackB 0:a3b629f6dab5 186 // uint8_t rb_aux_overload;
JackB 0:a3b629f6dab5 187 // uint8_t rb_aux_oil_level;
JackB 0:a3b629f6dab5 188 // uint8_t rb_aux_oil_filter;
JackB 0:a3b629f6dab5 189 // uint8_t rb_aux_oil_temp;
JackB 0:a3b629f6dab5 190 //
JackB 0:a3b629f6dab5 191 // uint8_t rb_fu_failure;
JackB 0:a3b629f6dab5 192 // uint8_t rb_used;
JackB 0:a3b629f6dab5 193 // uint8_t rb_main_most_used;
JackB 0:a3b629f6dab5 194 // uint8_t rb_aux_most_used;
JackB 0:a3b629f6dab5 195 //};
JackB 0:a3b629f6dab5 196 //
JackB 0:a3b629f6dab5 197 //struct button my_button;
JackB 0:a3b629f6dab5 198
JackB 0:a3b629f6dab5 199 typedef struct {
JackB 0:a3b629f6dab5 200 char name[64];
JackB 0:a3b629f6dab5 201 uint16_t fmt;
JackB 0:a3b629f6dab5 202 uint16_t w;
JackB 0:a3b629f6dab5 203 uint16_t h;
JackB 0:a3b629f6dab5 204 } image;
JackB 0:a3b629f6dab5 205
JackB 0:a3b629f6dab5 206 //image images[128];
JackB 0:a3b629f6dab5 207
JackB 0:a3b629f6dab5 208 uint16_t imageCount = 0;
JackB 0:a3b629f6dab5 209
JackB 0:a3b629f6dab5 210 ft_int16_t x_size,y_size;
JackB 0:a3b629f6dab5 211 int err;
JackB 0:a3b629f6dab5 212
JackB 0:a3b629f6dab5 213 void return_error(int ret_val){
JackB 0:a3b629f6dab5 214 if (ret_val)
JackB 0:a3b629f6dab5 215 printf("\033[1;31mFailure. %d\033[0m\n", ret_val);
JackB 0:a3b629f6dab5 216 else
JackB 0:a3b629f6dab5 217 printf("\033[1;32mdone.\033[0m\n");
JackB 0:a3b629f6dab5 218 }
JackB 0:a3b629f6dab5 219
JackB 0:a3b629f6dab5 220 void errno_error(void* ret_val){
JackB 0:a3b629f6dab5 221 if (ret_val == NULL)
JackB 0:a3b629f6dab5 222 printf(" \033[1;31mFailure. %d\033[0m\n", errno);
JackB 0:a3b629f6dab5 223 else
JackB 0:a3b629f6dab5 224 printf(" \033[1;32mdone.\033[0m\n");
JackB 0:a3b629f6dab5 225 }
JackB 0:a3b629f6dab5 226
JackB 0:a3b629f6dab5 227 // global Vars
JackB 0:a3b629f6dab5 228 unsigned int r,b,g;
JackB 0:a3b629f6dab5 229
JackB 0:a3b629f6dab5 230
JackB 0:a3b629f6dab5 231 //int getImageIndexFromName(char *name) {
JackB 0:a3b629f6dab5 232 // for (int i = 0; i < imageCount; i++) {
JackB 0:a3b629f6dab5 233 // if(strstr(images[i].name, name) != NULL) {
JackB 0:a3b629f6dab5 234 // return i;
JackB 0:a3b629f6dab5 235 // }
JackB 0:a3b629f6dab5 236 // }
JackB 0:a3b629f6dab5 237 // return -1;
JackB 0:a3b629f6dab5 238 //}
JackB 0:a3b629f6dab5 239
JackB 0:a3b629f6dab5 240
JackB 0:a3b629f6dab5 241 // function to convert hue , saturation and value to RGB
JackB 0:a3b629f6dab5 242 // see http://en.wikipedia.org/wiki/HSL_and_HSV
JackB 0:a3b629f6dab5 243 void hsv2rgb(float H, float S, float V)
JackB 0:a3b629f6dab5 244 {
JackB 0:a3b629f6dab5 245 float f, h, p, q, t;
JackB 0:a3b629f6dab5 246 int i;
JackB 0:a3b629f6dab5 247 if( S == 0.0) {
JackB 0:a3b629f6dab5 248 r = V * 255;
JackB 0:a3b629f6dab5 249 g = V * 255;
JackB 0:a3b629f6dab5 250 b = V * 255;
JackB 0:a3b629f6dab5 251 return;
JackB 0:a3b629f6dab5 252 }
JackB 0:a3b629f6dab5 253 if(H > 360.0) H = 0.0; // check values
JackB 0:a3b629f6dab5 254 if(S > 1.0) S = 1.0;
JackB 0:a3b629f6dab5 255 if(S < 0.0) S = 0.0;
JackB 0:a3b629f6dab5 256 if(V > 1.0) V = 1.0;
JackB 0:a3b629f6dab5 257 if(V < 0.0) V = 0.0;
JackB 0:a3b629f6dab5 258
JackB 0:a3b629f6dab5 259 h = H / 60.0;
JackB 0:a3b629f6dab5 260 i = (int) h;
JackB 0:a3b629f6dab5 261 f = h - i;
JackB 0:a3b629f6dab5 262 p = V * (1.0 - S);
JackB 0:a3b629f6dab5 263 q = V * (1.0 - (S * f));
JackB 0:a3b629f6dab5 264 t = V * (1.0 - (S * (1.0 - f)));
JackB 0:a3b629f6dab5 265
JackB 0:a3b629f6dab5 266 switch(i) {
JackB 0:a3b629f6dab5 267 case 0:
JackB 0:a3b629f6dab5 268 r = V * 255;
JackB 0:a3b629f6dab5 269 g = t * 255;
JackB 0:a3b629f6dab5 270 b = p * 255;
JackB 0:a3b629f6dab5 271 break;
JackB 0:a3b629f6dab5 272 case 1:
JackB 0:a3b629f6dab5 273 r = q * 255;
JackB 0:a3b629f6dab5 274 g = V * 255;
JackB 0:a3b629f6dab5 275 b = p * 255;
JackB 0:a3b629f6dab5 276 break;
JackB 0:a3b629f6dab5 277 case 2:
JackB 0:a3b629f6dab5 278 r = p * 255;
JackB 0:a3b629f6dab5 279 g = V * 255;
JackB 0:a3b629f6dab5 280 b = t * 255;
JackB 0:a3b629f6dab5 281 break;
JackB 0:a3b629f6dab5 282 case 3:
JackB 0:a3b629f6dab5 283 r = p * 255;
JackB 0:a3b629f6dab5 284 g = q * 255;
JackB 0:a3b629f6dab5 285 b = V * 255;
JackB 0:a3b629f6dab5 286 break;
JackB 0:a3b629f6dab5 287 case 4:
JackB 0:a3b629f6dab5 288 r = t * 255;
JackB 0:a3b629f6dab5 289 g = p * 255;
JackB 0:a3b629f6dab5 290 b = V * 255;
JackB 0:a3b629f6dab5 291 break;
JackB 0:a3b629f6dab5 292 case 5:
JackB 0:a3b629f6dab5 293 default:
JackB 0:a3b629f6dab5 294 r = V * 255;
JackB 0:a3b629f6dab5 295 g = p * 255;
JackB 0:a3b629f6dab5 296 b = q * 255;
JackB 0:a3b629f6dab5 297 break;
JackB 0:a3b629f6dab5 298 }
JackB 0:a3b629f6dab5 299 }
JackB 0:a3b629f6dab5 300
JackB 0:a3b629f6dab5 301
JackB 0:a3b629f6dab5 302 /***************************************************************************/
JackB 0:a3b629f6dab5 303 /* Show a Screen with Text for 5 seconds */
JackB 0:a3b629f6dab5 304 /* A spinner shows the delay */
JackB 0:a3b629f6dab5 305 /***************************************************************************/
JackB 0:a3b629f6dab5 306
JackB 0:a3b629f6dab5 307 ft_void_t Start_Screen(ft_char8_t *str)
JackB 0:a3b629f6dab5 308 {
JackB 0:a3b629f6dab5 309 TFT.DLstart(); // start a new display command list
JackB 0:a3b629f6dab5 310 TFT.DL(CLEAR_COLOR_RGB(0xff, 0xff, 0xff)); // set the clear color to white
JackB 0:a3b629f6dab5 311 TFT.DL(CLEAR(1, 1, 1)); // clear buffers -> color buffer,stencil buffer, tag buffer
JackB 0:a3b629f6dab5 312
JackB 0:a3b629f6dab5 313 TFT.DL(COLOR_RGB(0x80, 0x80, 0x00)); // set current color
JackB 0:a3b629f6dab5 314 TFT.Text((TFT.DispWidth/2), TFT.DispHeight/2, 31, OPT_CENTERX, str); // draw Text with font 31
JackB 0:a3b629f6dab5 315 TFT.DL(COLOR_RGB(0xFF, 0x00, 0x00)); // change current color
JackB 0:a3b629f6dab5 316 TFT.Spinner((TFT.DispWidth/2), TFT.DispHeight/4, 0, 0); // draw a animated spinner
JackB 0:a3b629f6dab5 317
JackB 0:a3b629f6dab5 318 TFT.DL(DISPLAY()); // Display the image
JackB 0:a3b629f6dab5 319 TFT.Swap(); // Swap the current display list
JackB 0:a3b629f6dab5 320 TFT.Flush_Co_Buffer(); // Download the command list into fifo
JackB 0:a3b629f6dab5 321
JackB 0:a3b629f6dab5 322 TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation
JackB 0:a3b629f6dab5 323 TFT.Sleep(1000); // Wait 5 s to show
JackB 0:a3b629f6dab5 324 }
JackB 0:a3b629f6dab5 325
JackB 0:a3b629f6dab5 326 void screen_cm3000(void)
JackB 0:a3b629f6dab5 327 {
JackB 0:a3b629f6dab5 328 TFT.DLstart(); // start a new display command list
JackB 0:a3b629f6dab5 329 TFT.DL(CLEAR_COLOR_RGB(0x21, 0x21, 0x21)); // set current color to white
JackB 0:a3b629f6dab5 330 TFT.DL(CLEAR(1, 1, 1)); // clear buffers -> color buffer,stencil buffer, tag buffer
JackB 0:a3b629f6dab5 331 TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // set current color to white
JackB 0:a3b629f6dab5 332
JackB 0:a3b629f6dab5 333 // Bitmap
JackB 0:a3b629f6dab5 334 // BACKGROUND-01.png
JackB 0:a3b629f6dab5 335 TFT.DL(TAG(1)); // assign TAG
JackB 0:a3b629f6dab5 336 // Narrow On button, 100x132, Address 0-26400
JackB 0:a3b629f6dab5 337 TFT.DL(BEGIN(BITMAPS));
JackB 0:a3b629f6dab5 338 TFT.DL(BITMAP_SOURCE(TFT.GetBitmapAddress(0)));
JackB 0:a3b629f6dab5 339 TFT.DL(BITMAP_LAYOUT(ARGB4, 100*2, 132)); // <------- this distorts the colors
JackB 0:a3b629f6dab5 340 TFT.DL(BITMAP_SIZE(NEAREST, BORDER, BORDER, 100, 132));
JackB 0:a3b629f6dab5 341 TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // all colors in bitmap at 100%
JackB 0:a3b629f6dab5 342 TFT.DL(VERTEX2II(20, 290, 0, 0));
JackB 0:a3b629f6dab5 343
JackB 0:a3b629f6dab5 344 // TFT.SetRotate(0); // Standard landscape
JackB 0:a3b629f6dab5 345 // TFT.SetRotate(1); // Rotate 180 to landscape (upside down)
JackB 0:a3b629f6dab5 346 // TFT.SetRotate(2); // Rotate 90 CCW to portrait
JackB 0:a3b629f6dab5 347 // TFT.SetRotate(3); // Rotate 90 CW to portrait
JackB 0:a3b629f6dab5 348 // TFT.SetRotate(4); // Mirror over landscape X
JackB 0:a3b629f6dab5 349 // TFT.SetRotate(5); // Mirror over landscape Y
JackB 0:a3b629f6dab5 350 // TFT.SetRotate(6); // Rotate 90 CCW to portrait and mirror over portrait X
JackB 0:a3b629f6dab5 351 // TFT.SetRotate(7); // Rotate 90 CW to portrait and mirror over portrait X
JackB 0:a3b629f6dab5 352
JackB 0:a3b629f6dab5 353 TFT.DL(DISPLAY()); // Display the image
JackB 0:a3b629f6dab5 354 TFT.Swap(); // Swap the current display list
JackB 0:a3b629f6dab5 355 TFT.Flush_Co_Buffer(); // Download the command list into fifo
JackB 0:a3b629f6dab5 356 TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation
JackB 0:a3b629f6dab5 357 }
JackB 0:a3b629f6dab5 358
JackB 0:a3b629f6dab5 359 // construct the screen and downloasd it to the LCD
JackB 0:a3b629f6dab5 360 void screen_1(unsigned int color, unsigned int bright, unsigned int tagoption1, unsigned int tagoption2, unsigned int tagoption3, unsigned int tagoption4)
JackB 0:a3b629f6dab5 361 {
JackB 0:a3b629f6dab5 362 TFT.DLstart(); // start a new display command list
JackB 0:a3b629f6dab5 363 TFT.DL(CLEAR_COLOR_RGB(0x21, 0x21, 0x21)); // set current color to white
JackB 0:a3b629f6dab5 364 TFT.DL(CLEAR(1, 1, 1)); // clear buffers -> color buffer,stencil buffer, tag buffer
JackB 0:a3b629f6dab5 365 TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // set current color to white
JackB 0:a3b629f6dab5 366
JackB 0:a3b629f6dab5 367 // Default widget colors
JackB 0:a3b629f6dab5 368 TFT.SetThemeDefaultColor();
JackB 0:a3b629f6dab5 369 // TFT.GradColor(COLOR_RGB(0xff, 0xff, 0xff)); // Default 0xffffff
JackB 0:a3b629f6dab5 370 // TFT.FgColor(COLOR_RGB(0x00, 0x38, 0x70)); // Default 0x003870 0 56 112
JackB 0:a3b629f6dab5 371 // TFT.BgColor(COLOR_RGB(0x00, 0x20, 0x40)); // Default 0x002040 0 32 64
JackB 0:a3b629f6dab5 372
JackB 0:a3b629f6dab5 373 TFT.DL(TAG(1)); // assign TAG value 1
JackB 0:a3b629f6dab5 374 // TFT.FgColor(COLOR_RGB(0x00, 0x00, 0xff)); // forground color red
JackB 0:a3b629f6dab5 375 // TFT.BgColor(COLOR_RGB(0x00, 0x00, 0x80));
JackB 0:a3b629f6dab5 376 TFT.Dial(249, 86, 55, 0, color); // dial for color
JackB 0:a3b629f6dab5 377
JackB 0:a3b629f6dab5 378 TFT.DL(TAG(2)); // assign TAG value 2
JackB 0:a3b629f6dab5 379 // TFT.FgColor(COLOR_RGB(0x00, 0x00, 0xff)); // forground color red
JackB 0:a3b629f6dab5 380 // TFT.BgColor(COLOR_RGB(0x00, 0x00, 0x80));
JackB 0:a3b629f6dab5 381 TFT.Slider(196, 215, 236, 21, 0, bright , 255); // slider for brightness
JackB 0:a3b629f6dab5 382 TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // set current color to white
JackB 0:a3b629f6dab5 383 TFT.Text(22, 84, 30, 0, "Color"); // text Color
JackB 0:a3b629f6dab5 384 TFT.Text(22, 208, 30, 0, "Brightness"); // text Brightness
JackB 0:a3b629f6dab5 385
JackB 0:a3b629f6dab5 386 // TFT.Button(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_int16_t font, ft_uint16_t options, const ft_char8_t* s);
JackB 0:a3b629f6dab5 387 TFT.DL(TAG(3)); // This is tag value for button
JackB 0:a3b629f6dab5 388 // 0 = 3D, OPT_FLAT
JackB 0:a3b629f6dab5 389 TFT.SetThemeColor(COLOR_RGB(0xff, 0x00, 0x00));
JackB 0:a3b629f6dab5 390 // TFT.GradColor(COLOR_RGB(0xff, 0xff, 0xff));
JackB 0:a3b629f6dab5 391 // TFT.FgColor(COLOR_RGB(0x70, 0x00, 0x00));
JackB 0:a3b629f6dab5 392 // TFT.BgColor(COLOR_RGB(0x38, 0x00, 0x00));
JackB 0:a3b629f6dab5 393 TFT.Button(500, 20, 200, 50, 31, tagoption1, "25%");
JackB 0:a3b629f6dab5 394
JackB 0:a3b629f6dab5 395 TFT.DL(TAG(4)); // This is tag value for button
JackB 0:a3b629f6dab5 396 TFT.SetThemeColor(COLOR_RGB(0x00, 0xff, 0x00));
JackB 0:a3b629f6dab5 397 // TFT.GradColor(COLOR_RGB(0xff, 0xff, 0xff));
JackB 0:a3b629f6dab5 398 // TFT.FgColor(COLOR_RGB(0x00, 0x70, 0x00));
JackB 0:a3b629f6dab5 399 // TFT.BgColor(COLOR_RGB(0x00, 0x40, 0x00));
JackB 0:a3b629f6dab5 400 TFT.Button(500, 80, 200, 50, 31, tagoption2, "50%");
JackB 0:a3b629f6dab5 401
JackB 0:a3b629f6dab5 402 TFT.DL(TAG(5)); // This is tag value for button
JackB 0:a3b629f6dab5 403 TFT.SetThemeColor(COLOR_RGB(0x00, 0x7f, 0xff));
JackB 0:a3b629f6dab5 404 // TFT.GradColor(COLOR_RGB(0xff, 0xff, 0xff));
JackB 0:a3b629f6dab5 405 // TFT.FgColor(COLOR_RGB(0x00, 0x38, 0x70));
JackB 0:a3b629f6dab5 406 // TFT.BgColor(COLOR_RGB(0x00, 0x20, 0x40));
JackB 0:a3b629f6dab5 407 TFT.Button(500, 140, 200, 50, 31, tagoption3, "75%");
JackB 0:a3b629f6dab5 408
JackB 0:a3b629f6dab5 409 // // Default
JackB 0:a3b629f6dab5 410 // TFT.SetThemeDefaultColor();
JackB 0:a3b629f6dab5 411 //// TFT.GradColor(COLOR_RGB(0xff, 0xff, 0xff)); // Default 0xffffff
JackB 0:a3b629f6dab5 412 //// TFT.FgColor(COLOR_RGB(0x00, 0x38, 0x70)); // Default 0x003870
JackB 0:a3b629f6dab5 413 //// TFT.BgColor(COLOR_RGB(0x00, 0x20, 0x40)); // Default 0x002040
JackB 0:a3b629f6dab5 414 //
JackB 0:a3b629f6dab5 415 //
JackB 0:a3b629f6dab5 416 TFT.DL(POINT_SIZE(100)); // color point around the dial
JackB 0:a3b629f6dab5 417 TFT.DL(BEGIN(POINTS));
JackB 0:a3b629f6dab5 418 TFT.DL(COLOR_RGB(0x00, 0x0, 0xff)); // color of next point
JackB 0:a3b629f6dab5 419 TFT.DL(VERTEX2II(183, 47, 0, 0)); // set point x,y
JackB 0:a3b629f6dab5 420 TFT.DL(COLOR_RGB(0xff, 0x00, 0x00));
JackB 0:a3b629f6dab5 421 TFT.DL(VERTEX2II(249, 162, 0, 0));
JackB 0:a3b629f6dab5 422 TFT.DL(COLOR_RGB(0xff, 0x00, 0xff));
JackB 0:a3b629f6dab5 423 TFT.DL(VERTEX2II(183, 123, 0, 0));
JackB 0:a3b629f6dab5 424 TFT.DL(COLOR_RGB(0xff, 0xff, 0x00));
JackB 0:a3b629f6dab5 425 TFT.DL(VERTEX2II(317, 123, 0, 0));
JackB 0:a3b629f6dab5 426 TFT.DL(COLOR_RGB(0x00, 0xff, 0xff));
JackB 0:a3b629f6dab5 427 TFT.DL(VERTEX2II(249, 11, 0, 0));
JackB 0:a3b629f6dab5 428 TFT.DL(COLOR_RGB(0x00, 0xff, 0x00));
JackB 0:a3b629f6dab5 429 TFT.DL(VERTEX2II(317, 50, 0, 0));
JackB 0:a3b629f6dab5 430 TFT.DL(SCISSOR_XY(10, 10)); // define sub area starting at 10,10
JackB 0:a3b629f6dab5 431 TFT.DL(SCISSOR_SIZE(50, 50)); // size 50, 50
JackB 0:a3b629f6dab5 432 hsv2rgb(color / 65536.0 * 360, 1.0, bright / 255.0); // calculate rgb color from settings
JackB 0:a3b629f6dab5 433 TFT.DL(CLEAR_COLOR_RGB(r, b, g)); // set filling color to r,g,b
JackB 0:a3b629f6dab5 434 TFT.DL(CLEAR(1, 1, 1)); // fill the area
JackB 0:a3b629f6dab5 435
JackB 0:a3b629f6dab5 436 // Clipping area
JackB 0:a3b629f6dab5 437 TFT.DL(SCISSOR_XY(0, 0)); // define area starting at 380,220
JackB 0:a3b629f6dab5 438 TFT.DL(SCISSOR_SIZE(480, 800)); // size 480, 800
JackB 0:a3b629f6dab5 439 TFT.DL(COLOR_RGB(0xff, 0xff, 0xff));
JackB 0:a3b629f6dab5 440
JackB 0:a3b629f6dab5 441 // Rectangle
JackB 0:a3b629f6dab5 442 TFT.DL(TAG(6)); // assign TAG
JackB 0:a3b629f6dab5 443 TFT.DL(COLOR_RGB(0x80, 0x00, 0xff)); // set current color to red
JackB 0:a3b629f6dab5 444 TFT.Rect(60, 270, 260, 340, 5);
JackB 0:a3b629f6dab5 445
JackB 0:a3b629f6dab5 446 // Circle
JackB 0:a3b629f6dab5 447 TFT.DL(TAG(7)); // assign TAG
JackB 0:a3b629f6dab5 448 TFT.DL(COLOR_RGB(0x00, 0xff, 0x00)); // set current color to green
JackB 0:a3b629f6dab5 449 TFT.Point(400, 340, 60);
JackB 0:a3b629f6dab5 450
JackB 0:a3b629f6dab5 451 // Rectangle
JackB 0:a3b629f6dab5 452 TFT.DL(TAG(8)); // assign TAG
JackB 0:a3b629f6dab5 453 TFT.DL(COLOR_RGB(r, b, g)); // set current color to red
JackB 0:a3b629f6dab5 454 TFT.Rect(160, 305, 360, 440, 20);
JackB 0:a3b629f6dab5 455 TFT.DL(COLOR_RGB(0x00, 0x00, 0x00)); // set current color to black
JackB 0:a3b629f6dab5 456 TFT.Rect(165, 310, 355, 435, 10);
JackB 0:a3b629f6dab5 457
JackB 0:a3b629f6dab5 458 // Line
JackB 0:a3b629f6dab5 459 TFT.DL(TAG(9)); // assign TAG
JackB 0:a3b629f6dab5 460 TFT.DL(COLOR_RGB(0x00, 0x00, 0xff)); // set current color to blue
JackB 0:a3b629f6dab5 461 TFT.Line(440, 310, 680, 230 + r, 20);
JackB 0:a3b629f6dab5 462
JackB 0:a3b629f6dab5 463 // Circle
JackB 0:a3b629f6dab5 464 TFT.DL(TAG(10)); // assign TAG
JackB 0:a3b629f6dab5 465 TFT.DL(COLOR_RGB(0xff, 0x00, 0xff)); // set current color to green
JackB 0:a3b629f6dab5 466 TFT.Point(600, 340, 80);
JackB 0:a3b629f6dab5 467 // TFT.DL(TAG(10)); // assign TAG
JackB 0:a3b629f6dab5 468 TFT.DL(COLOR_RGB(0x00, 0x00, 0x00)); // set current color to green
JackB 0:a3b629f6dab5 469 TFT.Point(600, 340, 70);
JackB 0:a3b629f6dab5 470
JackB 0:a3b629f6dab5 471 // Bitmap
JackB 0:a3b629f6dab5 472 TFT.DL(TAG(11)); // assign TAG
JackB 0:a3b629f6dab5 473 // Narrow On button, 100x132, Address 0-26400
JackB 0:a3b629f6dab5 474 TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // set the clear color to white
JackB 0:a3b629f6dab5 475 TFT.DL(BEGIN(BITMAPS));
JackB 0:a3b629f6dab5 476 // TFT.DL(BITMAP_SOURCE(TFT.GetBitmapAddress(1)));
JackB 0:a3b629f6dab5 477 // TFT.DL(BITMAP_LAYOUT(ARGB4, 100*2, 132)); // <------- this distorts the colors
JackB 0:a3b629f6dab5 478 // TFT.DL(BITMAP_SIZE(NEAREST, BORDER, BORDER, 100, 132));
JackB 0:a3b629f6dab5 479 // TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // all colors in bitmap at 100%
JackB 0:a3b629f6dab5 480 // TFT.DL(VERTEX2II(20, 290, 0, 0));
JackB 0:a3b629f6dab5 481
JackB 0:a3b629f6dab5 482 // int index = 0;
JackB 0:a3b629f6dab5 483 if (tagoption4 == 0) {
JackB 0:a3b629f6dab5 484 // index = getImageIndexFromName("SwitchOn_100x132");
JackB 0:a3b629f6dab5 485 TFT.ShowBitmapByName("SwitchOn_100x132", 20, 290);
JackB 0:a3b629f6dab5 486 }
JackB 0:a3b629f6dab5 487 else {
JackB 0:a3b629f6dab5 488 // index = getImageIndexFromName("SwitchOff_100x132");
JackB 0:a3b629f6dab5 489 TFT.ShowBitmapByName("SwitchOff_100x132", 20, 290);
JackB 0:a3b629f6dab5 490 }
JackB 0:a3b629f6dab5 491 // TFT.ShowBitmapAtAddress(images[index].addr, images[index].fmt, 20, 290, images[index].w, images[index].h);
JackB 0:a3b629f6dab5 492
JackB 0:a3b629f6dab5 493
JackB 0:a3b629f6dab5 494 // TFT.SetRotate(0); // Standard landscape
JackB 0:a3b629f6dab5 495 // TFT.SetRotate(1); // Rotate 180 to landscape (upside down)
JackB 0:a3b629f6dab5 496 // TFT.SetRotate(2); // Rotate 90 CCW to portrait
JackB 0:a3b629f6dab5 497 // TFT.SetRotate(3); // Rotate 90 CW to portrait
JackB 0:a3b629f6dab5 498 // TFT.SetRotate(4); // Mirror over landscape X
JackB 0:a3b629f6dab5 499 // TFT.SetRotate(5); // Mirror over landscape Y
JackB 0:a3b629f6dab5 500 // TFT.SetRotate(6); // Rotate 90 CCW to portrait and mirror over portrait X
JackB 0:a3b629f6dab5 501 // TFT.SetRotate(7); // Rotate 90 CW to portrait and mirror over portrait X
JackB 0:a3b629f6dab5 502
JackB 0:a3b629f6dab5 503 TFT.DL(DISPLAY()); // Display the image
JackB 0:a3b629f6dab5 504 TFT.Swap(); // Swap the current display list
JackB 0:a3b629f6dab5 505 TFT.Flush_Co_Buffer(); // Download the command list into fifo
JackB 0:a3b629f6dab5 506 TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation
JackB 0:a3b629f6dab5 507 }
JackB 0:a3b629f6dab5 508
JackB 0:a3b629f6dab5 509 // construct the screen and downloasd it to the LCD
JackB 0:a3b629f6dab5 510 void screen_2(unsigned int r, unsigned int g, unsigned int b)
JackB 0:a3b629f6dab5 511 {
JackB 0:a3b629f6dab5 512 TFT.DLstart(); // start a new display command list
JackB 0:a3b629f6dab5 513 TFT.DL(CLEAR(1, 1, 1)); // clear buffers -> color buffer,stencil buffer, tag buffer
JackB 0:a3b629f6dab5 514 TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // set current color to white
JackB 0:a3b629f6dab5 515 TFT.DL(TAG(1)); // assign TAG value 1
JackB 0:a3b629f6dab5 516 TFT.FgColor(COLOR_RGB(0xff, 0x00, 0x00)); // forground color red
JackB 0:a3b629f6dab5 517 TFT.Slider(140, 81, 310, 14, 0, r, 255); // slider for red
JackB 0:a3b629f6dab5 518 TFT.DL(TAG(2)); // assign TAG value 2
JackB 0:a3b629f6dab5 519 TFT.FgColor(COLOR_RGB(0x00, 0xff, 0x00)); // forground color green
JackB 0:a3b629f6dab5 520 TFT.Slider(140, 133, 310, 14, 0, g, 255); // slider for green
JackB 0:a3b629f6dab5 521 TFT.DL(TAG(3)); // assign TAG value 3
JackB 0:a3b629f6dab5 522 TFT.FgColor(COLOR_RGB(0x00, 0x00, 0xff)); // forground color blue
JackB 0:a3b629f6dab5 523 TFT.Slider(139, 185, 310, 14, 0, b, 255); // slider for blue
JackB 0:a3b629f6dab5 524 TFT.DL(COLOR_RGB(0xff, 0x00, 0x00)); // set current color to red
JackB 0:a3b629f6dab5 525 TFT.Text(82, 69, 30, 0, "R"); // text R
JackB 0:a3b629f6dab5 526 TFT.DL(COLOR_RGB(0x00, 0xff, 0x00)); // set current color to green
JackB 0:a3b629f6dab5 527 TFT.Text(82, 120, 30, 0, "G"); // text G
JackB 0:a3b629f6dab5 528 TFT.DL(COLOR_RGB(0x00, 0x00, 0xff)); // set current color to blue
JackB 0:a3b629f6dab5 529 TFT.Text(82, 174, 30, 0, "B"); // text B
JackB 0:a3b629f6dab5 530 TFT.DL(SCISSOR_XY(10, 10)); // define area starting at 10,10
JackB 0:a3b629f6dab5 531 TFT.DL(SCISSOR_SIZE(50, 50)); // size 50,50
JackB 0:a3b629f6dab5 532 TFT.DL(CLEAR_COLOR_RGB(r, g, b)); // set clear color to r,g,b
JackB 0:a3b629f6dab5 533 TFT.DL(CLEAR(1, 1, 1)); // fill the area
JackB 0:a3b629f6dab5 534
JackB 0:a3b629f6dab5 535 // Clipping area
JackB 0:a3b629f6dab5 536 TFT.DL(SCISSOR_XY(0, 220)); // define area starting at 380,220
JackB 0:a3b629f6dab5 537 TFT.DL(SCISSOR_SIZE(799, 259)); // size 50,50
JackB 0:a3b629f6dab5 538 // Rectangle
JackB 0:a3b629f6dab5 539 TFT.DL(COLOR_RGB(0xff, 0x00, 0x00)); // set current color to red
JackB 0:a3b629f6dab5 540 TFT.Rect(160, 290, 360, 440, 20);
JackB 0:a3b629f6dab5 541 TFT.DL(COLOR_RGB(0x00, 0x00, 0x00)); // set current color to black
JackB 0:a3b629f6dab5 542 TFT.Rect(165, 295, 355, 435, 10);
JackB 0:a3b629f6dab5 543 // Circle
JackB 0:a3b629f6dab5 544 TFT.DL(COLOR_RGB(0x00, 0xff, 0x00)); // set current color to green
JackB 0:a3b629f6dab5 545 TFT.Point(400, 260, 40);
JackB 0:a3b629f6dab5 546 // Line
JackB 0:a3b629f6dab5 547 TFT.DL(COLOR_RGB(0x00, 0x00, 0xff)); // set current color to blue
JackB 0:a3b629f6dab5 548 TFT.Line(440, 270, 680, 400, 20);
JackB 0:a3b629f6dab5 549
JackB 0:a3b629f6dab5 550 TFT.DL(DISPLAY()); // Display the image
JackB 0:a3b629f6dab5 551 TFT.Swap(); // Swap the current display list
JackB 0:a3b629f6dab5 552 TFT.Flush_Co_Buffer(); // Download the command list into fifo
JackB 0:a3b629f6dab5 553 TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation
JackB 0:a3b629f6dab5 554 }
JackB 0:a3b629f6dab5 555
JackB 0:a3b629f6dab5 556 void substring(char *s, char *d, int pos, int len) //usage: substring(Src, Dst, Pos, Len);
JackB 0:a3b629f6dab5 557 {
JackB 0:a3b629f6dab5 558 //usage: substring(Source, Destination, pos, len);
JackB 0:a3b629f6dab5 559 char *t;
JackB 0:a3b629f6dab5 560
JackB 0:a3b629f6dab5 561 s=s+pos;
JackB 0:a3b629f6dab5 562 t=s+len;
JackB 0:a3b629f6dab5 563 while (s!=t) {
JackB 0:a3b629f6dab5 564 *d=*s;
JackB 0:a3b629f6dab5 565 s++;
JackB 0:a3b629f6dab5 566 d++;
JackB 0:a3b629f6dab5 567 }
JackB 0:a3b629f6dab5 568 *d='\0';
JackB 0:a3b629f6dab5 569 }
JackB 0:a3b629f6dab5 570
JackB 0:a3b629f6dab5 571 int main() {
JackB 0:a3b629f6dab5 572 pc.baud(BAUD_RATE);
JackB 0:a3b629f6dab5 573 printf("\n\n\n");
JackB 0:a3b629f6dab5 574 printf("----------------------------------\n");
JackB 0:a3b629f6dab5 575 printf("20180621_FT800_RGB_demo2\n");
JackB 0:a3b629f6dab5 576 printf("" __DATE__ " " __TIME__ "\n");
JackB 0:a3b629f6dab5 577 #if defined(MBED_MAJOR_VERSION)
JackB 0:a3b629f6dab5 578 printf("Using \033[1;37mMbed OS %d.%d.%d\033[0m\n", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
JackB 0:a3b629f6dab5 579 #else
JackB 0:a3b629f6dab5 580 printf("Using Mbed OS from master.\n");
JackB 0:a3b629f6dab5 581 #endif
JackB 0:a3b629f6dab5 582 printf("CPU SystemCoreClock: \033[1;37m%d MHz\033[0m\n", SystemCoreClock/1000000);
JackB 0:a3b629f6dab5 583 printf("----------------------------------\n");
JackB 0:a3b629f6dab5 584
JackB 0:a3b629f6dab5 585 // https://www.unixtimestamp.com/
JackB 0:a3b629f6dab5 586 set_time(1531525845); // Set RTC time to Wed, 28 Oct 2009 11:35:37
JackB 0:a3b629f6dab5 587
JackB 0:a3b629f6dab5 588 uint8_t second = 0;
JackB 0:a3b629f6dab5 589 uint8_t minute = 0;
JackB 0:a3b629f6dab5 590 uint8_t hour = 0;
JackB 0:a3b629f6dab5 591 uint8_t dayOfWeek = 1; // Will be determined
JackB 0:a3b629f6dab5 592 uint8_t dayOfMonth = 16;
JackB 0:a3b629f6dab5 593 uint8_t month = 7;
JackB 0:a3b629f6dab5 594 uint8_t year = 18;
JackB 0:a3b629f6dab5 595 printf("%02d-%02d-%02d %02d:%02d:%02d\n", dayOfMonth, month, year, hour, minute, second);
JackB 0:a3b629f6dab5 596
JackB 0:a3b629f6dab5 597 // struct tm *t;
JackB 0:a3b629f6dab5 598 // *t = rtc.setSystemDateTime(second, minute, hour, dayOfMonth, month, year);
JackB 0:a3b629f6dab5 599 // printf("-> Debug %d %02d-%02d-%03d %02d:%02d:%02d\n", t->tm_wday, t->tm_mday, t->tm_mon, t->tm_year, t->tm_hour, t->tm_min, t->tm_sec);
JackB 0:a3b629f6dab5 600
JackB 0:a3b629f6dab5 601 struct tm t;
JackB 0:a3b629f6dab5 602 t = rtc.setSystemDateTime(second, minute, hour, dayOfMonth, month, year);
JackB 0:a3b629f6dab5 603 printf("-> Debug %d %02d-%02d-%03d %02d:%02d:%02d\n", t.tm_wday, t.tm_mday, t.tm_mon, t.tm_year, t.tm_hour, t.tm_min, t.tm_sec);
JackB 0:a3b629f6dab5 604
JackB 0:a3b629f6dab5 605 time_t secondsEpoch = time(NULL);
JackB 0:a3b629f6dab5 606
JackB 0:a3b629f6dab5 607 printf("Time as seconds since January 1, 1970 = %d\n", secondsEpoch);
JackB 0:a3b629f6dab5 608
JackB 0:a3b629f6dab5 609 printf("Time as a basic string = %s", ctime(&secondsEpoch));
JackB 0:a3b629f6dab5 610
JackB 0:a3b629f6dab5 611 char buffer[32];
JackB 0:a3b629f6dab5 612 strftime(buffer, 32, "%a %d-%m-%Y %H:%M:%S\n", localtime(&secondsEpoch));
JackB 0:a3b629f6dab5 613 printf("Time: %s", buffer);
JackB 0:a3b629f6dab5 614 // wait(5);
JackB 0:a3b629f6dab5 615 secondsEpoch = time(NULL);
JackB 0:a3b629f6dab5 616 strftime(buffer, 32, "%a %d-%m-%Y %H:%M:%S\n", localtime(&secondsEpoch));
JackB 0:a3b629f6dab5 617 printf("Time: %s", buffer);
JackB 0:a3b629f6dab5 618
JackB 0:a3b629f6dab5 619 printf("year %d\n", year);
JackB 0:a3b629f6dab5 620 time_t seconds2 = rtc.convertDateTimeToTimestamp(second, minute, hour, dayOfMonth, month, year);
JackB 0:a3b629f6dab5 621 printf("seconds2 %d\n", seconds2);
JackB 0:a3b629f6dab5 622
JackB 0:a3b629f6dab5 623 uint8_t Weekday = rtc.getWeekdayFromDate(dayOfMonth, month, year);
JackB 0:a3b629f6dab5 624 printf("Weekday %d\n", Weekday);
JackB 0:a3b629f6dab5 625
JackB 0:a3b629f6dab5 626 rtc.setRtcFromTm(&t);
JackB 0:a3b629f6dab5 627
JackB 0:a3b629f6dab5 628 // uint8_t second = 0;
JackB 0:a3b629f6dab5 629 // uint8_t minute = 18;
JackB 0:a3b629f6dab5 630 // uint8_t hour = 1;
JackB 0:a3b629f6dab5 631 // uint8_t dayOfWeek = 6;
JackB 0:a3b629f6dab5 632 // uint8_t dayOfMonth = 14;
JackB 0:a3b629f6dab5 633 // uint8_t month = 7;
JackB 0:a3b629f6dab5 634 // uint8_t year = 18;
JackB 0:a3b629f6dab5 635 // printf("%02d-%02d-%02d %02d:%02d:%02d\n", dayOfMonth, month, year, hour, minute, second);
JackB 0:a3b629f6dab5 636 // rtc.setSystemDateTime(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
JackB 0:a3b629f6dab5 637 // wait(5);
JackB 0:a3b629f6dab5 638 rtc.getSystemDateTime(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
JackB 0:a3b629f6dab5 639 printf("%d %02d-%02d-%02d %02d:%02d:%02d\n", dayOfWeek, dayOfMonth, month, year, hour, minute, second);
JackB 0:a3b629f6dab5 640 // wait(5);
JackB 0:a3b629f6dab5 641 rtc.getSystemDateTime(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
JackB 0:a3b629f6dab5 642 printf("%d %02d-%02d-%02d %02d:%02d:%02d\n", dayOfWeek, dayOfMonth, month, year, hour, minute, second);
JackB 0:a3b629f6dab5 643
JackB 0:a3b629f6dab5 644
JackB 0:a3b629f6dab5 645 // https://os.mbed.com/questions/77039/Use-external-clock-signal-HSE-in-Nucleo-/
JackB 0:a3b629f6dab5 646
JackB 0:a3b629f6dab5 647
JackB 0:a3b629f6dab5 648
JackB 0:a3b629f6dab5 649 switch (__HAL_RCC_GET_SYSCLK_SOURCE())
JackB 0:a3b629f6dab5 650 {
JackB 0:a3b629f6dab5 651 // case RCC_SYSCLKSOURCE_STATUS_MSI:
JackB 0:a3b629f6dab5 652 // printf("MSI used as system clock.\r\n");
JackB 0:a3b629f6dab5 653 // break;
JackB 0:a3b629f6dab5 654 case RCC_SYSCLKSOURCE_STATUS_HSI:
JackB 0:a3b629f6dab5 655 printf("HSI used as system clock.\r\n");
JackB 0:a3b629f6dab5 656 break;
JackB 0:a3b629f6dab5 657 case RCC_SYSCLKSOURCE_STATUS_HSE:
JackB 0:a3b629f6dab5 658 printf("HSE used as system clock.\r\n");
JackB 0:a3b629f6dab5 659 break;
JackB 0:a3b629f6dab5 660 case RCC_SYSCLKSOURCE_STATUS_PLLCLK:
JackB 0:a3b629f6dab5 661 printf("PLL used as system clock.\r\n");
JackB 0:a3b629f6dab5 662 // if ((RCC->CFGR & RCC_CFGR_PLLSRC) == RCC_CFGR_PLLSRC_HSE) {
JackB 0:a3b629f6dab5 663 // printf("HSE oscillator clock selected as PLL input clock.\r\n");
JackB 0:a3b629f6dab5 664 // }
JackB 0:a3b629f6dab5 665 // else {
JackB 0:a3b629f6dab5 666 // printf("HSI16 oscillator clock selected as PLL input clock.\r\n");
JackB 0:a3b629f6dab5 667 // }
JackB 0:a3b629f6dab5 668 break;
JackB 0:a3b629f6dab5 669 }
JackB 0:a3b629f6dab5 670
JackB 0:a3b629f6dab5 671 printf("HCE Information: \r\n");
JackB 0:a3b629f6dab5 672
JackB 0:a3b629f6dab5 673 if (READ_BIT(RCC->CR, RCC_CR_HSEON)){
JackB 0:a3b629f6dab5 674 printf("RCC_CR_HSEON = 1 \r\n");
JackB 0:a3b629f6dab5 675 }
JackB 0:a3b629f6dab5 676 else{
JackB 0:a3b629f6dab5 677 printf("RCC_CR_HSEON = 0 \r\n");
JackB 0:a3b629f6dab5 678 }
JackB 0:a3b629f6dab5 679
JackB 0:a3b629f6dab5 680 if (READ_BIT(RCC->CR, RCC_CR_HSEBYP)){
JackB 0:a3b629f6dab5 681 printf("RCC_CR_HSEBYP = 1 \r\n");
JackB 0:a3b629f6dab5 682 }
JackB 0:a3b629f6dab5 683 else{
JackB 0:a3b629f6dab5 684 printf("RCC_CR_HSEBYP = 0 \r\n");
JackB 0:a3b629f6dab5 685 }
JackB 0:a3b629f6dab5 686
JackB 0:a3b629f6dab5 687 if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) {
JackB 0:a3b629f6dab5 688 printf("RCC_FLAG_HSERDY = 1 \r\n");
JackB 0:a3b629f6dab5 689 }
JackB 0:a3b629f6dab5 690 else {
JackB 0:a3b629f6dab5 691 printf("RCC_FLAG_HSERDY = 0 \r\n");
JackB 0:a3b629f6dab5 692 }
JackB 0:a3b629f6dab5 693
JackB 0:a3b629f6dab5 694
JackB 0:a3b629f6dab5 695 printf("\n");
JackB 0:a3b629f6dab5 696 // I2C_List.List();
JackB 0:a3b629f6dab5 697
JackB 0:a3b629f6dab5 698 // printf("Searching for I2C devices...\n");
JackB 0:a3b629f6dab5 699 // int count = 0;
JackB 0:a3b629f6dab5 700 // for (int address=0; address<256; address+=2) {
JackB 0:a3b629f6dab5 701 // if (!i2c.write(address, NULL, 0)) { // 0 returned is ok
JackB 0:a3b629f6dab5 702 // count++;
JackB 0:a3b629f6dab5 703 // printf("%2d: 0x%02X\n", count, address);
JackB 0:a3b629f6dab5 704 // }
JackB 0:a3b629f6dab5 705 // }
JackB 0:a3b629f6dab5 706 // printf("%d I2C devices found\n", count);
JackB 0:a3b629f6dab5 707
JackB 0:a3b629f6dab5 708 wdt.Configure(WDT_TIMEOUT);
JackB 0:a3b629f6dab5 709
JackB 0:a3b629f6dab5 710 timer.start();
JackB 0:a3b629f6dab5 711 double my_time = timer.read();
JackB 0:a3b629f6dab5 712
JackB 0:a3b629f6dab5 713 int error = 0;
JackB 0:a3b629f6dab5 714 printf("Welcome to the FAT32 filesystem example.\n");
JackB 0:a3b629f6dab5 715
JackB 0:a3b629f6dab5 716 // printf("Formatting a FAT, SD-Card filesystem... "); // "Formatting a FAT, RAM-backed filesystem... "
JackB 0:a3b629f6dab5 717 // fflush(stdout);
JackB 0:a3b629f6dab5 718 // error = FATFileSystem::format(&sd);
JackB 0:a3b629f6dab5 719 // return_error(error);
JackB 0:a3b629f6dab5 720
JackB 0:a3b629f6dab5 721 printf("Mounting the filesystem on \"/fs\"... ");
JackB 0:a3b629f6dab5 722 fflush(stdout);
JackB 0:a3b629f6dab5 723 // Initialize the SD card device and print the memory layout
JackB 0:a3b629f6dab5 724 sd.init();
JackB 0:a3b629f6dab5 725 error = fs.mount(&sd);
JackB 0:a3b629f6dab5 726 return_error(error);
JackB 0:a3b629f6dab5 727 printf("sd size: %llu Bytes.\n", sd.size());
JackB 0:a3b629f6dab5 728 // printf("sd read size: %llu\n", sd.get_read_size());
JackB 0:a3b629f6dab5 729 // printf("sd program size: %llu\n", sd.get_program_size());
JackB 0:a3b629f6dab5 730 // printf("sd erase size: %llu\n", sd.get_erase_size());
JackB 0:a3b629f6dab5 731
JackB 0:a3b629f6dab5 732 // // Initialize the SPI flash device and print the memory layout
JackB 0:a3b629f6dab5 733 // spif.init();
JackB 0:a3b629f6dab5 734 // printf("spif size: %llu\n", spif.size());
JackB 0:a3b629f6dab5 735 // printf("spif read size: %llu\n", spif.get_read_size());
JackB 0:a3b629f6dab5 736 // printf("spif program size: %llu\n", spif.get_program_size());
JackB 0:a3b629f6dab5 737 // printf("spif erase size: %llu\n", spif.get_erase_size());
JackB 0:a3b629f6dab5 738
JackB 0:a3b629f6dab5 739 // printf("Mounting the filesystem on \"/eefs\"... ");
JackB 0:a3b629f6dab5 740 fflush(stdout);
JackB 0:a3b629f6dab5 741
JackB 0:a3b629f6dab5 742 // // Initialize the EEPROM and print the memory layout
JackB 0:a3b629f6dab5 743 // ee.init();
JackB 0:a3b629f6dab5 744 //// error = eefs.mount(&i2cee);
JackB 0:a3b629f6dab5 745 //// return_error(error);
JackB 0:a3b629f6dab5 746 // printf("ee size: %llu Bytes.\n", ee.size());
JackB 0:a3b629f6dab5 747 // printf("ee read size: %llu\n", ee.get_read_size());
JackB 0:a3b629f6dab5 748 // printf("ee program size: %llu\n", ee.get_program_size());
JackB 0:a3b629f6dab5 749 // printf("ee erase size: %llu\n", ee.get_erase_size());
JackB 0:a3b629f6dab5 750
JackB 0:a3b629f6dab5 751 // printf("Send 1000 SPI packets as fast as possible...\n");
JackB 0:a3b629f6dab5 752 // uint8_t data[1000];
JackB 0:a3b629f6dab5 753 // for (int i = 0; i<1000; i++)
JackB 0:a3b629f6dab5 754 // data[i] = (uint8_t) (i & 0xff);
JackB 0:a3b629f6dab5 755 // //Send 1000 SPI packets as fast as possible
JackB 0:a3b629f6dab5 756 // bspi.setFormat();
JackB 0:a3b629f6dab5 757 // timer.reset();
JackB 0:a3b629f6dab5 758 // for (int i = 0; i<1000; i++)
JackB 0:a3b629f6dab5 759 // bspi.fastWrite(data[i]);
JackB 0:a3b629f6dab5 760 // my_time = timer.read();
JackB 0:a3b629f6dab5 761 // bspi.clearRX();
JackB 0:a3b629f6dab5 762 // printf("Time: %f.\n", my_time);
JackB 0:a3b629f6dab5 763 //
JackB 0:a3b629f6dab5 764 // rspi.format(8, 0); // 8 bit spi mode 0
JackB 0:a3b629f6dab5 765 // rspi.frequency(54000000);
JackB 0:a3b629f6dab5 766 // timer.reset();
JackB 0:a3b629f6dab5 767 // for (int i = 0; i<1000; i++)
JackB 0:a3b629f6dab5 768 // rspi.write(data[i]);
JackB 0:a3b629f6dab5 769 // my_time = timer.read();
JackB 0:a3b629f6dab5 770 // printf("Time: %f.\n", my_time);
JackB 0:a3b629f6dab5 771
JackB 0:a3b629f6dab5 772 // printf("----------\n");
JackB 0:a3b629f6dab5 773 // printf("EEPROM string...\n");
JackB 0:a3b629f6dab5 774 // timer.reset();
JackB 0:a3b629f6dab5 775 // // --- Save a string into EEPROM and read it back ---
JackB 0:a3b629f6dab5 776 // uint8_t block_size = 32;
JackB 0:a3b629f6dab5 777 // ee.erase(0, block_size);
JackB 0:a3b629f6dab5 778 // // Write "Hello World!" to the first block
JackB 0:a3b629f6dab5 779 // char hello[] = "Hello World!";
JackB 0:a3b629f6dab5 780 // printf("Save \"%s\"\n", hello);
JackB 0:a3b629f6dab5 781 // char *buffer = (char*)malloc(block_size);
JackB 0:a3b629f6dab5 782 // sprintf(buffer, "%s", hello);
JackB 0:a3b629f6dab5 783 // // Program EEPROM
JackB 0:a3b629f6dab5 784 // ee.program(buffer, 0, block_size);
JackB 0:a3b629f6dab5 785 // sprintf(buffer, "empty\n"); // empty buffer, not nessesary but helps when debugging
JackB 0:a3b629f6dab5 786 // // Read back what was stored
JackB 0:a3b629f6dab5 787 // ee.read(buffer, 0, block_size);
JackB 0:a3b629f6dab5 788 // printf("Read \"%s\"\n", buffer);
JackB 0:a3b629f6dab5 789 // my_time = timer.read();
JackB 0:a3b629f6dab5 790 // printf("Time: %f.\n", my_time);
JackB 0:a3b629f6dab5 791 //
JackB 0:a3b629f6dab5 792 //
JackB 0:a3b629f6dab5 793 // printf("----------\n");
JackB 0:a3b629f6dab5 794 // printf("EEPROM struct...\n");
JackB 0:a3b629f6dab5 795 // timer.reset();
JackB 0:a3b629f6dab5 796 // // --- Save a structure into EEPROM and read it back ---
JackB 0:a3b629f6dab5 797 // // No. of bytes to be stored, but topped up to be multiplied by block size
JackB 0:a3b629f6dab5 798 // unsigned int setting_block_size = ceil(sizeof(setting)/(double)EE_BLOCK_SIZE)*EE_BLOCK_SIZE;
JackB 0:a3b629f6dab5 799 // printf("No. of bytes to be stored: %d\n", setting_block_size);
JackB 0:a3b629f6dab5 800 // // Temporary buffer
JackB 0:a3b629f6dab5 801 // char *buffer2 = (char*)malloc(setting_block_size);
JackB 0:a3b629f6dab5 802 // // Save the struct to EEPROM
JackB 0:a3b629f6dab5 803 // setting.version = 56;
JackB 0:a3b629f6dab5 804 // printf("Save struct version: %u, name: %s, value: %3.10lf\n", setting.version, setting.name, setting.value);
JackB 0:a3b629f6dab5 805 // memcpy(buffer2, &setting, sizeof(setting));
JackB 0:a3b629f6dab5 806 // // Program EEPROM
JackB 0:a3b629f6dab5 807 // ee.program(buffer2, 0, setting_block_size);
JackB 0:a3b629f6dab5 808 // // Read back what was stored
JackB 0:a3b629f6dab5 809 // t_setting tmp; // Re-make the struct
JackB 0:a3b629f6dab5 810 // memset(buffer2, 0, sizeof(buffer2)); // empty buffer, not nessesary but helps when debugging
JackB 0:a3b629f6dab5 811 // // Read the struct from the EEPROM
JackB 0:a3b629f6dab5 812 // if (ee.read(buffer2, 0, setting_block_size ) == 0) { // get data into buffer
JackB 0:a3b629f6dab5 813 // // Convert what we read into struct
JackB 0:a3b629f6dab5 814 // memcpy(&tmp, buffer2, sizeof(tmp)); // copy only size of struct not setting_block_size
JackB 0:a3b629f6dab5 815 // printf("Read struct version: %u, name: %s, value: %3.10lf\n", tmp.version, tmp.name, tmp.value);
JackB 0:a3b629f6dab5 816 // } else {
JackB 0:a3b629f6dab5 817 // printf("Error when reading\n");
JackB 0:a3b629f6dab5 818 // }
JackB 0:a3b629f6dab5 819 // my_time = timer.read();
JackB 0:a3b629f6dab5 820 // printf("Time: %f.\n", my_time);
JackB 0:a3b629f6dab5 821
JackB 0:a3b629f6dab5 822 //
JackB 0:a3b629f6dab5 823 // char filename[] = "/fs/my_text_file.txt";
JackB 0:a3b629f6dab5 824 //
JackB 0:a3b629f6dab5 825 // printf("Opening a new file, \"/%s\"...", filename);
JackB 0:a3b629f6dab5 826 // fflush(stdout);
JackB 0:a3b629f6dab5 827 // FILE* fd = fopen(filename, "w");
JackB 0:a3b629f6dab5 828 // errno_error(fd);
JackB 0:a3b629f6dab5 829 //
JackB 0:a3b629f6dab5 830 // printf("Writing text to a file:\n");
JackB 0:a3b629f6dab5 831 // char text[] = "Hello world!\nThis is just some text...\n";
JackB 0:a3b629f6dab5 832 // printf("\033[1;37m%s\033[0m", text);
JackB 0:a3b629f6dab5 833 // fprintf(fd, "%s", text);
JackB 0:a3b629f6dab5 834 //
JackB 0:a3b629f6dab5 835 //// for (int i = 0; i < 10; i++) {
JackB 0:a3b629f6dab5 836 //// printf("%d/20\n", i);
JackB 0:a3b629f6dab5 837 //// fprintf(fd, "%d\n", i);
JackB 0:a3b629f6dab5 838 //// }
JackB 0:a3b629f6dab5 839 //// printf("Writing decimal numbers to a file (10/10) done.\n");
JackB 0:a3b629f6dab5 840 // printf("Writing text to a file done.\n");
JackB 0:a3b629f6dab5 841 //
JackB 0:a3b629f6dab5 842 // printf("Closing file...");
JackB 0:a3b629f6dab5 843 //// fflush(stdout);
JackB 0:a3b629f6dab5 844 // fclose(fd);
JackB 0:a3b629f6dab5 845 // printf(" done.\r\n");
JackB 0:a3b629f6dab5 846 //
JackB 0:a3b629f6dab5 847 // printf("Re-opening file read-only...");
JackB 0:a3b629f6dab5 848 //// fflush(stdout);
JackB 0:a3b629f6dab5 849 // fd = fopen(filename, "r");
JackB 0:a3b629f6dab5 850 // errno_error(fd);
JackB 0:a3b629f6dab5 851 //
JackB 0:a3b629f6dab5 852 // printf("Dumping file to screen:\n");
JackB 0:a3b629f6dab5 853 // printf("\033[1;37m");
JackB 0:a3b629f6dab5 854 // char buff[16] = {0};
JackB 0:a3b629f6dab5 855 // while (!feof(fd)) {
JackB 0:a3b629f6dab5 856 // int size = fread(&buff[0], 1, 15, fd);
JackB 0:a3b629f6dab5 857 // fwrite(&buff[0], 1, size, stdout);
JackB 0:a3b629f6dab5 858 // }
JackB 0:a3b629f6dab5 859 // printf("\033[0m");
JackB 0:a3b629f6dab5 860 // printf("Closing file...");
JackB 0:a3b629f6dab5 861 //// fflush(stdout);
JackB 0:a3b629f6dab5 862 // fclose(fd);
JackB 0:a3b629f6dab5 863 // printf(" done.\r\n");
JackB 0:a3b629f6dab5 864 //
JackB 0:a3b629f6dab5 865 // printf("Opening root directory...");
JackB 0:a3b629f6dab5 866 // fflush(stdout);
JackB 0:a3b629f6dab5 867 // DIR* dir = opendir("/fs/");
JackB 0:a3b629f6dab5 868 // errno_error(fd);
JackB 0:a3b629f6dab5 869 //
JackB 0:a3b629f6dab5 870 // struct dirent* de;
JackB 0:a3b629f6dab5 871 // printf("Printing all filenames:\n");
JackB 0:a3b629f6dab5 872 // printf("\033[1;37m");
JackB 0:a3b629f6dab5 873 // while((de = readdir(dir)) != NULL) {
JackB 0:a3b629f6dab5 874 // printf(" %s\r\n", &(de->d_name)[0]);
JackB 0:a3b629f6dab5 875 // }
JackB 0:a3b629f6dab5 876 // printf("\033[0m");
JackB 0:a3b629f6dab5 877 //
JackB 0:a3b629f6dab5 878 // printf("Closing root directory... ");
JackB 0:a3b629f6dab5 879 // fflush(stdout);
JackB 0:a3b629f6dab5 880 // error = closedir(dir);
JackB 0:a3b629f6dab5 881 // return_error(error);
JackB 0:a3b629f6dab5 882 // printf("Filesystem Demo complete.\n");
JackB 0:a3b629f6dab5 883
JackB 0:a3b629f6dab5 884
JackB 0:a3b629f6dab5 885 // printf("Start FRAM Demo.\n");
JackB 0:a3b629f6dab5 886 // char wdata[] = "Hello world!";
JackB 0:a3b629f6dab5 887 // char rdata[14];
JackB 0:a3b629f6dab5 888 // fram.write(0, wdata, 13); // 12 symbols + zero terminator
JackB 0:a3b629f6dab5 889 // fram.read(0, rdata, 13);
JackB 0:a3b629f6dab5 890 // pc.printf("data: %s", rdata);
JackB 0:a3b629f6dab5 891 // printf("Done.\n");
JackB 0:a3b629f6dab5 892
JackB 0:a3b629f6dab5 893
JackB 0:a3b629f6dab5 894 // Set screen rotation
JackB 0:a3b629f6dab5 895 // TFT.SetRotate(2); // Rotate 90 CCW to portrait
JackB 0:a3b629f6dab5 896 // TFT.SetRotate(3); // Rotate 90 CW to portrait
JackB 0:a3b629f6dab5 897
JackB 0:a3b629f6dab5 898 // TFT.SetOrientation(FT8_DISPLAY_LANDSCAPE_0);
JackB 0:a3b629f6dab5 899 TFT.SetOrientation(FT8_DISPLAY_PORTRAIT_90CW); // CM3000
JackB 0:a3b629f6dab5 900 // TFT.SetOrientation(FT8_DISPLAY_PORTRAIT_90CCW); // CM3000
JackB 0:a3b629f6dab5 901
JackB 0:a3b629f6dab5 902 // ap3000.SetBacklight((uint16_t)255);
JackB 0:a3b629f6dab5 903
JackB 0:a3b629f6dab5 904 // TFT.Calibrate(); // calibrate the touch screen
JackB 0:a3b629f6dab5 905 // // Read calibrate registers
JackB 0:a3b629f6dab5 906 // printf("// Calibration values:\n");
JackB 0:a3b629f6dab5 907 // printf(" ft_uint32_t canned_calibration_data[] = {\n");
JackB 0:a3b629f6dab5 908 // for(int i = 0; i < 24; i+=4) {
JackB 0:a3b629f6dab5 909 // printf(" ");
JackB 0:a3b629f6dab5 910 // printf("0x%08x", TFT.read_calibrate_reg32(i));
JackB 0:a3b629f6dab5 911 // if (i < 20)
JackB 0:a3b629f6dab5 912 // printf(",");
JackB 0:a3b629f6dab5 913 // printf("\n");
JackB 0:a3b629f6dab5 914 // }
JackB 0:a3b629f6dab5 915 // printf(" };\n");
JackB 0:a3b629f6dab5 916 // printf(" TFT.write_calibrate32(canned_calibration_data);\n");
JackB 0:a3b629f6dab5 917
JackB 0:a3b629f6dab5 918 // Default
JackB 0:a3b629f6dab5 919 // ft_uint32_t canned_calibration_data[] = {
JackB 0:a3b629f6dab5 920 // 0x00000000,
JackB 0:a3b629f6dab5 921 // 0x00010000,
JackB 0:a3b629f6dab5 922 // 0x00000000,
JackB 0:a3b629f6dab5 923 // 0xffff0000,
JackB 0:a3b629f6dab5 924 // 0x00000000,
JackB 0:a3b629f6dab5 925 // 0x031f0000
JackB 0:a3b629f6dab5 926 // };
JackB 0:a3b629f6dab5 927 // TFT.write_calibrate32(canned_calibration_data);
JackB 0:a3b629f6dab5 928
JackB 0:a3b629f6dab5 929
JackB 0:a3b629f6dab5 930 // Landscape 0
JackB 0:a3b629f6dab5 931 // ft_uint32_t canned_calibration_data[] = {
JackB 0:a3b629f6dab5 932 // 0x000109b0, // 68016
JackB 0:a3b629f6dab5 933 // 0x0000023d, // 573
JackB 0:a3b629f6dab5 934 // 0x0000fa64, // 64100
JackB 0:a3b629f6dab5 935 // 0xffffffcf, // -49
JackB 0:a3b629f6dab5 936 // 0xfffefc9a, // -66406
JackB 0:a3b629f6dab5 937 // 0x01ee8754 // 32409428
JackB 0:a3b629f6dab5 938 // };
JackB 0:a3b629f6dab5 939 // TFT.write_calibrate32(canned_calibration_data);
JackB 0:a3b629f6dab5 940
JackB 0:a3b629f6dab5 941 // Calibration rotate 90 CCW to portrait
JackB 0:a3b629f6dab5 942 // ft_uint32_t canned_calibration_data[] = {
JackB 0:a3b629f6dab5 943 // 0x00000491,
JackB 0:a3b629f6dab5 944 // 0x0000fd0b,
JackB 0:a3b629f6dab5 945 // 0xfff6f84b,
JackB 0:a3b629f6dab5 946 // 0x00010503,
JackB 0:a3b629f6dab5 947 // 0x000006b7,
JackB 0:a3b629f6dab5 948 // 0xffeeb0b7
JackB 0:a3b629f6dab5 949 // };
JackB 0:a3b629f6dab5 950 // TFT.write_calibrate32(canned_calibration_data);
JackB 0:a3b629f6dab5 951
JackB 0:a3b629f6dab5 952 // // Calibration rotate 90 CW to portrait
JackB 0:a3b629f6dab5 953 // ft_uint32_t canned_calibration_data[] = {
JackB 0:a3b629f6dab5 954 // 0xfffff994,
JackB 0:a3b629f6dab5 955 // 0xffff07d3,
JackB 0:a3b629f6dab5 956 // 0x01e4b85c,
JackB 0:a3b629f6dab5 957 // 0xfffef6f5,
JackB 0:a3b629f6dab5 958 // 0x000002ad,
JackB 0:a3b629f6dab5 959 // 0x032eb4d4
JackB 0:a3b629f6dab5 960 // };
JackB 0:a3b629f6dab5 961 // TFT.write_calibrate32(canned_calibration_data);
JackB 0:a3b629f6dab5 962
JackB 0:a3b629f6dab5 963 // // Read calibrate registers
JackB 0:a3b629f6dab5 964 // printf("// Calibration values:\n");
JackB 0:a3b629f6dab5 965 // printf(" ft_uint32_t canned_calibration_data[] = {\n");
JackB 0:a3b629f6dab5 966 // for(int i = 0; i < 24; i+=4) {
JackB 0:a3b629f6dab5 967 // printf(" ");
JackB 0:a3b629f6dab5 968 // printf("0x%08x", TFT.read_calibrate_reg32(i));
JackB 0:a3b629f6dab5 969 // if (i < 20)
JackB 0:a3b629f6dab5 970 // printf(",");
JackB 0:a3b629f6dab5 971 // printf("\n");
JackB 0:a3b629f6dab5 972 // }
JackB 0:a3b629f6dab5 973 // printf(" };\n");
JackB 0:a3b629f6dab5 974 // printf(" TFT.write_calibrate32(canned_calibration_data);\n");
JackB 0:a3b629f6dab5 975
JackB 0:a3b629f6dab5 976
JackB 0:a3b629f6dab5 977
JackB 0:a3b629f6dab5 978
JackB 0:a3b629f6dab5 979
JackB 0:a3b629f6dab5 980
JackB 0:a3b629f6dab5 981 //
JackB 0:a3b629f6dab5 982 // TFT.DL(CLEAR(1, 1, 1)); // clear buffers -> color buffer,stencil buffer, tag buffer
JackB 0:a3b629f6dab5 983 // TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // set the clear color to white
JackB 0:a3b629f6dab5 984 // TFT.DL(SAVE_CONTEXT());
JackB 0:a3b629f6dab5 985
JackB 0:a3b629f6dab5 986 // TFT.DL(BEGIN(BITMAPS));
JackB 0:a3b629f6dab5 987 //
JackB 0:a3b629f6dab5 988 // TFT.DL(BLEND_FUNC(ONE,ZERO));
JackB 0:a3b629f6dab5 989 // TFT.DL(COLOR_A(0x55));
JackB 0:a3b629f6dab5 990 // TFT.DL(VERTEX2II(0, 0, 0, 0));
JackB 0:a3b629f6dab5 991 // TFT.DL(BLEND_FUNC(ONE,ONE));
JackB 0:a3b629f6dab5 992 // TFT.DL(COLOR_A(0xAA));
JackB 0:a3b629f6dab5 993 // TFT.DL(VERTEX2II(0, 0, 0, 1));
JackB 0:a3b629f6dab5 994 // TFT.DL(COLOR_MASK(1,1,1,0));
JackB 0:a3b629f6dab5 995 // TFT.Scale(4*65536,4*65536);
JackB 0:a3b629f6dab5 996 // TFT.SetMatrix();
JackB 0:a3b629f6dab5 997 // TFT.DL(BLEND_FUNC(DST_ALPHA,ZERO));
JackB 0:a3b629f6dab5 998 // TFT.DL(VERTEX2II(0, 0, 2, 1));
JackB 0:a3b629f6dab5 999 // TFT.DL(BLEND_FUNC(ONE_MINUS_DST_ALPHA,ONE));
JackB 0:a3b629f6dab5 1000 // TFT.DL(VERTEX2II(0, 0, 2, 0));
JackB 0:a3b629f6dab5 1001 //
JackB 0:a3b629f6dab5 1002 // TFT.DL(RESTORE_CONTEXT());
JackB 0:a3b629f6dab5 1003
JackB 0:a3b629f6dab5 1004
JackB 0:a3b629f6dab5 1005 // // NMEA0183 Test
JackB 0:a3b629f6dab5 1006
JackB 0:a3b629f6dab5 1007 int status = nmea0183.CheckParity("$PVMAL,A,R1,F3A8,C000,0030*34");
JackB 0:a3b629f6dab5 1008 printf("nmea0183.CheckParity %d\n", status);
JackB 0:a3b629f6dab5 1009
JackB 0:a3b629f6dab5 1010
JackB 0:a3b629f6dab5 1011 //image images2[] = {
JackB 0:a3b629f6dab5 1012 // {"/fs/BACKGROUND_01_C_20x20_BL.bin", L8, 20, 20},
JackB 0:a3b629f6dab5 1013 // {"/fs/BACKGROUND_01_C_20x20_BR.bin", L8, 20, 20},
JackB 0:a3b629f6dab5 1014 // {"/fs/BACKGROUND_01_C_20x20_TL.bin", L8, 20, 20},
JackB 0:a3b629f6dab5 1015 // {"/fs/BACKGROUND_01_C_20x20_TR.bin", L8, 20, 20},
JackB 0:a3b629f6dab5 1016 //
JackB 0:a3b629f6dab5 1017 // {"/fs/BACKGROUND_01_H_5x4.bin", L8, 5, 4},
JackB 0:a3b629f6dab5 1018 // {"/fs/BACKGROUND_01_H_10x4.bin", L8, 10, 4},
JackB 0:a3b629f6dab5 1019 // {"/fs/BACKGROUND_01_H_25x4.bin", L8, 25, 4},
JackB 0:a3b629f6dab5 1020 // {"/fs/BACKGROUND_01_H_190x4.bin", L8, 190, 4},
JackB 0:a3b629f6dab5 1021 // {"/fs/BACKGROUND_01_V_4x535.bin", L8, 4, 535},
JackB 0:a3b629f6dab5 1022 // {"/fs/BACKGROUND_01_V_4x21.bin", L8, 4, 21},
JackB 0:a3b629f6dab5 1023 //
JackB 0:a3b629f6dab5 1024 // {"/fs/RegularButtonRed_220x51r.bin", ARGB4, 220, 51},
JackB 0:a3b629f6dab5 1025 // {"/fs/RegularButtonBlk_220x51r4t.bin", ARGB4, 220, 51},
JackB 0:a3b629f6dab5 1026 // {"/fs/RegularButtonGray_220x51r0r10t.bin", ARGB4, 220, 51},
JackB 0:a3b629f6dab5 1027 // {"/fs/RegularButtonRed_220x51r0r10t.bin", ARGB4, 220, 51},
JackB 0:a3b629f6dab5 1028 // {"/fs/RegularButtonYel_220x51r0r10t.bin", ARGB4, 220, 51},
JackB 0:a3b629f6dab5 1029 //
JackB 0:a3b629f6dab5 1030 // {"/fs/RegulaButtonrBlk_220x51r0t.bin", ARGB4, 220, 51},
JackB 0:a3b629f6dab5 1031 // {"/fs/RegularButtonGray_220x51r0t.bin", ARGB4, 220, 51},
JackB 0:a3b629f6dab5 1032 // {"/fs/RegularButtonRed_220x51r0t.bin", ARGB4, 220, 51},
JackB 0:a3b629f6dab5 1033 // {"/fs/RegularButtonYel_220x51r0t.bin", ARGB4, 220, 51},
JackB 0:a3b629f6dab5 1034 //
JackB 0:a3b629f6dab5 1035 // {"/fs/SwitchOn_234x132_blk.bin", L8, 234, 132},
JackB 0:a3b629f6dab5 1036 // {"/fs/SwitchOff_234x132_blk.bin", L8, 234, 132},
JackB 0:a3b629f6dab5 1037 // {"/fs/SwitchOn_100x132_blk.bin", L8, 100, 132},
JackB 0:a3b629f6dab5 1038 // {"/fs/SwitchOff_100x132_blk.bin", L8, 234, 132},
JackB 0:a3b629f6dab5 1039 // {"/fs/SwitchOn_115x66_t.bin", L8, 115, 66},
JackB 0:a3b629f6dab5 1040 // {"/fs/SwitchOff_115x66_t.bin", L8, 115, 66},
JackB 0:a3b629f6dab5 1041 //
JackB 0:a3b629f6dab5 1042 // {"/fs/MD_DISABLED_230x70.bin", ARGB4, 230, 70},
JackB 0:a3b629f6dab5 1043 // {"/fs/MD_OFF_230x70.bin", ARGB4, 230, 70},
JackB 0:a3b629f6dab5 1044 // {"/fs/MD_OFF_GREY_230x70.bin", ARGB4, 230, 70},
JackB 0:a3b629f6dab5 1045 // {"/fs/MD_RUNNING_230x70.bin", ARGB4, 230, 70},
JackB 0:a3b629f6dab5 1046 // {"/fs/MD_WARNING_230x70.bin", ARGB4, 230, 70},
JackB 0:a3b629f6dab5 1047 //
JackB 0:a3b629f6dab5 1048 // {"/fs/RUN_TIME_C_ON_21_X_21.bin", ARGB4, 21, 21},
JackB 0:a3b629f6dab5 1049 // {"/fs/RUN_TIME_C_OFF_21_X_21.bin", ARGB4, 21, 21},
JackB 0:a3b629f6dab5 1050 // {"/fs/RUN_TIME_L_ON_21_X_21.bin", ARGB4, 21, 21},
JackB 0:a3b629f6dab5 1051 // {"/fs/RUN_TIME_L_OFF_21_X_21.bin", ARGB4, 21, 21},
JackB 0:a3b629f6dab5 1052 // {"/fs/RUN_TIME_R_ON_21_X_21.bin", ARGB4, 21, 21},
JackB 0:a3b629f6dab5 1053 // {"/fs/RUN_TIME_R_OFF_21_X_21.bin", ARGB4, 21, 21}
JackB 0:a3b629f6dab5 1054 //};
JackB 0:a3b629f6dab5 1055 // uint16_t entries = sizeof(images2) / sizeof(images2[0]);
JackB 0:a3b629f6dab5 1056 // printf("--- images2[] %d\n", entries);
JackB 0:a3b629f6dab5 1057 // for (int i = 0; i < entries; i++) {
JackB 0:a3b629f6dab5 1058 // printf("%3d - %s, %d, %d, %d\n", i, images2[i].name, images2[i].fmt, images2[i].w, images2[i].h);
JackB 0:a3b629f6dab5 1059 // }
JackB 0:a3b629f6dab5 1060
JackB 0:a3b629f6dab5 1061 // TFT.SetLoadAddress(0);
JackB 0:a3b629f6dab5 1062 // TFT.SetBitmapCount(0);
JackB 0:a3b629f6dab5 1063
JackB 0:a3b629f6dab5 1064
JackB 0:a3b629f6dab5 1065
JackB 0:a3b629f6dab5 1066
JackB 0:a3b629f6dab5 1067
JackB 0:a3b629f6dab5 1068
JackB 0:a3b629f6dab5 1069
JackB 0:a3b629f6dab5 1070
JackB 0:a3b629f6dab5 1071
JackB 0:a3b629f6dab5 1072 // ---------------------------------------- Load and show bitmaps ----------------------------------------
JackB 0:a3b629f6dab5 1073
JackB 0:a3b629f6dab5 1074
JackB 0:a3b629f6dab5 1075 // Splash Screen
JackB 0:a3b629f6dab5 1076 // printf("--------------\n");
JackB 0:a3b629f6dab5 1077 // printf("loadSplashScreen...\n");
JackB 0:a3b629f6dab5 1078 // timer.reset();
JackB 0:a3b629f6dab5 1079 // loadSplashScreen();
JackB 0:a3b629f6dab5 1080 // my_time = timer.read();
JackB 0:a3b629f6dab5 1081 // printf("Time: %f Sec.\n", my_time);
JackB 0:a3b629f6dab5 1082
JackB 0:a3b629f6dab5 1083 printf("--------------\n");
JackB 0:a3b629f6dab5 1084 printf("showSplashScreen...\n");
JackB 0:a3b629f6dab5 1085 timer.reset();
JackB 0:a3b629f6dab5 1086 showSplashScreen();
JackB 0:a3b629f6dab5 1087 my_time = timer.read();
JackB 0:a3b629f6dab5 1088 printf("Time: %f Sec.\n", my_time);
JackB 0:a3b629f6dab5 1089
JackB 0:a3b629f6dab5 1090 // wait(3);
JackB 0:a3b629f6dab5 1091
JackB 0:a3b629f6dab5 1092 printf("--------------\n");
JackB 0:a3b629f6dab5 1093 printf("loadBitmaps...\n");
JackB 0:a3b629f6dab5 1094 timer.reset();
JackB 0:a3b629f6dab5 1095
JackB 0:a3b629f6dab5 1096 loadBitmaps();
JackB 0:a3b629f6dab5 1097
JackB 0:a3b629f6dab5 1098 my_time = timer.read();
JackB 0:a3b629f6dab5 1099 printf("Time: %f Sec.\n", my_time);
JackB 0:a3b629f6dab5 1100
JackB 0:a3b629f6dab5 1101 uint32_t RamUsage = TFT.GetRamUsage();
JackB 0:a3b629f6dab5 1102 uint16_t GetRamNoOfBitmaps = TFT.GetRamNoOfBitmaps();
JackB 0:a3b629f6dab5 1103 printf("RAM usage: %d Bytes.\n", RamUsage);
JackB 0:a3b629f6dab5 1104 printf("RAM no of bitmaps: %d.\n", GetRamNoOfBitmaps);
JackB 0:a3b629f6dab5 1105
JackB 0:a3b629f6dab5 1106 printf("--------------\n");
JackB 0:a3b629f6dab5 1107 printf("showMainPage...\n");
JackB 0:a3b629f6dab5 1108 timer.reset();
JackB 0:a3b629f6dab5 1109
JackB 0:a3b629f6dab5 1110 InitAP3000();
JackB 0:a3b629f6dab5 1111
JackB 0:a3b629f6dab5 1112 // button my_button;
JackB 0:a3b629f6dab5 1113 // my_button.accept_alarm_pressed = 0;
JackB 0:a3b629f6dab5 1114 // my_button.accept_horn_pressed = 0;
JackB 0:a3b629f6dab5 1115 // my_button.set_pressed = 0;
JackB 0:a3b629f6dab5 1116 // my_button.dim_pressed = 0;
JackB 0:a3b629f6dab5 1117 //
JackB 0:a3b629f6dab5 1118 // indicator my_indicator;
JackB 0:a3b629f6dab5 1119 // my_indicator.rb_used = 1;
JackB 0:a3b629f6dab5 1120 // my_indicator.rb_main_most_used = 1;
JackB 0:a3b629f6dab5 1121 // my_indicator.rb_aux_most_used = 0;
JackB 0:a3b629f6dab5 1122 //
JackB 0:a3b629f6dab5 1123 // // INDICATOR_RUN_STATUS_OFF
JackB 0:a3b629f6dab5 1124 // // INDICATOR_RUN_STATUS_RUNNING
JackB 0:a3b629f6dab5 1125 // // INDICATOR_RUN_STATUS_WARNING
JackB 0:a3b629f6dab5 1126 // // INDICATOR_RUN_STATUS_OFF_RED
JackB 0:a3b629f6dab5 1127 // my_indicator.md_main_running = INDICATOR_RUN_STATUS_RUNNING;
JackB 0:a3b629f6dab5 1128 // my_indicator.md_aux_running = INDICATOR_RUN_STATUS_WARNING;
JackB 0:a3b629f6dab5 1129 //
JackB 0:a3b629f6dab5 1130 // // INDICATOR_ALARM_STATUS_OFF
JackB 0:a3b629f6dab5 1131 // // INDICATOR_ALARM_STATUS_WARNING
JackB 0:a3b629f6dab5 1132 // // INDICATOR_ALARM_STATUS_FAILURE
JackB 0:a3b629f6dab5 1133 // my_indicator.rb_main_phase_fail = INDICATOR_ALARM_STATUS_FAILURE;
JackB 0:a3b629f6dab5 1134 // my_indicator.rb_main_main_power = INDICATOR_ALARM_STATUS_FAILURE;
JackB 0:a3b629f6dab5 1135 // my_indicator.rb_main_ctrl_power = INDICATOR_ALARM_STATUS_FAILURE;
JackB 0:a3b629f6dab5 1136 // my_indicator.rb_main_oil_press = INDICATOR_ALARM_STATUS_FAILURE;
JackB 0:a3b629f6dab5 1137 // my_indicator.rb_main_hydr_lock = INDICATOR_ALARM_STATUS_OFF;
JackB 0:a3b629f6dab5 1138 // my_indicator.rb_main_overload = INDICATOR_ALARM_STATUS_WARNING;
JackB 0:a3b629f6dab5 1139 // my_indicator.rb_main_oil_level = INDICATOR_ALARM_STATUS_WARNING;
JackB 0:a3b629f6dab5 1140 // my_indicator.rb_main_oil_filter = INDICATOR_ALARM_STATUS_WARNING;
JackB 0:a3b629f6dab5 1141 // my_indicator.rb_main_oil_temp = INDICATOR_ALARM_STATUS_WARNING;
JackB 0:a3b629f6dab5 1142 //
JackB 0:a3b629f6dab5 1143 // my_indicator.rb_aux_phase_fail = INDICATOR_ALARM_STATUS_FAILURE;
JackB 0:a3b629f6dab5 1144 // my_indicator.rb_aux_main_power = INDICATOR_ALARM_STATUS_FAILURE;
JackB 0:a3b629f6dab5 1145 // my_indicator.rb_aux_ctrl_power = INDICATOR_ALARM_STATUS_FAILURE;
JackB 0:a3b629f6dab5 1146 // my_indicator.rb_aux_oil_press = INDICATOR_ALARM_STATUS_FAILURE;
JackB 0:a3b629f6dab5 1147 // my_indicator.rb_aux_hydr_lock = INDICATOR_ALARM_STATUS_OFF;
JackB 0:a3b629f6dab5 1148 // my_indicator.rb_aux_overload = INDICATOR_ALARM_STATUS_WARNING;
JackB 0:a3b629f6dab5 1149 // my_indicator.rb_aux_oil_level = INDICATOR_ALARM_STATUS_WARNING;
JackB 0:a3b629f6dab5 1150 // my_indicator.rb_aux_oil_filter = INDICATOR_ALARM_STATUS_WARNING;
JackB 0:a3b629f6dab5 1151 // my_indicator.rb_aux_oil_temp = INDICATOR_ALARM_STATUS_WARNING;
JackB 0:a3b629f6dab5 1152 //
JackB 0:a3b629f6dab5 1153 // my_indicator.rb_fu_failure = INDICATOR_ALARM_STATUS_FAILURE;
JackB 0:a3b629f6dab5 1154
JackB 0:a3b629f6dab5 1155 showMainPage();
JackB 0:a3b629f6dab5 1156 // wait(1);
JackB 0:a3b629f6dab5 1157
JackB 0:a3b629f6dab5 1158 // wait(1);
JackB 0:a3b629f6dab5 1159
JackB 0:a3b629f6dab5 1160 my_time = timer.read();
JackB 0:a3b629f6dab5 1161 printf("Time: %f Sec.\n", my_time);
JackB 0:a3b629f6dab5 1162
JackB 0:a3b629f6dab5 1163 TFT.Track( 3, 623, 234, 132, BUTTON_ACCEPT_ALARM_TAG);
JackB 0:a3b629f6dab5 1164 TFT.Track(243, 623, 234, 132, BUTTON_ACCEPT_HORN_TAG);
JackB 0:a3b629f6dab5 1165 TFT.Track( 5, 553, 115, 66, BUTTON_SET_TAG);
JackB 0:a3b629f6dab5 1166 TFT.Track(360, 553, 115, 66, BUTTON_DIM_TAG);
JackB 0:a3b629f6dab5 1167 TFT.Track( 10, 360, 220, 51, 100);
JackB 0:a3b629f6dab5 1168 TFT.Track(250, 360, 220, 51, 101);
JackB 0:a3b629f6dab5 1169
JackB 0:a3b629f6dab5 1170 Timer touchTimer;
JackB 0:a3b629f6dab5 1171 touchTimer.reset();
JackB 0:a3b629f6dab5 1172 touchTimer.start();
JackB 0:a3b629f6dab5 1173
JackB 0:a3b629f6dab5 1174 // setPumpRunningBlinkStatus(MAIN_SYSTEM, STEADY_RUNNING_ON);
JackB 0:a3b629f6dab5 1175 // setPumpRunningBlinkStatus(AUX_SYSTEM, BLINK_WARNING_ON);
JackB 0:a3b629f6dab5 1176 //
JackB 0:a3b629f6dab5 1177 // setAlarmBlinkStatus(MAIN_SYSTEM, OIL_PRESS, BLINK_FAILURE_ON);
JackB 0:a3b629f6dab5 1178 // setAlarmBlinkStatus(AUX_SYSTEM, HYDR_LOCK, BLINK_WARNING_ON);
JackB 0:a3b629f6dab5 1179 // setAlarmBlinkStatus(GLOBAL_SYSTEM, FU_FAILURE, BLINK_FAILURE_ON);
JackB 0:a3b629f6dab5 1180
JackB 0:a3b629f6dab5 1181 Timer minutes;
JackB 0:a3b629f6dab5 1182 minutes.reset();
JackB 0:a3b629f6dab5 1183 minutes.start();
JackB 0:a3b629f6dab5 1184 uint32_t noOfMinutes = 0;
JackB 0:a3b629f6dab5 1185
JackB 0:a3b629f6dab5 1186 uint32_t secondCount = 0;
JackB 0:a3b629f6dab5 1187 Timer seconds;
JackB 0:a3b629f6dab5 1188 seconds.reset();
JackB 0:a3b629f6dab5 1189 seconds.start();
JackB 0:a3b629f6dab5 1190 Timer timerWdt;
JackB 0:a3b629f6dab5 1191 timerWdt.reset();
JackB 0:a3b629f6dab5 1192 timerWdt.start();
JackB 0:a3b629f6dab5 1193 uint16_t tagvalOld = TAGVAL_NONE;
JackB 0:a3b629f6dab5 1194 while(1) {
JackB 0:a3b629f6dab5 1195 // Watch Dog Timer
JackB 0:a3b629f6dab5 1196 if (timerWdt.read() >= 1.0f) {
JackB 0:a3b629f6dab5 1197 timerWdt.reset();
JackB 0:a3b629f6dab5 1198 wdt.Service();
JackB 0:a3b629f6dab5 1199 TFT.SetTouchConfig(VAL_TOUCH_CONFIG);
JackB 0:a3b629f6dab5 1200 }
JackB 0:a3b629f6dab5 1201
JackB 0:a3b629f6dab5 1202 // Print time (check stability)
JackB 0:a3b629f6dab5 1203 if (minutes.read() >= 60.0f) {
JackB 0:a3b629f6dab5 1204 minutes.reset();
JackB 0:a3b629f6dab5 1205 noOfMinutes++;
JackB 0:a3b629f6dab5 1206 secondsEpoch = time(NULL);
JackB 0:a3b629f6dab5 1207 strftime(buffer, 32, "%a %d-%m-%Y %H:%M\n", localtime(&secondsEpoch));
JackB 0:a3b629f6dab5 1208 printf("Time: %s", buffer);
JackB 0:a3b629f6dab5 1209 }
JackB 0:a3b629f6dab5 1210
JackB 0:a3b629f6dab5 1211 // uint16_t tagval = TFT.GetTouchedTag();
JackB 0:a3b629f6dab5 1212 uint16_t tagval = TFT.GetTouchTag();
JackB 0:a3b629f6dab5 1213
JackB 0:a3b629f6dab5 1214 if(tagval != 0) { // touch -> get new values
JackB 0:a3b629f6dab5 1215 uint16_t tagX = TFT.GetTouchTagX();
JackB 0:a3b629f6dab5 1216 uint16_t tagY = TFT.GetTouchTagY();
JackB 0:a3b629f6dab5 1217 uint16_t TouchConfig = TFT.GetTouchConfig();
JackB 0:a3b629f6dab5 1218 // printf("GetTouchTagXY %d %d\n", tagX, tagY);
JackB 0:a3b629f6dab5 1219 // uint16_t tagval1 = TFT.GetTouchedTag(1);
JackB 0:a3b629f6dab5 1220 printf("GetTouchTagXY %d %d %04x\n", tagX, tagY, TouchConfig);
JackB 0:a3b629f6dab5 1221 // The touch screen is touched, the tag value (touch-id) greater than 0
JackB 0:a3b629f6dab5 1222 // However, we can ocasionally get random (invalid) touch id's
JackB 0:a3b629f6dab5 1223 // Therfore we validate the touch duration times
JackB 0:a3b629f6dab5 1224 // Valid touch events take about 0.15 Sec.
JackB 0:a3b629f6dab5 1225 // Invalid touch events take very short, not longer than about 0.025 Sec.
JackB 0:a3b629f6dab5 1226 // Now, we can also detect long press
JackB 0:a3b629f6dab5 1227 my_time = touchTimer.read();
JackB 0:a3b629f6dab5 1228 // printf("d: %f\n", time);
JackB 0:a3b629f6dab5 1229 if ((tagval != tagvalOld) && (my_time >= 0.035)) {
JackB 0:a3b629f6dab5 1230 // Execute below only once, if the touched tag (touch-id) changed
JackB 0:a3b629f6dab5 1231 printf("t %d\n", tagval);
JackB 0:a3b629f6dab5 1232 processButtonPressed(tagval);
JackB 0:a3b629f6dab5 1233 touchTimer.reset();
JackB 0:a3b629f6dab5 1234 showMainPage();
JackB 0:a3b629f6dab5 1235 tagvalOld = tagval;
JackB 0:a3b629f6dab5 1236 wait(0.01);
JackB 0:a3b629f6dab5 1237 }
JackB 0:a3b629f6dab5 1238 }
JackB 0:a3b629f6dab5 1239 else
JackB 0:a3b629f6dab5 1240 {
JackB 0:a3b629f6dab5 1241 // The touch screen is released, the tag value (touch-id) is 0
JackB 0:a3b629f6dab5 1242 if (tagvalOld != TAGVAL_NONE) {
JackB 0:a3b629f6dab5 1243 my_time = touchTimer.read();
JackB 0:a3b629f6dab5 1244 printf("r: %f\n", my_time);
JackB 0:a3b629f6dab5 1245 processButtonReleased();
JackB 0:a3b629f6dab5 1246 showMainPage();
JackB 0:a3b629f6dab5 1247 tagvalOld = TAGVAL_NONE;
JackB 0:a3b629f6dab5 1248 wait(0.01);
JackB 0:a3b629f6dab5 1249 }
JackB 0:a3b629f6dab5 1250 }
JackB 0:a3b629f6dab5 1251 updateAlarmLights();
JackB 0:a3b629f6dab5 1252
JackB 0:a3b629f6dab5 1253 // Create alarms at time intervals to test it
JackB 0:a3b629f6dab5 1254 if (seconds.read() >= 1.0f) {
JackB 0:a3b629f6dab5 1255 seconds.reset();
JackB 0:a3b629f6dab5 1256 secondCount++;
JackB 0:a3b629f6dab5 1257
JackB 0:a3b629f6dab5 1258 if (secondCount == 2) {
JackB 0:a3b629f6dab5 1259 setPumpRunningBlinkStatus(MAIN_SYSTEM, STEADY_RUNNING_ON);
JackB 0:a3b629f6dab5 1260 }
JackB 0:a3b629f6dab5 1261 if (secondCount == 4) {
JackB 0:a3b629f6dab5 1262 setAlarmBlinkStatus(MAIN_SYSTEM, OIL_PRESS, BLINK_FAILURE_ON);
JackB 0:a3b629f6dab5 1263 }
JackB 0:a3b629f6dab5 1264 if (secondCount == 6) {
JackB 0:a3b629f6dab5 1265 setAlarmBlinkStatus(AUX_SYSTEM, HYDR_LOCK, BLINK_WARNING_ON);
JackB 0:a3b629f6dab5 1266 }
JackB 0:a3b629f6dab5 1267 if (secondCount == 8) {
JackB 0:a3b629f6dab5 1268 setAlarmBlinkStatus(GLOBAL_SYSTEM, FU_FAILURE, BLINK_FAILURE_ON);
JackB 0:a3b629f6dab5 1269 }
JackB 0:a3b629f6dab5 1270 if (secondCount == 10) {
JackB 0:a3b629f6dab5 1271 setPumpRunningBlinkStatus(AUX_SYSTEM, STEADY_WARNING_ON);
JackB 0:a3b629f6dab5 1272 }
JackB 0:a3b629f6dab5 1273 if (secondCount == 12) {
JackB 0:a3b629f6dab5 1274 setAlarmBlinkStatus(MAIN_SYSTEM, OIL_PRESS, STEADY_FAILURE_ON);
JackB 0:a3b629f6dab5 1275 }
JackB 0:a3b629f6dab5 1276 if (secondCount == 14) {
JackB 0:a3b629f6dab5 1277 setAlarmBlinkStatus(AUX_SYSTEM, HYDR_LOCK, STEADY_WARNING_ON);
JackB 0:a3b629f6dab5 1278 }
JackB 0:a3b629f6dab5 1279 if (secondCount == 16) {
JackB 0:a3b629f6dab5 1280 setAlarmBlinkStatus(GLOBAL_SYSTEM, FU_FAILURE, STEADY_FAILURE_ON);
JackB 0:a3b629f6dab5 1281 }
JackB 0:a3b629f6dab5 1282 if (secondCount == 18) {
JackB 0:a3b629f6dab5 1283 setPumpInUse(PUMP_IN_USE_MAIN);
JackB 0:a3b629f6dab5 1284 }
JackB 0:a3b629f6dab5 1285 if (secondCount == 20) {
JackB 0:a3b629f6dab5 1286 setAlarmBlinkStatus(GLOBAL_SYSTEM, FU_FAILURE, BLINK_FAILURE_ON);
JackB 0:a3b629f6dab5 1287 }
JackB 0:a3b629f6dab5 1288 }
JackB 0:a3b629f6dab5 1289 wait(0.01);
JackB 0:a3b629f6dab5 1290 }
JackB 0:a3b629f6dab5 1291
JackB 0:a3b629f6dab5 1292 // wait (500);
JackB 0:a3b629f6dab5 1293 //}
JackB 0:a3b629f6dab5 1294
JackB 0:a3b629f6dab5 1295
JackB 0:a3b629f6dab5 1296
JackB 0:a3b629f6dab5 1297
JackB 0:a3b629f6dab5 1298
JackB 0:a3b629f6dab5 1299
JackB 0:a3b629f6dab5 1300 // printf("----------\n");
JackB 0:a3b629f6dab5 1301 // for (int i = 0; i < 4; i++)
JackB 0:a3b629f6dab5 1302 // {
JackB 0:a3b629f6dab5 1303 // printf("Show Bitmap from memory...\n");
JackB 0:a3b629f6dab5 1304 // timer.reset();
JackB 0:a3b629f6dab5 1305 // TFT.DLstart(); // start a new display command list
JackB 0:a3b629f6dab5 1306 //
JackB 0:a3b629f6dab5 1307 // TFT.DL(CLEAR_COLOR_RGB(0x21, 0x21, 0x21)); // set the clear color to white
JackB 0:a3b629f6dab5 1308 // TFT.DL(CLEAR(1, 1, 1)); // clear buffers -> color buffer,stencil buffer, tag buffer
JackB 0:a3b629f6dab5 1309 // TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // set the clear color to white
JackB 0:a3b629f6dab5 1310 //
JackB 0:a3b629f6dab5 1311 //// TFT.DL(SAVE_CONTEXT());
JackB 0:a3b629f6dab5 1312 //// TFT.DL(BITMAP_HANDLE(0));
JackB 0:a3b629f6dab5 1313 //
JackB 0:a3b629f6dab5 1314 //// TFT.Png("/fs/BACKGROUND-01.png", 0, 0);
JackB 0:a3b629f6dab5 1315 //
JackB 0:a3b629f6dab5 1316 // // TFT.LoadIdentity();
JackB 0:a3b629f6dab5 1317 // TFT.DL(BEGIN(BITMAPS));
JackB 0:a3b629f6dab5 1318 //
JackB 0:a3b629f6dab5 1319 //
JackB 0:a3b629f6dab5 1320 // // Narrow On button, 100x132, Address 0-26400
JackB 0:a3b629f6dab5 1321 // TFT.ShowBitmap(1, ARGB4, 125, 20, 100, 132); // bitmap, x, y, w, h
JackB 0:a3b629f6dab5 1322 // // Narrow Off button, 100x132, Address 26400-52800
JackB 0:a3b629f6dab5 1323 // TFT.ShowBitmap(2, ARGB4, 20, 20, 100, 132); // bitmap, x, y, w, h
JackB 0:a3b629f6dab5 1324 // // Wide On button, 182x132, Address 52800-100848
JackB 0:a3b629f6dab5 1325 // TFT.ShowBitmap(3, ARGB4, 416, 20, 182, 132); // bitmap, x, y, w, h
JackB 0:a3b629f6dab5 1326 // // Wide Off button, 182x132, Address 100848-148896
JackB 0:a3b629f6dab5 1327 // TFT.ShowBitmap(4, ARGB4, 230, 20, 182, 132); // bitmap, x, y, w, h
JackB 0:a3b629f6dab5 1328 //
JackB 0:a3b629f6dab5 1329 //// TFT.DL(END());
JackB 0:a3b629f6dab5 1330 // TFT.DL(DISPLAY()); // Display the image (erases the other images!)
JackB 0:a3b629f6dab5 1331 // TFT.Swap(); // Swap the current display list
JackB 0:a3b629f6dab5 1332 // TFT.Flush_Co_Buffer(); // Download the command list into fifo
JackB 0:a3b629f6dab5 1333 // TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation
JackB 0:a3b629f6dab5 1334 // time = timer.read();
JackB 0:a3b629f6dab5 1335 // printf("Time: %f.\n", time);
JackB 0:a3b629f6dab5 1336 // wait(0.5);
JackB 0:a3b629f6dab5 1337 //
JackB 0:a3b629f6dab5 1338 //
JackB 0:a3b629f6dab5 1339 //
JackB 0:a3b629f6dab5 1340 // printf("Show Bitmap from memory...\n");
JackB 0:a3b629f6dab5 1341 // timer.reset();
JackB 0:a3b629f6dab5 1342 // TFT.DLstart(); // start a new display command list
JackB 0:a3b629f6dab5 1343 //
JackB 0:a3b629f6dab5 1344 // TFT.DL(CLEAR_COLOR_RGB(0x21, 0x21, 0x21)); // set the clear color to white
JackB 0:a3b629f6dab5 1345 // TFT.DL(CLEAR(1, 1, 1)); // clear buffers -> color buffer,stencil buffer, tag buffer
JackB 0:a3b629f6dab5 1346 // TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // set the clear color to white
JackB 0:a3b629f6dab5 1347 //
JackB 0:a3b629f6dab5 1348 // TFT.DL(SAVE_CONTEXT());
JackB 0:a3b629f6dab5 1349 // TFT.DL(BITMAP_HANDLE(0));
JackB 0:a3b629f6dab5 1350 //
JackB 0:a3b629f6dab5 1351 // // TFT.LoadIdentity();
JackB 0:a3b629f6dab5 1352 // TFT.DL(BEGIN(BITMAPS));
JackB 0:a3b629f6dab5 1353 //
JackB 0:a3b629f6dab5 1354 // // Narrow On button, 100x132, Address 0-26400
JackB 0:a3b629f6dab5 1355 // TFT.ShowBitmap(1, ARGB4, 20, 20, 100, 132); // bitmap, x, y, w, h
JackB 0:a3b629f6dab5 1356 // // Narrow Off button, 100x132, Address 26400-52800
JackB 0:a3b629f6dab5 1357 // TFT.ShowBitmap(2, ARGB4, 125, 20, 100, 132); // bitmap, x, y, w, h
JackB 0:a3b629f6dab5 1358 // // Wide On button, 182x132, Address 52800-100848
JackB 0:a3b629f6dab5 1359 // TFT.ShowBitmap(3, ARGB4, 230, 20, 182, 132); // bitmap, x, y, w, h
JackB 0:a3b629f6dab5 1360 // // Wide Off button, 182x132, Address 100848-148896
JackB 0:a3b629f6dab5 1361 // TFT.ShowBitmap(4, ARGB4, 416, 20, 182, 132); // bitmap, x, y, w, h
JackB 0:a3b629f6dab5 1362 //
JackB 0:a3b629f6dab5 1363 //// TFT.DL(END());
JackB 0:a3b629f6dab5 1364 // TFT.DL(DISPLAY()); // Display the image (erases the other images!)
JackB 0:a3b629f6dab5 1365 // TFT.Swap(); // Swap the current display list
JackB 0:a3b629f6dab5 1366 // TFT.Flush_Co_Buffer(); // Download the command list into fifo
JackB 0:a3b629f6dab5 1367 // TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation
JackB 0:a3b629f6dab5 1368 // time = timer.read();
JackB 0:a3b629f6dab5 1369 // printf("Time: %f.\n", time);
JackB 0:a3b629f6dab5 1370 // wait(0.5);
JackB 0:a3b629f6dab5 1371 // }
JackB 0:a3b629f6dab5 1372
JackB 0:a3b629f6dab5 1373
JackB 0:a3b629f6dab5 1374
JackB 0:a3b629f6dab5 1375 // printf("----------\n");
JackB 0:a3b629f6dab5 1376 // printf("Erase screen\n");
JackB 0:a3b629f6dab5 1377 // TFT.DLstart(); // start a new display command list
JackB 0:a3b629f6dab5 1378 // TFT.DL(CLEAR_COLOR_RGB(0x00, 0x00, 0x00)); // set the clear color to black
JackB 0:a3b629f6dab5 1379 // TFT.DL(CLEAR(1, 1, 1)); // clear buffers -> color buffer,stencil buffer, tag buffer
JackB 0:a3b629f6dab5 1380 // TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // set the color to white
JackB 0:a3b629f6dab5 1381 // TFT.DL(DISPLAY()); // Display the image
JackB 0:a3b629f6dab5 1382 // TFT.Swap(); // Swap the current display list
JackB 0:a3b629f6dab5 1383 // TFT.Flush_Co_Buffer(); // Download the command list into fifo
JackB 0:a3b629f6dab5 1384 // TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation
JackB 0:a3b629f6dab5 1385
JackB 0:a3b629f6dab5 1386 // printf("----------\n");
JackB 0:a3b629f6dab5 1387 // printf("JpgSplash...\n");
JackB 0:a3b629f6dab5 1388 // timer.reset();
JackB 0:a3b629f6dab5 1389 // TFT.JpgSplash("/fs/Damen-shipyards-logo_760x157.jpg", 0xff, 0xff, 0xff);
JackB 0:a3b629f6dab5 1390 // time = timer.read();
JackB 0:a3b629f6dab5 1391 // printf("Time: %f.\n", time);
JackB 0:a3b629f6dab5 1392 // wait(1);
JackB 0:a3b629f6dab5 1393
JackB 0:a3b629f6dab5 1394 // printf("RGB DEMO START\n");
JackB 0:a3b629f6dab5 1395 // Start_Screen("RGB DEMO START"); // Show start screen
JackB 0:a3b629f6dab5 1396 // TFT.Calibrate(); // calibrate the touch screen
JackB 0:a3b629f6dab5 1397 // /* Set the tracker for the 3 sliders - define the Area for touching */
JackB 0:a3b629f6dab5 1398 // TFT.Track(131, 63, 330, 48, 1); // slider r
JackB 0:a3b629f6dab5 1399 // TFT.Track(131, 116, 330, 48, 2); // slider g
JackB 0:a3b629f6dab5 1400 // TFT.Track(131, 168, 330, 48, 3); // slider b
JackB 0:a3b629f6dab5 1401 // TFT.Flush_Co_Buffer(); // Download the commands into fifo
JackB 0:a3b629f6dab5 1402 // TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation
JackB 0:a3b629f6dab5 1403 // screen_2(r,g,b); // paint screen
JackB 0:a3b629f6dab5 1404 // /* the demo is updating the screen in a endless loop */
JackB 0:a3b629f6dab5 1405 // while(1) {
JackB 0:a3b629f6dab5 1406 // ft_uint8_t tagval = 0;
JackB 0:a3b629f6dab5 1407 // TrackRegisterVal = TFT.Rd32(REG_TRACKER); // check if one of the tree Slider is touched
JackB 0:a3b629f6dab5 1408 // tagval = TrackRegisterVal & 0xff;
JackB 0:a3b629f6dab5 1409 // if(0 != tagval) { // touch -> get new rgb value
JackB 0:a3b629f6dab5 1410 // if(1 == tagval) { // the red slider is touched
JackB 0:a3b629f6dab5 1411 // r = TrackRegisterVal>>16; // get the new value
JackB 0:a3b629f6dab5 1412 // r = r *255/65536; // scale it down to 255
JackB 0:a3b629f6dab5 1413 // } else if(2 == tagval) { // the green slider is touched
JackB 0:a3b629f6dab5 1414 // g = TrackRegisterVal>>16; // get new slider value
JackB 0:a3b629f6dab5 1415 // g = g * 255/65536; // scale it down to 255
JackB 0:a3b629f6dab5 1416 // } else if(3 == tagval) { // the blue slider is touched
JackB 0:a3b629f6dab5 1417 // b = TrackRegisterVal>>16; // get new slider value
JackB 0:a3b629f6dab5 1418 // b = b * 255/65536; // scale it down to 255
JackB 0:a3b629f6dab5 1419 // }
JackB 0:a3b629f6dab5 1420 // screen_2(r, g, b); // paint new screen
JackB 0:a3b629f6dab5 1421 // TFT.Sleep(10); // wait 10ms for next check
JackB 0:a3b629f6dab5 1422 // }
JackB 0:a3b629f6dab5 1423 // } // end of display loop
JackB 0:a3b629f6dab5 1424
JackB 0:a3b629f6dab5 1425
JackB 0:a3b629f6dab5 1426
JackB 0:a3b629f6dab5 1427 // unsigned int color = 0;
JackB 0:a3b629f6dab5 1428 // unsigned int bright = 255;
JackB 0:a3b629f6dab5 1429 //// ft_uint32_t TrackRegisterVal = 0; // touch track
JackB 0:a3b629f6dab5 1430 // uint16_t TrackRegisterVal = 0; // touch track
JackB 0:a3b629f6dab5 1431 //
JackB 0:a3b629f6dab5 1432 //// printf("RGB DEMO2 START\n");
JackB 0:a3b629f6dab5 1433 //// Start_Screen("RGB DEMO2 START"); // Show start screen
JackB 0:a3b629f6dab5 1434 //
JackB 0:a3b629f6dab5 1435 //
JackB 0:a3b629f6dab5 1436 // /* Set the tracker for the dial - define the Area for touching */
JackB 0:a3b629f6dab5 1437 // printf("Set the tracker for the dial - define the Area for touching\n");
JackB 0:a3b629f6dab5 1438 //
JackB 0:a3b629f6dab5 1439 //
JackB 0:a3b629f6dab5 1440 // TFT.DL(TAG(2)); // assign TAG value 2
JackB 0:a3b629f6dab5 1441 // //TFT.FgColor(COLOR_RGB(0x00 ,0xff, 0x00)); // forground color green
JackB 0:a3b629f6dab5 1442 //
JackB 0:a3b629f6dab5 1443 // // TFT.Dial(249, 86, 55, 0, color); // dial for color
JackB 0:a3b629f6dab5 1444 // TFT.Track(249, 86, 1, 1, 1); // Dial - dimension 1,1 means rotary
JackB 0:a3b629f6dab5 1445 // // TFT.Slider(196, 215, 236, 21, 0, bright , 255); // slider for brightness
JackB 0:a3b629f6dab5 1446 // TFT.Track(179, 199, 277, 48, 2); // Slider
JackB 0:a3b629f6dab5 1447 // // TFT.Button(500, 63, 200, 50, 31, 0, "Test 1");
JackB 0:a3b629f6dab5 1448 // TFT.Track(500, 20, 200, 50, 3); // Button
JackB 0:a3b629f6dab5 1449 // TFT.Track(500, 80, 200, 50, 4); // Button
JackB 0:a3b629f6dab5 1450 // TFT.Track(500, 140, 200, 50, 5); // Button
JackB 0:a3b629f6dab5 1451 // TFT.Track(20, 290, 100, 132, 11); // Bitmap
JackB 0:a3b629f6dab5 1452 //
JackB 0:a3b629f6dab5 1453 // TFT.Flush_Co_Buffer(); // Download the commands into fifo
JackB 0:a3b629f6dab5 1454 // TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation
JackB 0:a3b629f6dab5 1455 // int tagoption1 = 0;
JackB 0:a3b629f6dab5 1456 // int tagoption2 = 0;
JackB 0:a3b629f6dab5 1457 // int tagoption3 = 0;
JackB 0:a3b629f6dab5 1458 // int tagoption4 = 0;
JackB 0:a3b629f6dab5 1459 // screen_1(color, bright, tagoption1, tagoption2, tagoption3, tagoption4); // paint screen
JackB 0:a3b629f6dab5 1460 // /* the demo is updating the screen in a endless loop */
JackB 0:a3b629f6dab5 1461 //
JackB 0:a3b629f6dab5 1462 // Timer t1;
JackB 0:a3b629f6dab5 1463 // t1.start();
JackB 0:a3b629f6dab5 1464 // t1.reset();
JackB 0:a3b629f6dab5 1465 //
JackB 0:a3b629f6dab5 1466 // tagoption1 = 0;
JackB 0:a3b629f6dab5 1467 // tagoption2 = 0;
JackB 0:a3b629f6dab5 1468 // tagoption3 = 0;
JackB 0:a3b629f6dab5 1469 // tagoption4 = 0;
JackB 0:a3b629f6dab5 1470 //// int tagvalOld = -1;
JackB 0:a3b629f6dab5 1471 // tagvalOld = -1;
JackB 0:a3b629f6dab5 1472 // while(1) {
JackB 0:a3b629f6dab5 1473 // ft_uint8_t tagval = 0;
JackB 0:a3b629f6dab5 1474 // TrackRegisterVal = TFT.Rd32(REG_TRACKER); // check if one of the tracking fields is touched
JackB 0:a3b629f6dab5 1475 // tagval = TrackRegisterVal & 0xff;
JackB 0:a3b629f6dab5 1476 // if(tagval != 0) { // touch -> get new values
JackB 0:a3b629f6dab5 1477 // if (tagval != tagvalOld) {
JackB 0:a3b629f6dab5 1478 // printf("t %d\n", tagval);
JackB 0:a3b629f6dab5 1479 // tagvalOld = tagval;
JackB 0:a3b629f6dab5 1480 // }
JackB 0:a3b629f6dab5 1481 // if(tagval == 1) { // the dial touched
JackB 0:a3b629f6dab5 1482 // color = TrackRegisterVal>>16; // get the new value
JackB 0:a3b629f6dab5 1483 // }
JackB 0:a3b629f6dab5 1484 // else if(tagval == 2) { // the slider is touched
JackB 0:a3b629f6dab5 1485 // bright = TrackRegisterVal>>16; // get new slider value
JackB 0:a3b629f6dab5 1486 // bright = bright * 255/65536; // scale it down to 255
JackB 0:a3b629f6dab5 1487 // TFT.SetBacklight(bright); // Brightness
JackB 0:a3b629f6dab5 1488 // }
JackB 0:a3b629f6dab5 1489 // else if(tagval == 3) { // the button is touched
JackB 0:a3b629f6dab5 1490 //// TFT.SetBacklight(63); // Brightness
JackB 0:a3b629f6dab5 1491 // tagoption1 = OPT_FLAT;
JackB 0:a3b629f6dab5 1492 // bright = 64;
JackB 0:a3b629f6dab5 1493 // TFT.SetBacklight(bright); // Brightness
JackB 0:a3b629f6dab5 1494 // }
JackB 0:a3b629f6dab5 1495 // else if(tagval == 4) { // the button is touched
JackB 0:a3b629f6dab5 1496 //// TFT.SetBacklight(63); // Brightness
JackB 0:a3b629f6dab5 1497 // tagoption2 = OPT_FLAT;
JackB 0:a3b629f6dab5 1498 // bright = 128;
JackB 0:a3b629f6dab5 1499 // TFT.SetBacklight(bright); // Brightness
JackB 0:a3b629f6dab5 1500 // }
JackB 0:a3b629f6dab5 1501 // else if(tagval == 5) { // the button is touched
JackB 0:a3b629f6dab5 1502 //// TFT.SetBacklight(63); // Brightness
JackB 0:a3b629f6dab5 1503 // tagoption3 = OPT_FLAT;
JackB 0:a3b629f6dab5 1504 // bright = 192;
JackB 0:a3b629f6dab5 1505 // TFT.SetBacklight(bright); // Brightness
JackB 0:a3b629f6dab5 1506 // }
JackB 0:a3b629f6dab5 1507 // else if(tagval == 8) { // the button is touched
JackB 0:a3b629f6dab5 1508 //// TFT.SetBacklight(63); // Brightness
JackB 0:a3b629f6dab5 1509 //// tagoption2 = OPT_FLAT;
JackB 0:a3b629f6dab5 1510 // bright = 171;
JackB 0:a3b629f6dab5 1511 // TFT.SetBacklight(bright); // Brightness
JackB 0:a3b629f6dab5 1512 // }
JackB 0:a3b629f6dab5 1513 // else if(tagval == 10) { // the button is touched
JackB 0:a3b629f6dab5 1514 //// TFT.SetBacklight(63); // Brightness
JackB 0:a3b629f6dab5 1515 //// tagoption3 = OPT_FLAT;
JackB 0:a3b629f6dab5 1516 // bright = 212;
JackB 0:a3b629f6dab5 1517 // TFT.SetBacklight(bright); // Brightness
JackB 0:a3b629f6dab5 1518 // }
JackB 0:a3b629f6dab5 1519 // else if(tagval == 11) { // the button is touched
JackB 0:a3b629f6dab5 1520 //// TFT.SetBacklight(63); // Brightness
JackB 0:a3b629f6dab5 1521 //// tagoption3 = OPT_FLAT;
JackB 0:a3b629f6dab5 1522 // tagoption4 = OPT_FLAT;
JackB 0:a3b629f6dab5 1523 // bright = 230;
JackB 0:a3b629f6dab5 1524 // TFT.SetBacklight(bright); // Brightness
JackB 0:a3b629f6dab5 1525 // }
JackB 0:a3b629f6dab5 1526 // screen_1(color, bright, tagoption1, tagoption2, tagoption3, tagoption4); // paint new screen
JackB 0:a3b629f6dab5 1527 // TFT.Sleep(10); // wait 10ms for next check
JackB 0:a3b629f6dab5 1528 // }
JackB 0:a3b629f6dab5 1529 // else
JackB 0:a3b629f6dab5 1530 // {
JackB 0:a3b629f6dab5 1531 // tagvalOld = -1;
JackB 0:a3b629f6dab5 1532 //// printf("Tagval %d, tagoption %d\n", tagval, tagoption);
JackB 0:a3b629f6dab5 1533 // if (tagoption1 != 0)
JackB 0:a3b629f6dab5 1534 // {
JackB 0:a3b629f6dab5 1535 // tagoption1 = 0;
JackB 0:a3b629f6dab5 1536 // screen_1(color, bright, tagoption1, tagoption2, tagoption3, tagoption4); // paint new screen
JackB 0:a3b629f6dab5 1537 // TFT.Sleep(10); // wait 10ms for next check
JackB 0:a3b629f6dab5 1538 // }
JackB 0:a3b629f6dab5 1539 // if (tagoption2 != 0)
JackB 0:a3b629f6dab5 1540 // {
JackB 0:a3b629f6dab5 1541 // tagoption2 = 0;
JackB 0:a3b629f6dab5 1542 // screen_1(color, bright, tagoption1, tagoption2, tagoption3, tagoption4); // paint new screen
JackB 0:a3b629f6dab5 1543 // TFT.Sleep(10); // wait 10ms for next check
JackB 0:a3b629f6dab5 1544 // }
JackB 0:a3b629f6dab5 1545 // if (tagoption3 != 0)
JackB 0:a3b629f6dab5 1546 // {
JackB 0:a3b629f6dab5 1547 // tagoption3 = 0;
JackB 0:a3b629f6dab5 1548 // screen_1(color, bright, tagoption1, tagoption2, tagoption3, tagoption4); // paint new screen
JackB 0:a3b629f6dab5 1549 // TFT.Sleep(10); // wait 10ms for next check
JackB 0:a3b629f6dab5 1550 // }
JackB 0:a3b629f6dab5 1551 // if (tagoption4 != 0)
JackB 0:a3b629f6dab5 1552 // {
JackB 0:a3b629f6dab5 1553 // tagoption4 = 0;
JackB 0:a3b629f6dab5 1554 // screen_1(color, bright, tagoption1, tagoption2, tagoption3, tagoption4); // paint new screen
JackB 0:a3b629f6dab5 1555 // TFT.Sleep(10); // wait 10ms for next check
JackB 0:a3b629f6dab5 1556 // }
JackB 0:a3b629f6dab5 1557 // }
JackB 0:a3b629f6dab5 1558 // } // end of display loop
JackB 0:a3b629f6dab5 1559 //
JackB 0:a3b629f6dab5 1560 // while(1) {
JackB 0:a3b629f6dab5 1561 // myled = !myled; // LED is ON
JackB 0:a3b629f6dab5 1562 // wait(0.5); // 500 ms
JackB 0:a3b629f6dab5 1563 // }
JackB 0:a3b629f6dab5 1564 //
JackB 0:a3b629f6dab5 1565 // fs.unmount();
JackB 0:a3b629f6dab5 1566 //
JackB 0:a3b629f6dab5 1567 // // Deinitialize the device
JackB 0:a3b629f6dab5 1568 // sd.deinit();
JackB 0:a3b629f6dab5 1569
JackB 0:a3b629f6dab5 1570 // Deinitialize the device
JackB 0:a3b629f6dab5 1571 // spif.deinit();
JackB 0:a3b629f6dab5 1572
JackB 0:a3b629f6dab5 1573 // Deinitialize the device
JackB 0:a3b629f6dab5 1574 // ee.deinit();
JackB 0:a3b629f6dab5 1575
JackB 0:a3b629f6dab5 1576 }