gpsd-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: open SHM data only after cgps start


From: Hans Kurscheidt
Subject: Re: open SHM data only after cgps start
Date: Fri, 5 Feb 2021 19:59:57 +0100
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0

Sorry, not sure, but when I issue systemctl status gpsd after boot, no client pending, it still says running. so the service is running. You probably said it yourself, the SHM is not recognised as Client and the deamon may have decided not yet to start/open the device.

RGDS

hk


Am 05.02.2021 um 19:57 schrieb Frank Nicholas:
I generally “Reply to all”.

SystemD service files generally look for NETWORK connections, not SHM use.  I don’t know if there’s a way for SystemD to monitor SHM…

I’m not an expert on SystemD service files, but I suspect START_DAMEON means, make it available when/if there’s an attempt to connect to it, not run it immediately at boot.  Maybe that’s a different option/setting.

Thanks,
Frank

On Feb 5, 2021, at 1:52 PM, Hans Kurscheidt <lve0200@gmail.com> wrote:

Hi Frank

BINGO, you got it!

unfortunately just your mail ended up in SPAM, don't know why, all the others don't!

1. Dirty system with multiple installations of various versions of GPSd
YES, I cleaned this up.

all your messages are coming individually - not recognized as part of a discussion/thread.

Sorry, I'm new here, don't know any better; there's no "answer" button except for unwanted replies to individuals.

The solution is to add -n into the systemd UNIT file as a GPSD_OPTION

cat /etc/default/gpsd
# Start the gpsd daemon automatically at boot time
START_DAEMON="true"

# Use USB hotplugging to add new USB devices automatically to the daemon
USBAUTO="true"

# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
# DEVICES="/dev/ttyUSB0"
DEVICES="/dev/ttyACM0"

# Other options you want to pass to gpsd
GPSD_OPTIONS="-n"


I did not expect/understand this! I was assuming, if the service is started at boot time, it would also start the GPS com. I have still questions: Why is my app not recognized as client, when opening
if ((gps_open(GPSD_SHARED_MEMORY, NULL, &gps_data)) == -1)
OK, it works,
thanks a lot, from good old Europe
Best Regards
hk

Am 05.02.2021 um 16:40 schrieb Frank Nicholas:
I think you have two issues:
1. Dirty system with multiple installations of various versions of GPSd
2. You are using SystemD, which with the most common service file, only launched GPSd when an app/client attempts to attach.  As long as GPSd is launched, and there is an attached client/consumer, it will continue to run, until there is nothing else using it and the last client closes the connection.

Gary Miller suggested adding the switch to make GPSd run as a daemon all the time (doesn’t exit when there are no clients attached).  This would also require something to change with the SystemD config file - you want SystemD to start GPSd at boot, not wait until there’s a client attempting to access it.  I think Gary even provided a one line command line that could be put in a startup script, anywhere you wanted, depending on the flavor of Linux you are using (this would not use SystemD).

For some reason all your messages are coming individually - not recognized as part of a discussion/thread.  Not sure if you can do something about that, but it makes it difficult to follow - that’s why I couldn’t easily find Gary’s suggestions.

Thanks,
Frank

On Feb 5, 2021, at 8:59 AM, Hans Kurscheidt <lve0200@gmail.com> wrote:

Sorry, if I keep talking to myself here, but I'm crawling forward.

After I got gpsd running as service, I cleaned out all old references to libgps and libgps-dev and cleaned Visual Studio's cache.

Should be OK now.

There's no dpkg -l libgps* output anymore

VisualStudio finds the richgt gps.h under ../gpsd-master/..; there is no other gps.h somewhere.

and the linker points to so.28

ldconfig -p | grep gps
        libgpsdpacket.so.28 (libc6,hard-float) => /usr/local/lib/libgpsdpacket.so.28
        libgpsdpacket.so (libc6,hard-float) => /usr/local/lib/libgpsdpacket.so
        libgps.so.28 (libc6,hard-float) => /usr/local/lib/libgps.so.28
        libgps.so (libc6,hard-float) => /usr/local/lib/libgps.so
        libQgpsmm.so.28 (libc6,hard-float) => /usr/local/lib/libQgpsmm.so.28
        libQgpsmm.so (libc6,hard-float) => /usr/local/lib/libQgpsmm.so

The compilation/linking is OK w/out errors or warnings and the executable is runable

BUT, I still have the old problem. (assume gpsd service running and fix available)

If I run my app after boot, No gps data is available and just once I got an error message, which I cannot reproduce, saying something like:

shared library error cannot ... data: No such file or directory

After running cgps once, data is available and remains 2b supplied to my app, even if I close cgps. This is reproduceable.

RGDS

hk





reply via email to

[Prev in Thread] Current Thread [Next in Thread]