Support more filament runout sensors in M119 (#11851)

This commit is contained in:
Scott Lahteine
2018-09-17 03:27:13 -05:00
committed by GitHub
parent 115abf9c53
commit 09a2bee8aa
3 changed files with 84 additions and 25 deletions

View File

@ -358,12 +358,16 @@ void Endstops::event_handler() {
prev_hit_state = hit_state;
} // Endstops::report_state
void Endstops::M119() {
static void print_es_state(const bool is_hit, const char * const label=NULL) {
if (label) serialprintPGM(label);
SERIAL_PROTOCOLPGM(": ");
serialprintPGM(is_hit ? PSTR(MSG_ENDSTOP_HIT) : PSTR(MSG_ENDSTOP_OPEN));
SERIAL_EOL();
}
void _O2 Endstops::M119() {
SERIAL_PROTOCOLLNPGM(MSG_M119_REPORT);
#define ES_REPORT(AXIS) do{ \
SERIAL_PROTOCOLPGM(MSG_##AXIS); \
SERIAL_PROTOCOLLN(((READ(AXIS##_PIN)^AXIS##_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); \
}while(0)
#define ES_REPORT(S) print_es_state(READ(S##_PIN) == S##_ENDSTOP_INVERTING, PSTR(MSG_##S))
#if HAS_X_MIN
ES_REPORT(X_MIN);
#endif
@ -407,12 +411,52 @@ void Endstops::M119() {
ES_REPORT(Z3_MAX);
#endif
#if ENABLED(Z_MIN_PROBE_ENDSTOP)
SERIAL_PROTOCOLPGM(MSG_Z_PROBE);
SERIAL_PROTOCOLLN(((READ(Z_MIN_PROBE_PIN)^Z_MIN_PROBE_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
print_es_state(READ(Z_MIN_PROBE_PIN) == Z_MIN_PROBE_ENDSTOP_INVERTING, PSTR(MSG_Z_PROBE));
#endif
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
SERIAL_PROTOCOLPGM(MSG_FILAMENT_RUNOUT_SENSOR);
SERIAL_PROTOCOLLN(((READ(FIL_RUNOUT_PIN)^FIL_RUNOUT_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
#define FRS_COUNT (1 + PIN_EXISTS(FIL_RUNOUT2) + PIN_EXISTS(FIL_RUNOUT3) + PIN_EXISTS(FIL_RUNOUT4) + PIN_EXISTS(FIL_RUNOUT5) + PIN_EXISTS(FIL_RUNOUT6))
#if FRS_COUNT == 1
print_es_state(READ(FIL_RUNOUT_PIN) == FIL_RUNOUT_INVERTING, MSG_FILAMENT_RUNOUT_SENSOR);
#else
for (uint8_t i = 1; i <=
#if FRS_COUNT == 6
6
#elif FRS_COUNT == 5
5
#elif FRS_COUNT == 4
4
#elif FRS_COUNT == 3
3
#elif FRS_COUNT == 2
2
#endif
; i++
) {
pin_t pin;
switch (i) {
default: continue;
case 1: pin = FIL_RUNOUT_PIN; break;
#if PIN_EXISTS(FIL_RUNOUT2)
case 2: pin = FIL_RUNOUT2_PIN; break;
#endif
#if PIN_EXISTS(FIL_RUNOUT3)
case 3: pin = FIL_RUNOUT3_PIN; break;
#endif
#if PIN_EXISTS(FIL_RUNOUT4)
case 4: pin = FIL_RUNOUT4_PIN; break;
#endif
#if PIN_EXISTS(FIL_RUNOUT5)
case 5: pin = FIL_RUNOUT5_PIN; break;
#endif
#if PIN_EXISTS(FIL_RUNOUT6)
case 6: pin = FIL_RUNOUT6_PIN; break;
#endif
}
SERIAL_PROTOCOLPGM(MSG_FILAMENT_RUNOUT_SENSOR);
if (i > 1) { SERIAL_CHAR(' '); SERIAL_CHAR('0' + i); }
print_es_state(digitalRead(pin) == FIL_RUNOUT_INVERTING);
}
#endif
#endif
} // Endstops::M119