x
Dependencies: AP3000 ARM_RTC Beep BurstSPI FRAMSPI FT813 I2CEEBlockDevice I2CList MCP79412 NMEA0183 PCA9745B SDBlockDevice SPIFBlockDevice SystemClock WDT nmea_parser
main.cpp@0:a3b629f6dab5, 2018-07-23 (annotated)
- Committer:
- JackB
- Date:
- Mon Jul 23 12:32:19 2018 +0000
- Revision:
- 0:a3b629f6dab5
x
Who changed what in which revision?
User | Revision | Line number | New 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 | } |