Make M300 S0 pause like Marlin

Follow Marlin's behavior and simply insert a delay for the requested
duration when using M300 S0.

When S is not specified, use the default tone instead.

Fixes #3856
This commit is contained in:
Yuri D'Elia 2022-12-31 00:41:16 +01:00
parent 46a979271d
commit 805e71e504

View File

@ -7366,8 +7366,7 @@ Sigma_Exit:
break;
#endif // NUM_SERVOS > 0
#if (LARGE_FLASH == true && ( BEEPER > 0 || defined(ULTRALCD) || defined(LCD_USE_I2C_BUZZER)))
#if (LARGE_FLASH == true && BEEPER > 0 )
/*!
### M300 - Play tone <a href="https://reprap.org/wiki/G-code#M300:_Play_beep_sound">M300: Play beep sound</a>
In Prusa Firmware the defaults are `100Hz` and `1000ms`, so that `M300` without parameters will beep for a second.
@ -7381,12 +7380,19 @@ Sigma_Exit:
*/
case 300: // M300
{
uint16_t beepS = code_seen('S') ? code_value() : 0;
uint16_t beepP = code_seen('P') ? code_value() : 1000;
#if BEEPER > 0
if (beepP > 0)
Sound_MakeCustom(beepP,beepS,false);
#endif
uint16_t beepS;
if (!code_seen('S'))
beepS = 0;
else {
beepS = code_value();
if (!beepS) {
// handle S0 as a pause
_delay(beepP);
break;
}
}
Sound_MakeCustom(beepP, beepS, false);
}
break;
#endif // M300