from time import sleep


gps1 = Runtime.createAndStart("gps1", "GPS")
gps1.startService()
gps1.connect("/dev/tty.palmOneGPS-GPSSerialOut")
sleep(1)

# define some points ... 
# Lets use Nova Labs 1.0
lat1 = 38.950829
lon1 = -77.339502
# and Nova Labs 2.0
lat2 = 38.954471 
lon2 = -77.338271
# and the nearest Metro station
lat3 = 38.947254
lon3 = -77.337844
# and the Sand Trap out back
lat4 = 38.954844
lon4 = -77.338797

def input():
  startingAngle = 0
  Latitude = msg_gps1_publishGGAData.data[0][2]
  Longitude =  msg_gps1_publishGGAData.data[0][4]
  altitude = msg_gps1_publishGGAData.data[0][9]
  print "Lat: " + Latitude
  print "Long: " + Longitude
  print "Alt: " + altitude + "\n"
  

#have python listening to lidar
gps1.addListener("publishGGAData", python.name, "input") 

print "Ready to receive Data from GPS..."

print "Let's put a 100 meter GeoFence around around Nova Labs 2.0"
# create a point based geofence with a 100m radius
geofence = gps1.setPointGeoFence(lat2, lon2, 100)

distance = gps1.calculateDistance(lon1, lat1, lon2, lat2)

# check if a GPS point is inside the fence
if (gps1.checkInside(geofence, lat1, lon1)):
    print "Inside the Fence"
else:
    print "Outside the Fence"
print "Distance (meters): ",distance," between Nova Labs 1.0 and Nova Labs 2.0\n"

distance = gps1.calculateDistance(lon2, lat2, lon3, lat3)

# check if a GPS point is inside the fence
if (gps1.checkInside(geofence, lat3, lon3)):
    print "Inside the Fence"
else:
    print "Outside the Fence"
print "Distance (meters): ",distance, " between NL 2 and the nearest Metro Station\n"

distance = gps1.calculateDistance(lon2, lat2, lon4, lat4)

# check if a GPS point is inside the fence
if (gps1.checkInside(geofence, lat4, lon4)):
    print "Inside the Fence"
else:
    print "Outside the Fence"
print "Distance (meters): ",distance, "between NL 2 and the nearest sand trap\n"

from time import sleep


gps1 = Runtime.start("gps1", "GPS")

gps1.connect("/dev/tty.palmOneGPS-GPSSerialOut")
sleep(1)

# define some points ... 
# Lets use Nova Labs 1.0
lat1 = 38.950829
lon1 = -77.339502
novalabs1 = gps1.setPoint(lat1, lon1)

# and Nova Labs 2.0 North East of NL 1
lat2 = 38.954471 
lon2 = -77.338271
novalabs2 = gps1.setPoint(lat2, lon2)

# and the nearest Metro station
lat3 = 38.947254
lon3 = -77.337844
novalabsmetro = gps1.setPoint(lat3, lon3)

# and the Sand Trap out back
lat4 = 38.954844
lon4 = -77.338797
novalabstrap = gps1.setPoint(lat4, lon4)

# Lets create some points for a Polygon Geofence with diagonals defined by NL 1.0 and 2.0
cornerNW = gps1.setPoint(lat2,lon1) # NW corner
cornerNE = gps1.setPoint(lat2,lon2) # NE corner
cornerSE = gps1.setPoint(lat1,lon2) # SE corner
cornerSW = gps1.setPoint(lat1,lon1) # SW corner

def input():
  startingAngle = 0
  Latitude = msg_gps1_publishGGAData.data[0][2]
  Longitude =  msg_gps1_publishGGAData.data[0][4]
  altitude = msg_gps1_publishGGAData.data[0][9]
  print "Lat: " + Latitude
  print "Long: " + Longitude
  print "Alt: " + altitude + "\n"
  

#have python listening to gps
gps1.addListener("publishGGAData", python.name, "input") 

print "Ready to receive Data from GPS..."


# Time to play with some GPS points and GeoFence examples
print "Let's put a GeoFence around around Nova Labs 2.0 (",novalabs2.getLat(),",",novalabs2.getLon(),") with a 100 meter radius"
# create a point based geofence with a 100m radius
geofence = gps1.setPointGeoFence(lat2, lon2, 100)
# or we could have done this 
# geofence = gps1.setPointGeoFence(novalabs2, 100)

distance = gps1.calculateDistance(lat1, lon1, lat2, lon2)
# or we could have done this
# distance = gps1.calculateDistance(novalabs1, novalabs2)

# check if a GPS point is inside the fence
if (gps1.checkInside(geofence, lat1, lon1)): # or we could have used gps1.checkInside(geofence, novalabs1)
    print "Nova Labs 1.0 is Inside the Fence around Nova Labs 2.0"
else:
    print "Nova Labs 1.0 is Outside the Fence around Nova Labs 2.0"
print "Distance (meters): ",distance," between Nova Labs 1.0 and Nova Labs 2.0\n"

distance = gps1.calculateDistance(lat2, lon2, lat3, lon3)

# check if a GPS point is inside the fence
if (gps1.checkInside(geofence, lat3, lon3)):
    print "The Metro station is Inside the Fence around Nova Labs 2.0"
else:
    print "The Metro station is Outside the Fence around Nova Labs 2.0"
print "Distance (meters): ",distance, " between NL 2 and the nearest Metro Station\n"

distance = gps1.calculateDistance(lat2, lon2, lat4, lon4)

# check if a GPS point is inside the fence
if (gps1.checkInside(geofence, lat4, lon4)):
    print "Sand Trap is Inside the Fence around Nova Labs 2.0"
else:
    print "Sand Trap is Outside the Fence around Nova Labs 2.0"
print "Distance (meters): ",distance, "between NL 2 and the nearest sand trap\n"

# create a Polygon geofence based on the NL 1.0 and 2.0 corners
print "Let's build a geofence with NL 1.0 and 2.0 in diagonal corners"
geogrid = gps1.setPolygonGeoFence([cornerNW, cornerNE, cornerSE, cornerSW])

#check if the sand trap is in the fence
if (gps1.checkInside(geogrid, lat4, lon4)): # or we could have used gps1.checkInside(geogrid, novalabstrap)
    print "Sand Trap is Inside the Fence"
else:
    print "Sand Trap is Outside the Fence"

Update GPS.py