File content as of revision 1:3ce68d55dfb8:
#include "view.h"
#include "stm32746g_discovery_lcd.h"
#include "mbed.h"
#include "button.h"
#include <list>
#include <string.h>
RawSerial pc(USBTX, USBRX, 115200);
RawSerial wifi(D1, D0, 115200);
uint8_t donnee[100];
uint8_t donneecpy[100];
uint8_t donneeIp[100];
uint8_t valReaded = 0;
uint8_t dataReaded = 0;
uint8_t ipOk = 0;
uint8_t isInit = 0;
int ft_strlen(const uint8_t* str)
{
int i = 0;
while (str[i] != '\0' || str[i] != '\r' || str[i] != '\n')
{
i++;
}
return i;
}
View::View(int width, int height)
: m_width(width), m_height(height)
{
initLCD();
//LEDS buttons
led0->setText("0");
led1->setText("1");
led2->setText("2");
led3->setText("3");
led4->setText("4");
led5->setText("5");
led6->setText("6");
led7->setText("7");
led8->setText("8");
led9->setText("9");
led10->setText("10");
led11->setText("11");
//RGB TextView
redTextview->setText("000");
greenTextview->setText("000");
blueTextview->setText("000");
//RGB + and -
plusRED->setText("+");
minusRED->setText("-");
plusGREEN->setText("+");
minusGREEN->setText("-");
plusBLUE->setText("+");
minusBLUE->setText("-");
//SET NEW COLOR
setNewColor->setText("SET NEW COLOR");
//Animations
anim1->setText("Animations1");
anim2->setText("Animations2");
anim3->setText("Animations3");
start->setText("Start animation");
stop->setText("Stop animation");
//LEDS buttons
m_buttonList.push_front(led0);
m_buttonList.push_front(led1);
m_buttonList.push_front(led2);
m_buttonList.push_front(led3);
m_buttonList.push_front(led4);
m_buttonList.push_front(led5);
m_buttonList.push_front(led6);
m_buttonList.push_front(led7);
m_buttonList.push_front(led8);
m_buttonList.push_front(led9);
m_buttonList.push_front(led10);
m_buttonList.push_front(led11);
//RGB TextView
m_buttonList.push_front(redTextview);
m_buttonList.push_front(greenTextview);
m_buttonList.push_front(blueTextview);
//RGB + and -
m_buttonList.push_front(plusRED);
m_buttonList.push_front(minusRED);
m_buttonList.push_front(plusGREEN);
m_buttonList.push_front(minusGREEN);
m_buttonList.push_front(plusBLUE);
m_buttonList.push_front(minusBLUE);
//SET NEW COLOR
m_buttonList.push_front(setNewColor);
//Animations
m_buttonList.push_front(anim1);
m_buttonList.push_front(anim2);
m_buttonList.push_front(anim3);
m_buttonList.push_front(start);
m_buttonList.push_front(stop);
}
View::~View() //Destructeur de bouton
{
for (Button * it : m_buttonList) {
delete it;
}
m_buttonList.clear();
}
void View::contain(int x, int y)
{
if(!screenReleased){
screenReleased=true;
for (Button * it : m_buttonList) {
updatePlusMinus(it);
}
}
}
void View::draw()
{
BSP_LCD_Clear(m_bgColor); //Enlève l'affichage du début
for (Button * it : m_buttonList) {
it->draw();
}
drawText();
}
void View::initLCD(){
uint8_t status;
BSP_LCD_Init(); //Initialise le LCD
BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS);
BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER);
status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
if (status != TS_OK) {
BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE);
while (1);
} else {
BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE);
}
HAL_Delay(100);
BSP_LCD_SetFont(&Font12);
}
void View::drawText(){
//(uint32_t)0xFFFFFFFF
BSP_LCD_SetTextColor(LCD_COLOR_RED);
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_DisplayStringAt(RGB_TEXT_VIEW_WIDTH+220+2,38,(uint8_t *)"Red", LEFT_MODE);
//BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
BSP_LCD_DisplayStringAt(RGB_TEXT_VIEW_WIDTH+220+2,128,(uint8_t *)"Green", LEFT_MODE);
//BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
BSP_LCD_DisplayStringAt(RGB_TEXT_VIEW_WIDTH+220+2,218,(uint8_t *)"Blue", LEFT_MODE);
}
void View::updateLCD(){
BSP_TS_GetState(&TS_State);
if (TS_State.touchDetected) { //Detecte si l'écran tactile est touché
cleared = false;
for (idx = 0; idx < TS_State.touchDetected; idx++) {
x = TS_State.touchX[idx];
y = TS_State.touchY[idx];
contain(x, y);
}
} else {
screenReleased=false;
if (!cleared) {
draw();
cleared = true;
}
}
}
void View::updatePlusMinus(Button* it){
if (it->contain(x,y)) {
if(it == plusRED){
buffer= std::atoi((const char*)redTextview->getText());
buffer++;
sprintf(str, "%d", buffer);
redTextview->setText(str);
}
}
}