Subversion Repositories FlightCtrl

Rev

Rev 1136 | Rev 1139 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/* pitch.c
 *
 * Copyright 2009 Thomas Jachmann
 *
 * Pitch-Steuerung
 */


#include "main.h"
#include "parameter.h"
#include "pitch_neutral.h"
#include "pitch_md.h"
#include "pitch.h"


// Zeiger auf den durch das Setting bestimmten Pitch-Steuerungsalgorithmus
int (* pitch_value_ptr)( void );

// Prototyp
int pitch_mk_value( void );

/*
 * Führt die Initialisierung der Pitch-Steuerung durch. Diese Funktion
 * wird nach jeder Setting-Auswahl sowie nach jeder Setting-Änderung
 * aufgerufen.
 */

void pitch_init( void ) {

        // FIXME Funktioniert noch nicht
        switch( PARAM_PITCH_MODE ) {
                case PARAM_PITCH_MODE_NEUTRAL:
                        pitch_value_ptr = pitch_neutral_value;
                        break;

                case PARAM_PITCH_MODE_MD:
                        pitch_value_ptr = pitch_md_value;
                        break;

                default:
                        pitch_value_ptr = pitch_mk_value;
        }
       
        // Hier können weitere Initialisierungen folgen
}


int pitch_value( void ) {
        switch( PARAM_PITCH_MODE ) {
                case PARAM_PITCH_MODE_NEUTRAL:
                        return pitch_neutral_value();

                case PARAM_PITCH_MODE_MD:
                        return pitch_md_value();

                default:
                        return pitch_mk_value();
        }
}


/*
 * Führt eine Pitch-Berechnung aus, die der Original-SW entspricht.
 */

int pitch_mk_value( void ) {
        register int stickValue = PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ];
        register int pitchCount = stickValue + 120;     // Warum 120? Gas= 0 ist -125
       
        DebugOut.Analog[26] = stickValue;
        DebugOut.Analog[28] = pitchCount;

        return pitchCount;
}