Random terror phrases

Dependencies:   EFM32_CapSenseSlider EFM32_SegmentLCD mbed

Fork of EMF32-Segment-Touch-Demo by Max Scordamaglia

Functions.h

Committer:
MaxScorda
Date:
2015-09-29
Revision:
2:9c22b1264236

File content as of revision 2:9c22b1264236:

#include <string>


char* string2char(string sttde)
{
    //ora aggiunge comunque l'EOS. Decidere se parametrizzare
    //sttde=addEOS(sttde);
    char *cstr = new char[sttde.length() + 1];
    strcpy(cstr, sttde.c_str());
    // delete [] cstr;
    return cstr;
}

//****************** FUNZIONI STANDARD NON MODIFICATE
/**
 * Callback for pushbutton interrupt
 */

void symbolGest()
{
    if (count==7) {
        segmentDisplay.Symbol(LCD_SYMBOL_GECKO, true);
        segmentDisplay.Write("GeckoOn");
        pc.printf("Gecko! \n\r");
    } else {
        segmentDisplay.Symbol(LCD_SYMBOL_GECKO, false);
        if (count%2==0) segmentDisplay.Write("Scorda");
        else  segmentDisplay.Write("TataGek");
    }
}


void ledToggler(void)
{
    myled1 = !myled1;
}

void ledTogglerGen(void)
{
    myled0 = !myled0;
    segmentDisplay.Symbol(LCD_SYMBOL_GECKO, false);
    myled1=1;
    ledTicker1.detach();
}


void timeDisp()
{
    seconds++;
    uint32_t clockValue = ((seconds / 60) % 60) * 100 + (seconds % 60);
    segmentDisplay.Number(clockValue);
    segmentDisplay.Symbol(LCD_SYMBOL_COL10, seconds & 0x1);

}

/**
 * Callback for display
 */
void tickerCallback(void)
{
    float rtime;
    int choicev;
    string mess;

    //choice
    choicev=rand()%15;

    switch (choicev) {
        case 0:
            mess="Vai Via";
            break;
        case 1:
            mess="Via!!";
            break;
        case 2:
            mess="Vattene";
            break;
        case 3:
            mess="Aiuto!";
            break;
        case 4:
            mess="Basta!";
            break;
        case 5:
            mess="Paura!";
            break;
        case 6:
            mess="No!";
            break;
        case 7:
            mess="No!No!!";
            break;
        case 8:
            mess="Noooooo";
            break;
        case 9:
            mess="Lontano";
            break;
        case 10:
            mess="Aaargh";
            break;
        case 11:
            mess="Aaahhh";
            break;
        case 12:
            mess="Orrore!";
            break;
        case 13:
            mess="Vattene";
            break;
        case 14:
            mess="Oddioo";
            break;
    }
//display
    segmentDisplay.Write(string2char(mess));
    //ricalcolo ticker
    rtime=((rand()%4000)+1000)/1000;
    refreshTicker.detach();
    refreshTicker.attach(&tickerCallback, rtime);
    myled0 = 1;
    segmentDisplay.Symbol(LCD_SYMBOL_GECKO, true);
    ledTicker0.detach();
    ledTicker0.attach(&ledTogglerGen, rtime/2);
    ledTicker1.attach(&ledToggler, 0.1f);
}

/**
 * Callback for touching/untouching the cap slider
 */


void touchCallback(void)
{
    segmentDisplay.Symbol(LCD_SYMBOL_EFM32, capSlider.isTouched());

    if(!capSlider.isTouched()) {
        segmentDisplay.Write("Bestia!");
        printf("Touch in use \n\r");
    }
}

/**
 * Callback for sliding the cap slider
 */
void slideCallback(void)
{
    segmentDisplay.LowerNumber(capSlider.get_position());
}

//************************ FUNZIONI MODIFICATE
void in0_handler()
{
    segmentDisplay.Write("No 0!");
    /*
    pc.printf("Button 0 \n\r");
    count++;
    if (count>7) count=7;
    else segmentDisplay.ARing(count, true);
    symbolGest() ;
    */
}

void in1_handler()
{
    segmentDisplay.Write("No 1!");
    /*
    printf("Button 1 \n\r");
    segmentDisplay.ARing(count, false);
    count--;
    if (count<0) count=-1;
    symbolGest() ;
    */
}