Merge pull request #919 from crahan/gps_config

Add configuration options to gps.py (position, vertical line spacing)
This commit is contained in:
Simone Margaritelli 2021-04-18 17:43:15 +02:00 committed by GitHub
commit 712d0142a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,10 +10,13 @@ from pwnagotchi.ui.view import BLACK
class GPS(plugins.Plugin): class GPS(plugins.Plugin):
__author__ = "evilsocket@gmail.com" __author__ = "evilsocket@gmail.com"
__version__ = "1.0.0" __version__ = "1.0.1"
__license__ = "GPL3" __license__ = "GPL3"
__description__ = "Save GPS coordinates whenever an handshake is captured." __description__ = "Save GPS coordinates whenever an handshake is captured."
LINE_SPACING = 10
LABEL_SPACING = 0
def __init__(self): def __init__(self):
self.running = False self.running = False
self.coordinates = None self.coordinates = None
@ -55,39 +58,52 @@ class GPS(plugins.Plugin):
logging.info("not saving GPS. Couldn't find location.") logging.info("not saving GPS. Couldn't find location.")
def on_ui_setup(self, ui): def on_ui_setup(self, ui):
# add coordinates for other displays try:
if ui.is_waveshare_v2(): # Configure line_spacing
lat_pos = (127, 75) line_spacing = int(self.options['linespacing'])
lon_pos = (122, 84) except Exception:
alt_pos = (127, 94) # Set default value
elif ui.is_waveshare_v1(): line_spacing = self.LINE_SPACING
lat_pos = (130, 70)
lon_pos = (125, 80)
alt_pos = (130, 90)
elif ui.is_inky():
lat_pos = (127, 60)
lon_pos = (127, 70)
alt_pos = (127, 80)
elif ui.is_waveshare144lcd():
# guessed values, add tested ones if you can
lat_pos = (67, 73)
lon_pos = (62, 83)
alt_pos = (67, 93)
elif ui.is_dfrobot_v2():
lat_pos = (127, 75)
lon_pos = (122, 84)
alt_pos = (127, 94)
elif ui.is_waveshare27inch():
lat_pos = (6,120)
lon_pos = (1,135)
alt_pos = (6,150)
else:
# guessed values, add tested ones if you can
lat_pos = (127, 51)
lon_pos = (127, 56)
alt_pos = (102, 71)
label_spacing = 0 try:
# Configure position
pos = self.options['position'].split(',')
pos = [int(x.strip()) for x in pos]
lat_pos = (pos[0] + 5, pos[1])
lon_pos = (pos[0], pos[1] + line_spacing)
alt_pos = (pos[0] + 5, pos[1] + (2 * line_spacing))
except Exception:
# Set default value based on display type
if ui.is_waveshare_v2():
lat_pos = (127, 74)
lon_pos = (122, 84)
alt_pos = (127, 94)
elif ui.is_waveshare_v1():
lat_pos = (130, 70)
lon_pos = (125, 80)
alt_pos = (130, 90)
elif ui.is_inky():
lat_pos = (127, 60)
lon_pos = (122, 70)
alt_pos = (127, 80)
elif ui.is_waveshare144lcd():
# guessed values, add tested ones if you can
lat_pos = (67, 73)
lon_pos = (62, 83)
alt_pos = (67, 93)
elif ui.is_dfrobot_v2():
lat_pos = (127, 74)
lon_pos = (122, 84)
alt_pos = (127, 94)
elif ui.is_waveshare27inch():
lat_pos = (6, 120)
lon_pos = (1, 135)
alt_pos = (6, 150)
else:
# guessed values, add tested ones if you can
lat_pos = (127, 51)
lon_pos = (122, 61)
alt_pos = (127, 71)
ui.add_element( ui.add_element(
"latitude", "latitude",
@ -98,7 +114,7 @@ class GPS(plugins.Plugin):
position=lat_pos, position=lat_pos,
label_font=fonts.Small, label_font=fonts.Small,
text_font=fonts.Small, text_font=fonts.Small,
label_spacing=label_spacing, label_spacing=self.LABEL_SPACING,
), ),
) )
ui.add_element( ui.add_element(
@ -110,7 +126,7 @@ class GPS(plugins.Plugin):
position=lon_pos, position=lon_pos,
label_font=fonts.Small, label_font=fonts.Small,
text_font=fonts.Small, text_font=fonts.Small,
label_spacing=label_spacing, label_spacing=self.LABEL_SPACING,
), ),
) )
ui.add_element( ui.add_element(
@ -122,11 +138,10 @@ class GPS(plugins.Plugin):
position=alt_pos, position=alt_pos,
label_font=fonts.Small, label_font=fonts.Small,
text_font=fonts.Small, text_font=fonts.Small,
label_spacing=label_spacing, label_spacing=self.LABEL_SPACING,
), ),
) )
def on_unload(self, ui): def on_unload(self, ui):
with ui._lock: with ui._lock:
ui.remove_element('latitude') ui.remove_element('latitude')
@ -141,5 +156,5 @@ class GPS(plugins.Plugin):
# last char is sometimes not completely drawn ¯\_(ツ)_/¯ # last char is sometimes not completely drawn ¯\_(ツ)_/¯
# using an ending-whitespace as workaround on each line # using an ending-whitespace as workaround on each line
ui.set("latitude", f"{self.coordinates['Latitude']:.4f} ") ui.set("latitude", f"{self.coordinates['Latitude']:.4f} ")
ui.set("longitude", f" {self.coordinates['Longitude']:.4f} ") ui.set("longitude", f"{self.coordinates['Longitude']:.4f} ")
ui.set("altitude", f" {self.coordinates['Altitude']:.1f}m ") ui.set("altitude", f"{self.coordinates['Altitude']:.1f}m ")