j1939-vehicle-position-srv: Introduce J1939 and NMEA 2000 Vehicle Position Server
This patch adds `j1939-vehicle-position-srv`, a server for sending vehicle position data over CAN using J1939 or NMEA 2000 protocols. It retrieves GPS data from gpsd or simulates data if gpsd is unavailable. By default, it operates in J1939 profile but can switch to NMEA 2000 with the `-p nmea2000` option. Usage Examples: 1. With gpsd: j1939acd -r 64-95 -c /tmp/1122334455667789.jacd 1122334455667789 vcan0 & j1939-vehicle-position-srv -i vcan0 -n 0x1122334455667789 2. In simulation mode without gpsd: j1939-vehicle-position-srv -i vcan0 -s -p nmea2000 Signed-off-by: Oleksij Rempel <linux@rempel-privat.de> [Yegor: add CMakeLists.txt integration] Co-developed-by: Yegor Yefremov <yegorslists@googlemail.com>pull/553/head
parent
e8559479fb
commit
71b2aec834
|
|
@ -14,6 +14,12 @@ endif()
|
||||||
|
|
||||||
# Add an option to enable treating warnings as errors
|
# Add an option to enable treating warnings as errors
|
||||||
option(ENABLE_WERROR "Treat all compiler warnings as errors" OFF)
|
option(ENABLE_WERROR "Treat all compiler warnings as errors" OFF)
|
||||||
|
option(ENABLE_GPS "Enable GPS support" OFF)
|
||||||
|
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
if(ENABLE_GPS)
|
||||||
|
pkg_check_modules(GPS REQUIRED libgps)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(ENABLE_WERROR)
|
if(ENABLE_WERROR)
|
||||||
add_compile_options(-Werror)
|
add_compile_options(-Werror)
|
||||||
|
|
@ -67,6 +73,10 @@ set(PROGRAMS_J1939_TIMEDATE
|
||||||
j1939-timedate-cli
|
j1939-timedate-cli
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set(PROGRAMS_J1939_VEHICLE_POSITION
|
||||||
|
j1939-vehicle-position-srv
|
||||||
|
)
|
||||||
|
|
||||||
set(PROGRAMS_ISOBUSFS
|
set(PROGRAMS_ISOBUSFS
|
||||||
isobusfs-srv
|
isobusfs-srv
|
||||||
isobusfs-cli
|
isobusfs-cli
|
||||||
|
|
@ -191,6 +201,24 @@ if(NOT ANDROID)
|
||||||
j1939-timedate-srv
|
j1939-timedate-srv
|
||||||
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
|
if(ENABLE_GPS)
|
||||||
|
set(PUBLIC_HEADER_J1939_VEHICLE_POSITION
|
||||||
|
j1939_vehicle_position/j1939_vehicle_position_cmn.h
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(j1939-vehicle-position-srv
|
||||||
|
j1939_vehicle_position/j1939_vehicle_position_srv.c
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(j1939-vehicle-position-srv
|
||||||
|
PRIVATE can j1939 ${GPS_LIBRARIES}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(TARGETS
|
||||||
|
j1939-vehicle-position-srv
|
||||||
|
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(can STATIC
|
add_library(can STATIC
|
||||||
|
|
|
||||||
15
Makefile
15
Makefile
|
|
@ -67,6 +67,9 @@ PROGRAMS_J1939_TIMEDATE := \
|
||||||
j1939-timedate-srv \
|
j1939-timedate-srv \
|
||||||
j1939-timedate-cli
|
j1939-timedate-cli
|
||||||
|
|
||||||
|
PROGRAMS_J1939_VEHICLE_POSITION := \
|
||||||
|
j1939-vehicle-position-srv
|
||||||
|
|
||||||
PROGRAMS_ISOBUSFS := \
|
PROGRAMS_ISOBUSFS := \
|
||||||
isobusfs-srv \
|
isobusfs-srv \
|
||||||
isobusfs-cli
|
isobusfs-cli
|
||||||
|
|
@ -98,6 +101,7 @@ PROGRAMS_SLCAN := \
|
||||||
PROGRAMS := \
|
PROGRAMS := \
|
||||||
$(PROGRAMS_CANGW) \
|
$(PROGRAMS_CANGW) \
|
||||||
$(PROGRAMS_J1939_TIMEDATE) \
|
$(PROGRAMS_J1939_TIMEDATE) \
|
||||||
|
$(PROGRAMS_J1939_VEHICLE_POSITION) \
|
||||||
$(PROGRAMS_ISOBUSFS) \
|
$(PROGRAMS_ISOBUSFS) \
|
||||||
$(PROGRAMS_ISOTP) \
|
$(PROGRAMS_ISOTP) \
|
||||||
$(PROGRAMS_J1939) \
|
$(PROGRAMS_J1939) \
|
||||||
|
|
@ -126,7 +130,8 @@ endif
|
||||||
all: $(PROGRAMS)
|
all: $(PROGRAMS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(PROGRAMS) *.o mcp251xfd/*.o isobusfs/*.o j1939_timedate/*.o
|
rm -f $(PROGRAMS) *.o mcp251xfd/*.o isobusfs/*.o j1939_timedate/*.o \
|
||||||
|
j1939_vehicle_position/*.o
|
||||||
|
|
||||||
install:
|
install:
|
||||||
mkdir -p $(DESTDIR)$(PREFIX)/bin
|
mkdir -p $(DESTDIR)$(PREFIX)/bin
|
||||||
|
|
@ -153,6 +158,8 @@ isobusfs_srv.o: lib.h libj1939.h
|
||||||
isobusfs_c.o: lib.h libj1939.h
|
isobusfs_c.o: lib.h libj1939.h
|
||||||
j1939_timedate_srv.o: lib.h libj1939.h
|
j1939_timedate_srv.o: lib.h libj1939.h
|
||||||
j1939_timedate_cli.o: lib.h libj1939.h
|
j1939_timedate_cli.o: lib.h libj1939.h
|
||||||
|
j1939_vehicle_position_srv.o: lib.h libj1939.h
|
||||||
|
|
||||||
canframelen.o: canframelen.h
|
canframelen.o: canframelen.h
|
||||||
|
|
||||||
asc2log: asc2log.o lib.o
|
asc2log: asc2log.o lib.o
|
||||||
|
|
@ -182,6 +189,12 @@ j1939-timedate-cli: lib.o \
|
||||||
j1939_timedate/j1939_timedate_cli.o
|
j1939_timedate/j1939_timedate_cli.o
|
||||||
$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
|
$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
|
||||||
|
|
||||||
|
j1939-vehicle-position-srv: \
|
||||||
|
lib.o \
|
||||||
|
libj1939.o \
|
||||||
|
j1939_vehicle_position/j1939_vehicle_position_srv.o \
|
||||||
|
$(CC) $(LDFLAGS) $^ $(LDLIBS) -lgps -o $@
|
||||||
|
|
||||||
isobusfs-srv: lib.o \
|
isobusfs-srv: lib.o \
|
||||||
libj1939.o \
|
libj1939.o \
|
||||||
isobusfs/isobusfs_cmn.o \
|
isobusfs/isobusfs_cmn.o \
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue