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

[BFW-6775] beautify: get_dwarf_nr -> dwarf_index #4471

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions include/puppies/Dwarf.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -294,8 +294,8 @@ void ToolsMappingBody::windowEvent([[maybe_unused]] window_t *sender, GUI_event_
float get_heatbreak_temp();
uint16_t get_heatbreak_fan_pwr();

inline uint8_t get_dwarf_nr() const {
return dwarf_nr;
inline uint8_t dwarf_index() const {
return dwarf_nr - 1;
Copy link
Contributor

@CZDanol CZDanol Feb 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disrepance between the public getter and private member is even worse than the current state. If we wanna do this, we will need to go even further

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alternatively, we could rename get_dwarf_nr to dwarf_index

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

}

uint16_t get_fan_pwm(uint8_t fan_nr) const;
Expand Down
30 changes: 15 additions & 15 deletions lib/Marlin/Marlin/src/module/prusa/toolchanger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ bool PrusaToolChanger::tool_change(const uint8_t new_tool, tool_return_t return_
// calculate the new tool offset difference before updating hotend_currently_applied_offset
xyz_pos_t new_hotend_offset;
if (new_dwarf != nullptr) {
new_hotend_offset = hotend_offset[new_dwarf->get_dwarf_nr() - 1];
new_hotend_offset = hotend_offset[new_dwarf->dwarf_index()];
} else {
new_hotend_offset.reset();
}
Expand Down Expand Up @@ -332,14 +332,14 @@ bool PrusaToolChanger::tool_change(const uint8_t new_tool, tool_return_t return_
// Disable print fan on old dwarf, fan on new dwarf will be enabled by marlin
// todo: remove this when multiple fans are implemented properly
if (old_dwarf != nullptr) {
Fans::print(old_dwarf->get_dwarf_nr() - 1).setPWM(0);
Fans::print(old_dwarf->dwarf_index()).setPWM(0);
}

if (new_dwarf != old_dwarf) {
if (new_dwarf != nullptr) {
// Before we try to pick up new tool, check that its parked properly
if (!new_dwarf->is_parked()) {
log_error(PrusaToolChanger, "Trying to pick missing Dwarf %u, triggering toolchanger recovery", new_dwarf->get_dwarf_nr());
log_error(PrusaToolChanger, "Trying to pick missing Dwarf #%u, triggering toolchanger recovery", new_dwarf->dwarf_index());
toolcrash();
return false;
}
Expand Down Expand Up @@ -470,9 +470,9 @@ void PrusaToolChanger::toolfall() {
}

bool PrusaToolChanger::purge_tool(Dwarf &dwarf) {
const size_t tool_nr = dwarf.get_dwarf_nr() - 1;
const size_t tool_nr = dwarf.dwarf_index();

if (thermalManager.tooColdToExtrude(dwarf.get_dwarf_nr() - 1)) {
if (thermalManager.tooColdToExtrude(dwarf.dwarf_index())) {
// hotend is cold, skip purge because it can't do anything
return true;
}
Expand Down Expand Up @@ -673,14 +673,14 @@ bool PrusaToolChanger::park(Dwarf &dwarf) {

// Wait until dwarf is registering as parked
if (!wait(dwarf_parked, WAIT_TIME_TOOL_PARKED_PICKED)) {
log_warning(PrusaToolChanger, "Dwarf %u not parked, trying to wiggle it in", dwarf.get_dwarf_nr());
log_warning(PrusaToolChanger, "Dwarf #%u not parked, trying to wiggle it in", dwarf.dwarf_index());

move(info.dock_x - DOCK_WIGGLE_OFFSET, info.dock_y, SLOW_MOVE_MM_S); // wiggle left
move(info.dock_x, info.dock_y, SLOW_MOVE_MM_S); // wiggle back
planner.synchronize();

if (!wait(dwarf_parked, WAIT_TIME_TOOL_PARKED_PICKED)) {
log_error(PrusaToolChanger, "Dwarf %u not parked, triggering toolchanger recovery", dwarf.get_dwarf_nr());
log_error(PrusaToolChanger, "Dwarf #%u not parked, triggering toolchanger recovery", dwarf.dwarf_index());
toolcrash();
return false;
}
Expand All @@ -690,18 +690,18 @@ bool PrusaToolChanger::park(Dwarf &dwarf) {

// Wait until dwarf is registering as not picked
if (!wait(dwarf_not_picked, WAIT_TIME_TOOL_PARKED_PICKED)) {
log_warning(PrusaToolChanger, "Dwarf %u still picked after parking, waiting for pull to finish", dwarf.get_dwarf_nr());
log_warning(PrusaToolChanger, "Dwarf #%u still picked after parking, waiting for pull to finish", dwarf.dwarf_index());

// Can happen if parking in really low speed and acceleration
planner.synchronize(); // Just wait for the pull move to finish and check again

if (!wait(dwarf_not_picked, WAIT_TIME_TOOL_PARKED_PICKED)) {
log_error(PrusaToolChanger, "Dwarf %u still picked after parking, triggering toolchanger recovery", dwarf.get_dwarf_nr());
log_error(PrusaToolChanger, "Dwarf #%u still picked after parking, triggering toolchanger recovery", dwarf.dwarf_index());
toolcrash();
return false;
}
}
log_info(PrusaToolChanger, "Dwarf %u parked successfully", dwarf.get_dwarf_nr());
log_info(PrusaToolChanger, "Dwarf #%u parked successfully", dwarf.dwarf_index());
return true;
}

Expand Down Expand Up @@ -788,14 +788,14 @@ bool PrusaToolChanger::pickup(Dwarf &dwarf) {

// Wait until dwarf is registering as picked
if (!wait(dwarf_picked, WAIT_TIME_TOOL_PARKED_PICKED)) {
log_warning(PrusaToolChanger, "Dwarf %u not picked, trying to wiggle it in", dwarf.get_dwarf_nr());
log_warning(PrusaToolChanger, "Dwarf #%u not picked, trying to wiggle it in", dwarf.dwarf_index());

move(info.dock_x, info.dock_y + DOCK_WIGGLE_OFFSET, SLOW_MOVE_MM_S); // wiggle pull
move(info.dock_x, info.dock_y, SLOW_MOVE_MM_S); // wiggle back
planner.synchronize();

if (!wait(dwarf_picked, WAIT_TIME_TOOL_PARKED_PICKED)) {
log_error(PrusaToolChanger, "Dwarf %u not picked, triggering toolchanger recovery", dwarf.get_dwarf_nr());
log_error(PrusaToolChanger, "Dwarf #%u not picked, triggering toolchanger recovery", dwarf.dwarf_index());
toolcrash();
return false;
}
Expand Down Expand Up @@ -825,15 +825,15 @@ bool PrusaToolChanger::pickup(Dwarf &dwarf) {

// Wait until dwarf is registering as not parked
if (!wait(dwarf_not_parked, WAIT_TIME_TOOL_PARKED_PICKED)) {
log_error(PrusaToolChanger, "Dwarf %u still parked after picking, triggering toolchanger recovery", dwarf.get_dwarf_nr());
log_error(PrusaToolChanger, "Dwarf #%u still parked after picking, triggering toolchanger recovery", dwarf.dwarf_index());
toolcrash();
return false;
}

move(info.dock_x + PICK_X_OFFSET_3, SAFE_Y_WITH_TOOL, limited_feedrate); // tool extracted

log_info(PrusaToolChanger, "Dwarf %u picked successfully", dwarf.get_dwarf_nr());
Odometer_s::instance().add_toolpick(dwarf.get_dwarf_nr() - 1); // Count picks
log_info(PrusaToolChanger, "Dwarf #%u picked successfully", dwarf.dwarf_index());
Odometer_s::instance().add_toolpick(dwarf.dwarf_index()); // Count picks
return true;
}

Expand Down
20 changes: 9 additions & 11 deletions lib/Marlin/Marlin/src/module/prusa/toolchanger_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ bool PrusaToolChangerUtils::update() {
if (old_tool->set_selected(false) == CommunicationStatus::ERROR) {
return false;
}
log_info(PrusaToolChanger, "Deactivated Dwarf %u", old_tool->get_dwarf_nr());
log_info(PrusaToolChanger, "Deactivated Dwarf #%u", old_tool->dwarf_index());

active_dwarf = nullptr; // No dwarf is selected right now
loadcell.Clear(); // No loadcell is available now, make sure that it is not stuck in active mode
Expand All @@ -158,7 +158,7 @@ bool PrusaToolChangerUtils::update() {
if (new_tool->set_selected(true) == CommunicationStatus::ERROR) {
return false;
}
log_info(PrusaToolChanger, "Activated Dwarf %u", new_tool->get_dwarf_nr());
log_info(PrusaToolChanger, "Activated Dwarf #%u", new_tool->dwarf_index());

active_dwarf = new_tool; // New tool is necessary for stepperE0.push()
stepperE0.push(); // Write current stepper settings
Expand Down Expand Up @@ -206,7 +206,7 @@ void PrusaToolChangerUtils::force_marlin_picked_tool(Dwarf *dwarf) {
if (dwarf == nullptr) {
active_extruder = MARLIN_NO_TOOL_PICKED;
} else {
active_extruder = dwarf->get_dwarf_nr() - 1;
active_extruder = dwarf->dwarf_index();
}
}

Expand All @@ -228,7 +228,7 @@ float PrusaToolChangerUtils::get_mbl_z_lift_height() const {
uint8_t PrusaToolChangerUtils::detect_tool_nr() {
Dwarf *dwarf = picked_dwarf.load();
if (dwarf) {
return dwarf->get_dwarf_nr() - 1;
return dwarf->dwarf_index();
} else {
return MARLIN_NO_TOOL_PICKED;
}
Expand Down Expand Up @@ -418,9 +418,8 @@ bool PrusaToolChangerUtils::load_tool_offsets_from_usb() {
}

const PrusaToolInfo &PrusaToolChangerUtils::get_tool_info(const Dwarf &dwarf, bool check_calibrated) const {
assert(dwarf.get_dwarf_nr() <= tool_info.size());
assert(dwarf.get_dwarf_nr() > 0);
const PrusaToolInfo &info = tool_info[dwarf.get_dwarf_nr() - 1];
assert(dwarf.dwarf_index() < tool_info.size());
const PrusaToolInfo &info = tool_info[dwarf.dwarf_index()];

if (check_calibrated && (std::isnan(info.dock_x) || std::isnan(info.dock_y) || info.dock_x == 0 || info.dock_y == 0)) {
toolchanger_error("Dock Position not calibrated");
Expand All @@ -441,10 +440,9 @@ bool PrusaToolChangerUtils::is_tool_info_valid(const Dwarf &dwarf, const PrusaTo
}

void PrusaToolChangerUtils::set_tool_info(const buddy::puppies::Dwarf &dwarf, const PrusaToolInfo &info) {
assert(dwarf.get_dwarf_nr() <= tool_info.size());
assert(dwarf.get_dwarf_nr() > 0);
assert(dwarf.dwarf_index() < tool_info.size());

tool_info[dwarf.get_dwarf_nr() - 1] = info;
tool_info[dwarf.dwarf_index()] = info;
}

void PrusaToolChangerUtils::toolchanger_error(const char *message) const {
Expand All @@ -465,7 +463,7 @@ void PrusaToolChangerUtils::expand_first_dock_position() {
}

PrusaToolInfo PrusaToolChangerUtils::compute_synthetic_tool_info(const Dwarf &dwarf) const {
return PrusaToolInfo({ .dock_x = DOCK_DEFAULT_FIRST_X_MM + DOCK_OFFSET_X_MM * (dwarf.get_dwarf_nr() - 1),
return PrusaToolInfo({ .dock_x = DOCK_DEFAULT_FIRST_X_MM + DOCK_OFFSET_X_MM * (dwarf.dwarf_index()),
.dock_y = DOCK_DEFAULT_Y_MM });
}

Expand Down
8 changes: 4 additions & 4 deletions src/common/appmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -252,12 +252,12 @@ static void filament_sensor_irq() {
}

// Main filament sensor
fs_process_sample(dwarf.get_tool_filament_sensor(), dwarf.get_dwarf_nr() - 1);
fs_process_sample(dwarf.get_tool_filament_sensor(), dwarf.dwarf_index());

// Side filament sensor
auto mapping = side_fsensor_remap::get_mapping();
assert(static_cast<size_t>(dwarf.get_dwarf_nr() - 1) < std::size(mapping));
const uint8_t remapped = mapping[dwarf.get_dwarf_nr() - 1];
assert(static_cast<size_t>(dwarf.dwarf_index()) < std::size(mapping));
const uint8_t remapped = mapping[dwarf.dwarf_index()];
assert(remapped < HOTENDS);

/**
Expand Down Expand Up @@ -285,7 +285,7 @@ static void filament_sensor_irq() {
if (fs_raw_value == AdcGet::undefined_value) {
fs_raw_value = IFSensor::undefined_value;
}
side_fs_process_sample(fs_raw_value, dwarf.get_dwarf_nr() - 1);
side_fs_process_sample(fs_raw_value, dwarf.dwarf_index());
}
cnt_filament_sensor_update = 0;
}
Expand Down