embedded_systems
Loading...
Searching...
No Matches
display.c File Reference

: display control More...

#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include "display.h"
#include "main.h"
#include "tcp.h"
#include "TCP_HA.h"
#include "lwip.h"
#include "../../Drivers/BSP/STM32F7508-Discovery/stm32f7508_discovery.h"
#include "../../Drivers/BSP/STM32F7508-Discovery/stm32f7508_discovery_lcd.h"
#include "../../Drivers/BSP/STM32F7508-Discovery/stm32f7508_discovery_ts.h"
#include "configEntitysHA.h"
#include "ui_v1_data.h"
#include "madByMB_v1_data.h"

Go to the source code of this file.

Macros

#define enable_vBgReleased   0
 enable extra functie vBgReleased
 
#define screenWidth   480
 Screen Width.
 
#define screenHeight   272
 Screen Height.
 
#define bgRecH   136
 Background rectangle Height.
 
#define bgRecW   160
 Background rectangle Width.
 
#define greyColorStartUp   ((uint32_t)0xff161616)
 Start up color.
 
#define SCREENSAVER_DELAY   30000
 ScreenSaver delay.
 

Functions

static void vDisplayBgPressed (uint16_t usPosY, uint16_t usPosX)
 private Kleur van de achtergrond bij indrukken veranderen
 
static void vBgButton (uint16_t usPosY, uint16_t usPosX, uint32_t ulColor)
 Verander de achtergrond van de button.
 
static void prvDisplayPrintText (char message[])
 private functie om de tekst te gaan afdrukken op het scherm
 
void vDisplaycCheckScreensaver (void)
 Schakelt het display uit na ingestelde tijd ( SCREENSAVER_DELAY)
 
void vDisplayInit (void)
 Init display.
 
void vDisplayStartUpScreen (void)
 Start scherm weergeven.
 
void vDisplayMainScreen (void)
 Display het hoofd scherm met de UI.
 
void vDisplayMessage (char message[])
 Display message op het scherm.
 
void vDisplayError (char message[])
 Display error op het scherm.
 
void vDisplaySetUpButtonStates (void)
 Vraagt de status op van iedere knop.
 
uint16_t usDisplayTouch (TS_StateTypeDef *TS_State)
 Verwerkt de touch actie van de user.
 
void vDisplayBgButtonState (uint8_t usButtonId, char cState[])
 Verandert de achtergrond van de knop op basis van de status.
 

Variables

uint8_t globalReceive
 Globale variabele voor communicatie tussen twee aparte functies.
 
LTDC_HandleTypeDef hltdc
 

Detailed Description

: display control

display.c

Created on: Nov 26, 2024 Author: buele

Definition in file display.c.

Macro Definition Documentation

◆ bgRecH

#define bgRecH   136

Background rectangle Height.

Definition at line 45 of file display.c.

◆ bgRecW

#define bgRecW   160

Background rectangle Width.

Definition at line 47 of file display.c.

◆ enable_vBgReleased

#define enable_vBgReleased   0

enable extra functie vBgReleased

Definition at line 37 of file display.c.

◆ greyColorStartUp

#define greyColorStartUp   ((uint32_t)0xff161616)

Start up color.

Definition at line 51 of file display.c.

◆ screenHeight

#define screenHeight   272

Screen Height.

Definition at line 42 of file display.c.

◆ SCREENSAVER_DELAY

#define SCREENSAVER_DELAY   30000

ScreenSaver delay.

Definition at line 54 of file display.c.

◆ screenWidth

#define screenWidth   480

Screen Width.

Definition at line 40 of file display.c.

Function Documentation

◆ prvDisplayPrintText()

static void prvDisplayPrintText ( char message[])
static

private functie om de tekst te gaan afdrukken op het scherm

Print de boodschap af met de op voorhand ingestelde font kleur.

Parameters
char[]boodschap

Definition at line 190 of file display.c.

190 {
191 BSP_LCD_SetBackColor(LCD_COLOR_TRANSPARENT);
192 BSP_LCD_SetFont(&Font12);
193 BSP_LCD_DisplayStringAt(10,screenHeight - 15 , (uint8_t*) message, LEFT_MODE );
194}
#define screenHeight
Screen Height.
Definition display.c:42

References screenHeight.

◆ usDisplayTouch()

uint16_t usDisplayTouch ( TS_StateTypeDef * TS_State)

Verwerkt de touch actie van de user.

De touch actie van de user wordt verwerkt en op basis van kolom en rij wordt de nummer van de knop teruggegeven.

Parameters
TS_StateTypeDef*touchScreen struct
Returns
us Button nummer

Definition at line 240 of file display.c.

240 {
241 BSP_TS_GetState(TS_State);
242 if(TS_State->touchDetected >= 1 ){
243 //column1
244 if(TS_State->touchX[0] <= bgRecW){
245 if(TS_State->touchY[0] < bgRecH ){
247 return 1;
248 }
249 else{
251 return 4;
252 }
253 }
254 //column2
255 else if(TS_State->touchX[0] > bgRecW && TS_State->touchX[0] <= (bgRecW * 2)){
256 if(TS_State->touchY[0] < bgRecH ){
258 return 2;
259 }
260 else{
262 return 5;
263 }
264 }
265 //column3
266 else {
267 if(TS_State->touchY[0] < bgRecH ){
269 return 3;
270 }
271 else{
273 return 6;
274 }
275 }
276 }
277
278 return 0;
279}
static void vDisplayBgPressed(uint16_t, uint16_t)
private Kleur van de achtergrond bij indrukken veranderen
Definition display.c:344
#define bgRecH
Background rectangle Height.
Definition display.c:45
#define bgRecW
Background rectangle Width.
Definition display.c:47

References bgRecH, bgRecW, and vDisplayBgPressed().

◆ vBgButton()

static void vBgButton ( uint16_t usPosY,
uint16_t usPosX,
uint32_t ulColor )
static

Verander de achtergrond van de button.

Parameters
usPosYde y pos van de button
usPosXde x pos van de button
ulColorde kleur van de achtergrond

Definition at line 361 of file display.c.

361 {
362 while(!(hltdc.Instance->CDSR & 1<<2)); //wachten op vsync
363 BSP_LCD_SelectLayer(0);
364 BSP_LCD_SetTextColor(ulColor);
365 BSP_LCD_FillRect((usPosX * bgRecW) ,(usPosY * bgRecH),bgRecW,bgRecH);
366}
LTDC_HandleTypeDef hltdc
Definition main.c:57

References bgRecH, bgRecW, and hltdc.

◆ vDisplayBgButtonState()

void vDisplayBgButtonState ( uint8_t usButtonId,
char cState[] )

Verandert de achtergrond van de knop op basis van de status.

De achtergrond van de knop wordt veranderd op basis van de status dat is meegeven.

Parameters
usButtonIdid van de button
cState[]status van de button

Definition at line 291 of file display.c.

291 {
292 uint32_t ulBgColor;
293
294 if(strcmp(cState,"on") == 0){
295 ulBgColor = LCD_COLOR_ORANGE;
296 }
297 else if(strcmp(cState,"off") == 0){
298 ulBgColor = LCD_COLOR_LIGHTGRAY;
299 }
300 else{
301 ulBgColor = LCD_COLOR_WHITE;
302 }
303
304
305 switch (usButtonId){
306 case 1:
307 vBgButton(0,0,ulBgColor);
308 break;
309 case 2:
310 vBgButton(0,1,ulBgColor);
311 break;
312 case 3:
313 vBgButton(0,2,ulBgColor);
314 break;
315 case 4:
316 vBgButton(1,0,ulBgColor);
317 break;
318 case 5:
319 vBgButton(1,1,ulBgColor);
320 break;
321 case 6:
322 vBgButton(1,2,ulBgColor);
323 break;
324 default:
325 printf("Error button doesn't exist, vDisplayBgButtonState");
326 break;
327 }
328
329}
static void vBgButton(uint16_t, uint16_t, uint32_t)
Verander de achtergrond van de button.
Definition display.c:361

References vBgButton().

◆ vDisplayBgPressed()

static void vDisplayBgPressed ( uint16_t usPosY,
uint16_t usPosX )
static

private Kleur van de achtergrond bij indrukken veranderen

De achtergrond van de knop wordt veranderd als er op wordt geduwd voor user feedback te geven.

Er wordt gewacht op de vsync voor een beter resultaat

Parameters
usPosYde y pos van de knop
usPosxde x pos van de knop
Returns

Definition at line 344 of file display.c.

344 {
345 while(!(hltdc.Instance->CDSR & 1<<2)); //wachten op vsync
346 vBgButton(usPosY,usPosX,LCD_COLOR_GRAY);
347}

References hltdc, and vBgButton().

◆ vDisplaycCheckScreensaver()

void vDisplaycCheckScreensaver ( void )

Schakelt het display uit na ingestelde tijd ( SCREENSAVER_DELAY)

Note
Functie geschreven door docent

Definition at line 76 of file display.c.

76 {
77 static uint32_t ScreensaverStart = SCREENSAVER_DELAY+100;
78 static uint8_t screensaver_status = 0;
79 if(ScreensaverStart < HAL_GetTick() && screensaver_status == 0){
80 //Screen saver on -> display Off
81 HAL_GPIO_WritePin(LCD_DISP_GPIO_PORT, LCD_DISP_PIN, GPIO_PIN_RESET);
82 HAL_GPIO_WritePin(LCD_BL_CTRL_GPIO_PORT, LCD_BL_CTRL_PIN, GPIO_PIN_RESET);
83 screensaver_status = 1;
84 printf("Screensaver: on\n");
85 }
86 TS_StateTypeDef TS_State;
87 BSP_TS_GetState(&TS_State);
88 if(TS_State.touchDetected > 0){
89 //new start value
90 ScreensaverStart = HAL_GetTick() + SCREENSAVER_DELAY;
91 if(screensaver_status == 1){
92 HAL_GPIO_WritePin(LCD_DISP_GPIO_PORT, LCD_DISP_PIN, GPIO_PIN_SET);
93 HAL_Delay(100);
94 HAL_GPIO_WritePin(LCD_BL_CTRL_GPIO_PORT, LCD_BL_CTRL_PIN, GPIO_PIN_SET);
95 screensaver_status = 0;
96 printf("Screensaver: off\n");
97 }
98 }
99}
#define SCREENSAVER_DELAY
ScreenSaver delay.
Definition display.c:54

References SCREENSAVER_DELAY.

◆ vDisplayError()

void vDisplayError ( char message[])

Display error op het scherm.

Gaat de gegeven boodschap afprinten op het scherm als een error

Parameters
message[]Boodschap

Definition at line 176 of file display.c.

176 {
177 BSP_LCD_SelectLayer(1);
178 BSP_LCD_SetTextColor(LCD_COLOR_RED);
179 prvDisplayPrintText(message);
180}
static void prvDisplayPrintText(char[])
private functie om de tekst te gaan afdrukken op het scherm
Definition display.c:190

References prvDisplayPrintText().

◆ vDisplayInit()

void vDisplayInit ( void )

Init display.

Het display wordt geïnisaliseerd

Definition at line 108 of file display.c.

108 {
109 BSP_LCD_Init();
110 BSP_LCD_LayerDefaultInit(1, LCD_FB_START_ADDRESS);
111 BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS+(480*272*4));
112 /* Enable the LCD */
113 BSP_LCD_DisplayOn();
114 /* Select the LCD Background Layer */
115 BSP_LCD_SelectLayer(0);
116 /* Clear the Background Layer */
117 BSP_LCD_Clear(LCD_COLOR_WHITE);
118 BSP_LCD_SelectLayer(1);
119 /* Clear the foreground Layer */
120 BSP_LCD_Clear(LCD_COLOR_WHITE);
121
122 BSP_TS_Init(480,272);
124
125}
void vDisplayStartUpScreen(void)
Start scherm weergeven.
Definition display.c:133

References vDisplayStartUpScreen().

◆ vDisplayMainScreen()

void vDisplayMainScreen ( void )

Display het hoofd scherm met de UI.

Print de UI met de knoppen

Definition at line 147 of file display.c.

147 {
148 BSP_LCD_SelectLayer(1);
149 //BSP_LCD_Clear(LCD_COLOR_WHITE); //doet moeilijk na een error van de tcp, om de uit terug te schrijven
150 WDA_LCD_DrawBitmap(UI_V1_DATA, 0,0, UI_V1_DATA_X_PIXEL, UI_V1_DATA_Y_PIXEL, UI_V1_DATA_FORMAT);
151}

◆ vDisplayMessage()

void vDisplayMessage ( char message[])

Display message op het scherm.

Print de boodschap op het scherm

Parameters
message[]Boodschap

Definition at line 162 of file display.c.

162 {
163 BSP_LCD_SelectLayer(1);
164 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
165 prvDisplayPrintText(message);
166}

References prvDisplayPrintText().

◆ vDisplaySetUpButtonStates()

void vDisplaySetUpButtonStates ( void )

Vraagt de status op van iedere knop.

Bij het laden van het hoofdscherm is het aangeraden om de statussen van de knoppen te gaan ophalen vanuit de server.

Definition at line 203 of file display.c.

203 {
204 //lWip stack verhooght naar 6 om toch zo snel mogelijk al de states op te vragen met max 6 tcp_pcb
205
206 vDisplayMessage("setting up button state");
207 char *entityArray[6] = {
208 entity1,
209 entity2,
210 entity3,
211 entity4,
212 entity5,
213 entity6
214 };
215
216 for(uint8_t i = 1; i <= numberOfEntiys; i++){
217
218 errHaSend(entityArray[i-1],"",i);
219
220 while(globalReceive == 0){
221 MX_LWIP_Process();
222 //printf("Wait on recieve\n");
223 }
224 printf("Init states of button: %d\n",i);
225
226 //globalReceive = 0;
227 }
228}
err_t errHaSend(char entity[], char action[], uint16_t usButton)
Stuur boodschap naar server.
Definition TCP_HA.c:389
uint8_t globalReceive
Globale variabele voor communicatie tussen twee aparte functies.
Definition main.c:67
void vDisplayMessage(char message[])
Display message op het scherm.
Definition display.c:162

References errHaSend(), globalReceive, and vDisplayMessage().

◆ vDisplayStartUpScreen()

void vDisplayStartUpScreen ( void )

Start scherm weergeven.

Start scherm weergeven

Definition at line 133 of file display.c.

133 {
134 BSP_LCD_SelectLayer(1);
135 BSP_LCD_Clear(greyColorStartUp);
136 WDA_LCD_DrawBitmap(MADEBYMB_SMAL_DATA,(screenWidth-MADEBYMB_SMAL_DATA_X_PIXEL)/2,0,MADEBYMB_SMAL_DATA_X_PIXEL,MADEBYMB_SMAL_DATA_Y_PIXEL,MADEBYMB_SMAL_DATA_FORMAT);
137}
#define greyColorStartUp
Start up color.
Definition display.c:51
#define screenWidth
Screen Width.
Definition display.c:40

References greyColorStartUp, and screenWidth.

Variable Documentation

◆ globalReceive

uint8_t globalReceive
extern

Globale variabele voor communicatie tussen twee aparte functies.

Definition at line 67 of file main.c.

◆ hltdc

LTDC_HandleTypeDef hltdc
extern

Definition at line 57 of file main.c.