mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2026-01-06 22:57:43 -07:00
🎨 Misc. serial echo/char
This commit is contained in:
parent
aee25d75ea
commit
c173ecd89a
7 changed files with 40 additions and 65 deletions
|
|
@ -428,8 +428,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {
|
|||
|
||||
if (gcode.stepper_max_timed_out(ms)) {
|
||||
SERIAL_ERROR_START();
|
||||
SERIAL_ECHOPGM(STR_KILL_PRE);
|
||||
SERIAL_ECHOLNPGM(STR_KILL_INACTIVE_TIME, parser.command_ptr);
|
||||
SERIAL_ECHOLN(F(STR_KILL_PRE), F(STR_KILL_INACTIVE_TIME), parser.command_ptr);
|
||||
kill();
|
||||
}
|
||||
|
||||
|
|
@ -497,8 +496,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {
|
|||
// ----------------------------------------------------------------
|
||||
if (killCount >= KILL_DELAY) {
|
||||
SERIAL_ERROR_START();
|
||||
SERIAL_ECHOPGM(STR_KILL_PRE);
|
||||
SERIAL_ECHOLNPGM(STR_KILL_BUTTON);
|
||||
SERIAL_ECHOLN(F(STR_KILL_PRE), F(STR_KILL_BUTTON));
|
||||
kill();
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -27,12 +27,12 @@
|
|||
// Useful macro for stopping the CPU on an unexpected condition
|
||||
// This is used like SERIAL_ECHOPGM, that is: a key-value call of the local variables you want
|
||||
// to dump to the serial port before stopping the CPU.
|
||||
// \/ Don't replace by SERIAL_ECHOPGM since ONLY_FILENAME cannot be transformed to a PGM string on Arduino and it breaks building
|
||||
#define BUG_ON(V...) do { SERIAL_ECHO(ONLY_FILENAME); SERIAL_ECHO(__LINE__); SERIAL_ECHOLNPGM(": "); SERIAL_ECHOLNPGM(V); SERIAL_FLUSHTX(); *(char*)0 = 42; } while(0)
|
||||
// \/ Don't use SERIAL_ECHOPGM with ONLY_FILENAME. It can't be a PGM string,
|
||||
#define BUG_ON(V...) do { SERIAL_ECHOLN(ONLY_FILENAME, __LINE__, F(": ")); SERIAL_ECHOLNPGM(V); SERIAL_FLUSHTX(); *(char*)0 = 42; } while(0)
|
||||
#elif ENABLED(MARLIN_DEV_MODE)
|
||||
// Don't stop the CPU here, but at least dump the bug on the serial port
|
||||
// \/ Don't replace by SERIAL_ECHOPGM since ONLY_FILENAME cannot be transformed to a PGM string on Arduino and it breaks building
|
||||
#define BUG_ON(V...) do { SERIAL_ECHO(ONLY_FILENAME); SERIAL_ECHO(__LINE__); SERIAL_ECHOLNPGM(": BUG!"); SERIAL_ECHOLNPGM(V); SERIAL_FLUSHTX(); } while(0)
|
||||
// \/ Don't use SERIAL_ECHOPGM with ONLY_FILENAME. It can't be a PGM string,
|
||||
#define BUG_ON(V...) do { SERIAL_ECHOLN(ONLY_FILENAME, __LINE__, F(": BUG!")); SERIAL_ECHOLNPGM(V); SERIAL_FLUSHTX(); } while(0)
|
||||
#else
|
||||
// Release mode, let's ignore the bug
|
||||
#define BUG_ON(V...) NOOP
|
||||
|
|
|
|||
|
|
@ -154,10 +154,8 @@ void safe_delay(millis_t ms) {
|
|||
const float rz = bedlevel.get_z_correction(current_position);
|
||||
SERIAL_ECHO(ftostr43sign(rz, '+'));
|
||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||
if (planner.z_fade_height) {
|
||||
SERIAL_ECHOPGM(" (", ftostr43sign(rz * planner.fade_scaling_factor_for_z(current_position.z), '+'));
|
||||
SERIAL_CHAR(')');
|
||||
}
|
||||
if (planner.z_fade_height)
|
||||
SERIAL_ECHO(F(" ("), ftostr43sign(rz * planner.fade_scaling_factor_for_z(current_position.z), '+'), C(')'));
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
|
@ -176,10 +174,7 @@ void safe_delay(millis_t ms) {
|
|||
SERIAL_ECHOPGM("MBL Adjustment Z", ftostr43sign(z_offset + z_correction, '+'));
|
||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||
if (planner.z_fade_height) {
|
||||
SERIAL_ECHOPGM(" (", ftostr43sign(
|
||||
z_offset + z_correction * planner.fade_scaling_factor_for_z(current_position.z), '+'
|
||||
));
|
||||
SERIAL_CHAR(')');
|
||||
SERIAL_ECHO(F(" ("), ftostr43sign(z_offset + z_correction * planner.fade_scaling_factor_for_z(current_position.z), '+'), C(')'));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ void CancelObject::report() {
|
|||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOPGM("Canceled:");
|
||||
for (int i = 0; i < state.object_count; i++)
|
||||
if (TEST(state.canceled, i)) { SERIAL_CHAR(' '); SERIAL_ECHO(i); }
|
||||
if (TEST(state.canceled, i)) SERIAL_ECHO(C(' '), i);
|
||||
SERIAL_EOL();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -168,8 +168,7 @@ void I2CPositionEncoder::update() {
|
|||
float sumP = 0;
|
||||
for (uint8_t i = 0; i < I2CPE_ERR_PRST_ARRAY_SIZE; ++i) sumP += errPrst[i];
|
||||
const int32_t errorP = int32_t(sumP * RECIPROCAL(I2CPE_ERR_PRST_ARRAY_SIZE));
|
||||
SERIAL_CHAR(AXIS_CHAR(encoderAxis));
|
||||
SERIAL_ECHOLNPGM(" : CORRECT ERR ", errorP * planner.mm_per_step[encoderAxis], "mm");
|
||||
SERIAL_ECHOLN(C(AXIS_CHAR(encoderAxis)), F(" : CORRECT ERR "), errorP * planner.mm_per_step[encoderAxis], F("mm"));
|
||||
babystep.add_steps(encoderAxis, -LROUND(errorP));
|
||||
errPrstIdx = 0;
|
||||
}
|
||||
|
|
@ -188,8 +187,7 @@ void I2CPositionEncoder::update() {
|
|||
if (ABS(error) > I2CPE_ERR_CNT_THRESH * planner.settings.axis_steps_per_mm[encoderAxis]) {
|
||||
const millis_t ms = millis();
|
||||
if (ELAPSED(ms, nextErrorCountTime)) {
|
||||
SERIAL_CHAR(AXIS_CHAR(encoderAxis));
|
||||
SERIAL_ECHOLNPGM(" : LARGE ERR ", error, "; diffSum=", diffSum);
|
||||
SERIAL_ECHOLN(C(AXIS_CHAR(encoderAxis)), F(" : LARGE ERR "), error, F("; diffSum="), diffSum);
|
||||
errorCount++;
|
||||
nextErrorCountTime = ms + I2CPE_ERR_CNT_DEBOUNCE_MS;
|
||||
}
|
||||
|
|
@ -208,8 +206,7 @@ void I2CPositionEncoder::set_homed() {
|
|||
homed = trusted = true;
|
||||
|
||||
#ifdef I2CPE_DEBUG
|
||||
SERIAL_CHAR(AXIS_CHAR(encoderAxis));
|
||||
SERIAL_ECHOLNPGM(" axis encoder homed, offset of ", zeroOffset, " ticks.");
|
||||
SERIAL_ECHO(C(AXIS_CHAR(encoderAxis)), F(" axis encoder homed, offset of "), zeroOffset, F(" ticks.\n"));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
@ -219,8 +216,7 @@ void I2CPositionEncoder::set_unhomed() {
|
|||
homed = trusted = false;
|
||||
|
||||
#ifdef I2CPE_DEBUG
|
||||
SERIAL_CHAR(AXIS_CHAR(encoderAxis));
|
||||
SERIAL_ECHOLNPGM(" axis encoder unhomed.");
|
||||
SERIAL_ECHO(C(AXIS_CHAR(encoderAxis)), F(" axis encoder unhomed.\n"));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -247,10 +243,8 @@ float I2CPositionEncoder::get_axis_error_mm(const bool report) {
|
|||
diff = actual - target,
|
||||
error = ABS(diff) > 10000 ? 0 : diff; // Huge error is a bad reading
|
||||
|
||||
if (report) {
|
||||
SERIAL_CHAR(AXIS_CHAR(encoderAxis));
|
||||
SERIAL_ECHOLNPGM(" axis target=", target, "mm; actual=", actual, "mm; err=", error, "mm");
|
||||
}
|
||||
if (report)
|
||||
SERIAL_ECHO(C(AXIS_CHAR(encoderAxis)), F(" axis target="), target, F("mm; actual="), actual, F("mm; err="), error, F("mm\n"));
|
||||
|
||||
return error;
|
||||
}
|
||||
|
|
@ -282,10 +276,8 @@ int32_t I2CPositionEncoder::get_axis_error_steps(const bool report) {
|
|||
|
||||
errorPrev = error;
|
||||
|
||||
if (report) {
|
||||
SERIAL_CHAR(AXIS_CHAR(encoderAxis));
|
||||
SERIAL_ECHOLNPGM(" axis target=", target, "; actual=", encoderCountInStepperTicksScaled, "; err=", error);
|
||||
}
|
||||
if (report)
|
||||
SERIAL_ECHOLN(C(AXIS_CHAR(encoderAxis)), F(" axis target="), target, F("; actual="), encoderCountInStepperTicksScaled, F("; err="), error);
|
||||
|
||||
if (suppressOutput) {
|
||||
if (report) SERIAL_ECHOLNPGM("!Discontinuity. Suppressing error.");
|
||||
|
|
@ -647,23 +639,22 @@ void I2CPositionEncodersMgr::init() {
|
|||
void I2CPositionEncodersMgr::report_position(const int8_t idx, const bool units, const bool noOffset) {
|
||||
CHECK_IDX();
|
||||
|
||||
if (units)
|
||||
if (units) {
|
||||
SERIAL_ECHOLN(noOffset ? encoders[idx].mm_from_count(encoders[idx].get_raw_count()) : encoders[idx].get_position_mm());
|
||||
else {
|
||||
if (noOffset) {
|
||||
const int32_t raw_count = encoders[idx].get_raw_count();
|
||||
SERIAL_CHAR(AXIS_CHAR(encoders[idx].get_axis()), ' ');
|
||||
|
||||
for (uint8_t j = 31; j > 0; j--)
|
||||
SERIAL_ECHO((bool)(0x00000001 & (raw_count >> j)));
|
||||
|
||||
SERIAL_ECHO((bool)(0x00000001 & raw_count));
|
||||
SERIAL_CHAR(' ');
|
||||
SERIAL_ECHOLN(raw_count);
|
||||
}
|
||||
else
|
||||
SERIAL_ECHOLN(encoders[idx].get_position());
|
||||
return;
|
||||
}
|
||||
|
||||
if (noOffset) {
|
||||
const int32_t raw_count = encoders[idx].get_raw_count();
|
||||
SERIAL_CHAR(AXIS_CHAR(encoders[idx].get_axis()), ' ');
|
||||
|
||||
for (uint8_t j = 31; j >= 0; j--)
|
||||
SERIAL_ECHO(TEST32(raw_count, j));
|
||||
|
||||
SERIAL_ECHOLN(C(' '), raw_count);
|
||||
}
|
||||
else
|
||||
SERIAL_ECHOLN(encoders[idx].get_position());
|
||||
}
|
||||
|
||||
void I2CPositionEncodersMgr::change_module_address(const uint8_t oldaddr, const uint8_t newaddr) {
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ char* hex_address(const void * const a) {
|
|||
void print_hex_nybble(const uint8_t n) { SERIAL_CHAR(hex_nybble(n)); }
|
||||
void print_hex_byte(const uint8_t b) { SERIAL_ECHO(hex_byte(b)); }
|
||||
void print_hex_word(const uint16_t w) { SERIAL_ECHO(_hex_word(w)); }
|
||||
void print_hex_address(const void * const w) { SERIAL_ECHO(hex_address(w)); }
|
||||
void print_hex_address(const void * const a) { SERIAL_ECHO(hex_address(a)); }
|
||||
|
||||
void print_hex_long(const uint32_t w, const char delimiter/*='\0'*/, const bool prefix/*=false*/) {
|
||||
if (prefix) SERIAL_ECHOPGM("0x");
|
||||
|
|
|
|||
|
|
@ -330,24 +330,21 @@ void CardReader::printListing(MediaFile parent, const char * const prepend, cons
|
|||
}
|
||||
}
|
||||
else if (is_visible_entity(p OPTARG(CUSTOM_FIRMWARE_UPLOAD, onlyBin))) {
|
||||
if (prepend) { SERIAL_ECHO(prepend); SERIAL_CHAR('/'); }
|
||||
SERIAL_ECHO(createFilename(filename, p));
|
||||
SERIAL_CHAR(' ');
|
||||
SERIAL_ECHO(p.fileSize);
|
||||
if (prepend) SERIAL_ECHO(prepend, C('/'));
|
||||
SERIAL_ECHO(createFilename(filename, p), C(' '), p.fileSize);
|
||||
if (includeTime) {
|
||||
SERIAL_CHAR(' ');
|
||||
uint16_t crmodDate = p.lastWriteDate, crmodTime = p.lastWriteTime;
|
||||
if (crmodDate < p.creationDate || (crmodDate == p.creationDate && crmodTime < p.creationTime)) {
|
||||
crmodDate = p.creationDate;
|
||||
crmodTime = p.creationTime;
|
||||
}
|
||||
SERIAL_ECHOPGM("0x", hex_word(crmodDate));
|
||||
SERIAL_ECHOPGM(" 0x", hex_word(crmodDate));
|
||||
print_hex_word(crmodTime);
|
||||
}
|
||||
#if ENABLED(LONG_FILENAME_HOST_SUPPORT)
|
||||
if (includeLong) {
|
||||
SERIAL_CHAR(' ');
|
||||
if (prependLong) { SERIAL_ECHO(prependLong); SERIAL_CHAR('/'); }
|
||||
if (prependLong) SERIAL_ECHO(prependLong, C('/'));
|
||||
SERIAL_ECHO(longFilename[0] ? longFilename : filename);
|
||||
}
|
||||
#endif
|
||||
|
|
@ -470,10 +467,7 @@ void CardReader::printSelectedFilename() {
|
|||
SERIAL_ECHO(dosFilename);
|
||||
#if ENABLED(LONG_FILENAME_HOST_SUPPORT)
|
||||
selectFileByName(dosFilename);
|
||||
if (longFilename[0]) {
|
||||
SERIAL_CHAR(' ');
|
||||
SERIAL_ECHO(longFilename);
|
||||
}
|
||||
if (longFilename[0]) SERIAL_ECHO(C(' '), longFilename);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
|
|
@ -856,11 +850,8 @@ void CardReader::report_status(TERN_(QUIETER_AUTO_REPORT_SD_STATUS, const bool i
|
|||
if (has_job) old_sdpos = sdpos;
|
||||
#endif
|
||||
|
||||
if (has_job) {
|
||||
SERIAL_ECHOPGM(STR_SD_PRINTING_BYTE, sdpos);
|
||||
SERIAL_CHAR('/');
|
||||
SERIAL_ECHOLN(filesize);
|
||||
}
|
||||
if (has_job)
|
||||
SERIAL_ECHOLN(F(STR_SD_PRINTING_BYTE), sdpos, C('/'), filesize);
|
||||
else
|
||||
SERIAL_ECHOLNPGM(STR_SD_NOT_PRINTING);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue