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

io_settings::io_settings()
{
    //zuerst zur Sicherheit alles Eingänge
    DDRA = 0;
    DDRB = 0;
    DDRC = 0;
    DDRE = 0;
    DDRG = 0;
    DDRH = 0;
    DDRJ = 0;
    DDRK = 0;
    DDRL = 0;

    //onboard-LED
    DDRB = DDRB | 2;    //PB1, Ausgang (Pin52)
    DDRB = DDRB | 128;  //PB7 ist die LED auf dem Board

    //"fly-by-wire" - Fernsteuerung (PPM-Ausgänge)
    DDRA = DDRA | 7;    //PA0,1,2 auf HIGH -> Ausgänge Ruderservo und Schotwinden

    //Testpins digital40/41
    //DDRG = DDRG | 3;    //PG0(digital41) und PG1(digital40) auf Ausgang

    //Beep
    DDRL = DDRL | 64;   //PL6 Pin 43 ist Ausgang für Pfeifferl

    //Interrupts
    DDRE = DDRE & (255-16); //PE4 ist INT4 (PPM-Decoder)
    DDRK = DDRK & (255-1);  //PK0 ist Interrupt für Inkrement Winde 1 : PCINT16
    DDRB = DDRB & (255-8);  //PB3 ist Interrupt für Inkrement Winde 2 : PCINT3
    DDRJ = DDRJ & (255-2);  //PJ1 ist Interrupt für Winde 3 : PCINT9

    //Winden 1/2/3
    DDRA = DDRA | 248 ; //Pins PA3-PA7 sind Ausgänge zu H-Brücken
    DDRC = DDRC | 255 ; //alle Pins an Port C sind Ausgänge für H-Brücken


    //Winden-PWM : Timer 4
    DDRH = DDRH | 56;   //PH3,4,5 Ausgang = PWM-Pin 6,7,8 (OC4A bis OC4C : PWM-Ausgänge)

    //Motorsteuerung
    DDRB = DDRB | 16;   //PB4 ist PWM für Motorbrücke
    DDRL = DDRL | 6;    //PL1 und PL2 sind Richtungsbits für Motorbrücke

    //Windenlastschalter
    DDRB = DDRB & (255 - 32);   //PB5 Eingang für Windenlastschalter Winde 1 (Großpiek)
    DDRB = DDRB & (255 - 64);   //PB6 Eingang für Windenlastschalter Winde 2 (Großfall)
    //DDRB = DDRB & (255 - 128);  //TEST PB7 (Pin13) Windenlastschalter Fock (Winde 3) <- IST LED !!!
    DDRH = DDRH & (255 - 64);   //PH6 (Pin9) Eingang für Windenlastschalter Winde 3 (Fockfall)
}
