added timeout as parameter to readGPS()