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

"Keepalive" is now "Busy protocol" #7253

Merged

Conversation

thinkyhead
Copy link
Member

@thinkyhead thinkyhead commented Jul 6, 2017

Addressing #7131
Notice: @MarlinFirmware/host-software-team


Background: "Host keepalive" was originally intended to let hosts know that a machine is not dead and that the host should not hang up when there's no "ok" reply from the printer during a long-duration command.

We decided to remove the extra 'busy' messages from M109, M190, and M303 because hosts are savvy enough to know these commands do not reply with "ok" until they do, and they supply regular output, which indicate that the commands are operating correctly.

However, some hosts in recent versions have chosen to go into "only 'busy:' messages count" mode the first time they see a "busy:" message. From then on, they treat M109, M190, and M303 the same as every other command, expecting an "ok" reply within the timeout or else assuming potential trouble.

As a result of this host implementation feature, these commands can no longer rely on their frequent output to keep the host from hanging up. The host will continue to wait for "ok" only if it sees a "busy:" message. Temperature messages and other output while waiting for these commands to complete are not sufficient to reset their "wait for ok" timer.

Workaround: This PR intersperses busy messages in the output of M109, M190, and M303 to satisfy hosts that have chosen to work this way.


With this change applied, for hosts like Pronterface which don't filter output, or direct serial terminal connections as used in your development environment, it is recommended to disable the "host keepalive" feature with M113 S0, or set DEFAULT_KEEPALIVE_INTERVAL to 0.

The option BUSY_WHILE_HEATING has been added to allow users to revert to the previous behavior —no busy messages during heating— for hosts that don't adopt a strict mode.


It is my recommendation that hosts revert to their previous methodology for the three heating commands, taking any temperature output as an indication that the commands are still operating, and that they do not specifically require "busy" for M109, M190, and —especially— M303.


Reference: #3642 Keepalive not needed while waiting for temperatures

@thinkyhead thinkyhead merged commit 2cb308f into MarlinFirmware:bugfix-1.1.x Jul 6, 2017
@thinkyhead thinkyhead deleted the bf_busy_protocol branch July 6, 2017 21:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant