diff --git a/pwnagotchi/plugins/default/gps.py b/pwnagotchi/plugins/default/gps.py index 2caa35b..d068792 100644 --- a/pwnagotchi/plugins/default/gps.py +++ b/pwnagotchi/plugins/default/gps.py @@ -10,10 +10,13 @@ from pwnagotchi.ui.view import BLACK class GPS(plugins.Plugin): __author__ = "evilsocket@gmail.com" - __version__ = "1.0.0" + __version__ = "1.0.1" __license__ = "GPL3" __description__ = "Save GPS coordinates whenever an handshake is captured." + LINE_SPACING = 10 + LABEL_SPACING = 0 + def __init__(self): self.running = False self.coordinates = None @@ -55,39 +58,52 @@ class GPS(plugins.Plugin): logging.info("not saving GPS. Couldn't find location.") def on_ui_setup(self, ui): - # add coordinates for other displays - if ui.is_waveshare_v2(): - lat_pos = (127, 75) - 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 = (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) + try: + # Configure line_spacing + line_spacing = int(self.options['linespacing']) + except Exception: + # Set default value + line_spacing = self.LINE_SPACING - 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( "latitude", @@ -98,7 +114,7 @@ class GPS(plugins.Plugin): position=lat_pos, label_font=fonts.Small, text_font=fonts.Small, - label_spacing=label_spacing, + label_spacing=self.LABEL_SPACING, ), ) ui.add_element( @@ -110,7 +126,7 @@ class GPS(plugins.Plugin): position=lon_pos, label_font=fonts.Small, text_font=fonts.Small, - label_spacing=label_spacing, + label_spacing=self.LABEL_SPACING, ), ) ui.add_element( @@ -122,11 +138,10 @@ class GPS(plugins.Plugin): position=alt_pos, label_font=fonts.Small, text_font=fonts.Small, - label_spacing=label_spacing, + label_spacing=self.LABEL_SPACING, ), ) - def on_unload(self, ui): with ui._lock: ui.remove_element('latitude') @@ -141,5 +156,5 @@ class GPS(plugins.Plugin): # last char is sometimes not completely drawn ¯\_(ツ)_/¯ # using an ending-whitespace as workaround on each line ui.set("latitude", f"{self.coordinates['Latitude']:.4f} ") - ui.set("longitude", f" {self.coordinates['Longitude']:.4f} ") - ui.set("altitude", f" {self.coordinates['Altitude']:.1f}m ") + ui.set("longitude", f"{self.coordinates['Longitude']:.4f} ") + ui.set("altitude", f"{self.coordinates['Altitude']:.1f}m ")