Subversion Repositories FlightCtrl

Rev

Rev 1796 | Rev 1887 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1796 Rev 1821
Line 55... Line 55...
55
#include "flight.h"
55
#include "flight.h"
56
#include "eeprom.h"
56
#include "eeprom.h"
57
#include "attitude.h"
57
#include "attitude.h"
Line 58... Line 58...
58
 
58
 
59
void commands_handleCommands(void) {
59
void commands_handleCommands(void) {
60
    /*
60
        /*
61
     * Get the current command (start/stop motors, calibrate), if any.
61
         * Get the current command (start/stop motors, calibrate), if any.
62
     */
62
         */
63
    uint8_t command = controlMixer_getCommand();
63
        uint8_t command = controlMixer_getCommand();
64
    uint8_t repeated = controlMixer_isCommandRepeated();
64
        uint8_t repeated = controlMixer_isCommandRepeated();
Line 65... Line 65...
65
    uint8_t argument = controlMixer_getArgument();
65
        uint8_t argument = controlMixer_getArgument();
66
 
66
 
67
    if(!(MKFlags & MKFLAG_MOTOR_RUN)) {
67
        if (!(MKFlags & MKFLAG_MOTOR_RUN)) {
68
      if (command == COMMAND_GYROCAL && !repeated) {
68
                if (command == COMMAND_GYROCAL && !repeated) {
69
        // Run gyro calibration but do not repeat it.
-
 
70
        GRN_OFF;
-
 
71
       
-
 
72
        // TODO: out of here. Anyway, MKFLAG_MOTOR_RUN is cleared. Not enough?
-
 
73
        // isFlying = 0;
-
 
74
        // check roll/pitch stick position
-
 
Line -... Line 69...
-
 
69
                        // Run gyro calibration but do not repeat it.
-
 
70
                        GRN_OFF;
-
 
71
 
-
 
72
                        // TODO: out of here. Anyway, MKFLAG_MOTOR_RUN is cleared. Not enough?
-
 
73
                        // isFlying = 0;
-
 
74
                        // check roll/pitch stick position
75
        // if pitch stick is top or roll stick is left or right --> change parameter setting
75
                        // if pitch stick is top or roll stick is left or right --> change parameter setting
76
        // according to roll/pitch stick position
76
                        // according to roll/pitch stick position
77
 
77
 
78
        if (argument < 6) {
78
                        if (argument < 6) {
79
          // Gyro calinbration, with or without selecting a new parameter-set.
79
                                // Gyro calinbration, with or without selecting a new parameter-set.
80
          if(argument > 0 && argument < 6) {
80
                                if (argument > 0 && argument < 6) {
81
            // A valid parameter-set (1..5) was chosen - use it.
81
                                        // A valid parameter-set (1..5) was chosen - use it.
82
            setActiveParamSet(argument);
82
                                        setActiveParamSet(argument);
83
          }
83
                                }
84
          ParamSet_ReadFromEEProm(getActiveParamSet());
84
                                ParamSet_ReadFromEEProm(getActiveParamSet());
85
          attitude_setNeutral();
85
                                attitude_setNeutral();
86
          flight_setNeutral();
86
                                flight_setNeutral();
-
 
87
                                controlMixer_setNeutral();
87
          controlMixer_setNeutral();
88
                                beepNumber(getActiveParamSet());
88
          beepNumber(getActiveParamSet());
89
                        } else if (staticParams.GlobalConfig & (CFG_COMPASS_ACTIVE
89
        } else if(staticParams.GlobalConfig & (CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE) && argument == 7) {
90
                                        | CFG_GPS_ACTIVE) && argument == 7) {
90
          // If right stick is centered and down
91
                                // If right stick is centered and down
91
          // TODO: Out of here! State machine instead.
92
                                // TODO: Out of here! State machine instead.
92
          compassCalState = 1;
93
                                compassCalState = 1;
Line 93... Line 94...
93
          beep(1000);
94
                                beep(1000);
94
        }
95
                        }
95
      }
96
                }
96
 
97
 
97
      // save the ACC neutral setting to eeprom
98
                // save the ACC neutral setting to eeprom
98
      else  {
99
                else {
99
        if(command == COMMAND_ACCCAL && !repeated) {
100
                        if (command == COMMAND_ACCCAL && !repeated) {
100
          // Run gyro and acc. meter calibration but do not repeat it.
101
                                // Run gyro and acc. meter calibration but do not repeat it.
101
          GRN_OFF;
102
                                GRN_OFF;
102
          analog_calibrateAcc();
103
                                analog_calibrateAcc();
103
          attitude_setNeutral();
104
                                attitude_setNeutral();
104
          flight_setNeutral();
105
                                flight_setNeutral();
105
          controlMixer_setNeutral();
106
                                controlMixer_setNeutral();
106
          beepNumber(getActiveParamSet());
107
                                beepNumber(getActiveParamSet());
107
        }
108
                        }
108
      }
109
                }
109
    } // end !MOTOR_RUN condition.
110
        } // end !MOTOR_RUN condition.
110
    if (command == COMMAND_START) {
111
        if (command == COMMAND_START) {
111
      isFlying = 1; // TODO: Really????
112
                isFlying = 1; // TODO: Really????
112
      // if (!controlMixer_isCommandRepeated()) {
113
                // if (!controlMixer_isCommandRepeated()) {
113
      // attitude_startDynamicCalibration(); // Try sense the effect of the motors on sensors.
114
                // attitude_startDynamicCalibration(); // Try sense the effect of the motors on sensors.
114
      MKFlags |= (MKFLAG_MOTOR_RUN | MKFLAG_START); // set flag RUN and START. TODO: Is that START flag used at all???
115
                MKFlags |= (MKFLAG_MOTOR_RUN | MKFLAG_START); // set flag RUN and START. TODO: Is that START flag used at all???
115
      // } else { // Pilot is holding stick, ever after motor start. Continue to sense the effect of the motors on sensors.
116
                // } else { // Pilot is holding stick, ever after motor start. Continue to sense the effect of the motors on sensors.
116
      // attitude_continueDynamicCalibration();
117
                // attitude_continueDynamicCalibration();
117
      // setPointYaw = 0;
118
                // setPointYaw = 0;
118
      // IPartPitch = 0;
119
                // IPartPitch = 0;
119
      // IPartRoll = 0;
120
                // IPartRoll = 0;
120
      // }
121
                // }
121
    } else if (command == COMMAND_STOP) {
122
        } else if (command == COMMAND_STOP) {