Skip to content

Commit

Permalink
Merge pull request #25 from jpcurti/14-remove-configuration-options-t…
Browse files Browse the repository at this point in the history
…hat-are-fixed-1

14 remove configuration options that are fixed
  • Loading branch information
jpcurti authored Jun 1, 2024
2 parents 72fd938 + 38d1f19 commit 860ff9e
Showing 1 changed file with 116 additions and 18 deletions.
134 changes: 116 additions & 18 deletions klippy/extras/e3v3se_display.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import logging
import time
from .display import menu_keys
from .display.menu_keys import MenuKeys
from .TJC3224 import TJC3224_LCD
from .printerInterface import PrinterData
from .serial_bridge import PrinterSerialBridge

def current_milli_time():
return round(time.time() * 1000)
Expand Down Expand Up @@ -48,7 +49,97 @@ def inc(self, v):
self.now += 1
else:
self.now = v - 1
return self.changed()
return self.changed()

class E3V3SEMenuKeys(MenuKeys):
"""
E3V3SEMenuKeys is a subclass of MenuKeys designed to
customize initialization without modifying the original MenuKeys class.
This class defaults the pins for the menu keys to the corresponding
pins of the ender 3 v3 se 3d printer.
"""
def __init__(self, config, callback):
self.printer = config.get_printer()
self.reactor = self.printer.get_reactor()
self.callback = callback
buttons = self.printer.load_object(config, "buttons")
# Register rotary encoder
encoder_pins = config.get('encoder_pins', '^PA12, ^PA11')
encoder_steps_per_detent = config.getchoice('encoder_steps_per_detent',
{2: 2, 4: 4}, 4)
if encoder_pins is not None:
try:
pin1, pin2 = encoder_pins.split(',')
except:
raise config.error("Unable to parse encoder_pins")
buttons.register_rotary_encoder(pin1.strip(), pin2.strip(),
self.encoder_cw_callback,
self.encoder_ccw_callback,
encoder_steps_per_detent)
self.encoder_fast_rate = config.getfloat('encoder_fast_rate',
.030, above=0.)
self.last_encoder_cw_eventtime = 0
self.last_encoder_ccw_eventtime = 0
# Register click button
self.is_short_click = False
self.click_timer = self.reactor.register_timer(self.long_click_event)
self.register_click_button(config, 'click_pin', self.click_callback, False, '^!PB1')

def register_click_button(self, config, name, callback, push_only=True, default_value=None,):
pin = config.get(name, default_value)
if pin is None:
return
buttons = self.printer.lookup_object("buttons")
if config.get('analog_range_' + name, None) is None:
if push_only:
buttons.register_button_push(pin, callback)
else:
buttons.register_buttons([pin], callback)
return
amin, amax = config.getfloatlist('analog_range_' + name, count=2)
pullup = config.getfloat('analog_pullup_resistor', 4700., above=0.)
if push_only:
buttons.register_adc_button_push(pin, amin, amax, pullup, callback)
else:
buttons.register_adc_button(pin, amin, amax, pullup, callback)


class E3V3SEPrinterSerialBridge(PrinterSerialBridge):
"""
E3V3SEPrinterSerialBridge is a subclass of PrinterSerialBridge designed to
customize initialization without modifying the original PrinterSerialBridge class.
This class defaults the serial pins, baud, eol and serial bridge config to specific
values used for the ender 3 v3 se 3d printer.
"""
def __init__(self, config):
self.callbacks = []
self.printer = config.get_printer()
self.name = config.get_name().split()[-1]
self.eol = config.get('eol', default='')
self._ready = False
self.baud = config.getint("baud", 115200)
self.serial_config = config.getint("config", 3)
self._logging = config.getboolean("logging", False)

self.reactor = self.printer.get_reactor()
self.printer.register_event_handler("klippy:ready", self.handle_ready)
self.printer.register_event_handler("klippy:disconnect",
self.handle_disconnect)

ppins = self.printer.lookup_object("pins")
pin_params = ppins.lookup_pin(config.get("tx_pin", 'PA2'))
rx_pin_params = ppins.lookup_pin(config.get("rx_pin" , 'PA3'))
self.mcu = pin_params['chip']
self.oid = self.mcu.create_oid()
self.mcu.register_config_callback(self.build_config)

self.input_buffer = ""

self.serial_bridge = self.printer.load_object(config, "serial_bridge")
self.serial_bridge.setup_bridge(self)


class E3v3seDisplay:

Expand Down Expand Up @@ -148,17 +239,19 @@ class E3v3seDisplay:
# IMAGE LIBRARIES ID
ICON = 0
GIF_ICON = 27
language_chinese = 2
language_english = 4
language_german = 6
language_russian = 9
language_french = 12
language_turkish = 15
language_spanish = 17
language_italian = 19
language_portuguese = 21
language_japanese = 23
language_korean = 25
languages = {
"chinese": 2,
"english": 4,
"german": 6,
"russian": 9,
"french": 12,
"turkish": 15,
"spanish": 17,
"italian": 19,
"portuguese": 21,
"japanese": 23,
"korean": 25
}

# ICON ID
icon_logo = 0
Expand Down Expand Up @@ -428,15 +521,20 @@ def __init__(self, config):
self.gcode = self.printer.lookup_object("gcode")
self.printer.register_event_handler("klippy:ready", self.handle_ready)
self.encoder_state = self.ENCODER_DIFF_NO
language = config.get("language", "english")
self.selected_language = self.languages[language]


# register for key events
menu_keys.MenuKeys(config, self.key_event)
E3V3SEMenuKeys(config, self.key_event)

bridge = config.get('serial_bridge')
self.serial_bridge = E3V3SEPrinterSerialBridge(self.config)


#bridge = config.get('serial_bridge')

self.serial_bridge = self.printer.lookup_object(
'serial_bridge %s' %(bridge))
#self.serial_bridge = self.printer.lookup_object(
# 'serial_bridge %s' %(bridge))
self.serial_bridge.register_callback(
self._handle_serial_bridge_response)

Expand All @@ -447,7 +545,7 @@ def __init__(self, config):
self._update_interval = 1
self._update_timer = self.reactor.register_timer(self.EachMomentUpdate)

self.selected_language = self.language_english


def key_event(self, key, eventtime):
if key == 'click':
Expand Down

0 comments on commit 860ff9e

Please sign in to comment.