From b13214b7f5d90411272cdd16669784e237e3260d Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 29 Sep 2021 08:53:19 +0200 Subject: [PATCH] Fix debug sprintf variant --- src/debug.cpp | 9 +++++---- src/logic/feed_to_bondtech.cpp | 10 +++++----- src/logic/load_filament.cpp | 2 +- src/logic/tool_change.cpp | 4 ++-- src/modules/idler.cpp | 20 ++++++++++---------- src/modules/motion.cpp | 2 +- src/modules/selector.cpp | 16 ++++++++-------- 7 files changed, 32 insertions(+), 31 deletions(-) diff --git a/src/debug.cpp b/src/debug.cpp index ef97ac6..d9374f2 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -5,6 +5,7 @@ #include "hal/usart.h" #include #include +#include #include namespace debug { @@ -21,21 +22,21 @@ const char modules[] PROGMEM = "mod:"; const char hal[] PROGMEM = "hal:"; #endif -void dbg_usart(const char *layer_P, const char *s) { +void __attribute__((noinline)) dbg_usart(const char *layer_P, const char *s) { hu::usart1.WriteS_P(layer_P); hu::usart1.puts(s); } -void dbg_usart_P(const char *layer_P, const char *s_P) { +void __attribute__((noinline)) dbg_usart_P(const char *layer_P, const char *s_P) { hu::usart1.WriteS_P(layer_P); hu::usart1.puts_P(s_P); } -void dbg_usart_sprintf_P(const char *fmt_P, ...) { +void __attribute__((noinline)) dbg_usart_sprintf_P(const char *fmt_P, ...) { char tmp[30]; va_list argptr; va_start(argptr, fmt_P); - vsprintf(tmp, fmt_P, argptr); + vsnprintf_P(tmp, 30, fmt_P, argptr); va_end(argptr); dbg_logic(tmp); } diff --git a/src/logic/feed_to_bondtech.cpp b/src/logic/feed_to_bondtech.cpp index 04c62fa..d8d0164 100644 --- a/src/logic/feed_to_bondtech.cpp +++ b/src/logic/feed_to_bondtech.cpp @@ -22,7 +22,7 @@ bool FeedToBondtech::Step() { switch (state) { case EngagingIdler: if (mi::idler.Engaged()) { - dbg_logic_sprintf_P(PSTR("\nPulley start steps %u\n\n"), mm::motion.CurPosition(mm::Pulley)); + dbg_logic_sprintf_P(PSTR("Pulley start steps %u"), mm::motion.CurPosition(mm::Pulley)); state = PushingFilament; mm::motion.InitAxis(mm::Pulley); mm::motion.PlanMove(config::defaultBowdenLength, config::pulleyFeedrate); //@@TODO constants - there was some strange acceleration sequence in the original FW, @@ -30,7 +30,7 @@ bool FeedToBondtech::Step() { } return false; case PushingFilament: - dbg_logic_P(PSTR("\nFeed to Bondtech --> Pushing\n\n")); + dbg_logic_P(PSTR("Feed to Bondtech --> Pushing")); if (mfs::fsensor.Pressed()) { mm::motion.AbortPlannedMoves(); // stop pushing filament mi::idler.Disengage(); @@ -43,7 +43,7 @@ bool FeedToBondtech::Step() { } return false; case DisengagingIdler: - dbg_logic_P(PSTR("\nFeed to Bondtech --> DisengagingIdler\n\n")); + dbg_logic_P(PSTR("Feed to Bondtech --> DisengagingIdler")); if (!mi::idler.Engaged()) { state = OK; mm::motion.Disable(mm::Pulley); @@ -51,9 +51,9 @@ bool FeedToBondtech::Step() { } return false; case OK: - dbg_logic_P(PSTR("\nFeed to Bondtech\n\n")); + dbg_logic_P(PSTR("Feed to Bondtech")); case Failed: - dbg_logic_P(PSTR("\nFeed to Bondtech FAILED\n\n")); + dbg_logic_P(PSTR("Feed to Bondtech FAILED")); default: return true; } diff --git a/src/logic/load_filament.cpp b/src/logic/load_filament.cpp index 66bb15c..c027602 100644 --- a/src/logic/load_filament.cpp +++ b/src/logic/load_filament.cpp @@ -17,7 +17,7 @@ void LoadFilament::Reset(uint8_t param) { if (!CheckToolIndex(param)) { return; } - dbg_logic_P(PSTR("Load Filament\n\n")); + dbg_logic_P(PSTR("Load Filament")); state = ProgressCode::EngagingIdler; error = ErrorCode::RUNNING; mg::globals.SetActiveSlot(param); diff --git a/src/logic/tool_change.cpp b/src/logic/tool_change.cpp index c8b19d1..6e745e4 100644 --- a/src/logic/tool_change.cpp +++ b/src/logic/tool_change.cpp @@ -30,13 +30,13 @@ void ToolChange::Reset(uint8_t param) { plannedSlot = param; if (mg::globals.FilamentLoaded()) { - dbg_logic_P(PSTR("Filament is loaded --> unload\n")); + dbg_logic_P(PSTR("Filament is loaded --> unload")); state = ProgressCode::UnloadingFilament; unl.Reset(mg::globals.ActiveSlot()); } else { state = ProgressCode::FeedingToFinda; error = ErrorCode::RUNNING; - dbg_logic_P(PSTR("Filament is not loaded --> load\n")); + dbg_logic_P(PSTR("Filament is not loaded --> load")); mg::globals.SetActiveSlot(plannedSlot); feed.Reset(true); } diff --git a/src/modules/idler.cpp b/src/modules/idler.cpp index 5df64f8..d027c80 100644 --- a/src/modules/idler.cpp +++ b/src/modules/idler.cpp @@ -12,24 +12,24 @@ Idler idler; void Idler::PrepareMoveToPlannedSlot() { mm::motion.PlanMoveTo(SlotPosition(plannedSlot), mm::unitToAxisUnit(config::idlerFeedrate)); - dbg_logic_sprintf_P(PSTR("Prepare Move Idler slot %d\n"), plannedSlot); + dbg_logic_sprintf_P(PSTR("Prepare Move Idler slot %d"), plannedSlot); } void Idler::PlanHomingMove() { mm::motion.PlanMove(mm::unitToAxisUnit(-config::idlerLimits.lenght * 2), mm::unitToAxisUnit(config::idlerFeedrate)); - dbg_logic_P(PSTR("Plan Homing Idler\n")); + dbg_logic_P(PSTR("Plan Homing Idler")); } Idler::OperationResult Idler::Disengage() { if (state == Moving) { - dbg_logic_P(PSTR("Moving --> Disengage refused\n")); + dbg_logic_P(PSTR("Moving --> Disengage refused")); return OperationResult::Refused; } plannedSlot = IdleSlotIndex(); plannedEngage = false; if (!Engaged()) { - dbg_logic_P(PSTR("Disengage Idler\n")); + dbg_logic_P(PSTR("Disengage Idler")); return OperationResult::Accepted; } return InitMovement(mm::Idler); @@ -37,7 +37,7 @@ Idler::OperationResult Idler::Disengage() { Idler::OperationResult Idler::Engage(uint8_t slot) { if (state == Moving) { - dbg_logic_P(PSTR("Moving --> Engage refused\n")); + dbg_logic_P(PSTR("Moving --> Engage refused")); return OperationResult::Refused; } @@ -45,7 +45,7 @@ Idler::OperationResult Idler::Engage(uint8_t slot) { plannedEngage = true; if (Engaged()) { - dbg_logic_P(PSTR("Engage Idler\n")); + dbg_logic_P(PSTR("Engage Idler")); return OperationResult::Accepted; } @@ -63,15 +63,15 @@ bool Idler::Home() { bool Idler::Step() { switch (state) { case Moving: - // dbg_logic_P(PSTR("Moving Idler\n")); + // dbg_logic_P(PSTR("Moving Idler")); PerformMove(mm::Idler); return false; case Homing: - dbg_logic_P(PSTR("Homing Idler\n")); + dbg_logic_P(PSTR("Homing Idler")); PerformHome(mm::Idler); return false; case Ready: - // dbg_logic_P(PSTR("Idler Ready\n")); + // dbg_logic_P(PSTR("Idler Ready")); currentlyEngaged = plannedEngage; currentSlot = plannedSlot; @@ -80,7 +80,7 @@ bool Idler::Step() { return true; case Failed: - dbg_logic_P(PSTR("Idler Failed\n")); + dbg_logic_P(PSTR("Idler Failed")); default: return true; } diff --git a/src/modules/motion.cpp b/src/modules/motion.cpp index 97cd881..4d08011 100644 --- a/src/modules/motion.cpp +++ b/src/modules/motion.cpp @@ -46,7 +46,7 @@ void Motion::StallGuardReset(Axis axis) { } void Motion::PlanMoveTo(Axis axis, pos_t pos, steps_t feed_rate, steps_t end_rate) { - dbg_logic_sprintf_P(PSTR("Move axis %d to %u\n"), axis, pos); + dbg_logic_sprintf_P(PSTR("Move axis %d to %u"), axis, pos); if (axisData[axis].ctrl.PlanMoveTo(pos, feed_rate, end_rate)) { // move was queued, prepare the axis diff --git a/src/modules/selector.cpp b/src/modules/selector.cpp index b06b6b9..bbf124f 100644 --- a/src/modules/selector.cpp +++ b/src/modules/selector.cpp @@ -12,23 +12,23 @@ Selector selector; void Selector::PrepareMoveToPlannedSlot() { mm::motion.PlanMoveTo(SlotPosition(plannedSlot), mm::unitToAxisUnit(config::selectorFeedrate)); - dbg_logic_sprintf_P(PSTR("Prepare Move Selector slot %d\n"), plannedSlot); + dbg_logic_sprintf_P(PSTR("Prepare Move Selector slot %d"), plannedSlot); } void Selector::PlanHomingMove() { mm::motion.PlanMove(mm::unitToAxisUnit(config::selectorLimits.lenght * 2), mm::unitToAxisUnit(config::selectorFeedrate)); - dbg_logic_P(PSTR("Plan Homing Selector\n")); + dbg_logic_P(PSTR("Plan Homing Selector")); } Selector::OperationResult Selector::MoveToSlot(uint8_t slot) { if (state == Moving) { - dbg_logic_P(PSTR("Moving --> Selector refused\n")); + dbg_logic_P(PSTR("Moving --> Selector refused")); return OperationResult::Refused; } plannedSlot = slot; if (currentSlot == slot) { - dbg_logic_P(PSTR("Moving Selector\n")); + dbg_logic_P(PSTR("Moving Selector")); return OperationResult::Accepted; } return InitMovement(mm::Selector); @@ -45,19 +45,19 @@ bool Selector::Step() { switch (state) { case Moving: PerformMove(mm::Selector); - //dbg_logic_P(PSTR("Moving Selector\n")); + //dbg_logic_P(PSTR("Moving Selector")); return false; case Homing: - dbg_logic_P(PSTR("Homing Selector\n")); + dbg_logic_P(PSTR("Homing Selector")); PerformHome(mm::Selector); return false; case Ready: - //dbg_logic_P(PSTR("Selector Ready\n")); + //dbg_logic_P(PSTR("Selector Ready")); currentSlot = plannedSlot; mm::motion.Disable(mm::Selector); // turn off selector motor's power every time return true; case Failed: - dbg_logic_P(PSTR("Selector Failed\n")); + dbg_logic_P(PSTR("Selector Failed")); default: return true; }