# Copyright (C) 2009-2011 OpenWrt.org
START=50
+USE_PROCD=1
+PROG=/usr/sbin/gpsd
NAME=gpsd
-PIDF=/var/run/$NAME.pid
-PROG=/usr/sbin/$NAME
-
-start() {
- config_load gpsd
- config_get device core device
- config_get port core port
- config_get_bool listen_globally core listen_globally
- config_get_bool enabled core enabled
- [ "$enabled" != "1" ] && exit
- logger -t "$NAME" "Starting..."
- [ ! -c "$device" ] && {
- logger -t "$NAME" "Unable to find device $device. Exiting."
- exit 1
- }
- [ "$listen_globally" != "0" ] && append args "-G"
- $PROG -n -P $PIDF -S $port $args $device
+
+validate_section_gpsd()
+{
+ uci_validate_section gpsd gpsd "${1}" \
+ 'enable:bool:1' \
+ 'device:string' \
+ 'listen_globally:bool:0' \
+ 'port:port:2947'
+}
+
+gpsd_instance()
+{
+ local device enable listen_globally port
+
+ validate_section_gpsd "${1}" || {
+ echo "validation failed"
+ return 1
+ }
+
+ [ "${enable}" = "0" ] && return 1
+
+ procd_open_instance
+ procd_set_param command "$PROG" -N -n
+
+ [ "${listen_globally}" -ne 0 ] && procd_append_param command -G
+ procd_append_param command -S "${port}"
+ procd_append_param command "${device}"
+ procd_set_param respawn
+
+ procd_close_instance
}
-stop() {
- logger -t "$NAME" "Stopping..."
- [ -f "$PIDF" ] && {
- read PID < "$PIDF"
- kill -9 $PID
- rm $PIDF
- }
+start_service()
+{
+ config_load "${NAME}"
+ config_foreach gpsd_instance gpsd
}