diff --git a/MatterControl.Printing/Communication/FoundStringCallBacks.cs b/MatterControl.Printing/Communication/LineActions.cs
similarity index 74%
rename from MatterControl.Printing/Communication/FoundStringCallBacks.cs
rename to MatterControl.Printing/Communication/LineActions.cs
index c54416a75..d251b7aef 100644
--- a/MatterControl.Printing/Communication/FoundStringCallBacks.cs
+++ b/MatterControl.Printing/Communication/LineActions.cs
@@ -32,34 +32,37 @@ using System.Collections.Generic;
namespace MatterHackers.SerialPortCommunication
{
+ ///
+ /// A dictionary of key to Action delegates that are invoked per received/sent line
+ ///
public class LineActions
{
- public Dictionary> dictionaryOfCallbacks = new Dictionary>();
+ public Dictionary> registeredActions = new Dictionary>();
- public void AddCallbackToKey(string key, Action value)
+ public void Register(string key, Action value)
{
- if (dictionaryOfCallbacks.ContainsKey(key))
+ if (registeredActions.ContainsKey(key))
{
- dictionaryOfCallbacks[key] += value;
+ registeredActions[key] += value;
}
else
{
- dictionaryOfCallbacks.Add(key, value);
+ registeredActions.Add(key, value);
}
}
- public void RemoveCallbackFromKey(string key, Action value)
+ public void Unregister(string key, Action value)
{
- if (dictionaryOfCallbacks.ContainsKey(key))
+ if (registeredActions.ContainsKey(key))
{
- if (dictionaryOfCallbacks[key] == null)
+ if (registeredActions[key] == null)
{
throw new Exception();
}
- dictionaryOfCallbacks[key] -= value;
- if (dictionaryOfCallbacks[key] == null)
+ registeredActions[key] -= value;
+ if (registeredActions[key] == null)
{
- dictionaryOfCallbacks.Remove(key);
+ registeredActions.Remove(key);
}
}
else
@@ -73,7 +76,7 @@ namespace MatterHackers.SerialPortCommunication
{
public void CheckForKeys(string s)
{
- foreach (var pair in this.dictionaryOfCallbacks)
+ foreach (var pair in this.registeredActions)
{
if (s.StartsWith(pair.Key))
{
@@ -87,7 +90,7 @@ namespace MatterHackers.SerialPortCommunication
{
public void CheckForKeys(string s)
{
- foreach (var pair in this.dictionaryOfCallbacks)
+ foreach (var pair in this.registeredActions)
{
if (s.Contains(pair.Key))
{
diff --git a/MatterControlLib/PrinterCommunication/PrinterConnection.cs b/MatterControlLib/PrinterCommunication/PrinterConnection.cs
index 757cca88f..032d520ce 100644
--- a/MatterControlLib/PrinterCommunication/PrinterConnection.cs
+++ b/MatterControlLib/PrinterCommunication/PrinterConnection.cs
@@ -243,72 +243,72 @@ namespace MatterHackers.MatterControl.PrinterCommunication
MonitorPrinterTemperature = true;
- ReadLineStartCallBacks.AddCallbackToKey("start", FoundStart);
- ReadLineStartCallBacks.AddCallbackToKey("start", PrintingCanContinue);
+ ReadLineStartCallBacks.Register("start", FoundStart);
+ ReadLineStartCallBacks.Register("start", PrintingCanContinue);
- ReadLineStartCallBacks.AddCallbackToKey("ok", SuppressEcho);
- ReadLineStartCallBacks.AddCallbackToKey("wait", SuppressEcho);
- ReadLineStartCallBacks.AddCallbackToKey("T:", SuppressEcho); // repetier
+ ReadLineStartCallBacks.Register("ok", SuppressEcho);
+ ReadLineStartCallBacks.Register("wait", SuppressEcho);
+ ReadLineStartCallBacks.Register("T:", SuppressEcho); // repetier
- ReadLineStartCallBacks.AddCallbackToKey("ok", PrintingCanContinue);
- ReadLineStartCallBacks.AddCallbackToKey("Done saving file", PrintingCanContinue);
+ ReadLineStartCallBacks.Register("ok", PrintingCanContinue);
+ ReadLineStartCallBacks.Register("Done saving file", PrintingCanContinue);
- ReadLineStartCallBacks.AddCallbackToKey("B:", ReadTemperatures); // smoothie
- ReadLineContainsCallBacks.AddCallbackToKey("T0:", ReadTemperatures); // marlin
- ReadLineContainsCallBacks.AddCallbackToKey("T:", ReadTemperatures); // repetier
+ ReadLineStartCallBacks.Register("B:", ReadTemperatures); // smoothie
+ ReadLineContainsCallBacks.Register("T0:", ReadTemperatures); // marlin
+ ReadLineContainsCallBacks.Register("T:", ReadTemperatures); // repetier
- ReadLineStartCallBacks.AddCallbackToKey("SD printing byte", ReadSdProgress); // repetier
+ ReadLineStartCallBacks.Register("SD printing byte", ReadSdProgress); // repetier
- ReadLineStartCallBacks.AddCallbackToKey("C:", ReadTargetPositions);
- ReadLineStartCallBacks.AddCallbackToKey("ok C:", ReadTargetPositions); // smoothie is reporting the C: with an ok first.
- ReadLineStartCallBacks.AddCallbackToKey("X:", ReadTargetPositions);
- ReadLineStartCallBacks.AddCallbackToKey("ok X:", ReadTargetPositions); //
+ ReadLineStartCallBacks.Register("C:", ReadTargetPositions);
+ ReadLineStartCallBacks.Register("ok C:", ReadTargetPositions); // smoothie is reporting the C: with an ok first.
+ ReadLineStartCallBacks.Register("X:", ReadTargetPositions);
+ ReadLineStartCallBacks.Register("ok X:", ReadTargetPositions); //
- ReadLineStartCallBacks.AddCallbackToKey("rs ", PrinterRequestsResend); // smoothie is lower case and no :
- ReadLineStartCallBacks.AddCallbackToKey("RS:", PrinterRequestsResend);
- ReadLineContainsCallBacks.AddCallbackToKey("Resend:", PrinterRequestsResend);
+ ReadLineStartCallBacks.Register("rs ", PrinterRequestsResend); // smoothie is lower case and no :
+ ReadLineStartCallBacks.Register("RS:", PrinterRequestsResend);
+ ReadLineContainsCallBacks.Register("Resend:", PrinterRequestsResend);
- ReadLineContainsCallBacks.AddCallbackToKey("FIRMWARE_NAME:", PrinterStatesFirmware);
+ ReadLineContainsCallBacks.Register("FIRMWARE_NAME:", PrinterStatesFirmware);
#region hardware failure callbacks
// smoothie temperature failures
- ReadLineContainsCallBacks.AddCallbackToKey("T:inf", PrinterReportsError);
- ReadLineContainsCallBacks.AddCallbackToKey("B:inf", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("T:inf", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("B:inf", PrinterReportsError);
// marlin temperature failures
- ReadLineContainsCallBacks.AddCallbackToKey("MINTEMP", PrinterReportsError);
- ReadLineContainsCallBacks.AddCallbackToKey("MAXTEMP", PrinterReportsError);
- ReadLineContainsCallBacks.AddCallbackToKey("M999", PrinterReportsError);
- ReadLineContainsCallBacks.AddCallbackToKey("Error: Extruder switched off", PrinterReportsError);
- ReadLineContainsCallBacks.AddCallbackToKey("Heater decoupled", PrinterReportsError);
- ReadLineContainsCallBacks.AddCallbackToKey("cold extrusion prevented", PrinterReportsError);
- ReadLineContainsCallBacks.AddCallbackToKey("Error:Thermal Runaway, system stopped!", PrinterReportsError);
- ReadLineContainsCallBacks.AddCallbackToKey("Error:Heating failed", PrinterReportsError);
- ReadLineStartCallBacks.AddCallbackToKey("temp sensor defect", PrinterReportsError);
- ReadLineStartCallBacks.AddCallbackToKey("Error:Printer halted", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("MINTEMP", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("MAXTEMP", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("M999", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("Error: Extruder switched off", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("Heater decoupled", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("cold extrusion prevented", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("Error:Thermal Runaway, system stopped!", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("Error:Heating failed", PrinterReportsError);
+ ReadLineStartCallBacks.Register("temp sensor defect", PrinterReportsError);
+ ReadLineStartCallBacks.Register("Error:Printer halted", PrinterReportsError);
// repetier temperature failures
- ReadLineContainsCallBacks.AddCallbackToKey("dry run mode", PrinterReportsError);
- ReadLineStartCallBacks.AddCallbackToKey("accelerometer send i2c error", PrinterReportsError);
- ReadLineStartCallBacks.AddCallbackToKey("accelerometer i2c recv error", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("dry run mode", PrinterReportsError);
+ ReadLineStartCallBacks.Register("accelerometer send i2c error", PrinterReportsError);
+ ReadLineStartCallBacks.Register("accelerometer i2c recv error", PrinterReportsError);
// s3g temperature failures
- ReadLineContainsCallBacks.AddCallbackToKey("Bot is Shutdown due to Overheat", PrinterReportsError);
+ ReadLineContainsCallBacks.Register("Bot is Shutdown due to Overheat", PrinterReportsError);
#endregion hardware failure callbacks
- WriteLineStartCallBacks.AddCallbackToKey("G90", MovementWasSetToAbsoluteMode);
- WriteLineStartCallBacks.AddCallbackToKey("G91", MovementWasSetToRelativeMode);
- WriteLineStartCallBacks.AddCallbackToKey("M80", AtxPowerUpWasWritenToPrinter);
- WriteLineStartCallBacks.AddCallbackToKey("M81", AtxPowerDownWasWritenToPrinter);
- WriteLineStartCallBacks.AddCallbackToKey("M104", HotendTemperatureWasWritenToPrinter);
- WriteLineStartCallBacks.AddCallbackToKey("M106", FanSpeedWasWritenToPrinter);
- WriteLineStartCallBacks.AddCallbackToKey("M107", FanOffWasWritenToPrinter);
- WriteLineStartCallBacks.AddCallbackToKey("M109", HotendTemperatureWasWritenToPrinter);
- WriteLineStartCallBacks.AddCallbackToKey("M140", BedTemperatureWasWritenToPrinter);
- WriteLineStartCallBacks.AddCallbackToKey("M190", BedTemperatureWasWritenToPrinter);
- WriteLineStartCallBacks.AddCallbackToKey("T", ExtruderIndexSet);
+ WriteLineStartCallBacks.Register("G90", MovementWasSetToAbsoluteMode);
+ WriteLineStartCallBacks.Register("G91", MovementWasSetToRelativeMode);
+ WriteLineStartCallBacks.Register("M80", AtxPowerUpWasWritenToPrinter);
+ WriteLineStartCallBacks.Register("M81", AtxPowerDownWasWritenToPrinter);
+ WriteLineStartCallBacks.Register("M104", HotendTemperatureWasWritenToPrinter);
+ WriteLineStartCallBacks.Register("M106", FanSpeedWasWritenToPrinter);
+ WriteLineStartCallBacks.Register("M107", FanOffWasWritenToPrinter);
+ WriteLineStartCallBacks.Register("M109", HotendTemperatureWasWritenToPrinter);
+ WriteLineStartCallBacks.Register("M140", BedTemperatureWasWritenToPrinter);
+ WriteLineStartCallBacks.Register("M190", BedTemperatureWasWritenToPrinter);
+ WriteLineStartCallBacks.Register("T", ExtruderIndexSet);
}
private void ExtruderIndexSet(string line)
@@ -1008,7 +1008,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication
{
// Register to detect the file deleted confirmation.
// This should have worked without this by getting the normal 'ok' on the next line. But the ok is not on its own line.
- ReadLineStartCallBacks.AddCallbackToKey("File deleted:", FileDeleteConfirmed);
+ ReadLineStartCallBacks.Register("File deleted:", FileDeleteConfirmed);
// and send the line to delete the file
QueueLine("M30 {0}".FormatWith(fileName.ToLower()));
}
@@ -1899,7 +1899,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication
QueueLine($"M23 {m23FileName.ToLower()}"); // Select SD File
QueueLine("M24"); // Start/resume SD print
- ReadLineStartCallBacks.AddCallbackToKey("Done printing file", DonePrintingSdFile);
+ ReadLineStartCallBacks.Register("Done printing file", DonePrintingSdFile);
return true;
}
@@ -2012,7 +2012,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication
private void DonePrintingSdFile(string line)
{
- ReadLineStartCallBacks.RemoveCallbackFromKey("Done printing file", DonePrintingSdFile);
+ ReadLineStartCallBacks.Unregister("Done printing file", DonePrintingSdFile);
CommunicationState = CommunicationStates.FinishedPrint;
this.PrintJobName = null;
@@ -2025,7 +2025,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication
private void FileDeleteConfirmed(string line)
{
- ReadLineStartCallBacks.RemoveCallbackFromKey("File deleted:", FileDeleteConfirmed);
+ ReadLineStartCallBacks.Unregister("File deleted:", FileDeleteConfirmed);
PrintingCanContinue(line);
}