MMU communication fix

This commit is contained in:
Robert Pelnar 2018-08-21 16:41:01 +02:00
parent 9fe27c108d
commit 315bfc43dd
2 changed files with 13 additions and 5 deletions

View file

@ -7428,7 +7428,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE))
handle_status_leds(); handle_status_leds();
#endif #endif
check_axes_activity(); check_axes_activity();
// mmu_loop(); mmu_loop();
} }
void kill(const char *full_screen_message, unsigned char id) void kill(const char *full_screen_message, unsigned char id)

View file

@ -177,7 +177,8 @@ void mmu_loop(void)
fscanf_P(uart2io, PSTR("%hhu"), &mmu_finda); //scan finda from buffer fscanf_P(uart2io, PSTR("%hhu"), &mmu_finda); //scan finda from buffer
printf_P(PSTR("MMU => '%dok'\n"), mmu_finda); printf_P(PSTR("MMU => '%dok'\n"), mmu_finda);
mmu_state = 1; mmu_state = 1;
mmu_ready = true; if (mmu_cmd == 0)
mmu_ready = true;
} }
else if ((mmu_last_request + 30000) < millis()) else if ((mmu_last_request + 30000) < millis())
{ //resend request after timeout (30s) { //resend request after timeout (30s)
@ -228,19 +229,26 @@ void mmu_command(uint8_t cmd)
bool mmu_get_response(void) bool mmu_get_response(void)
{ {
// printf_P(PSTR("mmu_get_response - begin\n"));
KEEPALIVE_STATE(IN_PROCESS); KEEPALIVE_STATE(IN_PROCESS);
while (mmu_cmd != 0)
{
// mmu_loop();
delay_keep_alive(100);
}
while (!mmu_ready) while (!mmu_ready)
{ {
mmu_loop(); // mmu_loop();
if (mmu_state != 3) if (mmu_state != 3)
break; break;
delay_keep_alive(100);
} }
bool ret = mmu_ready; bool ret = mmu_ready;
mmu_ready = false; mmu_ready = false;
// printf_P(PSTR("mmu_get_response - end %d\n"), ret?1:0);
return ret; return ret;
/* printf_P(PSTR("mmu_get_response - begin\n")); /* //waits for "ok" from mmu
//waits for "ok" from mmu
//function returns true if "ok" was received //function returns true if "ok" was received
//if timeout is set to true function return false if there is no "ok" received before timeout //if timeout is set to true function return false if there is no "ok" received before timeout
bool response = true; bool response = true;