klipper icon indicating copy to clipboard operation
klipper copied to clipboard

display: add display sleep

Open luxflow opened this issue 6 months ago • 3 comments

add display sleep feature to prevent oled burn-in currently only support uc1701, ssd1306 I tested ssd1306 based device (btt mini12864 v2.0)

if there are multiple display, when key_event happens in main display, wake all other displays this is because only main display can have menu

https://github.com/Klipper3d/klipper/issues/3124

luxflow avatar Oct 07 '25 12:10 luxflow

Thank you for submitting a PR,

Please be aware you need to sign off, as per point 3 in https://github.com/Klipper3d/klipper/blob/master/docs/CONTRIBUTING.md#what-to-expect-in-a-review

Thanks.

nefelim4ag avatar Nov 07 '25 22:11 nefelim4ag

Hello! I signed-off my commit Thank you!

luxflow avatar Nov 08 '25 06:11 luxflow

found bug and found fix

Unhandled exception during run
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/klippy.py", line 177, in run
    except:
        ^^^^
  File "/home/pi/klipper/klippy/reactor.py", line 329, in run
    # File descriptors
        ^^^^^^^^^^^^^^^
  File "/home/pi/klipper/klippy/reactor.py", line 374, in _dispatch_loop
    del self._fds[file_handler.fd]
                  ^^^^^^^^^^^^^^^^^
  File "/home/pi/klipper/klippy/reactor.py", line 177, in _check_timers
    rcb = ReactorCallback(self, callback, waketime)
                                    ^^^^^^^^^^^^^^^^
  File "/home/pi/klipper/klippy/reactor.py", line 52, in invoke
  File "/home/pi/klipper/klippy/extras/buttons.py", line 82, in <lambda>
    (lambda et, c=callback, bt=btime, s=state: c(bt, s)))
                                               ^^^^^^^^
  File "/home/pi/klipper/klippy/extras/buttons.py", line 176, in encoder_callback
    self.ccw_callback(eventtime)
  File "/home/pi/klipper/klippy/extras/display/menu_keys.py", line 80, in encoder_ccw_callback
    self.callback('down', eventtime)
  File "/home/pi/klipper/klippy/extras/display/menu.py", line 1031, in key_event
    display.sleep(0)
  File "/home/pi/klipper/klippy/extras/display/display.py", line 292, in sleep
    self.lcd_chip.sleep(sleep)
  File "/home/pi/klipper/klippy/extras/display/uc1701.py", line 205, in sleep
    self.send(sleep_cmds if on else wake_cmds)
  File "/home/pi/klipper/klippy/extras/display/uc1701.py", line 125, in send
    self.mcu_dc.update_digital_out(is_data,
  File "/home/pi/klipper/klippy/extras/bus.py", line 289, in update_digital_out
    self.update_pin_cmd.send([self.oid, not not value],
  File "/home/pi/klipper/klippy/mcu.py", line 100, in send
    self._serial.raw_send(cmd, minclock, reqclock, self._cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 252, in raw_send
    self.ffi_lib.serialqueue_send(self.serialqueue, cmd_queue,
TypeError: initializer for ctype 'struct serialqueue *' must be a cdata pointer, not NoneType
Transition to shutdown state: Unhandled exception during run

luxflow avatar Nov 09 '25 14:11 luxflow