|
@@ -24,6 +24,7 @@ extern char choose_extruder_menu();
|
|
|
#define MMU_HWRESET
|
|
|
#define MMU_RST_PIN 76
|
|
|
|
|
|
+#define MMU_REQUIRED_FW_BUILDNR 81
|
|
|
|
|
|
bool mmu_enabled = false;
|
|
|
|
|
@@ -138,6 +139,9 @@ void mmu_loop(void)
|
|
|
{
|
|
|
fscanf_P(uart2io, PSTR("%u"), &mmu_buildnr); //scan buildnr from buffer
|
|
|
printf_P(PSTR("MMU => '%dok'\n"), mmu_buildnr);
|
|
|
+ bool version_valid = mmu_check_version();
|
|
|
+ if (!version_valid) mmu_show_warning();
|
|
|
+ else puts_P(PSTR("MMU version valid"));
|
|
|
puts_P(PSTR("MMU <= 'P0'"));
|
|
|
mmu_puts_P(PSTR("P0\n")); //send 'read finda' request
|
|
|
mmu_state = -4;
|
|
@@ -170,6 +174,12 @@ void mmu_loop(void)
|
|
|
mmu_printf_P(PSTR("L%d\n"), filament);
|
|
|
mmu_state = 3; // wait for response
|
|
|
}
|
|
|
+ else if (mmu_cmd == MMU_CMD_C0)
|
|
|
+ {
|
|
|
+ printf_P(PSTR("MMU <= 'C0'\n"));
|
|
|
+ mmu_puts_P(PSTR("C0\n")); //send continue loading
|
|
|
+ mmu_state = 3;
|
|
|
+ }
|
|
|
mmu_cmd = 0;
|
|
|
}
|
|
|
else if ((mmu_last_response + 1000) < millis()) //request every 1s
|
|
@@ -196,7 +206,7 @@ void mmu_loop(void)
|
|
|
case 3: //response to commands T0-T4
|
|
|
if (mmu_rx_ok() > 0)
|
|
|
{
|
|
|
- printf_P(PSTR("MMU => 'ok'\n"), mmu_finda);
|
|
|
+ printf_P(PSTR("MMU => 'ok'\n"));
|
|
|
mmu_ready = true;
|
|
|
mmu_state = 1;
|
|
|
}
|
|
@@ -404,6 +414,7 @@ void mmu_M600_load_filament(bool automatic)
|
|
|
mmu_command(MMU_CMD_T0 + tmp_extruder);
|
|
|
|
|
|
manage_response(false, true);
|
|
|
+ mmu_command(MMU_CMD_C0);
|
|
|
mmu_extruder = tmp_extruder; //filament change is finished
|
|
|
|
|
|
mmu_load_to_nozzle();
|
|
@@ -820,3 +831,14 @@ void extr_unload_4()
|
|
|
change_extr(4);
|
|
|
extr_unload();
|
|
|
}
|
|
|
+
|
|
|
+bool mmu_check_version()
|
|
|
+{
|
|
|
+ return (mmu_buildnr >= MMU_REQUIRED_FW_BUILDNR);
|
|
|
+}
|
|
|
+
|
|
|
+void mmu_show_warning()
|
|
|
+{
|
|
|
+ printf_P(PSTR("MMU2 firmware version invalid. Required version: build number %d or higher."), MMU_REQUIRED_FW_BUILDNR);
|
|
|
+ kill(_i("Please update firmware in your MMU2. Waiting for reset."));
|
|
|
+}
|