#include "signalgast.h"
#include <avr/io.h>

//der signalgast ist für alle ausgehenden nachrichten zuständig

signalgast::signalgast()
{
    //UART0 ist USB zum PC
    UBRR0 = 51;          //baudrate 19200
    UCSR0B = 8;          //transmit enable
    UCSR0C = 6 | 128;    //bit 2(=4) und 1(=2) : 8 datenbit,
}

void signalgast::sendInt(int sendword)
{
    sendword = int(sendword)+ 32000;
    hb = char(sendword / 256);
    lb = char(sendword - hb * 256);
    sendbyte(255);  //header
    sendbyte(255);
    //sendbyte(0);
    sendbyte(hb);
    sendbyte(lb);
}

void signalgast::sendbyte(unsigned char sendedaten)
{
    while (!(UCSR0A & (1<<UDRE0)))  //warte bis register bereit
    {
    }
    UDR0 = sendedaten;              //raus damit !
}

void signalgast::receivebyte()
{
    while ( !(UCSR0A & (1<<RXC0)) )
    {
    }
    empfangsdaten = UDR0;           //empfangen !
}

void signalgast::beep()
{
    beepcount++;
    if (beepcount > 10)
    {
        if (beepstat == 0)
        {
            PORTL = PORTL | 64;
            beepstat = 1;
        }
        else
        {
            PORTL = PORTL & 191;
            beepstat = 0;
        }
        beepcount = 0;
    }
}

void signalgast::lampeAn()
{
    PORTB = PORTB | 128;    //LED an;
}

void signalgast::lampeAus()
{
    PORTB = PORTB & 127;    //LED aus;
}

void signalgast::heartbeat()
{
    blinkcount++;
    if (blinkcount>10)
    {
        blinkcount=0;
            if (lampe == 1)
            {
                lampeAus();
                lampe = 0;
            }
            else
            {
                lampeAn();
                lampe = 1;
            }
    }

}




