F746NG Test All Functions

Dependencies:   TS_DISCO_F746NG LCD_DISCO_F746NG BSP_DISCO_F746NG BUTTON_GROUP Arduino

Committer:
MaxScorda
Date:
Tue Dec 29 18:04:23 2020 +0000
Revision:
10:4fef0d14dc70
Parent:
7:f654d2b1f08b
Publish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MaxScorda 7:f654d2b1f08b 1 #ifndef PROGRAMFUNCTIONS_H
MaxScorda 7:f654d2b1f08b 2 #define PROGRAMFUNCTIONS_H
MaxScorda 7:f654d2b1f08b 3 using namespace ButGrp;
MaxScorda 7:f654d2b1f08b 4
MaxScorda 7:f654d2b1f08b 5 void SetLayer(int numlayer, int tipo=0)
MaxScorda 7:f654d2b1f08b 6 {
MaxScorda 7:f654d2b1f08b 7 return;
MaxScorda 7:f654d2b1f08b 8 // vedere come passare BSPLCD_
MaxScorda 7:f654d2b1f08b 9 for (int idx = 0; idx < NUMLAYER; idx++) {
MaxScorda 7:f654d2b1f08b 10 // sprintf(str, "Touches: %d",idx);
MaxScorda 7:f654d2b1f08b 11 BSP_LCD_DisplayStringAt(0, LINE(12+idx), (uint8_t *)&str, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 12 if (idx==numlayer) {
MaxScorda 7:f654d2b1f08b 13 BSP_LCD_SetLayerVisible(idx, ENABLE);
MaxScorda 7:f654d2b1f08b 14 BSP_LCD_SelectLayer(idx);
MaxScorda 7:f654d2b1f08b 15 // BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"ON", RIGHT_MODE);
MaxScorda 7:f654d2b1f08b 16 } else {
MaxScorda 7:f654d2b1f08b 17 if (tipo==0) {
MaxScorda 7:f654d2b1f08b 18 BSP_LCD_SetLayerVisible(idx, DISABLE);
MaxScorda 7:f654d2b1f08b 19 // BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"OFF", RIGHT_MODE);
MaxScorda 7:f654d2b1f08b 20 }
MaxScorda 7:f654d2b1f08b 21 }
MaxScorda 7:f654d2b1f08b 22 }
MaxScorda 7:f654d2b1f08b 23 }
MaxScorda 7:f654d2b1f08b 24
MaxScorda 7:f654d2b1f08b 25 void PressButton()
MaxScorda 7:f654d2b1f08b 26 {
MaxScorda 7:f654d2b1f08b 27 static int ccont=0;
MaxScorda 7:f654d2b1f08b 28 led1= !led1;
MaxScorda 7:f654d2b1f08b 29 ccont++;
MaxScorda 7:f654d2b1f08b 30 if (nummenu==0) {
MaxScorda 7:f654d2b1f08b 31 BSP_LCD_.SetFont(&Font16);
MaxScorda 7:f654d2b1f08b 32 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 7:f654d2b1f08b 33 sprintf(str, "Tasto premuto %d volte", ccont);
MaxScorda 7:f654d2b1f08b 34 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *) str, CENTER_MODE);
MaxScorda 7:f654d2b1f08b 35 }
MaxScorda 7:f654d2b1f08b 36 }
MaxScorda 7:f654d2b1f08b 37
MaxScorda 7:f654d2b1f08b 38 void ReadSensors()
MaxScorda 7:f654d2b1f08b 39 {
MaxScorda 7:f654d2b1f08b 40 static long long int conteggio=0;
MaxScorda 7:f654d2b1f08b 41 if (conteggio+1000<millis()) {
MaxScorda 7:f654d2b1f08b 42 BSP_LCD_.SetFont(&Font16);
MaxScorda 7:f654d2b1f08b 43 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 7:f654d2b1f08b 44 sprintf(str,"ADC Temp = %6.4f", adc_temp.read()*100);
MaxScorda 7:f654d2b1f08b 45 BSP_LCD_DisplayStringAt(140, LINE(7), (uint8_t *) str, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 46 sprintf(str,"ADC VRef = %6.4f", adc_vref.read());
MaxScorda 7:f654d2b1f08b 47 BSP_LCD_DisplayStringAt(140, LINE(8), (uint8_t *) str, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 48 #if defined(TARGET_DISCO_F051R8) || defined(TARGET_NUCLEO_F030R8) || defined(TARGET_NUCLEO_F031K6) || defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F070RB) || defined(TARGET_NUCLEO_F072RB) || defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F207ZG) || defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F303K8) || defined(TARGET_DISCO_F303VC) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303ZE) || defined(TARGET_DISCO_F334C8) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_MTS_DRAGONFLY_F411RE) || defined(TARGET_MTS_MDOT_F405RG) || defined(TARGET_MTS_MDOT_F411RE) || defined(TARGET_DISCO_F401VC) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_ARCH_MAX) || defined(TARGET_DISCO_F407VG) || defined(TARGET_NUCLEO_F410RB) || defined(TARGET_ELMO_F411RE) || defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F412ZG) || defined(TARGET_DISCO_F413ZH) || defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F429ZI) || defined(TARGET_NUCLEO_F439ZI) || defined(TARGET_B96B_F446VE) || defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F446ZE) || defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG) || defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_F756ZG) || defined(TARGET_NUCLEO_F767ZI) || defined(TARGET_DISCO_F769NI) || defined(TARGET_DISCO_L072CZ_LRWAN1) || defined(TARGET_NUCLEO_L432KC) || defined(TARGET_DISCO_L476VG) || defined(TARGET_NUCLEO_L476RG) || defined(TARGET_NUCLEO_L486RG)
MaxScorda 7:f654d2b1f08b 49 sprintf(str,"ADC VBat = %6.4f", adc_vbat.read());
MaxScorda 7:f654d2b1f08b 50 BSP_LCD_DisplayStringAt(140, LINE(9), (uint8_t *) str, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 51 #endif
MaxScorda 7:f654d2b1f08b 52 conteggio=millis();
MaxScorda 7:f654d2b1f08b 53 }
MaxScorda 7:f654d2b1f08b 54
MaxScorda 7:f654d2b1f08b 55 }
MaxScorda 7:f654d2b1f08b 56
MaxScorda 7:f654d2b1f08b 57 void GestioneButton()
MaxScorda 7:f654d2b1f08b 58 {
MaxScorda 7:f654d2b1f08b 59 // vedi buttoGroup_Demo per esempio group
MaxScorda 7:f654d2b1f08b 60 static bool toccato=false;
MaxScorda 7:f654d2b1f08b 61 bool modifica=false;
MaxScorda 7:f654d2b1f08b 62 BSP_TS_GetState(&TS_State);
MaxScorda 7:f654d2b1f08b 63
MaxScorda 7:f654d2b1f08b 64
MaxScorda 7:f654d2b1f08b 65 if ((avanti.Touched())&& (toccato==false)) {
MaxScorda 7:f654d2b1f08b 66 nummenu=(++nummenu)%MAXMENU;
MaxScorda 7:f654d2b1f08b 67 // reset.Draw(INACTIVE, LCD_COLOR_GRAY);
MaxScorda 7:f654d2b1f08b 68 modifica=true;
MaxScorda 7:f654d2b1f08b 69 }
MaxScorda 7:f654d2b1f08b 70 if ((indietro.Touched()) && (toccato==false)) {
MaxScorda 7:f654d2b1f08b 71 nummenu=((--nummenu)+MAXMENU)%MAXMENU;
MaxScorda 7:f654d2b1f08b 72 // reset.Draw(INACTIVE, LCD_COLOR_GRAY);
MaxScorda 7:f654d2b1f08b 73 modifica=true;
MaxScorda 7:f654d2b1f08b 74 }
MaxScorda 7:f654d2b1f08b 75 wait(0.01f);
MaxScorda 7:f654d2b1f08b 76
MaxScorda 7:f654d2b1f08b 77 if((TS_State.touchDetected) && (toccato==false)) {
MaxScorda 7:f654d2b1f08b 78 toccato=true;
MaxScorda 7:f654d2b1f08b 79 } else if((!TS_State.touchDetected) && (toccato==true)) {
MaxScorda 7:f654d2b1f08b 80 toccato=false;
MaxScorda 7:f654d2b1f08b 81 }
MaxScorda 7:f654d2b1f08b 82
MaxScorda 7:f654d2b1f08b 83 if (modifica==true) {
MaxScorda 7:f654d2b1f08b 84 if (nummenu==0) {
MaxScorda 7:f654d2b1f08b 85 BSP_LCD_.SetFont(&Font12);
MaxScorda 7:f654d2b1f08b 86 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 7:f654d2b1f08b 87 sprintf(str, "menu: %d", nummenu);
MaxScorda 7:f654d2b1f08b 88 }
MaxScorda 7:f654d2b1f08b 89 BSP_LCD_DisplayStringAt(50, LINE(7), (uint8_t *)str, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 90 BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
MaxScorda 7:f654d2b1f08b 91 BSP_LCD_FillRect(40+1, 45+1, DimX-80-1, DimY-45-45-1); //cancella corpo
MaxScorda 7:f654d2b1f08b 92 BSP_LCD_FillRect(DimX/3+6, 1, ((DimX*2)/3)-7, 38); //cancella titolo
MaxScorda 7:f654d2b1f08b 93 BSP_LCD_.SetFont(&Font24);
MaxScorda 7:f654d2b1f08b 94 BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
MaxScorda 7:f654d2b1f08b 95 switch (nummenu) {
MaxScorda 7:f654d2b1f08b 96 case 0:
MaxScorda 7:f654d2b1f08b 97 BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Dati Generali", LEFT_MODE);
MaxScorda 7:f654d2b1f08b 98 break;
MaxScorda 7:f654d2b1f08b 99 case 1:
MaxScorda 7:f654d2b1f08b 100 BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Math elaborations", LEFT_MODE);
MaxScorda 7:f654d2b1f08b 101 break;
MaxScorda 7:f654d2b1f08b 102 case 2:
MaxScorda 7:f654d2b1f08b 103 BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Dati TCP", LEFT_MODE);
MaxScorda 7:f654d2b1f08b 104 break;
MaxScorda 7:f654d2b1f08b 105 }
MaxScorda 7:f654d2b1f08b 106 }
MaxScorda 7:f654d2b1f08b 107 }
MaxScorda 7:f654d2b1f08b 108
MaxScorda 7:f654d2b1f08b 109 void GestioneTouch()
MaxScorda 7:f654d2b1f08b 110 {
MaxScorda 7:f654d2b1f08b 111 static uint16_t x=0, y=0;
MaxScorda 7:f654d2b1f08b 112 uint8_t cleared = 0;
MaxScorda 7:f654d2b1f08b 113 uint8_t prev_nb_touches = 0;
MaxScorda 7:f654d2b1f08b 114 BSP_TS_GetState(&TS_State);
MaxScorda 7:f654d2b1f08b 115 BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
MaxScorda 7:f654d2b1f08b 116 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 7:f654d2b1f08b 117 BSP_LCD_.SetFont(&Font16);
MaxScorda 7:f654d2b1f08b 118 if (TS_State.touchDetected) {
MaxScorda 7:f654d2b1f08b 119 // Clear lines corresponding to old touches coordinates
MaxScorda 7:f654d2b1f08b 120 if (TS_State.touchDetected < prev_nb_touches) {
MaxScorda 7:f654d2b1f08b 121 for (int idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
MaxScorda 7:f654d2b1f08b 122 BSP_LCD_ClearStringLine(idx);
MaxScorda 7:f654d2b1f08b 123 }
MaxScorda 7:f654d2b1f08b 124 }
MaxScorda 7:f654d2b1f08b 125 prev_nb_touches = TS_State.touchDetected;
MaxScorda 7:f654d2b1f08b 126 cleared = 0;
MaxScorda 7:f654d2b1f08b 127 sprintf(str, "Touches: %d", TS_State.touchDetected);
MaxScorda 7:f654d2b1f08b 128 BSP_LCD_DisplayStringAt(50, LINE(3), (uint8_t *)str, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 129 SetLayer( 1);
MaxScorda 7:f654d2b1f08b 130 BSP_LCD_DrawPixel(x, y, LCD_COLOR_BLACK);
MaxScorda 7:f654d2b1f08b 131 SetLayer( 0);
MaxScorda 7:f654d2b1f08b 132 for (int idx = 0; idx < TS_State.touchDetected; idx++) {
MaxScorda 7:f654d2b1f08b 133 x = TS_State.touchX[idx];
MaxScorda 7:f654d2b1f08b 134 y = TS_State.touchY[idx];
MaxScorda 7:f654d2b1f08b 135 sprintf(str, "Touch %d: x=%d y=%d ", idx+1, x, y);
MaxScorda 7:f654d2b1f08b 136 BSP_LCD_DisplayStringAt(50, LINE(idx+4), (uint8_t *)str, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 137 }
MaxScorda 7:f654d2b1f08b 138 SetLayer( 1);
MaxScorda 7:f654d2b1f08b 139 BSP_LCD_DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_WHITE);
MaxScorda 7:f654d2b1f08b 140 SetLayer( 0);
MaxScorda 7:f654d2b1f08b 141 } else {
MaxScorda 7:f654d2b1f08b 142 if (!cleared) {
MaxScorda 7:f654d2b1f08b 143 sprintf(str, "Touches: 0");
MaxScorda 7:f654d2b1f08b 144 BSP_LCD_DisplayStringAt(50, LINE(3), (uint8_t *)&str, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 145 cleared = 1;
MaxScorda 7:f654d2b1f08b 146 }
MaxScorda 7:f654d2b1f08b 147 }
MaxScorda 7:f654d2b1f08b 148 }
MaxScorda 7:f654d2b1f08b 149
MaxScorda 7:f654d2b1f08b 150 void PrintData(char sstr[],SocketAddress &clientaddr)
MaxScorda 7:f654d2b1f08b 151 {
MaxScorda 7:f654d2b1f08b 152 if ((nummenu==2) && (sstr[0]>0)) {
MaxScorda 7:f654d2b1f08b 153 BSP_LCD_.SetFont(&Font12);
MaxScorda 7:f654d2b1f08b 154 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 7:f654d2b1f08b 155 BSP_LCD_DisplayStringAt(55, LINE(6), (uint8_t *) sstr, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 156 const char *ip = clientaddr.get_ip_address();
MaxScorda 7:f654d2b1f08b 157 int port = clientaddr.get_port();
MaxScorda 7:f654d2b1f08b 158 sprintf(str,"IP Client: %s", ip);
MaxScorda 7:f654d2b1f08b 159 BSP_LCD_DisplayStringAt(55, LINE(10), (uint8_t *) str, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 160 sprintf(str,"Port: %d", port);
MaxScorda 7:f654d2b1f08b 161 BSP_LCD_DisplayStringAt(55, LINE(11), (uint8_t *) str, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 162 }
MaxScorda 7:f654d2b1f08b 163 }
MaxScorda 7:f654d2b1f08b 164
MaxScorda 7:f654d2b1f08b 165
MaxScorda 7:f654d2b1f08b 166 void ReceiveData(TCPSocket &clnt)
MaxScorda 7:f654d2b1f08b 167 {
MaxScorda 7:f654d2b1f08b 168 char mmm[64];
MaxScorda 7:f654d2b1f08b 169 memset (str,0,128);
MaxScorda 7:f654d2b1f08b 170 clnt.recv(str, sizeof str);
MaxScorda 7:f654d2b1f08b 171 if (((nummenu==0)||(nummenu==2)) &&(str[0]>0)) {
MaxScorda 7:f654d2b1f08b 172 sprintf(mmm,"Receive: %d", millis());
MaxScorda 7:f654d2b1f08b 173 BSP_LCD_.SetFont(&Font12);
MaxScorda 7:f654d2b1f08b 174 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 7:f654d2b1f08b 175 BSP_LCD_DisplayStringAt(150, LINE(17), (uint8_t *) mmm, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 176 }
MaxScorda 7:f654d2b1f08b 177 }
MaxScorda 7:f654d2b1f08b 178
MaxScorda 7:f654d2b1f08b 179 void RoutineCiclicaSocket(TCPServer &srvR)
MaxScorda 7:f654d2b1f08b 180 {
MaxScorda 7:f654d2b1f08b 181 // se li lascio qui non bloccano ma sganciano
MaxScorda 7:f654d2b1f08b 182 // TCPSocket client; //lui
MaxScorda 7:f654d2b1f08b 183 // SocketAddress client_addr;
MaxScorda 7:f654d2b1f08b 184 // srvR.set_blocking(false);
MaxScorda 7:f654d2b1f08b 185 srvR.accept(&client, &client_addr); // BLOCCANTE senza srv.set_blocking(false);
MaxScorda 7:f654d2b1f08b 186
MaxScorda 7:f654d2b1f08b 187 if ((nummenu==0)||(nummenu==2)) {
MaxScorda 7:f654d2b1f08b 188 sprintf(str,"Accept: %d", millis());
MaxScorda 7:f654d2b1f08b 189 BSP_LCD_.SetFont(&Font12);
MaxScorda 7:f654d2b1f08b 190 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 7:f654d2b1f08b 191 BSP_LCD_DisplayStringAt(50, LINE(17), (uint8_t *) str, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 192 }
MaxScorda 7:f654d2b1f08b 193
MaxScorda 7:f654d2b1f08b 194 ReceiveData(client); //2
MaxScorda 7:f654d2b1f08b 195 PrintData(str,client_addr );
MaxScorda 7:f654d2b1f08b 196 // client.close();
MaxScorda 7:f654d2b1f08b 197
MaxScorda 7:f654d2b1f08b 198 }
MaxScorda 7:f654d2b1f08b 199
MaxScorda 7:f654d2b1f08b 200 void UsciteVideo()
MaxScorda 7:f654d2b1f08b 201 {
MaxScorda 7:f654d2b1f08b 202 char mmm[64];
MaxScorda 7:f654d2b1f08b 203
MaxScorda 7:f654d2b1f08b 204 GestioneButton(); //sempre
MaxScorda 7:f654d2b1f08b 205 if (nummenu==0) {
MaxScorda 7:f654d2b1f08b 206 GestioneTouch();
MaxScorda 7:f654d2b1f08b 207 ReadSensors();
MaxScorda 7:f654d2b1f08b 208 }
MaxScorda 7:f654d2b1f08b 209 // FattorizzazioneCiclica(); //1
MaxScorda 7:f654d2b1f08b 210
MaxScorda 7:f654d2b1f08b 211 sprintf(mmm,"Tick: %d", millis());
MaxScorda 7:f654d2b1f08b 212 BSP_LCD_.SetFont(&Font12);
MaxScorda 7:f654d2b1f08b 213 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 7:f654d2b1f08b 214 BSP_LCD_DisplayStringAt(350, LINE(17), (uint8_t *) mmm, LEFT_MODE);
MaxScorda 7:f654d2b1f08b 215
MaxScorda 7:f654d2b1f08b 216
MaxScorda 7:f654d2b1f08b 217 }
MaxScorda 7:f654d2b1f08b 218
MaxScorda 7:f654d2b1f08b 219
MaxScorda 7:f654d2b1f08b 220 #endif