Browse Source

Merge pull request #5314 from thinkyhead/case_light_menu_fix

Fix and optimize case-light code
Scott Lahteine 8 years ago
parent
commit
f45b6a7762
2 changed files with 27 additions and 34 deletions
  1. 10
    28
      Marlin/Marlin_main.cpp
  2. 17
    6
      Marlin/ultralcd.cpp

+ 10
- 28
Marlin/Marlin_main.cpp View File

881
   #endif
881
   #endif
882
 }
882
 }
883
 
883
 
884
-#if HAS_CASE_LIGHT
885
-
886
-  void setup_case_light() {
887
-    digitalWrite(CASE_LIGHT_PIN,
888
-      #if ENABLED(CASE_LIGHT_DEFAULT_ON)
889
-        255
890
-      #else
891
-        0
892
-      #endif
893
-    );
894
-    analogWrite(CASE_LIGHT_PIN,
895
-      #if ENABLED(CASE_LIGHT_DEFAULT_ON)
896
-        255
897
-      #else
898
-        0
899
-      #endif
900
-    );
901
-  }
902
-
903
-#endif
904
-
905
 void setup_powerhold() {
884
 void setup_powerhold() {
906
   #if HAS_SUICIDE
885
   #if HAS_SUICIDE
907
     OUT_WRITE(SUICIDE_PIN, HIGH);
886
     OUT_WRITE(SUICIDE_PIN, HIGH);
7279
 
7258
 
7280
 #if HAS_CASE_LIGHT
7259
 #if HAS_CASE_LIGHT
7281
 
7260
 
7261
+  uint8_t case_light_brightness = 255;
7262
+
7263
+  void update_case_light() {
7264
+    digitalWrite(CASE_LIGHT_PIN, case_light_on ? HIGH : LOW);
7265
+    analogWrite(CASE_LIGHT_PIN, case_light_on ? case_light_brightness : 0);
7266
+  }
7267
+
7282
   /**
7268
   /**
7283
    * M355: Turn case lights on/off and set brightness
7269
    * M355: Turn case lights on/off and set brightness
7284
    *
7270
    *
7286
    *   P<byte>  Set case light brightness (PWM pin required)
7272
    *   P<byte>  Set case light brightness (PWM pin required)
7287
    */
7273
    */
7288
   inline void gcode_M355() {
7274
   inline void gcode_M355() {
7289
-    static uint8_t case_light_brightness = 255;
7290
     if (code_seen('P')) case_light_brightness = code_value_byte();
7275
     if (code_seen('P')) case_light_brightness = code_value_byte();
7291
-    if (code_seen('S')) {
7292
-      case_light_on = code_value_bool();
7293
-      digitalWrite(CASE_LIGHT_PIN, case_light_on ? HIGH : LOW);
7294
-      analogWrite(CASE_LIGHT_PIN, case_light_on ? case_light_brightness : 0);
7295
-    }
7276
+    if (code_seen('S')) case_light_on = code_value_bool();
7277
+    update_case_light();
7296
     SERIAL_ECHO_START;
7278
     SERIAL_ECHO_START;
7297
     SERIAL_ECHOPGM("Case lights ");
7279
     SERIAL_ECHOPGM("Case lights ");
7298
     case_light_on ? SERIAL_ECHOLNPGM("on") : SERIAL_ECHOLNPGM("off");
7280
     case_light_on ? SERIAL_ECHOLNPGM("on") : SERIAL_ECHOLNPGM("off");
10020
   #endif
10002
   #endif
10021
 
10003
 
10022
   #if HAS_CASE_LIGHT
10004
   #if HAS_CASE_LIGHT
10023
-    setup_case_light();
10005
+    update_case_light();
10024
   #endif
10006
   #endif
10025
 
10007
 
10026
   #if HAS_BED_PROBE
10008
   #if HAS_BED_PROBE

+ 17
- 6
Marlin/ultralcd.cpp View File

110
   #if HAS_POWER_SWITCH
110
   #if HAS_POWER_SWITCH
111
     extern bool powersupply;
111
     extern bool powersupply;
112
   #endif
112
   #endif
113
-  #if HAS_CASE_LIGHT
114
-    extern bool case_light_on;
115
-  #endif
113
+
116
   const float manual_feedrate_mm_m[] = MANUAL_FEEDRATE;
114
   const float manual_feedrate_mm_m[] = MANUAL_FEEDRATE;
117
   void lcd_main_menu();
115
   void lcd_main_menu();
118
   void lcd_tune_menu();
116
   void lcd_tune_menu();
580
 
578
 
581
   #endif //SDSUPPORT
579
   #endif //SDSUPPORT
582
 
580
 
581
+  #if HAS_CASE_LIGHT && ENABLED(MENU_ITEM_CASE_LIGHT)
582
+
583
+    extern bool case_light_on;
584
+    extern void update_case_light();
585
+
586
+    void toggle_case_light() {
587
+      case_light_on = !case_light_on;
588
+      lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
589
+      update_case_light();
590
+    }
591
+
592
+  #endif // MENU_ITEM_CASE_LIGHT
593
+
583
   /**
594
   /**
584
    *
595
    *
585
    * "Main" menu
596
    * "Main" menu
594
     // Switch case light on/off
605
     // Switch case light on/off
595
     //
606
     //
596
     #if HAS_CASE_LIGHT && ENABLED(MENU_ITEM_CASE_LIGHT)
607
     #if HAS_CASE_LIGHT && ENABLED(MENU_ITEM_CASE_LIGHT)
597
-      if (case_light_on == 0)
598
-        MENU_ITEM(gcode, MSG_LIGHTS_ON, PSTR("M355 S1"));
608
+      if (case_light_on)
609
+        MENU_ITEM(function, MSG_LIGHTS_OFF, toggle_case_light);
599
       else
610
       else
600
-        MENU_ITEM(gcode, MSG_LIGHTS_OFF, PSTR("M355 S0"));
611
+        MENU_ITEM(function, MSG_LIGHTS_ON, toggle_case_light);
601
     #endif
612
     #endif
602
 
613
 
603
     #if ENABLED(BLTOUCH)
614
     #if ENABLED(BLTOUCH)

Loading…
Cancel
Save