MCPcopy Create free account
hub / github.com/MarlinFirmware/Marlin / event_handler

Method event_handler

Marlin/src/module/endstops.cpp:370–441  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

368#endif
369
370void Endstops::event_handler() {
371 static endstop_mask_t prev_hit_state; // = 0
372 if (hit_state == prev_hit_state) return;
373 prev_hit_state = hit_state;
374 if (hit_state) {
375 #if HAS_STATUS_MESSAGE
376 char NUM_AXIS_LIST_(chrX = ' ', chrY = ' ', chrZ = ' ', chrI = ' ', chrJ = ' ', chrK = ' ', chrU = ' ', chrV = ' ', chrW = ' ')
377 chrP = ' ';
378 #define _SET_STOP_CHAR(A,C) (chr## A = C)
379 #else
380 #define _SET_STOP_CHAR(A,C) NOOP
381 #endif
382
383 #define _ENDSTOP_HIT_ECHO(A,C) do{ \
384 SERIAL_ECHOPGM(" " STRINGIFY(A) ":", planner.triggered_position_mm(_AXIS(A))); _SET_STOP_CHAR(A,C); }while(0)
385
386 #define _ENDSTOP_HIT_TEST(A,C) \
387 if (TERN0(HAS_##A##_MIN_STATE, TEST(hit_state, ES_ENUM(A,MIN))) || TERN0(HAS_##A##_MAX_STATE, TEST(hit_state, ES_ENUM(A,MAX)))) \
388 _ENDSTOP_HIT_ECHO(A,C)
389
390 #define ENDSTOP_HIT_TEST_X() _ENDSTOP_HIT_TEST(X,'X')
391 #define ENDSTOP_HIT_TEST_Y() _ENDSTOP_HIT_TEST(Y,'Y')
392 #define ENDSTOP_HIT_TEST_Z() _ENDSTOP_HIT_TEST(Z,'Z')
393 #define ENDSTOP_HIT_TEST_I() _ENDSTOP_HIT_TEST(I,'I')
394 #define ENDSTOP_HIT_TEST_J() _ENDSTOP_HIT_TEST(J,'J')
395 #define ENDSTOP_HIT_TEST_K() _ENDSTOP_HIT_TEST(K,'K')
396 #define ENDSTOP_HIT_TEST_U() _ENDSTOP_HIT_TEST(U,'U')
397 #define ENDSTOP_HIT_TEST_V() _ENDSTOP_HIT_TEST(V,'V')
398 #define ENDSTOP_HIT_TEST_W() _ENDSTOP_HIT_TEST(W,'W')
399
400 SERIAL_ECHO_START();
401 SERIAL_ECHOPGM(STR_ENDSTOPS_HIT);
402 NUM_AXIS_CODE(
403 ENDSTOP_HIT_TEST_X(),
404 ENDSTOP_HIT_TEST_Y(),
405 ENDSTOP_HIT_TEST_Z(),
406 _ENDSTOP_HIT_TEST(I,'I'),
407 _ENDSTOP_HIT_TEST(J,'J'),
408 _ENDSTOP_HIT_TEST(K,'K'),
409 _ENDSTOP_HIT_TEST(U,'U'),
410 _ENDSTOP_HIT_TEST(V,'V'),
411 _ENDSTOP_HIT_TEST(W,'W')
412 );
413
414 #if USE_Z_MIN_PROBE
415 #define P_AXIS Z_AXIS
416 if (TEST(hit_state, Z_MIN_PROBE)) _ENDSTOP_HIT_ECHO(P, 'P');
417 #endif
418 SERIAL_EOL();
419
420 #if HAS_STATUS_MESSAGE
421 ui.status_printf(0,
422 F(S_FMT GANG_N_1(NUM_AXES, " %c") " %c"),
423 GET_TEXT_F(MSG_LCD_ENDSTOPS),
424 NUM_AXIS_LIST_(chrX, chrY, chrZ, chrI, chrJ, chrK, chrU, chrV, chrW) chrP
425 );
426 #endif
427

Callers 1

loopFunction · 0.80

Calls 10

SERIAL_ECHO_STARTFunction · 0.85
SERIAL_EOLFunction · 0.85
quickstop_stepperFunction · 0.85
status_printfMethod · 0.80
abortFilePrintNowMethod · 0.80
disable_all_heatersMethod · 0.80
injectMethod · 0.80
FFunction · 0.50
clearMethod · 0.45
stopMethod · 0.45

Tested by

no test coverage detected