#include "funker.h"

//Der Funker ist für die RC-Fernsteuerung zuständig----------------------

funker::funker()
{
    ruderfilter = 50; //klappt nicht
    ruderwinkel = 50;
}

void funker::decodieren()                       //ppm-impulse sind 1 bis 2 ms lang, das entspricht etwa 280...470 digit
{
    if (kanal[2] > 100)                         //schalter rechts oben : segel setzen (irgendwo 280...450)
    {
        segel = 1;
    }
    else                                        //schalter rechts unten : segel bergen
    {
        segel = 0;
    }


    //Motorinfo-----------------------------------------------------------
    if (kanal[1] > 100)                           //schalter links ist oben -> fahrt unter motor
    {
        motorlauf = 1;
        if (kanal[0] > 100)                       //maschinentelegraf auf vorwärts
        {
            motorrichtung = 1;
            motordrehzahl = kanal[0] - 100;       //normieren auf 0...100
        }
        else                                      //maschinentelegraf auf rückwärts
        {
            motorrichtung = 0;
            motordrehzahl = 100 - kanal[0];
        }
    }
    else                                          //schalter links ist unten -> maschine aus
    {
        motorlauf = 0;
        motordrehzahl = 0;
    }

    //Ruder--------------------------------------------------
    ruderfilter = 0.6 * ruderfilter + 0.4 * kanal[3]; //tiefpass(integration) damit servo nicht so zappelt
    if ((ruderfilter-ruderalt)*(ruderfilter-ruderalt) > 4) //schwelle Betrag größer 2
    {
        ruderalt=ruderfilter;
    }
    ruderwinkel = int(ruderalt);

    if (ruderwinkel > 200)
    {
        ruderwinkel = 200;
    }
    if (ruderwinkel < 0)
    {
        ruderwinkel = 0;
    }
    ruderwinkel = 200 - ruderwinkel;
    ruderwinkel = ruderwinkel / 2;


    //Gaffelsegel-Winde für Besan und Groß------------------------
    gaffelfilter = 0.9 * gaffelfilter + 0.1 * kanal[5]; //tiefpass(integration) damit servo nicht so zappelt
    gaffelwinkel = int(gaffelfilter);
    if (gaffelwinkel > 200)
    {
        gaffelwinkel = 200;
    }
    if (gaffelwinkel < 0)
    {
        gaffelwinkel = 0;
    }
    gaffelwinkel = 200 - gaffelwinkel;
    gaffelwinkel = gaffelwinkel / 5;


    //Fockschot-Winde -------------------------------------------
    fockfilter = 0.8 * fockfilter + 0.2 * kanal[4]; //tiefpass(integration) damit servo nicht so zappelt
    fockwinkel = int(fockfilter);
    if (fockwinkel > 200)
    {
        fockwinkel = 200;
    }
    if (fockwinkel < 0)
    {
        fockwinkel = 0;
    }
    fockwinkel = 200 - fockwinkel;
    fockwinkel = fockwinkel / 6;

}


