From 93245b3678b4bf64b5aff8322d5d5b3de38d00d2 Mon Sep 17 00:00:00 2001
From: Kevin O'Connor <kevin@koconnor.net>
Date: Mon, 27 May 2024 15:06:59 -0400
Subject: [PATCH] smart_effector: No need to use PrinterProbe() class

Directly register the SmartEffectorProbe() class as the main probe
interface.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
---
 klippy/extras/smart_effector.py | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/klippy/extras/smart_effector.py b/klippy/extras/smart_effector.py
index c33de5275..726531421 100644
--- a/klippy/extras/smart_effector.py
+++ b/klippy/extras/smart_effector.py
@@ -48,7 +48,7 @@ class ControlPinHelper:
             bit_time += bit_step
         return bit_time
 
-class SmartEffectorEndstopWrapper:
+class SmartEffectorProbe:
     def __init__(self, config):
         self.printer = config.get_printer()
         self.gcode = self.printer.lookup_object('gcode')
@@ -64,6 +64,11 @@ class SmartEffectorEndstopWrapper:
         self.query_endstop = self.probe_wrapper.query_endstop
         self.multi_probe_begin = self.probe_wrapper.multi_probe_begin
         self.multi_probe_end = self.probe_wrapper.multi_probe_end
+        # Common probe implementation helpers
+        self.cmd_helper = probe.ProbeCommandHelper(
+            config, self, self.probe_wrapper.query_endstop)
+        self.probe_offsets = probe.ProbeOffsetsHelper(config)
+        self.probe_session = probe.ProbeSessionHelper(config, self)
         # SmartEffector control
         control_pin = config.get('control_pin', None)
         if control_pin:
@@ -78,6 +83,14 @@ class SmartEffectorEndstopWrapper:
         self.gcode.register_command("SET_SMART_EFFECTOR",
                                     self.cmd_SET_SMART_EFFECTOR,
                                     desc=self.cmd_SET_SMART_EFFECTOR_help)
+    def get_probe_params(self, gcmd=None):
+        return self.probe_session.get_probe_params(gcmd)
+    def get_offsets(self):
+        return self.probe_offsets.get_offsets()
+    def get_status(self, eventtime):
+        return self.cmd_helper.get_status(eventtime)
+    def start_probe_session(self, gcmd):
+        return self.probe_session.start_probe_session(gcmd)
     def probing_move(self, pos, speed):
         phoming = self.printer.lookup_object('homing')
         return phoming.probing_move(self, pos, speed)
@@ -151,7 +164,6 @@ class SmartEffectorEndstopWrapper:
         gcmd.respond_info('SmartEffector sensitivity was reset')
 
 def load_config(config):
-    smart_effector = SmartEffectorEndstopWrapper(config)
-    config.get_printer().add_object('probe',
-                                    probe.PrinterProbe(config, smart_effector))
+    smart_effector = SmartEffectorProbe(config)
+    config.get_printer().add_object('probe', smart_effector)
     return smart_effector