Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: TS_DISCO_F746NG LCD_DISCO_F746NG BSP_DISCO_F746NG BUTTON_GROUP Arduino
Functions.h
- Committer:
 - MaxScorda
 - Date:
 - 2020-12-21
 - Revision:
 - 6:ba00a5cd9466
 - Parent:
 - 5:19f1743cecb1
 - Child:
 - 7:f654d2b1f08b
 
File content as of revision 6:ba00a5cd9466:
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
using namespace ButGrp;
void SetLayer(int numlayer, int tipo=0)
{
    return;
    // vedere come passare BSPLCD_
    for (int idx = 0; idx < NUMLAYER; idx++) {
        //  sprintf(str, "Touches: %d",idx);
        BSP_LCD_DisplayStringAt(0, LINE(12+idx), (uint8_t *)&str, LEFT_MODE);
        if (idx==numlayer) {
            BSP_LCD_SetLayerVisible(idx, ENABLE);
            BSP_LCD_SelectLayer(idx);
            //   BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"ON", RIGHT_MODE);
        } else  {
            if (tipo==0) {
                BSP_LCD_SetLayerVisible(idx, DISABLE);
                // BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"OFF", RIGHT_MODE);
            }
        }
    }
}
void PressButton()
{
    static int ccont=0;
    led1= !led1;
    ccont++;
    if (nummenu==0) {
        BSP_LCD_.SetFont(&Font16);
        BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
        sprintf(str, "Tasto premuto %d volte", ccont);
        BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *) str, CENTER_MODE);
    }
}
void GestioneButton()
{
    // vedi buttoGroup_Demo per esempio group
    static bool toccato=false;
    bool modifica=false;
    BSP_TS_GetState(&TS_State);
    if ((avanti.Touched())&& (toccato==false)) {
        nummenu=(++nummenu)%MAXMENU;
        // reset.Draw(INACTIVE, LCD_COLOR_GRAY);
        modifica=true;
    }
    if ((indietro.Touched()) && (toccato==false)) {
        nummenu=((--nummenu)+MAXMENU)%MAXMENU;
        // reset.Draw(INACTIVE, LCD_COLOR_GRAY);
        modifica=true;
    }
    wait(0.01f);
    if((TS_State.touchDetected) && (toccato==false)) {
        toccato=true;
    } else if((!TS_State.touchDetected) && (toccato==true)) {
        toccato=false;
    }
    if (modifica==true) {
        if (nummenu==0) {
            BSP_LCD_.SetFont(&Font12);
            BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
            sprintf(str, "menu: %d", nummenu);
        }
        BSP_LCD_DisplayStringAt(50, LINE(7), (uint8_t *)str, LEFT_MODE);
        BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
        BSP_LCD_FillRect(40+1, 45+1, DimX-80-1, DimY-45-45-1);
        BSP_LCD_FillRect(DimX/3+6, 1, ((DimX*2)/3)-7, 38);
        BSP_LCD_.SetFont(&Font24);
        BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
        switch (nummenu) {
            case 0:
                BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Dati Generali", LEFT_MODE);
                break;
            case 1:
                BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Da assegnare", LEFT_MODE);
                break;
            case 2:
                BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Dati TCP", LEFT_MODE);
                break;
        }
    }
}
void GestioneTouch()
{
    static uint16_t x=0, y=0;
    uint8_t cleared = 0;
    uint8_t prev_nb_touches = 0;
    BSP_TS_GetState(&TS_State);
    BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
    BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
    BSP_LCD_.SetFont(&Font16);
    if (TS_State.touchDetected) {
        // Clear lines corresponding to old touches coordinates
        if (TS_State.touchDetected < prev_nb_touches) {
            for (int idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
                BSP_LCD_ClearStringLine(idx);
            }
        }
        prev_nb_touches = TS_State.touchDetected;
        cleared = 0;
        sprintf(str, "Touches: %d", TS_State.touchDetected);
        BSP_LCD_DisplayStringAt(50, LINE(3), (uint8_t *)str, LEFT_MODE);
        SetLayer( 1);
        BSP_LCD_DrawPixel(x, y, LCD_COLOR_BLACK);
        SetLayer( 0);
        for (int idx = 0; idx < TS_State.touchDetected; idx++) {
            x = TS_State.touchX[idx];
            y = TS_State.touchY[idx];
            sprintf(str, "Touch %d: x=%d y=%d    ", idx+1, x, y);
            BSP_LCD_DisplayStringAt(50, LINE(idx+4), (uint8_t *)str, LEFT_MODE);
        }
        SetLayer( 1);
        BSP_LCD_DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_WHITE);
        SetLayer( 0);
    } else {
        if (!cleared) {
            sprintf(str, "Touches: 0");
            BSP_LCD_DisplayStringAt(50, LINE(3), (uint8_t *)&str, LEFT_MODE);
            cleared = 1;
        }
    }
}
void DatiTCP()
{
    static bool giavisualizzato=false;
    if ((nummenu==2)&&(giavisualizzato==false)) {
        BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
        BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
        BSP_LCD_.SetFont(&Font16);
        BSP_LCD_DisplayStringAt(0, LINE(3), (uint8_t *)"Ethernet socket example", CENTER_MODE);
        // Show the network address
        const char *ip = net.get_ip_address();
        const char *netmask = net.get_netmask();
        const char *gateway = net.get_gateway();
        sprintf(str,"IP address: %s", ip ? ip : "None");
        BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)str, CENTER_MODE);
        sprintf(str,"Netmask: %s", netmask ? netmask : "None");
        BSP_LCD_DisplayStringAt(0, LINE(6), (uint8_t *)str, CENTER_MODE);
        sprintf(str,"Gateway: %s", gateway ? gateway : "None");
        BSP_LCD_DisplayStringAt(0, LINE(7), (uint8_t *)str, CENTER_MODE);
        giavisualizzato=true;
    }
    if (nummenu!=2)
        giavisualizzato=false;
}
#endif