# Garmin HUD Companion Application # Copyright (C) 2022 Piotr Dec / ztsh.eu # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . from main import Controller, Lane, OutType, OutAngle, Unit from time import sleep interval = 0.2 def suite(controller: Controller): lines(controller) direction(controller) distance(controller) speed(controller) time(controller) control(controller) compass(controller) def lines(controller: Controller): print("Lines") controller.set_lines([Lane.DotsLeft], []) controller.set_lines([Lane.OuterRight], [Lane.OuterLeft]) controller.set_lines([Lane.MiddleRight], [Lane.MiddleLeft]) controller.set_lines([Lane.InnerRight], [Lane.InnerLeft]) controller.set_lines([Lane.InnerLeft], [Lane.InnerRight]) controller.set_lines([Lane.MiddleLeft], [Lane.MiddleRight]) controller.set_lines([Lane.OuterLeft], [Lane.OuterRight]) controller.set_lines( [Lane.DotsRight], [Lane.OuterRight, Lane.MiddleRight, Lane.InnerRight, Lane.InnerLeft, Lane.MiddleLeft, Lane.OuterLeft] ) controller.set_lines([], []) def direction(controller: Controller): print("Direction") controller.set_direction(OutAngle.SharpRight) controller.set_direction(OutAngle.Right) controller.set_direction(OutAngle.EasyRight) controller.set_direction(OutAngle.Straight) controller.set_direction(OutAngle.EasyLeft) controller.set_direction(OutAngle.Left) controller.set_direction(OutAngle.SharpLeft) controller.set_direction(OutAngle.LeftDown) controller.set_direction(OutAngle.RightDown) controller.set_direction(OutAngle.Down) controller.set_direction(OutAngle.SharpRight, OutType.LongerLane) controller.set_direction(OutAngle.Right, OutType.LongerLane) controller.set_direction(OutAngle.EasyRight, OutType.LongerLane) controller.set_direction(OutAngle.Straight, OutType.LongerLane) controller.set_direction(OutAngle.EasyLeft, OutType.LongerLane) controller.set_direction(OutAngle.Left, OutType.LongerLane) controller.set_direction(OutAngle.SharpLeft, OutType.LongerLane) roundabout(controller) controller.set_direction(OutAngle.Left, OutType.Flag) controller.set_direction(OutAngle.Right, OutType.Flag) def roundabout(controller: Controller): controller.set_direction(OutAngle.SharpRight, OutType.RightRoundabout) controller.set_direction(OutAngle.Right, OutType.RightRoundabout) controller.set_direction(OutAngle.EasyRight, OutType.RightRoundabout) controller.set_direction(OutAngle.Straight, OutType.RightRoundabout) controller.set_direction(OutAngle.EasyLeft, OutType.RightRoundabout) controller.set_direction(OutAngle.Left, OutType.RightRoundabout) controller.set_direction(OutAngle.SharpLeft, OutType.RightRoundabout) controller.set_direction(OutAngle.Down, OutType.RightRoundabout) def distance(controller: Controller): print("Distance") controller.set_distance(555.5) controller.set_distance(6666) controller.set_distance(777.7) controller.set_distance(888, Unit.Kilometres) controller.set_distance(999, Unit.Metres) controller.set_distance(999, Unit.Foot) controller.set_distance(999, Unit.Miles) def speed(controller: Controller): print("Speed") controller.set_gps(True) controller.set_speed(50) controller.set_speed(50, 100) controller.set_speed(150, 100) controller.set_speed(50, 100, True) def time(controller: Controller): print("Time") controller.set_time(22, 22) controller.set_time(22, 22, traffic=True) controller.set_time(22, 22, flag=True) def control(controller: Controller): print("Speed Control") controller.set_speed_control() controller.set_speed_control(False) def compass(controller: Controller): print("Compass") controller.set_compass(22.5) controller.set_compass(67.5) controller.set_compass(112.5) controller.set_compass(157.5) controller.set_compass(202.5) controller.set_compass(247.5) controller.set_compass(292.5) controller.set_compass(337.5) def route(controller: Controller): print("Route") controller.set_direction(OutAngle.Left) controller.set_gps(True) controller.set_speed(50, 50) controller.set_distance(1.2, Unit.Kilometres) sleep(1) controller.set_distance(1.1, Unit.Kilometres) sleep(1) controller.set_distance(1, Unit.Kilometres) sleep(1) remaining = 900 while remaining > 0: controller.set_distance(remaining, Unit.Metres) sleep(1) remaining -= 100 controller.set_direction(OutAngle.Right, OutType.Flag) remaining = 900 while remaining > 0: controller.set_distance(remaining, Unit.Metres) sleep(1) remaining -= 100 if __name__ == '__main__': import os name = '/dev/rfcomm0' if os.name != 'nt' else 'COM8' instance = Controller(name) suite(instance)