Merge branch 'master' of https://github.com/evilsocket/pwnagotchi into nl_locale
This commit is contained in:
commit
3d521a0310
sdcard/rootfs/root/pwnagotchi
@ -98,8 +98,6 @@ ui:
|
|||||||
type: 'waveshare_2'
|
type: 'waveshare_2'
|
||||||
# Possible options red/yellow/black (black used for monocromatic displays)
|
# Possible options red/yellow/black (black used for monocromatic displays)
|
||||||
color: 'black'
|
color: 'black'
|
||||||
# How often to do a full refresh 0 all the time, -1 never
|
|
||||||
refresh: 50
|
|
||||||
video:
|
video:
|
||||||
enabled: true
|
enabled: true
|
||||||
address: '10.0.0.2'
|
address: '10.0.0.2'
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import _thread
|
import _thread
|
||||||
from threading import Lock
|
from threading import Lock
|
||||||
|
|
||||||
import io
|
import shutil
|
||||||
import core
|
import core
|
||||||
import os
|
import os
|
||||||
import pwnagotchi
|
import pwnagotchi
|
||||||
@ -13,7 +13,6 @@ from http.server import BaseHTTPRequestHandler, HTTPServer
|
|||||||
|
|
||||||
class VideoHandler(BaseHTTPRequestHandler):
|
class VideoHandler(BaseHTTPRequestHandler):
|
||||||
_lock = Lock()
|
_lock = Lock()
|
||||||
_buffer = None
|
|
||||||
_index = """<html>
|
_index = """<html>
|
||||||
<head>
|
<head>
|
||||||
<title>%s</title>
|
<title>%s</title>
|
||||||
@ -36,36 +35,31 @@ class VideoHandler(BaseHTTPRequestHandler):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def render(img):
|
def render(img):
|
||||||
with VideoHandler._lock:
|
with VideoHandler._lock:
|
||||||
writer = io.BytesIO()
|
img.save("/root/pwnagotchi.png", format='PNG')
|
||||||
img.save(writer, format='PNG')
|
|
||||||
VideoHandler._buffer = writer.getvalue()
|
|
||||||
|
|
||||||
def log_message(self, format, *args):
|
def log_message(self, format, *args):
|
||||||
return
|
return
|
||||||
|
|
||||||
def _w(self, data):
|
|
||||||
try:
|
|
||||||
self.wfile.write(data)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def do_GET(self):
|
def do_GET(self):
|
||||||
if self._buffer is None:
|
if self.path == '/':
|
||||||
self.send_response(404)
|
|
||||||
|
|
||||||
elif self.path == '/':
|
|
||||||
self.send_response(200)
|
self.send_response(200)
|
||||||
self.send_header('Content-type', 'text/html')
|
self.send_header('Content-type', 'text/html')
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
self._w(bytes(self._index % (pwnagotchi.name(), 1000), "utf8"))
|
try:
|
||||||
|
self.wfile.write(bytes(self._index % (pwnagotchi.name(), 1000), "utf8"))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
elif self.path.startswith('/ui'):
|
elif self.path.startswith('/ui'):
|
||||||
with self._lock:
|
with self._lock:
|
||||||
self.send_response(200)
|
self.send_response(200)
|
||||||
self.send_header('Content-type', 'image/png')
|
self.send_header('Content-type', 'image/png')
|
||||||
self.send_header('Content-length', '%d' % len(self._buffer))
|
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
self._w(self._buffer)
|
try:
|
||||||
|
with open("/root/pwnagotchi.png", 'rb') as fp:
|
||||||
|
shutil.copyfileobj(fp, self.wfile)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
self.send_response(404)
|
self.send_response(404)
|
||||||
|
|
||||||
@ -80,8 +74,6 @@ class Display(View):
|
|||||||
self._video_address = config['ui']['display']['video']['address']
|
self._video_address = config['ui']['display']['video']['address']
|
||||||
self._display_type = config['ui']['display']['type']
|
self._display_type = config['ui']['display']['type']
|
||||||
self._display_color = config['ui']['display']['color']
|
self._display_color = config['ui']['display']['color']
|
||||||
self.full_refresh_count = 0
|
|
||||||
self.full_refresh_trigger = config['ui']['display']['refresh']
|
|
||||||
|
|
||||||
self._render_cb = None
|
self._render_cb = None
|
||||||
self._display = None
|
self._display = None
|
||||||
@ -139,7 +131,7 @@ class Display(View):
|
|||||||
self._display.Clear(0xFF)
|
self._display.Clear(0xFF)
|
||||||
self._display.init(self._display.lut_partial_update)
|
self._display.init(self._display.lut_partial_update)
|
||||||
self._render_cb = self._waveshare_render
|
self._render_cb = self._waveshare_render
|
||||||
|
|
||||||
elif self._is_waveshare2():
|
elif self._is_waveshare2():
|
||||||
from pwnagotchi.ui.waveshare.v2.waveshare import EPD
|
from pwnagotchi.ui.waveshare.v2.waveshare import EPD
|
||||||
# core.log("display module started")
|
# core.log("display module started")
|
||||||
@ -148,7 +140,7 @@ class Display(View):
|
|||||||
self._display.Clear(WHITE)
|
self._display.Clear(WHITE)
|
||||||
self._display.init(self._display.PART_UPDATE)
|
self._display.init(self._display.PART_UPDATE)
|
||||||
self._render_cb = self._waveshare_render
|
self._render_cb = self._waveshare_render
|
||||||
|
|
||||||
else:
|
else:
|
||||||
core.log("unknown display type %s" % self._display_type)
|
core.log("unknown display type %s" % self._display_type)
|
||||||
|
|
||||||
@ -198,24 +190,15 @@ class Display(View):
|
|||||||
def _waveshare_render(self):
|
def _waveshare_render(self):
|
||||||
buf = self._display.getbuffer(self.canvas)
|
buf = self._display.getbuffer(self.canvas)
|
||||||
if self._is_waveshare1:
|
if self._is_waveshare1:
|
||||||
if self.full_refresh_trigger >= 0 and self.full_refresh_count == self.full_refresh_trigger:
|
|
||||||
self._display.Clear(0x00)
|
|
||||||
self._display.display(buf)
|
self._display.display(buf)
|
||||||
elif self._is_waveshare2:
|
elif self._is_waveshare2:
|
||||||
if self.full_refresh_trigger >= 0 and self.full_refresh_count == self.full_refresh_trigger:
|
|
||||||
self._display.Clear(BLACK)
|
|
||||||
self._display.displayPartial(buf)
|
self._display.displayPartial(buf)
|
||||||
self._display.sleep()
|
|
||||||
if self.full_refresh_trigger >= 0 and self.full_refresh_count == self.full_refresh_trigger:
|
|
||||||
self.full_refresh_count = 0
|
|
||||||
elif self.full_refresh_trigger >= 0:
|
|
||||||
self.full_refresh_count += 1
|
|
||||||
|
|
||||||
def _on_view_rendered(self, img):
|
def _on_view_rendered(self, img):
|
||||||
# core.log("display::_on_view_rendered")
|
# core.log("display::_on_view_rendered")
|
||||||
VideoHandler.render(img)
|
VideoHandler.render(img)
|
||||||
|
|
||||||
if self._enabled:
|
if self._enabled:
|
||||||
self.canvas = img if self._rotation == 0 else img.rotate(self._rotation)
|
self.canvas = (img if self._rotation == 0 else img.rotate(self._rotation))
|
||||||
if self._render_cb is not None:
|
if self._render_cb is not None:
|
||||||
self._render_cb()
|
self._render_cb()
|
||||||
|
@ -335,4 +335,4 @@ class EPD:
|
|||||||
self.send_data(0x01)
|
self.send_data(0x01)
|
||||||
delay_ms(100)
|
delay_ms(100)
|
||||||
|
|
||||||
### END OF FILE ###
|
### END OF FILE ###
|
Loading…
x
Reference in New Issue
Block a user