Page 350 - 2
P. 350

rcTime = currentTime + 20000;
                computeRC();
                // Failsafe routine - added by MIS
                #if defined(FAILSAFE)
                  if ( failsafeCnt > (5*FAILSAFE_DELAY) && f.ARMED) {                         // Stabilize, and
            set Throttle to specified level
                    for(i=0; i<3; i++) rcData[i] = MIDRC;                                // after specified gu
            ard time after RC signal is lost (in 0.1sec)
                    rcData[THROTTLE] = conf.failsafe_throttle;
                    if (failsafeCnt > 5*(FAILSAFE_DELAY+FAILSAFE_OFF_DELAY)) {                   // Turn OFF
            motors after specified Time (in 0.1sec)
                      go_disarm();     // This will prevent the copter to automatically rearm if failsafe shuts
            it down and prevents
                      f.OK_TO_ARM = 0; // to restart accidentely by just reconnect to the tx - you will hav
            e to switch off first to rearm
                    }
                    failsafeEvents++;
                  }
                  if ( failsafeCnt > (5*FAILSAFE_DELAY) && !f.ARMED) {       //Turn of "Ok To arm to preven
            t the motors from spinning after repowering the RX with low throttle and aux to arm
                      go_disarm();     // This will prevent the copter to automatically rearm if failsafe shuts
            it down and prevents
                      f.OK_TO_ARM = 0; // to restart accidentely by just reconnect to the tx - you will hav
            e to switch off first to rearm
                  }
                  failsafeCnt++;
                #endif
                // end of failsafe routine - next change is made with RcOptions setting


                // ------------------ STICKS COMMAND HANDLER --------------------
                // checking sticks positions
                uint8_t stTmp = 0;
                for(i=0;i<4;i++) {
                  stTmp >>= 2;
                  if(rcData[i] > MINCHECK) stTmp |= 0x80;          // check for MIN
                  if(rcData[i] < MAXCHECK) stTmp |= 0x40;           // check for MAX
                }
                if(stTmp == rcSticks) {
                  if(rcDelayCommand<250) rcDelayCommand++;
                } else rcDelayCommand = 0;
                rcSticks = stTmp;


                // perform actions
                if (rcData[THROTTLE] <= MINCHECK) {                  // THROTTLE at minimum
                  #if !defined(FIXEDWING)


                                                         - 350 -
   345   346   347   348   349   350   351   352   353   354   355