Open lo-hei opened 1 year ago
Sorry, I haven't used GPSD on Craton, but is it really necessary? I have created AutotalksGps module, that created a thread that was fetching the GPS data using the Autotalks API (inspired by the poti-api-example from the SDK) - basically just periodically call poti_fix_get()
on poti_context_t
structure.
Maybe then it is not necessary. All I need is a running socktap application that periodically sends CAM messages with the current GPS location. The lack of the GPSD library was just an attempt to explain the error, since I don't know what else it would be.
No, it is not necessary. You can build socktap without support for GPSD. Does the example run when you try to use static position? I do not know what exact changes you did to the example, but in the default state, if you are running the example as ./socktap -l autotalks
, you do not even start the GPSD location provider but use the "static" one that is defined in positioning.cpp.
Edit: Are you sure that you are showing the full command (./socktap -l autotalks
) you are running? It seems to me that the exception Exit because of positioning error: unknown error
is being thrown by GpsPositionProvider constructor that is used when you provide -p gpsd
or something similar.
Yes, it is running with -p static
and i can send and receive CAM-Messages (already tested with two EVKs). I left -p gpsd
out because after compiling with DSOCKTAP_WITH_GPSD=ON this is the default. Is this not correct? What is the correct --position argument? Or what should be the correct command for using the internal GPS? I saw there are additional attributs like gpsd-host
and gpsd-port
.
Edit: At this point, I have not made any changes to the program. Only added the initiazization as requested in your instructions.
I left
-p gpsd
out because after compiling with DSOCKTAP_WITH_GPSD=ON this is the default.
Oh okay, I did not notice that, sorry.
I think you should not use GPSD at all. As I said before, in our real application, I created a new module, that fetches position from the Autotalks API (this is for now not part of the socktap
example).
Generally how did I did it:
AutotalksGps
that inherits from vanetza::PositionProvider
. Main methods to implement:
AutotalksGps::scheduleTimer()
that schedules timerAutotalksGps::cancel()
to cancel timer and deinit the whole GPS,AutotalksGps::onTimer()
timer callback that periodically calls method AutotalksGps::fetchPositionFix()
,position_fix()
that reads the fix updated by AutotalksGps::fetchPositionFix()
AutotalksGps::fetchPositionFix()
for fetching the GPS data using the Autotalks API (inspired by the poti-api-example from the SDK)create_position_provider()
function with constructor of AutotalksGps using new
Hope it is somehow clear. Do not know how "correct" this is but I did it like that. Sorry, I did not put it here to the pull request as I thought that it is trivial to implement using the Autotalks SDK. Maybe I should add a note somewhere that for socktap
with Craton link layer, there is only a static position fix implemented in this repository. Or you can make the example yourself, but I fear there is too much Autotalks code to put here anything constructive.
If you need any more guidance, you can ask here, but I think the main thing is that for now, you have to implement this yourself.
P.S. In the future, if I get to it, I may add the code to the pull request. But do not count on it for at least the next few weeks.
Hi,
I work with a Craton2 EVK from Autotalks. Vanetza is compiled (with DSOCKTAP_WITH_GPSD=ON). For this, GPSD was cross-compiled on the local machine and added to
vanetza-deps
folder. the fileslibgps.so
,libgps.so.30
andlibgps.so.30.0.0
are copied onto the EVK to/vanetza/lib
.But if i try to run
./socktap -l autotalks
i just get following:If I had to guess, it could be due to two problems (or both):
vanetza/lib
. I would think that the gpsd deamon has to run? In that case i am not sure which folders and files i have to copy onto the EVK. After cross-compiling i received agpsd-VERSION
folder on my local machine with multiple other folders (e.g. gps, gpsd, include, libgps) an files (so-files).autotalks.cpp
Thanks for the help. I really appreciate your efforts @Irisbus