#define ROLLRADIUS        0.31       // Nachmessen
#define KICKDOWNATPERCENT 70         // Nachmessen

// typedef enum {ERSTER_GANG,ZWEITER_GANG,DRITTER_GANG,VIERTER_GANG} SCHALTZUSTAND; bringt nichts
typedef enum {LOW,DRIVE} SCHALTZUSTAND;

typedef struct FA_NT_tag {
  double FA;
  double nT;
} FA_NT;

int FAR PASCAL LibMain(HANDLE hModule, WORD wDataSeg, WORD cbHeapSize, LPSTR lpszCmdLine);
int FAR PASCAL _WEP (int bSystemExit);
double lookT(double param,const double *valueVector);
double getMT(double nT,double max_nT,double s,double max_s);
double getFw(double v);
double getFb(double Fpb);
FA_NT getFAandnT(double v_in,double MT_in,double s_in);
double getV(double Antriebskraft,double Fahrwiderstand,double Bremskraft);

double FAR PASCAL GetTurbinendrehmoment(double turbinendrehzahl,
                                        double max_turbinendrehzahl,
                                        double gaspedalstellung,
                                        double max_gaspedalstellung);
double FAR PASCAL GetFahrwiderstandskraft(double geschwindigkeit);
double FAR PASCAL GetBremskraft(double bremspedalkraft);

// Beim Betrieb des komplettes Modells
void FAR PASCAL SetModelQuiescence(void);
void FAR PASCAL UpdateModel(double gasIn,double bremsIn);
double FAR PASCAL ModeledFahrgeschwindigkeit(void);
double FAR PASCAL ModeledTurbinendrehmoment(void);
double FAR PASCAL ModeledTurbinendrehzahl(void);
double FAR PASCAL ModeledBremskraft(void);
double FAR PASCAL ModeledAntriebskraft(void);
double FAR PASCAL ModeledFahrwiderstandskraft(void);
double FAR PASCAL PercentModeledMotorLast(void);

