summaryrefslogtreecommitdiff
path: root/recipes-navigation/gpsd/gpsd/gpsd-default
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-navigation/gpsd/gpsd/gpsd-default')
-rw-r--r--recipes-navigation/gpsd/gpsd/gpsd-default43
1 files changed, 43 insertions, 0 deletions
diff --git a/recipes-navigation/gpsd/gpsd/gpsd-default b/recipes-navigation/gpsd/gpsd/gpsd-default
index 5c59791..bb4df93 100644
--- a/recipes-navigation/gpsd/gpsd/gpsd-default
+++ b/recipes-navigation/gpsd/gpsd/gpsd-default
@@ -27,3 +27,46 @@ GPS_FIXFILE=/var/run/gpsfix
# 04 GPS + dead reckoning combined
# 05 Time only fix
GPSFIX="03 05"
+
+# U-Blox defaults to 9600. If the
+# default speed is not set before changing
+# the baud rate, this does not work
+# except right after a boot when the speed
+# is 9600 baud.
+#
+# 115200 baud is preferred to reduce the CPU
+# load. Also, u-blox mode is preferred to
+# nmea, as it is more efficient.
+#
+# We check for U-Blox first, because
+# we do not set the baud rate of other
+# GPS types.
+#
+# This gpsctl does not always work, because
+# the line speed might be wrong, so if we
+# fail, we change the baud rate and try again.
+#
+# There should only be two speeds, 115200
+# or 9600.
+#
+# If the line speed is already 115200, we
+# should not need to change the baud rate.
+#
+read -r -d '' SET_GPS_SPEED <<"EOF"
+if [[ $(cat /run/config/gpstype) == u-blox ]] ; then
+ logger -t gpsd -p daemon.info "Attempting to set baud rate to ${GPS_BAUD}"
+ if ! gpsctl -T 20 -t u-blox -s $GPS_BAUD -b -f $GPS_LINE ; then
+ logger -t gpsd -p daemon.info "WARNING: Unable to set GPS serial port speed."
+ stty -F $GPS_LINE 9600
+ if ! gpsctl -T 20 -t u-blox -s $GPS_BAUD -b -f $GPS_LINE ; then
+ logger -t gpsd -p daemon.info "WARNING: Unable to set GPS serial port speed."
+ fi
+ fi
+ stty -F $GPS_LINE $GPS_BAUD
+ logger -t gpsd -p daemon.info "Expect a timeout error here. Need this error."
+ gpsctl -T 2 -f $GPS_LINE
+ stty -F $GPS_LINE $GPS_BAUD
+fi
+EOF
+
+