1. Index: src/mixer.c
  2. ===================================================================
  3. --- src/mixer.c (revision 286)
  4. +++ src/mixer.c (working copy)
  5. @@ -22,10 +22,10 @@
  6. };
  7.  
  8. static const motorMixer_t mixerQuadX[] = {
  9. - { 1.0f, -1.0f, 1.0f, -1.0f }, // REAR_R
  10. - { 1.0f, -1.0f, -1.0f, 1.0f }, // FRONT_R
  11. - { 1.0f, 1.0f, 1.0f, 1.0f }, // REAR_L
  12. - { 1.0f, 1.0f, -1.0f, -1.0f }, // FRONT_L
  13. + { 1.0f, -0.5f, 0.5f, -0.5f }, // REAR_R
  14. + { 1.0f, -0.5f, -0.5f, 0.5f }, // FRONT_R
  15. + { 1.0f, 0.5f, 0.5f, 0.5f }, // REAR_L
  16. + { 1.0f, 0.5f, -0.5f, -0.5f }, // FRONT_L
  17. };
  18.  
  19. static const motorMixer_t mixerBi[] = {
  20. @@ -374,14 +374,22 @@
  21. for (i = 0; i < numberMotor; i++) {
  22. if (maxMotor > cfg.maxthrottle) // this is a way to still have good gyro corrections if at least one motor reaches its max.
  23. motor[i] -= maxMotor - cfg.maxthrottle;
  24. - motor[i] = constrain(motor[i], cfg.minthrottle, cfg.maxthrottle);
  25. - if ((rcData[THROTTLE]) < cfg.mincheck) {
  26. +
  27. + //motor[i] = constrain(motor[i], cfg.minthrottle, cfg.maxthrottle);
  28. + if ((rcData[THROTTLE]) > 1500){
  29. + motor[i] = constrain(motor[i], 1530, cfg.maxthrottle);
  30. + }else{
  31. + motor[i] = constrain(motor[i], cfg.mincommand, 1470);
  32. + }
  33. +
  34. + if ((rcData[THROTTLE]) < cfg.mincheck) {
  35. if (!feature(FEATURE_MOTOR_STOP))
  36. motor[i] = cfg.minthrottle;
  37. else
  38. motor[i] = cfg.mincommand;
  39. }
  40. +
  41. if (!f.ARMED)
  42. - motor[i] = cfg.mincommand;
  43. - }
  44. + //motor[i] = cfg.mincommand;
  45. + motor[i] = 1500;}
  46. }
  47. Index: src/mw.c
  48. ===================================================================
  49. --- src/mw.c (revision 286)
  50. +++ src/mw.c (working copy)
  51. @@ -268,7 +268,10 @@
  52. // TODO clean this up. computeRC should handle this check
  53. if (!feature(FEATURE_SPEKTRUM))
  54. computeRC();
  55. -
  56. +
  57. + if (!rcOptions[BOXARM]) ///////////////////// important to be always able to disarm
  58. + f.ARMED = 0;
  59. +
  60. // Failsafe routine
  61. if (feature(FEATURE_FAILSAFE)) {
  62. if (failsafeCnt > (5 * cfg.failsafe_delay) && f.ARMED) { // Stabilize, and set Throttle to specified level
  63. @@ -288,7 +291,7 @@
  64. failsafeCnt++;
  65. }
  66.  
  67. - if (rcData[THROTTLE] < cfg.mincheck) {
  68. + if (rcData[THROTTLE] > 1450 && rcData[THROTTLE] <1550) {
  69. errorGyroI[ROLL] = 0;
  70. errorGyroI[PITCH] = 0;
  71. errorGyroI[YAW] = 0;