Selaa lähdekoodia

Fix and optimize case-light code

Scott Lahteine 8 vuotta sitten
vanhempi
commit
61437d988a
2 muutettua tiedostoa jossa 27 lisäystä ja 34 poistoa
  1. 10
    28
      Marlin/Marlin_main.cpp
  2. 17
    6
      Marlin/ultralcd.cpp

+ 10
- 28
Marlin/Marlin_main.cpp Näytä tiedosto

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 Näytä tiedosto

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();
576
 
574
 
577
   #endif //SDSUPPORT
575
   #endif //SDSUPPORT
578
 
576
 
577
+  #if HAS_CASE_LIGHT && ENABLED(MENU_ITEM_CASE_LIGHT)
578
+
579
+    extern bool case_light_on;
580
+    extern void update_case_light();
581
+
582
+    void toggle_case_light() {
583
+      case_light_on = !case_light_on;
584
+      lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
585
+      update_case_light();
586
+    }
587
+
588
+  #endif // MENU_ITEM_CASE_LIGHT
589
+
579
   /**
590
   /**
580
    *
591
    *
581
    * "Main" menu
592
    * "Main" menu
590
     // Switch case light on/off
601
     // Switch case light on/off
591
     //
602
     //
592
     #if HAS_CASE_LIGHT && ENABLED(MENU_ITEM_CASE_LIGHT)
603
     #if HAS_CASE_LIGHT && ENABLED(MENU_ITEM_CASE_LIGHT)
593
-      if (case_light_on == 0)
594
-        MENU_ITEM(gcode, MSG_LIGHTS_ON, PSTR("M355 S1"));
604
+      if (case_light_on)
605
+        MENU_ITEM(function, MSG_LIGHTS_OFF, toggle_case_light);
595
       else
606
       else
596
-        MENU_ITEM(gcode, MSG_LIGHTS_OFF, PSTR("M355 S0"));
607
+        MENU_ITEM(function, MSG_LIGHTS_ON, toggle_case_light);
597
     #endif
608
     #endif
598
 
609
 
599
     #if ENABLED(BLTOUCH)
610
     #if ENABLED(BLTOUCH)

Loading…
Peruuta
Tallenna