Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] M115_GEOMETRY_REPORT fails to compile with > 7 axis #25180

Closed
ellensp opened this issue Jan 3, 2023 · 1 comment
Closed

[BUG] M115_GEOMETRY_REPORT fails to compile with > 7 axis #25180

ellensp opened this issue Jan 3, 2023 · 1 comment

Comments

@ellensp
Copy link
Contributor

ellensp commented Jan 3, 2023

Did you test the latest bugfix-2.1.x code?

Yes, and the problem still exists.

Bug Description

Compiling .pio/build/BIGTREE_OCTOPUS_V1/src/src/inc/Warnings.cpp.o
In file included from Marlin/src/gcode/host/../../inc/MarlinConfig.h:55,
from Marlin/src/gcode/host/../gcode.h:331,
from Marlin/src/gcode/host/M115.cpp:23:
Marlin/src/gcode/host/../../inc/../core/serial.h:191:35: error: pasting "SEP" and "",j:"" does not give a valid preprocessing token
191 | #define __SEP_N(N,V...) SEP##N(V)
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/serial.h:192:35: note: in expansion of macro '__SEP_N'
192 | #define _SEP_N(N,V...) __SEP_N(N,V)
| ^~~~~~~
Marlin/src/gcode/host/../../inc/../core/serial.h:197:44: note: in expansion of macro '_SEP_N'
197 | #define SERIAL_ECHOPGM(V...) do{ EVAL(_SEP_N(TWO_ARGS(V),V)); }while(0)
| ^~~~~~
Marlin/src/gcode/host/M115.cpp:236:7: note: in expansion of macro 'SERIAL_ECHOPGM'
236 | SERIAL_ECHOPGM(
| ^~~~~~~~~~~~~~
Marlin/src/inc/Warnings.cpp:67:4: warning: #warning "Your Configuration provides no method to acquire user feedback!" [-Wcpp]
67 | #warning "Your Configuration provides no method to acquire user feedback!"
| ^~~~~~~
Marlin/src/inc/Warnings.cpp:373:6: warning: #warning "Note: Auto-assigned I STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" [-Wcpp]
373 | #warning "Note: Auto-assigned I STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)"
| ^~~~~~~
Marlin/src/inc/Warnings.cpp:431:6: warning: #warning "Note: Auto-assigned J STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" [-Wcpp]
431 | #warning "Note: Auto-assigned J STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)"
| ^~~~~~~
Marlin/src/inc/Warnings.cpp:489:6: warning: #warning "Note: Auto-assigned K STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" [-Wcpp]
489 | #warning "Note: Auto-assigned K STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)"
| ^~~~~~~
Marlin/src/inc/Warnings.cpp:548:6: warning: #warning "Note: Auto-assigned U STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" [-Wcpp]
548 | #warning "Note: Auto-assigned U STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)"
| ^~~~~~~
Marlin/src/inc/Warnings.cpp:600:6: warning: #warning "Note: Auto-assigned V STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" [-Wcpp]
600 | #warning "Note: Auto-assigned V STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)"
| ^~~~~~~
Marlin/src/inc/Warnings.cpp:731:6: warning: #warning "Motherboard DIAG jumpers must be removed when SENSORLESS_HOMING is disabled. (Define DIAG_JUMPERS_REMOVED to suppress this warning.)" [-Wcpp]
731 | #warning "Motherboard DIAG jumpers must be removed when SENSORLESS_HOMING is disabled. (Define DIAG_JUMPERS_REMOVED to suppress this warning.)"
| ^~~~~~~
Marlin/src/inc/Warnings.cpp:784:4: warning: #warning "ENDSTOP_INTERRUPTS_FEATURE should be enabled for production use if possible!" [-Wcpp]
784 | #warning "ENDSTOP_INTERRUPTS_FEATURE should be enabled for production use if possible!"
| ^~~~~~~
In file included from Marlin/src/gcode/host/../../inc/MarlinConfigPre.h:37,
from Marlin/src/gcode/host/../../inc/MarlinConfig.h:28,
from Marlin/src/gcode/host/../gcode.h:331,
from Marlin/src/gcode/host/M115.cpp:23:
Marlin/src/gcode/host/M115.cpp: In static member function 'static void GcodeSuite::M115()':
Marlin/src/gcode/host/../../inc/../core/serial.h:191:35: error: 'SEP' was not declared in this scope
191 | #define __SEP_N(N,V...) SEP##N(V)
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:648:24: note: in definition of macro 'EVAL1'
648 | #define EVAL1(V...) V
| ^
Marlin/src/gcode/host/../../inc/../core/macros.h:647:30: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:646:24: note: in expansion of macro 'EVAL2'
646 | #define EVAL4(V...) EVAL2(EVAL2(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:24: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:30: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:646:30: note: in expansion of macro 'EVAL2'
646 | #define EVAL4(V...) EVAL2(EVAL2(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:645:24: note: in expansion of macro 'EVAL4'
645 | #define EVAL8(V...) EVAL4(EVAL4(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:24: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:30: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:646:24: note: in expansion of macro 'EVAL2'
646 | #define EVAL4(V...) EVAL2(EVAL2(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:24: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:30: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:646:30: note: in expansion of macro 'EVAL2'
646 | #define EVAL4(V...) EVAL2(EVAL2(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:645:30: note: in expansion of macro 'EVAL4'
645 | #define EVAL8(V...) EVAL4(EVAL4(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:644:24: note: in expansion of macro 'EVAL8'
644 | #define EVAL16(V...) EVAL8(EVAL8(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:24: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:30: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:646:24: note: in expansion of macro 'EVAL2'
646 | #define EVAL4(V...) EVAL2(EVAL2(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:24: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:30: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:646:30: note: in expansion of macro 'EVAL2'
646 | #define EVAL4(V...) EVAL2(EVAL2(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:645:24: note: in expansion of macro 'EVAL4'
645 | #define EVAL8(V...) EVAL4(EVAL4(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:24: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:30: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:646:24: note: in expansion of macro 'EVAL2'
646 | #define EVAL4(V...) EVAL2(EVAL2(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:24: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:647:30: note: in expansion of macro 'EVAL1'
647 | #define EVAL2(V...) EVAL1(EVAL1(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:646:30: note: in expansion of macro 'EVAL2'
646 | #define EVAL4(V...) EVAL2(EVAL2(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:645:30: note: in expansion of macro 'EVAL4'
645 | #define EVAL8(V...) EVAL4(EVAL4(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:644:30: note: in expansion of macro 'EVAL8'
644 | #define EVAL16(V...) EVAL8(EVAL8(V))
| ^~~~~
Marlin/src/gcode/host/../../inc/../core/macros.h:637:24: note: in expansion of macro 'EVAL16'
637 | #define EVAL(V...) EVAL16(V)
| ^~~~~~
Marlin/src/gcode/host/../../inc/../core/serial.h:197:39: note: in expansion of macro 'EVAL'
197 | #define SERIAL_ECHOPGM(V...) do{ EVAL(_SEP_N(TWO_ARGS(V),V)); }while(0)
| ^~~~
Marlin/src/gcode/host/../../inc/../core/serial.h:192:35: note: in expansion of macro '__SEP_N'
192 | #define _SEP_N(N,V...) __SEP_N(N,V)
| ^~~~~~~
Marlin/src/gcode/host/../../inc/../core/serial.h:197:44: note: in expansion of macro '_SEP_N'
197 | #define SERIAL_ECHOPGM(V...) do{ EVAL(_SEP_N(TWO_ARGS(V),V)); }while(0)
| ^~~~~~
Marlin/src/gcode/host/M115.cpp:236:7: note: in expansion of macro 'SERIAL_ECHOPGM'
236 | SERIAL_ECHOPGM(
| ^~~~~~~~~~~~~~
*** [.pio/build/BIGTREE_OCTOPUS_V1/src/src/gcode/host/M115.cpp.o] Error 1
=============================================================== [FAILED] Took 4.14 seconds ===============================================================

Environment Status Duration


BIGTREE_OCTOPUS_V1 FAILED 00:00:04.144

Bug Timeline

Unknown

Expected behavior

It should build

Actual behavior

It errors out

Steps to Reproduce

  1. Use Octopus 8 axis example configs https://github.com/MarlinFirmware/Configurations/tree/bugfix-2.1.x/config/examples/linear_axes/Octopus%208%20LINEAR_AXES
  2. enable M115_GEOMETRY_REPORT in Configuration_adv.h
  3. build

Version of Marlin Firmware

Bugfix-2.1.x

Electronics

Octopus

Don't forget to include

Configuration.zip

Additional information & file uploads

This seems to be a limit on the number of parameters SERIAL_ECHOLNPGM can take.

If you split SERIAL_ECHOLNPGM in Marlin/src/gcode/host/M115.cpp into two parts
The error goes away

eg

diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp
index 6e8c406adc..9c4eb2a500 100644
--- a/Marlin/src/gcode/host/M115.cpp
+++ b/Marlin/src/gcode/host/M115.cpp
@@ -232,7 +232,7 @@ void GcodeSuite::M115() {
       const xyz_pos_t lmin = dmin.asLogical(), lmax = dmax.asLogical(),
                       wmin = cmin.asLogical(), wmax = cmax.asLogical();
 
-      SERIAL_ECHOLNPGM(
+      SERIAL_ECHOPGM(
         "area:{"
           "full:{"
             "min:{"
@@ -249,6 +249,9 @@ void GcodeSuite::M115() {
               ),
             "}" // max
           "}," // full
+      );
+
+      SERIAL_ECHOLNPGM(
           "work:{"
             "min:{"
               LIST_N(DOUBLE(NUM_AXES),
@github-actions
Copy link

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked and limited conversation to collaborators Mar 20, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant