-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathConfiguration.h
2889 lines (2787 loc) · 144 KB
/
Configuration.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*!
* \file Configuration.h
* \brief The configuration file contains global constants
* \author Simon Buchholz
* \copyright Copyright (c) 2023, Simon Buchholz
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#ifndef CONFIGURATION_H
#define CONFIGURATION_H
#include <QJsonObject>
#include <cstdint>
#include <string>
static constexpr auto SW_VERSION{"0.2.0"};
static constexpr auto MARLIN_VERSION{"2.1.2"};
static constexpr auto TEMPLATE_PATH{":/configuration_template.txt"};
static constexpr auto FIRMWARE_TEMPLATE_PATH{":/firmware_template.txt"};
static constexpr auto HARDWARE_TEMPLATE_PATH{":/hardware_template.txt"};
static constexpr auto EXTRUDER_TEMPLATE_PATH{":/extruder_template.txt"};
static constexpr auto POWERSUPPLY_TEMPLATE_PATH{":/powersupply_template.txt"};
static constexpr auto THERMALSETTINGS_TEMPLATE_PATH{":/thermalsettings_template.txt"};
static constexpr auto KINEMATICS_TEMPLATE_PATH{":/kinematics_template.txt"};
static constexpr auto ENDSTOPS_TEMPLATE_PATH{":/endstops_template.txt"};
static constexpr auto MOVEMENT_TEMPLATE_PATH{":/movement_template.txt"};
static constexpr auto Z_PROBE_OPTIONS_TEMPLATE_PATH{":/z_probe_options_template.txt"};
static constexpr auto STEPPER_DRIVERS_TEMPLATE_PATH{":/stepper_drivers_template.txt"};
static constexpr auto HOMING_AND_BOUNDS_TEMPLATE_PATH{":/homing_and_bounds_template.txt"};
static constexpr auto FILAMENT_RUNOUT_SENSOR_TEMPLATE_PATH{":/filament_runout_sensor_template.txt"};
static constexpr auto BED_LEVELING_TEMPLATE_PATH{":/bed_leveling_template.txt"};
static constexpr auto HOMING_OPTIONS_TEMPLATE_PATH{":/homing_options_template.txt"};
static constexpr auto ADDITIONAL_FEATURES_TEMPLATE_PATH{":/additional_features_template.txt"};
static constexpr auto USER_INTERFACE_LANGUAGE_TEMPLATE_PATH{":/user_interface_language_template.txt"};
static constexpr auto SD_CARD_TEMPLATE_PATH{":/sd_card_template.txt"};
static constexpr auto LCD_MENU_ITEMS_TEMPLATE_PATH{":/lcd_menu_items_template.txt"};
static constexpr auto ENCODER_TEMPLATE_PATH{":/encoder_template.txt"};
static constexpr auto SPEAKER_TEMPLATE_PATH{":/speaker_template.txt"};
static constexpr auto LCD_CONTROLLER_TEMPLATE_PATH{":/lcd_controller_template.txt"};
static constexpr auto EXTRA_FEATURES_TEMPLATE_PATH{":/extra_features_template.txt"};
// Contains default values of all configuration parameters
namespace defaults
{
// Firmware Info
static constexpr auto STRING_CONFIG_H_AUTHOR{""};
static constexpr auto CUSTOM_VERSION_FILE{""};
static constexpr auto SHOW_BOOTSCREEN{true};
static constexpr auto SHOW_CUSTOM_BOOTSCREEN{false};
static constexpr auto CUSTOM_STATUS_SCREEN_IMAGE{false};
static constexpr auto ENABLE_STRING_CONFIG_H_AUTHOR{false};
static constexpr auto ENABLE_CUSTOM_VERSION_FILE{false};
// Hardware Info
static constexpr auto ENVIRONMENT{"mega2560"};
static constexpr auto MOTHERBOARD{"RAMPS 1.4 (Power outputs: Hotend, Fan, Bed) [BOARD_RAMPS_14_EFB]"};
static constexpr auto SERIAL_PORT{"0"};
static constexpr auto BAUDRATE{"250000"};
static constexpr auto BAUD_RATE_GCODE{false};
static constexpr auto SERIAL_PORT_2{"-1"};
static constexpr auto BAUDRATE_2{"250000"};
static constexpr auto SERIAL_PORT_3{"1"};
static constexpr auto BAUDRATE_3{"250000"};
static constexpr auto BLUETOOTH{false};
static constexpr auto CUSTOM_MACHINE_NAME{""};
static constexpr auto MACHINE_UUID{""};
static constexpr auto ENABLE_SERIAL_PORT_2{false};
static constexpr auto ENABLE_BAUDRATE_2{false};
static constexpr auto ENABLE_SERIAL_PORT_3{false};
static constexpr auto ENABLE_BAUDRATE_3{false};
static constexpr auto ENABLE_CUSTOM_MACHINE_NAME{false};
static constexpr auto ENABLE_MACHINE_UUID{false};
// Extruder Info
static constexpr auto EXTRUDERS{1};
static constexpr auto DEFAULT_NOMINAL_FILAMENT_DIA{1.75f};
static constexpr auto SINGLENOZZLE{false};
static constexpr auto SINGLENOZZLE_STANDBY_TEMP{false};
static constexpr auto SINGLENOZZLE_STANDBY_FAN{false};
static constexpr auto MMU_MODEL{"Průša MMU2 [PRUSA_MMU2]"};
static constexpr auto SWITCHING_EXTRUDER{false};
static constexpr auto SWITCHING_EXTRUDER_SERVO_NR{0};
static constexpr auto SWITCHING_EXTRUDER_SERVO_ANGLES_E0{0};
static constexpr auto SWITCHING_EXTRUDER_SERVO_ANGLES_E1{90};
static constexpr auto SWITCHING_EXTRUDER_SERVO_ANGLES_E2{0};
static constexpr auto SWITCHING_EXTRUDER_SERVO_ANGLES_E3{0};
static constexpr auto SWITCHING_EXTRUDER_E23_SERVO_NR{1};
static constexpr auto SWITCHING_NOZZLE{false};
static constexpr auto SWITCHING_NOZZLE_SERVO_NR{0};
static constexpr auto SWITCHING_NOZZLE_E1_SERVO_NR{1};
static constexpr auto SWITCHING_NOZZLE_SERVO_ANGLES_E0{0};
static constexpr auto SWITCHING_NOZZLE_SERVO_ANGLES_E1{90};
static constexpr auto SWITCHING_NOZZLE_SERVO_DWELL{2500};
static constexpr auto PARKING_EXTRUDER{false};
static constexpr auto MAGNETIC_PARKING_EXTRUDER{false};
static constexpr auto PARKING_EXTRUDER_PARKING_X_0{-78};
static constexpr auto PARKING_EXTRUDER_PARKING_X_1{184};
static constexpr auto PARKING_EXTRUDER_GRAB_DISTANCE{1};
static constexpr auto PARKING_EXTRUDER_SOLENOIDS_INVERT{false};
static constexpr auto PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE{"LOW"};
static constexpr auto PARKING_EXTRUDER_SOLENOIDS_DELAY{250};
static constexpr auto MANUAL_SOLENOID_CONTROL{false};
static constexpr auto MPE_FAST_SPEED{9000};
static constexpr auto MPE_SLOW_SPEED{4500};
static constexpr auto MPE_TRAVEL_DISTANCE{10};
static constexpr auto MPE_COMPENSATION{"0"};
static constexpr auto SWITCHING_TOOLHEAD{false};
static constexpr auto MAGNETIC_SWITCHING_TOOLHEAD{false};
static constexpr auto ELECTROMAGNETIC_SWITCHING_TOOLHEAD{false};
static constexpr auto ENABLE_MMU_MODEL{false};
static constexpr auto ENABLE_SWITCHING_EXTRUDER_SERVO_ANGLES_E23{false};
static constexpr auto ENABLE_SWITCHING_NOZZLE_E1_SERVO_NR{false};
static constexpr auto ENABLE_PARKING_EXTRUDER_SOLENOIDS_DELAY{false};
static constexpr auto SWITCHING_TOOLHEAD_Y_POS{235};
static constexpr auto SWITCHING_TOOLHEAD_Y_SECURITY{10};
static constexpr auto SWITCHING_TOOLHEAD_Y_CLEAR{60};
static constexpr auto SWITCHING_TOOLHEAD_X_POS0{215};
static constexpr auto SWITCHING_TOOLHEAD_X_POS1{0};
static constexpr auto SWITCHING_TOOLHEAD_SERVO_NR{2};
static constexpr auto SWITCHING_TOOLHEAD_SERVO_ANGLES0{0};
static constexpr auto SWITCHING_TOOLHEAD_SERVO_ANGLES1{180};
static constexpr auto SWITCHING_TOOLHEAD_Y_RELEASE{5};
static constexpr auto SWITCHING_TOOLHEAD_X_SECURITY_T0{90};
static constexpr auto SWITCHING_TOOLHEAD_X_SECURITY_T1{150};
static constexpr auto PRIME_BEFORE_REMOVE{false};
static constexpr auto SWITCHING_TOOLHEAD_PRIME_MM{20};
static constexpr auto SWITCHING_TOOLHEAD_RETRACT_MM{10};
static constexpr auto SWITCHING_TOOLHEAD_PRIME_FEEDRATE{300};
static constexpr auto SWITCHING_TOOLHEAD_RETRACT_FEEDRATE{2400};
static constexpr auto SWITCHING_TOOLHEAD_Z_HOP{2};
static constexpr auto MIXING_EXTRUDER{false};
static constexpr auto MIXING_STEPPERS{2};
static constexpr auto MIXING_VIRTUAL_TOOLS{16};
static constexpr auto DIRECT_MIXING_IN_G1{false};
static constexpr auto GRADIENT_MIX{false};
static constexpr auto MIXING_PRESETS{false};
static constexpr auto GRADIENT_VTOOL{false};
static constexpr auto HOTEND_OFFSET_X{"{ 0.0, 20.00 }"};
static constexpr auto HOTEND_OFFSET_Y{"{ 0.0, 5.00 }"};
static constexpr auto HOTEND_OFFSET_Z{"{ 0.0, 0.00 }"};
static constexpr auto ENABLE_HOTEND_OFFSET_X{false};
static constexpr auto ENABLE_HOTEND_OFFSET_Y{false};
static constexpr auto ENABLE_HOTEND_OFFSET_Z{false};
// Power Supply
static constexpr auto PSU_CONTROL{false};
static constexpr auto PSU_NAME{""};
static constexpr auto MKS_PWC{false};
static constexpr auto PS_OFF_CONFIRM{false};
static constexpr auto PS_OFF_SOUND{false};
static constexpr auto PSU_ACTIVE_STATE{"LOW"};
static constexpr auto PSU_DEFAULT_OFF{false};
static constexpr auto PSU_POWERUP_DELAY{250};
static constexpr auto LED_POWEROFF_TIMEOUT{10000};
static constexpr auto POWER_OFF_TIMER{false};
static constexpr auto POWER_OFF_WAIT_FOR_COOLDOWN{false};
static constexpr auto PSU_POWERUP_GCODE{""};
static constexpr auto PSU_POWEROFF_GCODE{""};
static constexpr auto AUTO_POWER_CONTROL{false};
static constexpr auto AUTO_POWER_FANS{true};
static constexpr auto AUTO_POWER_E_FANS{true};
static constexpr auto AUTO_POWER_CONTROLLERFAN{true};
static constexpr auto AUTO_POWER_CHAMBER_FAN{true};
static constexpr auto AUTO_POWER_COOLER_FAN{true};
static constexpr auto POWER_TIMEOUT{30};
static constexpr auto POWER_OFF_DELAY{60};
static constexpr auto AUTO_POWER_E_TEMP{50};
static constexpr auto AUTO_POWER_CHAMBER_TEMP{30};
static constexpr auto AUTO_POWER_COOLER_TEMP{26};
static constexpr auto ENABLE_PSU_NAME{false};
static constexpr auto ENABLE_PSU_POWERUP_DELAY{false};
static constexpr auto ENABLE_LED_POWEROFF_TIMEOUT{false};
static constexpr auto ENABLE_PSU_POWERUP_GCODE{false};
static constexpr auto ENABLE_PSU_POWEROFF_GCODE{false};
static constexpr auto ENABLE_POWER_TIMEOUT{false};
static constexpr auto ENABLE_POWER_OFF_DELAY{false};
static constexpr auto ENABLE_AUTO_POWER_E_TEMP{false};
static constexpr auto ENABLE_AUTO_POWER_CHAMBER_TEMP{false};
static constexpr auto ENABLE_AUTO_POWER_COOLER_TEMP{false};
// Thermal Settings
static constexpr auto TEMP_SENSOR_0{"100kΩ EPCOS - Best choice for EPCOS thermistors [1]"};
static constexpr auto TEMP_SENSOR_1{"not used [0]"};
static constexpr auto TEMP_SENSOR_2{"not used [0]"};
static constexpr auto TEMP_SENSOR_3{"not used [0]"};
static constexpr auto TEMP_SENSOR_4{"not used [0]"};
static constexpr auto TEMP_SENSOR_5{"not used [0]"};
static constexpr auto TEMP_SENSOR_6{"not used [0]"};
static constexpr auto TEMP_SENSOR_7{"not used [0]"};
static constexpr auto TEMP_SENSOR_BED{"not used [0]"};
static constexpr auto TEMP_SENSOR_PROBE{"not used [0]"};
static constexpr auto TEMP_SENSOR_CHAMBER{"not used [0]"};
static constexpr auto TEMP_SENSOR_COOLER{"not used [0]"};
static constexpr auto TEMP_SENSOR_BOARD{"not used [0]"};
static constexpr auto TEMP_SENSOR_REDUNDANT{"not used [0]"};
static constexpr auto DUMMY_THERMISTOR_998_VALUE{25};
static constexpr auto DUMMY_THERMISTOR_999_VALUE{100};
static constexpr auto MAX31865_SENSOR_OHMS_0{100};
static constexpr auto MAX31865_CALIBRATION_OHMS_0{430};
static constexpr auto MAX31865_SENSOR_OHMS_1{100};
static constexpr auto MAX31865_CALIBRATION_OHMS_1{430};
static constexpr auto MAX31865_SENSOR_OHMS_2{100};
static constexpr auto MAX31865_CALIBRATION_OHMS_2{430};
static constexpr auto TEMP_RESIDENCY_TIME{10};
static constexpr auto TEMP_WINDOW{1};
static constexpr auto TEMP_HYSTERESIS{3};
static constexpr auto TEMP_BED_RESIDENCY_TIME{10};
static constexpr auto TEMP_BED_WINDOW{1};
static constexpr auto TEMP_BED_HYSTERESIS{3};
static constexpr auto TEMP_CHAMBER_RESIDENCY_TIME{10};
static constexpr auto TEMP_CHAMBER_WINDOW{1};
static constexpr auto TEMP_CHAMBER_HYSTERESIS{3};
static constexpr auto TEMP_SENSOR_REDUNDANT_SOURCE{"E1"};
static constexpr auto TEMP_SENSOR_REDUNDANT_TARGET{"E0"};
static constexpr auto TEMP_SENSOR_REDUNDANT_MAX_DIFF{10};
static constexpr auto HEATER_0_MINTEMP{5};
static constexpr auto HEATER_1_MINTEMP{5};
static constexpr auto HEATER_2_MINTEMP{5};
static constexpr auto HEATER_3_MINTEMP{5};
static constexpr auto HEATER_4_MINTEMP{5};
static constexpr auto HEATER_5_MINTEMP{5};
static constexpr auto HEATER_6_MINTEMP{5};
static constexpr auto HEATER_7_MINTEMP{5};
static constexpr auto BED_MINTEMP{5};
static constexpr auto CHAMBER_MINTEMP{5};
static constexpr auto HEATER_0_MAXTEMP{275};
static constexpr auto HEATER_1_MAXTEMP{275};
static constexpr auto HEATER_2_MAXTEMP{275};
static constexpr auto HEATER_3_MAXTEMP{275};
static constexpr auto HEATER_4_MAXTEMP{275};
static constexpr auto HEATER_5_MAXTEMP{275};
static constexpr auto HEATER_6_MAXTEMP{275};
static constexpr auto HEATER_7_MAXTEMP{275};
static constexpr auto BED_MAXTEMP{150};
static constexpr auto CHAMBER_MAXTEMP{60};
static constexpr auto HOTEND_OVERSHOOT{15};
static constexpr auto BED_OVERSHOOT{10};
static constexpr auto COOLER_OVERSHOOT{2};
static constexpr auto PIDTEMP{true};
static constexpr auto MPCTEMP{false};
static constexpr auto BANG_MAX{255};
static constexpr auto PID_MAX{255};
static constexpr auto PID_K1{0.95};
static constexpr auto PID_DEBUG{false};
static constexpr auto PID_PARAMS_PER_HOTEND{false};
static constexpr auto DEFAULT_Kp_LIST{"{ 22.20, 22.20 }"};
static constexpr auto DEFAULT_Ki_LIST{"{ 1.08, 1.08 }"};
static constexpr auto DEFAULT_Kd_LIST{"{ 114.00, 114.00 }"};
static constexpr auto DEFAULT_Kp{22.20};
static constexpr auto DEFAULT_Ki{1.08};
static constexpr auto DEFAULT_Kd{114.00};
static constexpr auto MPC_EDIT_MENU{false};
static constexpr auto MPC_AUTOTUNE_MENU{false};
static constexpr auto MPC_MAX{255};
static constexpr auto MPC_HEATER_POWER{"{ 40.0f }"};
static constexpr auto MPC_INCLUDE_FAN{true};
static constexpr auto MPC_BLOCK_HEAT_CAPACITY{"{ 16.7f }"};
static constexpr auto MPC_SENSOR_RESPONSIVENESS{"{ 0.22f }"};
static constexpr auto MPC_AMBIENT_XFER_COEFF{"{ 0.068f }"};
static constexpr auto MPC_AMBIENT_XFER_COEFF_FAN255{"{ 0.097f }"};
static constexpr auto MPC_FAN_0_ALL_HOTENDS{false};
static constexpr auto MPC_FAN_0_ACTIVE_HOTEND{false};
static constexpr auto FILAMENT_HEAT_CAPACITY_PERMM{"{ 0.0056f }"};
static constexpr auto MPC_SMOOTHING_FACTOR{0.5f};
static constexpr auto MPC_MIN_AMBIENT_CHANGE{1.0f};
static constexpr auto MPC_STEADYSTATE{0.5f};
static constexpr auto MPC_TUNING_POS{"{ X_CENTER, Y_CENTER, 1.0f }"};
static constexpr auto MPC_TUNING_END_Z{10.0f};
static constexpr auto PIDTEMPBED{false};
static constexpr auto BED_LIMIT_SWITCHING{false};
static constexpr auto MAX_BED_POWER{255};
static constexpr auto MIN_BED_POWER{0};
static constexpr auto ENABLE_MIN_BED_POWER{false};
static constexpr auto PID_BED_DEBUG{false};
static constexpr auto DEFAULT_bedKp{10.00};
static constexpr auto DEFAULT_bedKi{0.023};
static constexpr auto DEFAULT_bedKd{305.4};
static constexpr auto PIDTEMPCHAMBER{false};
static constexpr auto CHAMBER_LIMIT_SWITCHING{false};
static constexpr auto MAX_CHAMBER_POWER{255};
static constexpr auto MIN_CHAMBER_POWER{0};
static constexpr auto ENABLE_MIN_CHAMBER_POWER{false};
static constexpr auto PID_CHAMBER_DEBUG{false};
static constexpr auto DEFAULT_chamberKp{37.04f};
static constexpr auto DEFAULT_chamberKi{1.40f};
static constexpr auto DEFAULT_chamberKd{655.17f};
static constexpr auto PID_OPENLOOP{false};
static constexpr auto SLOW_PWM_HEATERS{false};
static constexpr auto PID_FUNCTIONAL_RANGE{10};
static constexpr auto PID_EDIT_MENU{false};
static constexpr auto PID_AUTOTUNE_MENU{false};
static constexpr auto PREVENT_COLD_EXTRUSION{true};
static constexpr auto EXTRUDE_MINTEMP{170};
static constexpr auto PREVENT_LENGTHY_EXTRUDE{true};
static constexpr auto EXTRUDE_MAXLENGTH{200};
static constexpr auto THERMAL_PROTECTION_HOTENDS{true};
static constexpr auto THERMAL_PROTECTION_BED{true};
static constexpr auto THERMAL_PROTECTION_CHAMBER{true};
static constexpr auto THERMAL_PROTECTION_COOLER{true};
// Kinematics
static constexpr auto COREXY{false};
static constexpr auto COREXZ{false};
static constexpr auto COREYZ{false};
static constexpr auto COREYX{false};
static constexpr auto COREZX{false};
static constexpr auto COREZY{false};
static constexpr auto MARKFORGED_XY{false};
static constexpr auto MARKFORGED_YX{false};
static constexpr auto BELTPRINTER{false};
static constexpr auto POLARGRAPH{false};
static constexpr auto POLARGRAPH_MAX_BELT_LEN{1035.0f};
static constexpr auto DEFAULT_SEGMENTS_PER_SECOND{5};
static constexpr auto DELTA{false};
static constexpr auto DELTA_HOME_TO_SAFE_ZONE{false};
static constexpr auto DELTA_CALIBRATION_MENU{false};
static constexpr auto DELTA_AUTO_CALIBRATION{false};
static constexpr auto DELTA_CALIBRATION_DEFAULT_POINTS{4};
static constexpr auto PROBE_MANUALLY_STEP{0.05f};
static constexpr auto DELTA_PRINTABLE_RADIUS{140.0f};
static constexpr auto DELTA_MAX_RADIUS{140.0f};
static constexpr auto DELTA_DIAGONAL_ROD{250.0f};
static constexpr auto DELTA_HEIGHT{250.0f};
static constexpr auto DELTA_ENDSTOP_ADJ{"{ 0.0, 0.0, 0.0 }"};
static constexpr auto DELTA_RADIUS{124.0f};
static constexpr auto DELTA_TOWER_ANGLE_TRIM{"{ 0.0, 0.0, 0.0 }"};
static constexpr auto DELTA_RADIUS_TRIM_TOWER{"{ 0.0, 0.0, 0.0 }"};
static constexpr auto DELTA_DIAGONAL_ROD_TRIM_TOWER{"{ 0.0, 0.0, 0.0 }"};
static constexpr auto ENABLE_DELTA_RADIUS_TRIM_TOWER{false};
static constexpr auto ENABLE_DELTA_DIAGONAL_ROD_TRIM_TOWER{false};
static constexpr auto MORGAN_SCARA{false};
static constexpr auto MP_SCARA{false};
static constexpr auto SCARA_LINKAGE_1{150};
static constexpr auto SCARA_LINKAGE_2{150};
static constexpr auto SCARA_OFFSET_X{100};
static constexpr auto SCARA_OFFSET_Y{-56};
static constexpr auto DEBUG_SCARA_KINEMATICS{false};
static constexpr auto SCARA_FEEDRATE_SCALING{true};
static constexpr auto MIDDLE_DEAD_ZONE_R{0};
static constexpr auto THETA_HOMING_OFFSET{0};
static constexpr auto PSI_HOMING_OFFSET{0};
static constexpr auto SCARA_OFFSET_THETA1{12};
static constexpr auto SCARA_OFFSET_THETA2{131};
static constexpr auto AXEL_TPARA{false};
static constexpr auto DEBUG_TPARA_KINEMATICS{true};
static constexpr auto TPARA_LINKAGE_1{120};
static constexpr auto TPARA_LINKAGE_2{120};
static constexpr auto TPARA_OFFSET_X{0};
static constexpr auto TPARA_OFFSET_Y{0};
static constexpr auto TPARA_OFFSET_Z{0};
static constexpr auto ARTICULATED_ROBOT_ARM{false};
static constexpr auto FOAMCUTTER_XYUV{false};
// Endstops
static constexpr auto USE_XMIN_PLUG{true};
static constexpr auto USE_YMIN_PLUG{true};
static constexpr auto USE_ZMIN_PLUG{true};
static constexpr auto USE_IMIN_PLUG{false};
static constexpr auto USE_JMIN_PLUG{false};
static constexpr auto USE_KMIN_PLUG{false};
static constexpr auto USE_UMIN_PLUG{false};
static constexpr auto USE_VMIN_PLUG{false};
static constexpr auto USE_WMIN_PLUG{false};
static constexpr auto USE_XMAX_PLUG{false};
static constexpr auto USE_YMAX_PLUG{false};
static constexpr auto USE_ZMAX_PLUG{false};
static constexpr auto USE_IMAX_PLUG{false};
static constexpr auto USE_JMAX_PLUG{false};
static constexpr auto USE_KMAX_PLUG{false};
static constexpr auto USE_UMAX_PLUG{false};
static constexpr auto USE_VMAX_PLUG{false};
static constexpr auto USE_WMAX_PLUG{false};
static constexpr auto ENDSTOPPULLUPS{true};
static constexpr auto ENDSTOPPULLUP_XMIN{false};
static constexpr auto ENDSTOPPULLUP_YMIN{false};
static constexpr auto ENDSTOPPULLUP_ZMIN{false};
static constexpr auto ENDSTOPPULLUP_IMIN{false};
static constexpr auto ENDSTOPPULLUP_JMIN{false};
static constexpr auto ENDSTOPPULLUP_KMIN{false};
static constexpr auto ENDSTOPPULLUP_UMIN{false};
static constexpr auto ENDSTOPPULLUP_VMIN{false};
static constexpr auto ENDSTOPPULLUP_WMIN{false};
static constexpr auto ENDSTOPPULLUP_XMAX{false};
static constexpr auto ENDSTOPPULLUP_YMAX{false};
static constexpr auto ENDSTOPPULLUP_ZMAX{false};
static constexpr auto ENDSTOPPULLUP_IMAX{false};
static constexpr auto ENDSTOPPULLUP_JMAX{false};
static constexpr auto ENDSTOPPULLUP_KMAX{false};
static constexpr auto ENDSTOPPULLUP_UMAX{false};
static constexpr auto ENDSTOPPULLUP_VMAX{false};
static constexpr auto ENDSTOPPULLUP_WMAX{false};
static constexpr auto ENDSTOPPULLUP_ZMIN_PROBE{false};
static constexpr auto ENDSTOPPULLDOWNS{false};
static constexpr auto ENDSTOPPULLDOWN_XMIN{false};
static constexpr auto ENDSTOPPULLDOWN_YMIN{false};
static constexpr auto ENDSTOPPULLDOWN_ZMIN{false};
static constexpr auto ENDSTOPPULLDOWN_IMIN{false};
static constexpr auto ENDSTOPPULLDOWN_JMIN{false};
static constexpr auto ENDSTOPPULLDOWN_KMIN{false};
static constexpr auto ENDSTOPPULLDOWN_UMIN{false};
static constexpr auto ENDSTOPPULLDOWN_VMIN{false};
static constexpr auto ENDSTOPPULLDOWN_WMIN{false};
static constexpr auto ENDSTOPPULLDOWN_XMAX{false};
static constexpr auto ENDSTOPPULLDOWN_YMAX{false};
static constexpr auto ENDSTOPPULLDOWN_ZMAX{false};
static constexpr auto ENDSTOPPULLDOWN_IMAX{false};
static constexpr auto ENDSTOPPULLDOWN_JMAX{false};
static constexpr auto ENDSTOPPULLDOWN_KMAX{false};
static constexpr auto ENDSTOPPULLDOWN_UMAX{false};
static constexpr auto ENDSTOPPULLDOWN_VMAX{false};
static constexpr auto ENDSTOPPULLDOWN_WMAX{false};
static constexpr auto ENDSTOPPULLDOWN_ZMIN_PROBE{false};
static constexpr auto X_MIN_ENDSTOP_INVERTING{"false"};
static constexpr auto Y_MIN_ENDSTOP_INVERTING{"false"};
static constexpr auto Z_MIN_ENDSTOP_INVERTING{"false"};
static constexpr auto I_MIN_ENDSTOP_INVERTING{"false"};
static constexpr auto J_MIN_ENDSTOP_INVERTING{"false"};
static constexpr auto K_MIN_ENDSTOP_INVERTING{"false"};
static constexpr auto U_MIN_ENDSTOP_INVERTING{"false"};
static constexpr auto V_MIN_ENDSTOP_INVERTING{"false"};
static constexpr auto W_MIN_ENDSTOP_INVERTING{"false"};
static constexpr auto X_MAX_ENDSTOP_INVERTING{"false"};
static constexpr auto Y_MAX_ENDSTOP_INVERTING{"false"};
static constexpr auto Z_MAX_ENDSTOP_INVERTING{"false"};
static constexpr auto I_MAX_ENDSTOP_INVERTING{"false"};
static constexpr auto J_MAX_ENDSTOP_INVERTING{"false"};
static constexpr auto K_MAX_ENDSTOP_INVERTING{"false"};
static constexpr auto U_MAX_ENDSTOP_INVERTING{"false"};
static constexpr auto V_MAX_ENDSTOP_INVERTING{"false"};
static constexpr auto W_MAX_ENDSTOP_INVERTING{"false"};
static constexpr auto Z_MIN_PROBE_ENDSTOP_INVERTING{"false"};
static constexpr auto ENDSTOP_INTERRUPTS_FEATURE{false};
static constexpr auto ENDSTOP_NOISE_THRESHOLD{"2"};
static constexpr auto ENABLE_ENDSTOP_NOISE_THRESHOLD{false};
static constexpr auto DETECT_BROKEN_ENDSTOP{false};
// Movement
static constexpr auto DISTINCT_E_FACTORS{false};
static constexpr auto DEFAULT_AXIS_STEPS_PER_UNIT{"{ 80, 80, 400, 500 }"};
static constexpr auto DEFAULT_MAX_FEEDRATE{"{ 300, 300, 5, 25 }"};
static constexpr auto LIMITED_MAX_FR_EDITING{false};
static constexpr auto MAX_FEEDRATE_EDIT_VALUES{"{ 600, 600, 10, 50 }"};
static constexpr auto DEFAULT_MAX_ACCELERATION{"{ 3000, 3000, 100, 10000 }"};
static constexpr auto LIMITED_MAX_ACCEL_EDITING{false};
static constexpr auto MAX_ACCEL_EDIT_VALUES{"{ 6000, 6000, 200, 20000 }"};
static constexpr auto DEFAULT_ACCELERATION{3000};
static constexpr auto DEFAULT_RETRACT_ACCELERATION{3000};
static constexpr auto DEFAULT_TRAVEL_ACCELERATION{3000};
static constexpr auto CLASSIC_JERK{false};
static constexpr auto DEFAULT_XJERK{10.0f};
static constexpr auto DEFAULT_YJERK{10.0f};
static constexpr auto DEFAULT_ZJERK{0.3f};
static constexpr auto DEFAULT_IJERK{0.3f};
static constexpr auto DEFAULT_JJERK{0.3f};
static constexpr auto DEFAULT_KJERK{0.3f};
static constexpr auto DEFAULT_UJERK{0.3f};
static constexpr auto DEFAULT_VJERK{0.3f};
static constexpr auto DEFAULT_WJERK{0.3f};
static constexpr auto ENABLE_DEFAULT_XJERK{true};
static constexpr auto ENABLE_DEFAULT_YJERK{true};
static constexpr auto ENABLE_DEFAULT_ZJERK{true};
static constexpr auto ENABLE_DEFAULT_IJERK{false};
static constexpr auto ENABLE_DEFAULT_JJERK{false};
static constexpr auto ENABLE_DEFAULT_KJERK{false};
static constexpr auto ENABLE_DEFAULT_UJERK{false};
static constexpr auto ENABLE_DEFAULT_VJERK{false};
static constexpr auto ENABLE_DEFAULT_WJERK{false};
static constexpr auto TRAVEL_EXTRA_XYJERK{0.0f};
static constexpr auto ENABLE_TRAVEL_EXTRA_XYJERK{false};
static constexpr auto LIMITED_JERK_EDITING{false};
static constexpr auto MAX_JERK_EDIT_VALUES{"{ 20, 20, 0.6, 10 }"};
static constexpr auto DEFAULT_EJERK{5.0f};
static constexpr auto JUNCTION_DEVIATION_MM{0.013f};
static constexpr auto JD_HANDLE_SMALL_SEGMENTS{true};
static constexpr auto S_CURVE_ACCELERATION{false};
// Stepper Drivers
static constexpr auto X_DRIVER_TYPE{"A4988"};
static constexpr auto Y_DRIVER_TYPE{"A4988"};
static constexpr auto Z_DRIVER_TYPE{"A4988"};
static constexpr auto X2_DRIVER_TYPE{"A4988"};
static constexpr auto Y2_DRIVER_TYPE{"A4988"};
static constexpr auto Z2_DRIVER_TYPE{"A4988"};
static constexpr auto Z3_DRIVER_TYPE{"A4988"};
static constexpr auto Z4_DRIVER_TYPE{"A4988"};
static constexpr auto ENABLE_X_DRIVER_TYPE{true};
static constexpr auto ENABLE_Y_DRIVER_TYPE{true};
static constexpr auto ENABLE_Z_DRIVER_TYPE{true};
static constexpr auto ENABLE_X2_DRIVER_TYPE{false};
static constexpr auto ENABLE_Y2_DRIVER_TYPE{false};
static constexpr auto ENABLE_Z2_DRIVER_TYPE{false};
static constexpr auto ENABLE_Z3_DRIVER_TYPE{false};
static constexpr auto ENABLE_Z4_DRIVER_TYPE{false};
static constexpr auto I_DRIVER_TYPE{"A4988"};
static constexpr auto J_DRIVER_TYPE{"A4988"};
static constexpr auto K_DRIVER_TYPE{"A4988"};
static constexpr auto ENABLE_I_DRIVER_TYPE{false};
static constexpr auto ENABLE_J_DRIVER_TYPE{false};
static constexpr auto ENABLE_K_DRIVER_TYPE{false};
static constexpr auto U_DRIVER_TYPE{"A4988"};
static constexpr auto V_DRIVER_TYPE{"A4988"};
static constexpr auto W_DRIVER_TYPE{"A4988"};
static constexpr auto ENABLE_U_DRIVER_TYPE{false};
static constexpr auto ENABLE_V_DRIVER_TYPE{false};
static constexpr auto ENABLE_W_DRIVER_TYPE{false};
static constexpr auto E0_DRIVER_TYPE{"A4988"};
static constexpr auto E1_DRIVER_TYPE{"A4988"};
static constexpr auto E2_DRIVER_TYPE{"A4988"};
static constexpr auto E3_DRIVER_TYPE{"A4988"};
static constexpr auto E4_DRIVER_TYPE{"A4988"};
static constexpr auto E5_DRIVER_TYPE{"A4988"};
static constexpr auto E6_DRIVER_TYPE{"A4988"};
static constexpr auto E7_DRIVER_TYPE{"A4988"};
static constexpr auto ENABLE_E0_DRIVER_TYPE{true};
static constexpr auto ENABLE_E1_DRIVER_TYPE{false};
static constexpr auto ENABLE_E2_DRIVER_TYPE{false};
static constexpr auto ENABLE_E3_DRIVER_TYPE{false};
static constexpr auto ENABLE_E4_DRIVER_TYPE{false};
static constexpr auto ENABLE_E5_DRIVER_TYPE{false};
static constexpr auto ENABLE_E6_DRIVER_TYPE{false};
static constexpr auto ENABLE_E7_DRIVER_TYPE{false};
static constexpr auto AXIS4_NAME{"A"};
static constexpr auto AXIS5_NAME{"B"};
static constexpr auto AXIS6_NAME{"C"};
static constexpr auto AXIS4_ROTATES{true};
static constexpr auto AXIS5_ROTATES{true};
static constexpr auto AXIS6_ROTATES{true};
static constexpr auto AXIS7_NAME{"U"};
static constexpr auto AXIS8_NAME{"V"};
static constexpr auto AXIS9_NAME{"W"};
static constexpr auto AXIS7_ROTATES{false};
static constexpr auto AXIS8_ROTATES{false};
static constexpr auto AXIS9_ROTATES{false};
static constexpr auto X_ENABLE_ON{"0"};
static constexpr auto Y_ENABLE_ON{"0"};
static constexpr auto Z_ENABLE_ON{"0"};
static constexpr auto E_ENABLE_ON{"0"};
static constexpr auto I_ENABLE_ON{"0"};
static constexpr auto J_ENABLE_ON{"0"};
static constexpr auto K_ENABLE_ON{"0"};
static constexpr auto U_ENABLE_ON{"0"};
static constexpr auto V_ENABLE_ON{"0"};
static constexpr auto W_ENABLE_ON{"0"};
static constexpr auto ENABLE_X_ENABLE_ON{true};
static constexpr auto ENABLE_Y_ENABLE_ON{true};
static constexpr auto ENABLE_Z_ENABLE_ON{true};
static constexpr auto ENABLE_E_ENABLE_ON{true};
static constexpr auto ENABLE_I_ENABLE_ON{false};
static constexpr auto ENABLE_J_ENABLE_ON{false};
static constexpr auto ENABLE_K_ENABLE_ON{false};
static constexpr auto ENABLE_U_ENABLE_ON{false};
static constexpr auto ENABLE_V_ENABLE_ON{false};
static constexpr auto ENABLE_W_ENABLE_ON{false};
static constexpr auto DISABLE_X{"false"};
static constexpr auto DISABLE_Y{"false"};
static constexpr auto DISABLE_Z{"false"};
static constexpr auto DISABLE_E{"false"};
static constexpr auto DISABLE_I{"false"};
static constexpr auto DISABLE_J{"false"};
static constexpr auto DISABLE_K{"false"};
static constexpr auto DISABLE_U{"false"};
static constexpr auto DISABLE_V{"false"};
static constexpr auto DISABLE_W{"false"};
static constexpr auto ENABLE_DISABLE_X{true};
static constexpr auto ENABLE_DISABLE_Y{true};
static constexpr auto ENABLE_DISABLE_Z{true};
static constexpr auto ENABLE_DISABLE_I{false};
static constexpr auto ENABLE_DISABLE_J{false};
static constexpr auto ENABLE_DISABLE_K{false};
static constexpr auto ENABLE_DISABLE_U{false};
static constexpr auto ENABLE_DISABLE_V{false};
static constexpr auto ENABLE_DISABLE_W{false};
static constexpr auto DISABLE_INACTIVE_EXTRUDER{true};
static constexpr auto INVERT_X_DIR{"false"};
static constexpr auto INVERT_Y_DIR{"true"};
static constexpr auto INVERT_Z_DIR{"false"};
static constexpr auto INVERT_I_DIR{"false"};
static constexpr auto INVERT_J_DIR{"false"};
static constexpr auto INVERT_K_DIR{"false"};
static constexpr auto INVERT_U_DIR{"false"};
static constexpr auto INVERT_V_DIR{"false"};
static constexpr auto INVERT_W_DIR{"false"};
static constexpr auto ENABLE_INVERT_X_DIR{true};
static constexpr auto ENABLE_INVERT_Y_DIR{true};
static constexpr auto ENABLE_INVERT_Z_DIR{true};
static constexpr auto ENABLE_INVERT_I_DIR{false};
static constexpr auto ENABLE_INVERT_J_DIR{false};
static constexpr auto ENABLE_INVERT_K_DIR{false};
static constexpr auto ENABLE_INVERT_U_DIR{false};
static constexpr auto ENABLE_INVERT_V_DIR{false};
static constexpr auto ENABLE_INVERT_W_DIR{false};
static constexpr auto INVERT_E0_DIR{"false"};
static constexpr auto INVERT_E1_DIR{"false"};
static constexpr auto INVERT_E2_DIR{"false"};
static constexpr auto INVERT_E3_DIR{"false"};
static constexpr auto INVERT_E4_DIR{"false"};
static constexpr auto INVERT_E5_DIR{"false"};
static constexpr auto INVERT_E6_DIR{"false"};
static constexpr auto INVERT_E7_DIR{"false"};
static constexpr auto DISABLE_REDUCED_ACCURACY_WARNING{false};
// Homing And Bounds
static constexpr auto NO_MOTION_BEFORE_HOMING{false};
static constexpr auto HOME_AFTER_DEACTIVATE{false};
static constexpr auto Z_IDLE_HEIGHT{0};
static constexpr auto Z_HOMING_HEIGHT{4};
static constexpr auto Z_AFTER_HOMING{10};
static constexpr auto ENABLE_Z_IDLE_HEIGHT{false};
static constexpr auto ENABLE_Z_HOMING_HEIGHT{false};
static constexpr auto ENABLE_Z_AFTER_HOMING{false};
static constexpr auto X_HOME_DIR{"MIN [-1]"};
static constexpr auto Y_HOME_DIR{"MIN [-1]"};
static constexpr auto Z_HOME_DIR{"MIN [-1]"};
static constexpr auto I_HOME_DIR{"MIN [-1]"};
static constexpr auto J_HOME_DIR{"MIN [-1]"};
static constexpr auto K_HOME_DIR{"MIN [-1]"};
static constexpr auto U_HOME_DIR{"MIN [-1]"};
static constexpr auto V_HOME_DIR{"MIN [-1]"};
static constexpr auto W_HOME_DIR{"MIN [-1]"};
static constexpr auto ENABLE_X_HOME_DIR{true};
static constexpr auto ENABLE_Y_HOME_DIR{true};
static constexpr auto ENABLE_Z_HOME_DIR{true};
static constexpr auto ENABLE_I_HOME_DIR{false};
static constexpr auto ENABLE_J_HOME_DIR{false};
static constexpr auto ENABLE_K_HOME_DIR{false};
static constexpr auto ENABLE_U_HOME_DIR{false};
static constexpr auto ENABLE_V_HOME_DIR{false};
static constexpr auto ENABLE_W_HOME_DIR{false};
static constexpr auto X_BED_SIZE{200};
static constexpr auto Y_BED_SIZE{200};
static constexpr auto X_MIN_POS{0};
static constexpr auto Y_MIN_POS{0};
static constexpr auto Z_MIN_POS{0};
static constexpr auto X_MAX_POS{200};
static constexpr auto Y_MAX_POS{200};
static constexpr auto Z_MAX_POS{200};
static constexpr auto ENABLE_X_MIN_POS{true};
static constexpr auto ENABLE_Y_MIN_POS{true};
static constexpr auto ENABLE_Z_MIN_POS{true};
static constexpr auto ENABLE_X_MAX_POS{true};
static constexpr auto ENABLE_Y_MAX_POS{true};
static constexpr auto ENABLE_Z_MAX_POS{true};
static constexpr auto I_MIN_POS{0};
static constexpr auto J_MIN_POS{0};
static constexpr auto K_MIN_POS{0};
static constexpr auto I_MAX_POS{50};
static constexpr auto J_MAX_POS{50};
static constexpr auto K_MAX_POS{50};
static constexpr auto ENABLE_I_MIN_POS{false};
static constexpr auto ENABLE_J_MIN_POS{false};
static constexpr auto ENABLE_K_MIN_POS{false};
static constexpr auto ENABLE_I_MAX_POS{false};
static constexpr auto ENABLE_J_MAX_POS{false};
static constexpr auto ENABLE_K_MAX_POS{false};
static constexpr auto U_MIN_POS{0};
static constexpr auto V_MIN_POS{0};
static constexpr auto W_MIN_POS{0};
static constexpr auto U_MAX_POS{50};
static constexpr auto V_MAX_POS{50};
static constexpr auto W_MAX_POS{50};
static constexpr auto ENABLE_U_MIN_POS{false};
static constexpr auto ENABLE_V_MIN_POS{false};
static constexpr auto ENABLE_W_MIN_POS{false};
static constexpr auto ENABLE_U_MAX_POS{false};
static constexpr auto ENABLE_V_MAX_POS{false};
static constexpr auto ENABLE_W_MAX_POS{false};
static constexpr auto MIN_SOFTWARE_ENDSTOPS{true};
static constexpr auto MIN_SOFTWARE_ENDSTOP_X{true};
static constexpr auto MIN_SOFTWARE_ENDSTOP_Y{true};
static constexpr auto MIN_SOFTWARE_ENDSTOP_Z{true};
static constexpr auto MIN_SOFTWARE_ENDSTOP_I{true};
static constexpr auto MIN_SOFTWARE_ENDSTOP_J{true};
static constexpr auto MIN_SOFTWARE_ENDSTOP_K{true};
static constexpr auto MIN_SOFTWARE_ENDSTOP_U{true};
static constexpr auto MIN_SOFTWARE_ENDSTOP_V{true};
static constexpr auto MIN_SOFTWARE_ENDSTOP_W{true};
static constexpr auto MAX_SOFTWARE_ENDSTOPS{true};
static constexpr auto MAX_SOFTWARE_ENDSTOP_X{true};
static constexpr auto MAX_SOFTWARE_ENDSTOP_Y{true};
static constexpr auto MAX_SOFTWARE_ENDSTOP_Z{true};
static constexpr auto MAX_SOFTWARE_ENDSTOP_I{true};
static constexpr auto MAX_SOFTWARE_ENDSTOP_J{true};
static constexpr auto MAX_SOFTWARE_ENDSTOP_K{true};
static constexpr auto MAX_SOFTWARE_ENDSTOP_U{true};
static constexpr auto MAX_SOFTWARE_ENDSTOP_V{true};
static constexpr auto MAX_SOFTWARE_ENDSTOP_W{true};
static constexpr auto SOFT_ENDSTOPS_MENU_ITEM{false};
// Filament Runout Sensor
static constexpr auto FILAMENT_RUNOUT_SENSOR{false};
static constexpr auto FIL_RUNOUT_ENABLED_DEFAULT{"true"};
static constexpr auto NUM_RUNOUT_SENSORS{"1"};
static constexpr auto FIL_RUNOUT_STATE{"LOW"};
static constexpr auto FIL_RUNOUT_PULLUP{true};
static constexpr auto FIL_RUNOUT_PULLDOWN{false};
static constexpr auto WATCH_ALL_RUNOUT_SENSORS{false};
static constexpr auto FIL_RUNOUT1_STATE{"LOW"};
static constexpr auto ENABLE_FIL_RUNOUT1_STATE{false};
static constexpr auto FIL_RUNOUT1_PULLUP{false};
static constexpr auto FIL_RUNOUT1_PULLDOWN{false};
static constexpr auto FIL_RUNOUT2_STATE{"LOW"};
static constexpr auto ENABLE_FIL_RUNOUT2_STATE{false};
static constexpr auto FIL_RUNOUT2_PULLUP{false};
static constexpr auto FIL_RUNOUT2_PULLDOWN{false};
static constexpr auto FIL_RUNOUT3_STATE{"LOW"};
static constexpr auto ENABLE_FIL_RUNOUT3_STATE{false};
static constexpr auto FIL_RUNOUT3_PULLUP{false};
static constexpr auto FIL_RUNOUT3_PULLDOWN{false};
static constexpr auto FIL_RUNOUT4_STATE{"LOW"};
static constexpr auto ENABLE_FIL_RUNOUT4_STATE{false};
static constexpr auto FIL_RUNOUT4_PULLUP{false};
static constexpr auto FIL_RUNOUT4_PULLDOWN{false};
static constexpr auto FIL_RUNOUT5_STATE{"LOW"};
static constexpr auto ENABLE_FIL_RUNOUT5_STATE{false};
static constexpr auto FIL_RUNOUT5_PULLUP{false};
static constexpr auto FIL_RUNOUT5_PULLDOWN{false};
static constexpr auto FIL_RUNOUT6_STATE{"LOW"};
static constexpr auto ENABLE_FIL_RUNOUT6_STATE{false};
static constexpr auto FIL_RUNOUT6_PULLUP{false};
static constexpr auto FIL_RUNOUT6_PULLDOWN{false};
static constexpr auto FIL_RUNOUT7_STATE{"LOW"};
static constexpr auto ENABLE_FIL_RUNOUT7_STATE{false};
static constexpr auto FIL_RUNOUT7_PULLUP{false};
static constexpr auto FIL_RUNOUT7_PULLDOWN{false};
static constexpr auto FIL_RUNOUT8_STATE{"LOW"};
static constexpr auto ENABLE_FIL_RUNOUT8_STATE{false};
static constexpr auto FIL_RUNOUT8_PULLUP{false};
static constexpr auto FIL_RUNOUT8_PULLDOWN{false};
static constexpr auto FILAMENT_RUNOUT_SCRIPT{"M600"};
static constexpr auto FILAMENT_RUNOUT_DISTANCE_MM{25};
static constexpr auto ENABLE_FILAMENT_RUNOUT_DISTANCE_MM{false};
static constexpr auto FILAMENT_MOTION_SENSOR{false};
// Bed Leveling
static constexpr auto AUTO_BED_LEVELING_3POINT{false};
static constexpr auto AUTO_BED_LEVELING_LINEAR{false};
static constexpr auto AUTO_BED_LEVELING_BILINEAR{false};
static constexpr auto AUTO_BED_LEVELING_UBL{false};
static constexpr auto MESH_BED_LEVELING{false};
static constexpr auto RESTORE_LEVELING_AFTER_G28{false};
static constexpr auto ENABLE_LEVELING_AFTER_G28{false};
static constexpr auto LEVELING_NOZZLE_TEMP{120};
static constexpr auto LEVELING_BED_TEMP{50};
static constexpr auto BD_SENSOR{false};
static constexpr auto DEBUG_LEVELING_FEATURE{false};
static constexpr auto MANUAL_PROBE_START_Z{0.2f};
static constexpr auto ENABLE_MANUAL_PROBE_START_Z{true};
static constexpr auto ENABLE_LEVELING_FADE_HEIGHT{true};
static constexpr auto DEFAULT_LEVELING_FADE_HEIGHT{10.0f};
static constexpr auto SEGMENT_LEVELED_MOVES{true};
static constexpr auto LEVELED_SEGMENT_LENGTH{5.0f};
static constexpr auto G26_MESH_VALIDATION{false};
static constexpr auto MESH_TEST_NOZZLE_SIZE{0.4f};
static constexpr auto MESH_TEST_LAYER_HEIGHT{0.2f};
static constexpr auto MESH_TEST_HOTEND_TEMP{205};
static constexpr auto MESH_TEST_BED_TEMP{60};
static constexpr auto G26_XY_FEEDRATE{20};
static constexpr auto G26_XY_FEEDRATE_TRAVEL{100};
static constexpr auto G26_RETRACT_MULTIPLIER{1.0f};
static constexpr auto PREHEAT_BEFORE_LEVELING{false};
static constexpr auto GRID_MAX_POINTS_X{3};
static constexpr auto GRID_MAX_POINTS_Y{3};
static constexpr auto PROBE_Y_FIRST{false};
static constexpr auto EXTRAPOLATE_BEYOND_GRID{false};
static constexpr auto ABL_BILINEAR_SUBDIVISION{false};
static constexpr auto BILINEAR_SUBDIVISIONS{3};
static constexpr auto MESH_EDIT_GFX_OVERLAY{false};
static constexpr auto MESH_INSET{1};
static constexpr auto GRID_MAX_POINTS_X_2{10};
static constexpr auto GRID_MAX_POINTS_Y_2{10};
static constexpr auto UBL_HILBERT_CURVE{false};
static constexpr auto UBL_MESH_EDIT_MOVES_Z{true};
static constexpr auto UBL_SAVE_ACTIVE_ON_M500{true};
static constexpr auto UBL_Z_RAISE_WHEN_OFF_MESH{2.5f};
static constexpr auto ENABLE_UBL_Z_RAISE_WHEN_OFF_MESH{false};
static constexpr auto UBL_MESH_WIZARD{false};
static constexpr auto MESH_INSET_2{10};
static constexpr auto GRID_MAX_POINTS_X_3{3};
static constexpr auto GRID_MAX_POINTS_Y_3{3};
static constexpr auto MESH_G28_REST_ORIGIN{false};
static constexpr auto LCD_BED_LEVELING{false};
static constexpr auto MESH_EDIT_Z_STEP{0.025f};
static constexpr auto LCD_PROBE_Z_RANGE{4};
static constexpr auto MESH_EDIT_MENU{false};
static constexpr auto LCD_BED_TRAMMING{false};
static constexpr auto BED_TRAMMING_INSET_LFRB{"{ 30, 30, 30, 30 }"};
static constexpr auto BED_TRAMMING_HEIGHT{0.0f};
static constexpr auto BED_TRAMMING_Z_HOP{4.0f};
static constexpr auto BED_TRAMMING_INCLUDE_CENTER{false};
static constexpr auto BED_TRAMMING_USE_PROBE{false};
static constexpr auto BED_TRAMMING_PROBE_TOLERANCE{0.1f};
static constexpr auto BED_TRAMMING_VERIFY_RAISED{true};
static constexpr auto BED_TRAMMING_AUDIO_FEEDBACK{false};
static constexpr auto BED_TRAMMING_LEVELING_ORDER{"{ LF, RF, RB, LB }"};
static constexpr auto Z_PROBE_END_SCRIPT{"G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10"};
static constexpr auto ENABLE_Z_PROBE_END_SCRIPT{false};
// Homing Options
static constexpr auto BED_CENTER_AT_0_0{false};
static constexpr auto MANUAL_X_HOME_POS{0};
static constexpr auto MANUAL_Y_HOME_POS{0};
static constexpr auto MANUAL_Z_HOME_POS{0};
static constexpr auto MANUAL_I_HOME_POS{0};
static constexpr auto MANUAL_J_HOME_POS{0};
static constexpr auto MANUAL_K_HOME_POS{0};
static constexpr auto MANUAL_U_HOME_POS{0};
static constexpr auto MANUAL_V_HOME_POS{0};
static constexpr auto MANUAL_W_HOME_POS{0};
static constexpr auto ENABLE_MANUAL_X_HOME_POS{false};
static constexpr auto ENABLE_MANUAL_Y_HOME_POS{false};
static constexpr auto ENABLE_MANUAL_Z_HOME_POS{false};
static constexpr auto ENABLE_MANUAL_I_HOME_POS{false};
static constexpr auto ENABLE_MANUAL_J_HOME_POS{false};
static constexpr auto ENABLE_MANUAL_K_HOME_POS{false};
static constexpr auto ENABLE_MANUAL_U_HOME_POS{false};
static constexpr auto ENABLE_MANUAL_V_HOME_POS{false};
static constexpr auto ENABLE_MANUAL_W_HOME_POS{false};
static constexpr auto Z_SAFE_HOMING{false};
static constexpr auto Z_SAFE_HOMING_X_POINT{0};
static constexpr auto Z_SAFE_HOMING_Y_POINT{0};
static constexpr auto ENABLE_Z_SAFE_HOMING_X_POINT{false};
static constexpr auto ENABLE_Z_SAFE_HOMING_Y_POINT{false};
static constexpr auto HOMING_FEEDRATE_MM_M{"{ (50*60), (50*60), (4*60) }"};
static constexpr auto VALIDATE_HOMING_ENDSTOPS{true};
static constexpr auto SKEW_CORRECTION{false};
static constexpr auto XY_DIAG_AC{282.8427124746f};
static constexpr auto XY_DIAG_BD{282.8427124746f};
static constexpr auto XY_SIDE_AD{200.0f};
static constexpr auto XY_SKEW_FACTOR{0.0f};
static constexpr auto ENABLE_XY_SKEW_FACTOR{false};
static constexpr auto SKEW_CORRECTION_FOR_Z{false};
static constexpr auto XZ_DIAG_AC{282.8427124746f};
static constexpr auto XZ_DIAG_BD{282.8427124746f};
static constexpr auto YZ_DIAG_AC{282.8427124746f};
static constexpr auto YZ_DIAG_BD{282.8427124746f};
static constexpr auto YZ_SIDE_AD{200.0f};
static constexpr auto XZ_SKEW_FACTOR{0.0f};
static constexpr auto YZ_SKEW_FACTOR{0.0f};
static constexpr auto ENABLE_XZ_SKEW_FACTOR{false};
static constexpr auto ENABLE_YZ_SKEW_FACTOR{false};
static constexpr auto SKEW_CORRECTION_GCODE{false};
// User Interface Language
static constexpr auto LCD_LANGUAGE{"en"};
static constexpr auto DISPLAY_CHARSET_HD44780{"JAPANESE"};
static constexpr auto LCD_INFO_SCREEN_STYLE{"0"};
// SD Card
static constexpr auto SDSUPPORT{false};
static constexpr auto SD_CHECK_AND_RETRY{false};
// LCD Menu Items
static constexpr auto NO_LCD_MENUS{false};
static constexpr auto SLIM_LCD_MENUS{false};
// Encoder
static constexpr auto ENCODER_PULSES_PER_STEP{4};
static constexpr auto ENABLE_ENCODER_PULSES_PER_STEP{false};
static constexpr auto ENCODER_STEPS_PER_MENU_ITEM{1};
static constexpr auto ENABLE_ENCODER_STEPS_PER_MENU_ITEM{false};
static constexpr auto REVERSE_ENCODER_DIRECTION{false};
static constexpr auto REVERSE_MENU_DIRECTION{false};
static constexpr auto REVERSE_SELECT_DIRECTION{false};
static constexpr auto ENCODER_NOISE_FILTER{false};
static constexpr auto ENCODER_SAMPLES{10};
static constexpr auto INDIVIDUAL_AXIS_HOMING_MENU{false};
static constexpr auto INDIVIDUAL_AXIS_HOMING_SUBMENU{false};
// Speaker
static constexpr auto SPEAKER{false};
static constexpr auto LCD_FEEDBACK_FREQUENCY_DURATION_MS{2};
static constexpr auto ENABLE_LCD_FEEDBACK_FREQUENCY_DURATION_MS{false};
static constexpr auto LCD_FEEDBACK_FREQUENCY_HZ{5000};
static constexpr auto ENABLE_LCD_FEEDBACK_FREQUENCY_HZ{false};
}
struct PageConfiguration
{
virtual QJsonObject ToJson(void) const = 0;
};
///
/// \brief The FirmwareConfiguration struct contains firmware configurations
///
struct FirmwareConfiguration : public PageConfiguration
{
QString STRING_CONFIG_H_AUTHOR{defaults::STRING_CONFIG_H_AUTHOR};
QString CUSTOM_VERSION_FILE{defaults::CUSTOM_VERSION_FILE};
bool SHOW_BOOTSCREEN{defaults::SHOW_BOOTSCREEN};
bool SHOW_CUSTOM_BOOTSCREEN{defaults::SHOW_CUSTOM_BOOTSCREEN};
bool CUSTOM_STATUS_SCREEN_IMAGE{defaults::CUSTOM_STATUS_SCREEN_IMAGE};
bool ENABLE_STRING_CONFIG_H_AUTHOR{defaults::ENABLE_STRING_CONFIG_H_AUTHOR};
bool ENABLE_CUSTOM_VERSION_FILE{defaults::ENABLE_CUSTOM_VERSION_FILE};
public:
/// \brief Converts the configuration into a JSON object
///
/// \return a JSON object containing the configuration data
QJsonObject ToJson(void) const override
{
QJsonObject json;
json["STRING_CONFIG_H_AUTHOR"] = STRING_CONFIG_H_AUTHOR;
json["CUSTOM_VERSION_FILE"] = CUSTOM_VERSION_FILE;
json["SHOW_BOOTSCREEN"] = SHOW_BOOTSCREEN;
json["SHOW_CUSTOM_BOOTSCREEN"] = SHOW_CUSTOM_BOOTSCREEN;
json["CUSTOM_STATUS_SCREEN_IMAGE"] = CUSTOM_STATUS_SCREEN_IMAGE;
json["ENABLE_STRING_CONFIG_H_AUTHOR"] = ENABLE_STRING_CONFIG_H_AUTHOR;
json["ENABLE_CUSTOM_VERSION_FILE"] = ENABLE_CUSTOM_VERSION_FILE;
return json;
}
};
///
/// \brief The HardwareConfiguration struct contains hardware configurations
///
struct HardwareConfiguration : public PageConfiguration
{
QString ENVIRONMENT{defaults::ENVIRONMENT};
QString MOTHERBOARD{defaults::MOTHERBOARD};
QString SERIAL_PORT{defaults::SERIAL_PORT};
QString BAUDRATE{defaults::BAUDRATE};
bool BAUD_RATE_GCODE{defaults::BAUD_RATE_GCODE};
QString SERIAL_PORT_2{defaults::SERIAL_PORT_2};
QString BAUDRATE_2{defaults::BAUDRATE_2};
QString SERIAL_PORT_3{defaults::SERIAL_PORT_3};
QString BAUDRATE_3{defaults::BAUDRATE_3};
bool BLUETOOTH{defaults::BLUETOOTH};
QString CUSTOM_MACHINE_NAME{defaults::CUSTOM_MACHINE_NAME};
QString MACHINE_UUID{defaults::MACHINE_UUID};
bool ENABLE_SERIAL_PORT_2{defaults::ENABLE_SERIAL_PORT_2};
bool ENABLE_BAUDRATE_2{defaults::ENABLE_BAUDRATE_2};
bool ENABLE_SERIAL_PORT_3{defaults::ENABLE_SERIAL_PORT_3};
bool ENABLE_BAUDRATE_3{defaults::ENABLE_BAUDRATE_3};
bool ENABLE_CUSTOM_MACHINE_NAME{defaults::ENABLE_CUSTOM_MACHINE_NAME};
bool ENABLE_MACHINE_UUID{defaults::ENABLE_MACHINE_UUID};
public:
/// \brief Converts the configuration into a JSON object
///
/// \return a JSON object containing the configuration data
QJsonObject ToJson(void) const override
{
QJsonObject json;
json["ENVIRONMENT"] = ENVIRONMENT;
json["MOTHERBOARD"] = MOTHERBOARD;
json["SERIAL_PORT"] = SERIAL_PORT;
json["BAUDRATE"] = BAUDRATE;
json["BAUD_RATE_GCODE"] = BAUD_RATE_GCODE;
json["SERIAL_PORT_2"] = SERIAL_PORT_2;
json["BAUDRATE_2"] = BAUDRATE_2;
json["SERIAL_PORT_3"] = SERIAL_PORT_3;
json["BAUDRATE_3"] = BAUDRATE_3;
json["BLUETOOTH"] = BLUETOOTH;
json["CUSTOM_MACHINE_NAME"] = CUSTOM_MACHINE_NAME;
json["MACHINE_UUID"] = MACHINE_UUID;
json["ENABLE_SERIAL_PORT_2"] = ENABLE_SERIAL_PORT_2;
json["ENABLE_BAUDRATE_2"] = ENABLE_BAUDRATE_2;
json["ENABLE_SERIAL_PORT_3"] = ENABLE_SERIAL_PORT_3;
json["ENABLE_BAUDRATE_3"] = ENABLE_BAUDRATE_3;
json["ENABLE_CUSTOM_MACHINE_NAME"] = ENABLE_CUSTOM_MACHINE_NAME;
json["ENABLE_MACHINE_UUID"] = ENABLE_MACHINE_UUID;
return json;
}
};
///
/// \brief The ExtruderConfiguration struct contains extruder configurations
///
struct ExtruderConfiguration : public PageConfiguration
{
int32_t EXTRUDERS{defaults::EXTRUDERS};
double DEFAULT_NOMINAL_FILAMENT_DIA{defaults::DEFAULT_NOMINAL_FILAMENT_DIA};
bool SINGLENOZZLE{defaults::SINGLENOZZLE};
bool SINGLENOZZLE_STANDBY_TEMP{defaults::SINGLENOZZLE_STANDBY_TEMP};
bool SINGLENOZZLE_STANDBY_FAN{defaults::SINGLENOZZLE_STANDBY_FAN};
QString MMU_MODEL{defaults::MMU_MODEL};
bool SWITCHING_EXTRUDER{defaults::SWITCHING_EXTRUDER};
int32_t SWITCHING_EXTRUDER_SERVO_NR{defaults::SWITCHING_EXTRUDER_SERVO_NR};