Convert MmuCmd to enum class.

This commit is contained in:
Marek Bel 2019-02-13 17:12:35 +01:00
parent 8e23e7f322
commit daaec0ef04
3 changed files with 23 additions and 13 deletions

View File

@ -6933,7 +6933,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE))
return; //dont execute the same T-code twice in a row return; //dont execute the same T-code twice in a row
} }
st_synchronize(); st_synchronize();
mmu_command(static_cast<MmuCmd>(MmuCmd::T0 + tmp_extruder)); mmu_command(MmuCmd::T0 + tmp_extruder);
manage_response(true, true, MMU_TCODE_MOVE); manage_response(true, true, MMU_TCODE_MOVE);
} }
} }
@ -6974,7 +6974,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE))
printf_P(PSTR("Duplicit T-code ignored.\n")); printf_P(PSTR("Duplicit T-code ignored.\n"));
return; //dont execute the same T-code twice in a row return; //dont execute the same T-code twice in a row
} }
mmu_command(static_cast<MmuCmd>(MmuCmd::T0 + tmp_extruder)); mmu_command(MmuCmd::T0 + tmp_extruder);
manage_response(true, true, MMU_TCODE_MOVE); manage_response(true, true, MMU_TCODE_MOVE);
mmu_continue_loading(); mmu_continue_loading();

View File

@ -256,7 +256,7 @@ void mmu_loop(void)
} }
return; return;
case S::Idle: case S::Idle:
if (mmu_cmd) //command request ? if (mmu_cmd != MmuCmd::None) //command request ?
{ {
if ((mmu_cmd >= MmuCmd::T0) && (mmu_cmd <= MmuCmd::T4)) if ((mmu_cmd >= MmuCmd::T0) && (mmu_cmd <= MmuCmd::T4))
{ {
@ -341,7 +341,7 @@ void mmu_loop(void)
} }
} }
mmu_state = S::Idle; mmu_state = S::Idle;
if (mmu_cmd == 0) if (mmu_cmd == MmuCmd::None)
mmu_ready = true; mmu_ready = true;
} }
else if ((mmu_last_request + MMU_P0_TIMEOUT) < _millis()) else if ((mmu_last_request + MMU_P0_TIMEOUT) < _millis())
@ -372,7 +372,7 @@ void mmu_loop(void)
} }
else if ((mmu_last_request + MMU_CMD_TIMEOUT) < _millis()) else if ((mmu_last_request + MMU_CMD_TIMEOUT) < _millis())
{ //resend request after timeout (5 min) { //resend request after timeout (5 min)
if (mmu_last_cmd) if (mmu_last_cmd != MmuCmd::None)
{ {
if (mmu_attempt_nr++ < MMU_MAX_RESEND_ATTEMPTS) { if (mmu_attempt_nr++ < MMU_MAX_RESEND_ATTEMPTS) {
DEBUG_PRINTF_P(PSTR("MMU retry attempt nr. %d\n"), mmu_attempt_nr - 1); DEBUG_PRINTF_P(PSTR("MMU retry attempt nr. %d\n"), mmu_attempt_nr - 1);
@ -487,14 +487,14 @@ bool mmu_get_response(uint8_t move)
printf_P(PSTR("mmu_get_response - begin move:%d\n"), move); printf_P(PSTR("mmu_get_response - begin move:%d\n"), move);
KEEPALIVE_STATE(IN_PROCESS); KEEPALIVE_STATE(IN_PROCESS);
while (mmu_cmd != 0) while (mmu_cmd != MmuCmd::None)
{ {
delay_keep_alive(100); delay_keep_alive(100);
} }
while (!mmu_ready) while (!mmu_ready)
{ {
if ((mmu_state != S::WaitCmd) && (mmu_last_cmd == 0)) if ((mmu_state != S::WaitCmd) && (mmu_last_cmd == MmuCmd::None))
break; break;
switch (move) { switch (move) {
@ -786,7 +786,7 @@ void mmu_M600_load_filament(bool automatic)
// printf_P(PSTR("T code: %d \n"), tmp_extruder); // printf_P(PSTR("T code: %d \n"), tmp_extruder);
// mmu_printf_P(PSTR("T%d\n"), tmp_extruder); // mmu_printf_P(PSTR("T%d\n"), tmp_extruder);
mmu_command(static_cast<MmuCmd>(MmuCmd::T0 + tmp_extruder)); mmu_command(MmuCmd::T0 + tmp_extruder);
manage_response(false, true, MMU_LOAD_MOVE); manage_response(false, true, MMU_LOAD_MOVE);
mmu_continue_loading(); mmu_continue_loading();
@ -877,7 +877,7 @@ void display_loading()
void extr_adj(int extruder) //loading filament for SNMM void extr_adj(int extruder) //loading filament for SNMM
{ {
#ifndef SNMM #ifndef SNMM
MmuCmd cmd = static_cast<MmuCmd>(MmuCmd::L0 + extruder); MmuCmd cmd = MmuCmd::L0 + extruder;
if (cmd > MmuCmd::L4) if (cmd > MmuCmd::L4)
{ {
printf_P(PSTR("Filament out of range %d \n"),extruder); printf_P(PSTR("Filament out of range %d \n"),extruder);
@ -1295,7 +1295,7 @@ void lcd_mmu_load_to_nozzle(uint8_t filament_nr)
lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_LOADING_FILAMENT)); lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
lcd_print(" "); lcd_print(" ");
lcd_print(tmp_extruder + 1); lcd_print(tmp_extruder + 1);
mmu_command(static_cast<MmuCmd>(MmuCmd::T0 + tmp_extruder)); mmu_command(MmuCmd::T0 + tmp_extruder);
manage_response(true, true, MMU_TCODE_MOVE); manage_response(true, true, MMU_TCODE_MOVE);
mmu_continue_loading(); mmu_continue_loading();
mmu_extruder = tmp_extruder; //filament change is finished mmu_extruder = tmp_extruder; //filament change is finished
@ -1332,7 +1332,7 @@ void mmu_eject_filament(uint8_t filament, bool recover)
current_position[E_AXIS] -= 80; current_position[E_AXIS] -= 80;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2500 / 60, active_extruder); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2500 / 60, active_extruder);
st_synchronize(); st_synchronize();
mmu_command(static_cast<MmuCmd>(MmuCmd::E0 + filament)); mmu_command(MmuCmd::E0 + filament);
manage_response(false, false, MMU_UNLOAD_MOVE); manage_response(false, false, MMU_UNLOAD_MOVE);
if (recover) if (recover)
{ {
@ -1377,7 +1377,7 @@ void mmu_continue_loading()
if(mmu_load_fail < 255) eeprom_update_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL, mmu_load_fail + 1); if(mmu_load_fail < 255) eeprom_update_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL, mmu_load_fail + 1);
if(mmu_load_fail_tot < 65535) eeprom_update_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT, mmu_load_fail_tot + 1); if(mmu_load_fail_tot < 65535) eeprom_update_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT, mmu_load_fail_tot + 1);
mmu_command(static_cast<MmuCmd>(MmuCmd::T0 + tmp_extruder)); mmu_command(MmuCmd::T0 + tmp_extruder);
manage_response(true, true, MMU_TCODE_MOVE); manage_response(true, true, MMU_TCODE_MOVE);
load_more(); load_more();

View File

@ -32,7 +32,7 @@ extern uint16_t mmu_power_failures;
#define MMU_LOAD_FEEDRATE 19.02f //mm/s #define MMU_LOAD_FEEDRATE 19.02f //mm/s
#define MMU_LOAD_TIME_MS 2000 //should be fine tuned to load time for shortest allowed PTFE tubing and maximum loading speed #define MMU_LOAD_TIME_MS 2000 //should be fine tuned to load time for shortest allowed PTFE tubing and maximum loading speed
enum MmuCmd : uint_least8_t enum class MmuCmd : uint_least8_t
{ {
None, None,
T0, T0,
@ -56,6 +56,16 @@ enum MmuCmd : uint_least8_t
S3, S3,
}; };
inline MmuCmd operator+ (MmuCmd cmd, uint8_t filament)
{
return static_cast<MmuCmd>(static_cast<uint8_t>(cmd) + filament );
}
inline uint8_t operator- (MmuCmd cmda, MmuCmd cmdb)
{
return (static_cast<uint8_t>(cmda) - static_cast<uint8_t>(cmdb));
}
extern int mmu_puts_P(const char* str); extern int mmu_puts_P(const char* str);
extern int mmu_printf_P(const char* format, ...); extern int mmu_printf_P(const char* format, ...);