Browse Source

Merge branch 'master' into 1+x

lijinliang 3 years ago
parent
commit
e46c9dc134
100 changed files with 9542 additions and 3167 deletions
  1. 67 19
      autogen.sh
  2. 5 0
      include/common.pri
  3. 68 20
      sh/HAPO/agx1/autogen.sh
  4. 5 0
      src/common/common/xodr/OpenDrive/ObjectSignal.cpp
  5. 1 0
      src/common/common/xodr/OpenDrive/ObjectSignal.h
  6. 97 0
      src/common/common/xodr/OpenDrive/OpenDriveXmlParser.cpp
  7. 3 0
      src/common/common/xodr/OpenDrive/OpenDriveXmlParser.h
  8. 60 2
      src/common/common/xodr/OpenDrive/OpenDriveXmlWriter.cpp
  9. 1 0
      src/common/common/xodr/OpenDrive/OpenDriveXmlWriter.h
  10. 2 1
      src/common/common/xodr/xodrfunc/xodrdijkstra.cpp
  11. 3 0
      src/common/modulecomm/Readme.md
  12. 7 0
      src/common/modulecomm/modulecomm.pro
  13. 10 2
      src/common/modulecomm/shm/procsm_if.cpp
  14. 32 0
      src/controller/controller_UI_test/mainwindow.cpp
  15. 9 0
      src/controller/controller_UI_test/mainwindow.h
  16. 11 0
      src/decition/common/perception_sf/eyes.cpp
  17. 1 1
      src/decition/common/perception_sf/sensor_radar.cpp
  18. 20 0
      src/decition/decition_brain_sf/decition/adc_adapter/sightseeing_adapter.cpp
  19. 3 0
      src/decition/decition_brain_sf/decition/brain.cpp
  20. 10 2
      src/decition/decition_brain_sf/decition/decide_gps_00.cpp
  21. 16 7
      src/detection/detection_lidar_PointPillars_MultiHead/main.cpp
  22. 2 1
      src/detection/detection_lidar_cnn_segmentation/detection_lidar_cnn_segmentation.pro
  23. 259 0
      src/driver/driver_can_nvidia_agx_new/canctrl.cpp
  24. 61 0
      src/driver/driver_can_nvidia_agx_new/canctrl.h
  25. 54 0
      src/driver/driver_can_nvidia_agx_new/driver_can_nvidia_agx_new.pro
  26. 159 0
      src/driver/driver_can_nvidia_agx_new/main.cpp
  27. 525 0
      src/driver/driver_can_nvidia_agx_new/nvcan.cpp
  28. 75 0
      src/driver/driver_can_nvidia_agx_new/nvcan.h
  29. 229 0
      src/driver/driver_can_socket/canctrl.cpp
  30. 58 0
      src/driver/driver_can_socket/canctrl.h
  31. 54 0
      src/driver/driver_can_socket/driver_can_socket.pro
  32. 120 0
      src/driver/driver_can_socket/main.cpp
  33. 684 0
      src/driver/driver_can_socket/nvcan.cpp
  34. 60 0
      src/driver/driver_can_socket/nvcan.h
  35. 73 0
      src/driver/driver_cloud_grpc_civetweb/.gitignore
  36. 63 0
      src/driver/driver_cloud_grpc_civetweb/driver_cloud_grpc_civetweb.pro
  37. 417 0
      src/driver/driver_cloud_grpc_civetweb/frontend/index.html
  38. BIN
      src/driver/driver_cloud_grpc_civetweb/frontend/tvsnow.jpg
  39. 7 0
      src/driver/driver_cloud_grpc_civetweb/grpccivet.cpp
  40. 16 0
      src/driver/driver_cloud_grpc_civetweb/grpccivet.h
  41. 422 0
      src/driver/driver_cloud_grpc_civetweb/grpcpc.cpp
  42. 151 0
      src/driver/driver_cloud_grpc_civetweb/grpcpc.h
  43. 401 0
      src/driver/driver_cloud_grpc_civetweb/main.cpp
  44. 3 3
      src/driver/driver_cloud_grpc_client_BS/main.cpp
  45. 19 15
      src/driver/driver_cloud_grpc_client_BS/vehicle_control.cpp
  46. 2 2
      src/driver/driver_cloud_grpc_client_BS/vehicle_control.h
  47. 7 5
      src/driver/driver_cloud_grpc_client_BS/vehicle_patrol.cpp
  48. 1 1
      src/driver/driver_cloud_grpc_client_BS/vehicle_patrol.h
  49. 23 12
      src/driver/driver_cloud_grpc_client_BS/vehicle_upload.cpp
  50. 1 1
      src/driver/driver_cloud_grpc_client_BS/vehicle_upload.h
  51. 1 1
      src/driver/driver_cloud_grpc_pc_thread/grpcpc.cpp
  52. 0 2
      src/driver/driver_gps_hcp2/driver_gps_hcp2.pro
  53. 5 1
      src/driver/driver_gps_hcp2/hcp2.cpp
  54. 39 31
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0-binutil.c
  55. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0-binutil.h
  56. 2 2
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0-config.h
  57. 31 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0-fmon.c
  58. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0-fmon.h
  59. 338 188
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0.c
  60. 335 159
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0.h
  61. 34 26
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1-binutil.c
  62. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1-binutil.h
  63. 2 2
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1-config.h
  64. 31 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1-fmon.c
  65. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1-fmon.h
  66. 366 216
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1.c
  67. 372 200
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1.h
  68. 34 26
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2-binutil.c
  69. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2-binutil.h
  70. 2 2
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2-config.h
  71. 31 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2-fmon.c
  72. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2-fmon.h
  73. 366 216
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2.c
  74. 372 200
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2.h
  75. 34 26
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3-binutil.c
  76. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3-binutil.h
  77. 2 2
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3-config.h
  78. 31 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3-fmon.c
  79. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3-fmon.h
  80. 366 216
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3.c
  81. 372 200
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3.h
  82. 34 26
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4-binutil.c
  83. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4-binutil.h
  84. 2 2
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4-config.h
  85. 31 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4-fmon.c
  86. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4-fmon.h
  87. 366 216
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4.c
  88. 372 200
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4.h
  89. 34 26
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5-binutil.c
  90. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5-binutil.h
  91. 2 2
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5-config.h
  92. 31 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5-fmon.c
  93. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5-fmon.h
  94. 366 216
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5.c
  95. 372 200
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5.h
  96. 34 26
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch6-binutil.c
  97. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch6-binutil.h
  98. 2 2
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch6-config.h
  99. 31 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch6-fmon.c
  100. 23 21
      src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch6-fmon.h

+ 67 - 19
autogen.sh

@@ -25,7 +25,7 @@ echo -e "\e[33m qtmake: $qtmake \e[0m"
 show_error=$1
 check_result()
 {
-    if [ "$1" != 0 -a "$show_error" == "s" ];then
+    if [ "$build_result" != 0 -a "$show_error" == "s" ];then
 		echo -e "\e[33m*************************************************\e[0m"
         echo -e "\e[31m    Please modify build error first,Exit!\e[0m"
 		echo -e "\e[33m*************************************************\e[0m"
@@ -33,6 +33,23 @@ check_result()
 	fi
 }
 
+store_result()
+{
+	if [ "$build_result" != 0 ];then
+		echo -e "\e[33m*************************************************\e[0m"
+	        echo -e "\e[31m    Please modify build error first,Exit!\e[0m"
+		echo -e "\e[33m*************************************************\e[0m"
+ 		error_log="$error_log \n `pwd`"
+	fi
+}
+
+show_result()
+{
+	echo -e "\e[33m*************************************************\e[0m"
+        echo -e "\e[31mPlease modify build error first,Exit!\e[0m"
+        echo -e "\e[31m$error_log\e[0m"
+	echo -e "\e[33m*************************************************\e[0m"
+}
 MAKEOPT=-j8
 
 mkdir bin
@@ -44,7 +61,9 @@ cd ../../../
 cd src/common/modulecomm/
 $qtmake modulecomm.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libmodulecomm.so ./../../../bin/
 rm Makefile
@@ -54,7 +73,9 @@ cd ../../../
 cd src/common/xmlparam/
 $qtmake xmlparam.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libxmlparam.so ./../../../bin/
 rm Makefile
@@ -64,7 +85,9 @@ cd ../../../
 cd src/common/ndt_cpu/
 $qtmake ndt_cpu.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libndt_cpu.so ./../../../bin/
 rm Makefile
@@ -84,7 +107,9 @@ cd ../../../
 cd src/common/ivlog/
 $qtmake ivlog.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libivlog.so ./../../../bin/
 rm Makefile
@@ -94,7 +119,9 @@ cd ../../../
 cd src/common/ivfault/
 $qtmake ivfault.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libivfault.so ./../../../bin/
 rm Makefile
@@ -104,7 +131,9 @@ cd ../../../
 cd src/common/platformif/
 $qtmake platformif.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libplatformif.so ./../../../bin/
 rm Makefile
@@ -114,7 +143,9 @@ cd ../../../
 cd src/common/ivexit/
 $qtmake ivexit.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libivexit.so ./../../../bin/
 rm Makefile
@@ -124,7 +155,9 @@ cd ../../../
 cd src/common/ivbacktrace/
 $qtmake ivbacktrace.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libivbacktrace.so ./../../../bin/
 rm Makefile
@@ -134,7 +167,9 @@ cd ../../../
 cd src/common/ivchart/
 $qtmake ivchart.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libivchart.so ./../../../bin/
 rm Makefile
@@ -150,7 +185,9 @@ do
 	cd src/controller/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -158,7 +195,6 @@ do
 	rm ${x}
 	cd ../../../
 done
-
 decition_app_name=(
 	decition_brain_sf_1x
 )
@@ -168,7 +204,9 @@ do
 	cd src/decition/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -189,7 +227,9 @@ do
 	cd src/driver/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -208,7 +248,9 @@ do
 	cd src/detection/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -227,7 +269,9 @@ do
 	cd src/fusion/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -251,7 +295,9 @@ do
 	cd src/tool/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -269,7 +315,9 @@ do
 	cd src/ui/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -277,4 +325,4 @@ do
 	rm ${x}
 	cd ../../../
 done
-
+show_result

+ 5 - 0
include/common.pri

@@ -26,6 +26,10 @@ QMAKE_LFLAGS += -no-pie
 
 INCLUDEPATH += $$PWD/../src/include/msgtype
 
+if(contains(DEFINES,MODULECOMM_NO_FASTRTPS)){
+DEFINES += NOT_USEFASTRTPS
+}else{
+
 if(contains(DEFINES,SYSTEM_AGX)){
 DEFINES += USE_FASTRTPS
 LIBS += -L$$PWD/../thirdpartylib/FastRTPS/lib/libarm64
@@ -38,6 +42,7 @@ LIBS += -L$$PWD/../thirdpartylib/FastRTPS/lib/libamd64
 system("cd ./../thirdpartylib/FastRTPS/lib ; unzip -x -n libamd64.zip ; cd ../../../include ; echo $PWD")
 }
 
+}
 
 
 if(contains(DEFINES,USE_FASTRTPS)){

+ 68 - 20
sh/HAPO/agx1/autogen.sh

@@ -25,7 +25,7 @@ echo -e "\e[33m qtmake: $qtmake \e[0m"
 show_error=$1
 check_result()
 {
-    if [ "$1" != 0 -a "$show_error" == "s" ];then
+    if [ "$build_result" != 0 -a "$show_error" == "s" ];then
 		echo -e "\e[33m*************************************************\e[0m"
         echo -e "\e[31m    Please modify build error first,Exit!\e[0m"
 		echo -e "\e[33m*************************************************\e[0m"
@@ -33,6 +33,23 @@ check_result()
 	fi
 }
 
+store_result()
+{
+	if [ "$build_result" != 0 ];then
+		echo -e "\e[33m*************************************************\e[0m"
+	        echo -e "\e[31m    Please modify build error first,Exit!\e[0m"
+		echo -e "\e[33m*************************************************\e[0m"
+ 		error_log="$error_log \n `pwd`"
+	fi
+}
+
+show_result()
+{
+	echo -e "\e[33m*************************************************\e[0m"
+        echo -e "\e[31mPlease modify build error first,Exit!\e[0m"
+        echo -e "\e[31m$error_log\e[0m"
+	echo -e "\e[33m*************************************************\e[0m"
+}
 MAKEOPT=-j8
 
 mkdir bin
@@ -44,7 +61,9 @@ cd ../../../
 cd src/common/modulecomm/
 $qtmake modulecomm.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libmodulecomm.so ./../../../bin/
 rm Makefile
@@ -54,7 +73,9 @@ cd ../../../
 cd src/common/xmlparam/
 $qtmake xmlparam.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libxmlparam.so ./../../../bin/
 rm Makefile
@@ -64,7 +85,9 @@ cd ../../../
 cd src/common/ndt_cpu/
 $qtmake ndt_cpu.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libndt_cpu.so ./../../../bin/
 rm Makefile
@@ -74,7 +97,9 @@ cd ../../../
 cd src/common/ivlog/
 $qtmake ivlog.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libivlog.so ./../../../bin/
 rm Makefile
@@ -84,7 +109,9 @@ cd ../../../
 cd src/common/ivfault/
 $qtmake ivfault.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libivfault.so ./../../../bin/
 rm Makefile
@@ -94,7 +121,9 @@ cd ../../../
 cd src/common/platformif/
 $qtmake platformif.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libplatformif.so ./../../../bin/
 rm Makefile
@@ -104,7 +133,9 @@ cd ../../../
 cd src/common/ivexit/
 $qtmake ivexit.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libivexit.so ./../../../bin/
 rm Makefile
@@ -114,7 +145,9 @@ cd ../../../
 cd src/common/ivbacktrace/
 $qtmake ivbacktrace.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libivbacktrace.so ./../../../bin/
 rm Makefile
@@ -124,7 +157,9 @@ cd ../../../
 cd src/common/ivchart/
 $qtmake ivchart.pro
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 cp libivchart.so ./../../../bin/
 rm Makefile
@@ -140,7 +175,9 @@ do
 	cd src/controller/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -148,9 +185,8 @@ do
 	rm ${x}
 	cd ../../../
 done
-
 decition_app_name=(
-	decition_brain_sf
+#	decition_brain_sf
 	#decition_brain_ge3
 	#decition_brain_qingyuan
 	#decition_brain_vv7
@@ -161,7 +197,9 @@ do
 	cd src/decition/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -188,7 +226,9 @@ do
 	cd src/driver/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -208,7 +248,9 @@ do
 	cd src/detection/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -227,7 +269,9 @@ do
 	cd src/fusion/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -255,7 +299,9 @@ do
 	cd src/tool/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -273,7 +319,9 @@ do
 	cd src/ui/${x}/
 	$qtmake ${x}.pro
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	cp ${x} ./../../../bin/
 	rm Makefile
@@ -281,4 +329,4 @@ do
 	rm ${x}
 	cd ../../../
 done
-
+show_result

+ 5 - 0
src/common/common/xodr/OpenDrive/ObjectSignal.cpp

@@ -140,6 +140,11 @@ Object_markings::Object_markings(Object_markings_marking xmarking)
     mmarking.push_back(xmarking);
 }
 
+Object_markings::Object_markings()
+{
+
+}
+
 vector<Object_markings_marking> * Object_markings::GetMarkingVector()
 {
     return &mmarking;

+ 1 - 0
src/common/common/xodr/OpenDrive/ObjectSignal.h

@@ -65,6 +65,7 @@ private:
 
 public:
     Object_markings(Object_markings_marking xmarking);
+    Object_markings();
 
     vector<Object_markings_marking> * GetMarkingVector();
     Object_markings_marking* GetMarking(unsigned int i);

+ 97 - 0
src/common/common/xodr/OpenDrive/OpenDriveXmlParser.cpp

@@ -1278,6 +1278,97 @@ bool OpenDriveXmlParser::ReadObjectParkingSpace(Object *pObject, TiXmlElement *n
 }
 //--------------
 
+bool OpenDriveXmlParser::ReadObjectMarkings(Object *pObject, TiXmlElement *node)
+{
+    Object_markings xObject_Markings;
+
+    TiXmlElement *subNode = node->FirstChildElement("marking");
+
+    if(subNode == NULL)
+    {
+        std::cout<<"OpenDriveXmlParser::ReadObjectMarkings markings have one marking at least"<<std::endl;
+        return false;
+    }
+
+    while(subNode)
+    {
+        ReadObjectMarkingsMarking(&xObject_Markings,subNode);
+        subNode = subNode->NextSiblingElement("marking");
+    }
+
+    pObject->Setmarkings(xObject_Markings);
+}
+
+//--------------
+
+bool OpenDriveXmlParser::ReadObjectMarkingsMarking(Object_markings *pObject_Markings, TiXmlElement *node)
+{
+    std::string strside,strweight,strcolor;
+    double fwidth,fzOffset,fspaceLength,flineLength,fstartOffset,fstopOffset;
+
+    int checker=TIXML_SUCCESS;
+    checker+=node->QueryStringAttribute("color",&strcolor);
+    if(checker != TIXML_SUCCESS)
+    {
+        cout<<"Error parsing Object Marking color attributes"<<endl;
+        return false;
+    }
+    checker+=node->QueryDoubleAttribute("spaceLength",&fspaceLength);
+    if(checker != TIXML_SUCCESS)
+    {
+        cout<<"Error parsing Object Marking spaceLength attributes"<<endl;
+        return false;
+    }
+    checker+=node->QueryDoubleAttribute("lineLength",&flineLength);
+    if(checker != TIXML_SUCCESS)
+    {
+        cout<<"Error parsing Object Marking lineLength attributes"<<endl;
+        return false;
+    }
+    checker+=node->QueryDoubleAttribute("startOffset",&fstartOffset);
+    if(checker != TIXML_SUCCESS)
+    {
+        cout<<"Error parsing Object Marking startOffset attributes"<<endl;
+        return false;
+    }
+    checker+=node->QueryDoubleAttribute("stopOffset",&fstopOffset);
+    if(checker != TIXML_SUCCESS)
+    {
+        cout<<"Error parsing Object Marking stopOffset attributes"<<endl;
+        return false;
+    }
+
+    pObject_Markings->AddMarking(strcolor,fspaceLength,flineLength,fstartOffset,fstopOffset);
+    Object_markings_marking * pObject_Markings_Marking = pObject_Markings->GetLastMarking();
+
+    if(node->QueryStringAttribute("side",&strside) == TIXML_SUCCESS)
+    {
+        pObject_Markings_Marking->Setside(strside);
+    }
+
+    if(node->QueryStringAttribute("weight",&strweight) == TIXML_SUCCESS)
+    {
+        pObject_Markings_Marking->Setweight(strweight);
+    }
+
+    if(node->QueryDoubleAttribute("width",&fwidth) == TIXML_SUCCESS)
+    {
+        pObject_Markings_Marking->Setwidth(fwidth);
+    }
+
+    if(node->QueryDoubleAttribute("zOffset",&fzOffset) == TIXML_SUCCESS)
+    {
+        pObject_Markings_Marking->SetzOffset(fzOffset);
+    }
+
+
+    return true;
+
+
+}
+
+//--------------
+
 bool OpenDriveXmlParser::ReadObjectOutlines(Object * pObject,TiXmlElement *node)
 {
     Object_outlines xoutlines;
@@ -1649,6 +1740,12 @@ bool OpenDriveXmlParser::ReadObject(Road *road, TiXmlElement *node)
         subNode = subNode->NextSiblingElement("outline");
     }
 
+    subNode = node->FirstChildElement("markings");
+    if(subNode)
+    {
+        ReadObjectMarkings(pobject,subNode);
+    }
+
     return true;
 }
 //--------------

+ 3 - 0
src/common/common/xodr/OpenDrive/OpenDriveXmlParser.h

@@ -88,6 +88,9 @@ public:
     bool ReadSignal_positionInertial(Signal * pSignal, TiXmlElement *node);
     bool ReadSignal_laneValidity(Signal * pSignal,TiXmlElement * node);
     bool ReadObject(Road * road,TiXmlElement * node);
+    bool ReadObjectMarkings(Object * pObject,TiXmlElement * node);
+    bool ReadObjectMarkingsMarking(Object_markings * pObject_Markings,TiXmlElement * node);
+
 	//--------------
 
 	bool ReadSurface (Road* road, TiXmlElement *node);

+ 60 - 2
src/common/common/xodr/OpenDrive/OpenDriveXmlWriter.cpp

@@ -1263,7 +1263,12 @@ bool OpenDriveXmlWriter::WriteObject(TiXmlElement *node, Object *pObject)
         WriteObjectOutlinesOutline(nodeObject,pObject_outlines_outline);
     }
 
-//    unsigned nmarkingcount =
+    Object_markings * pObject_markings = pObject->Getmarkings();
+    if(pObject_markings != NULL)
+    {
+        WriteObjectMarkings(nodeObject,pObject_markings);
+    }
+
 
     return true;
 }
@@ -1450,12 +1455,65 @@ bool OpenDriveXmlWriter::WriteObjectOutlinesOutline(TiXmlElement *node, Object_o
 
 //--------------
 
+bool OpenDriveXmlWriter::WriteObjectMarkings(TiXmlElement *node, Object_markings *pObject_markings)
+{
+    TiXmlElement * nodeObjectMakrings = new TiXmlElement("markings");
+    node->LinkEndChild(nodeObjectMakrings);
+
+    int lmarkingcount = pObject_markings->GetMarkingCount();
+    if(lmarkingcount == 0)
+    {
+        std::cout<<"Makrings must have at least 1 marking"<<std::endl;
+        return false;
+    }
+    unsigned int i;
+    for(i=0;i<lmarkingcount;i++)
+    {
+        WriteObjectMarkingsMarking(nodeObjectMakrings,pObject_markings->GetMarking(i));
+    }
+
+    return true;
+
+}
+
+//--------------
+
 bool OpenDriveXmlWriter::WriteObjectMarkingsMarking(TiXmlElement *node, Object_markings_marking *pObject_markings_marking)
 {
     TiXmlElement * nodemarking = new TiXmlElement("marking");
     node->LinkEndChild(nodemarking);
 
- //   if(pObject_markings_marking->g)
+    std::string strside,strweight;
+    double fwidth,fzOffset;
+
+    if(pObject_markings_marking->Getside(strside) == 1)
+    {
+        nodemarking->SetAttribute("side",strside);
+    }
+
+    if(pObject_markings_marking->Getweight(strweight) == 1)
+    {
+        nodemarking->SetAttribute("weight",strweight);
+    }
+
+    if(pObject_markings_marking->Getwidth(fwidth) == 1)
+    {
+        nodemarking->SetDoubleAttribute("width",fwidth);
+    }
+
+    nodemarking->SetAttribute("color",pObject_markings_marking->Getcolor());
+
+    if(pObject_markings_marking->GetzOffset(fzOffset) == 1)
+    {
+        nodemarking->SetDoubleAttribute("zOffset",fzOffset);
+    }
+
+    nodemarking->SetDoubleAttribute("spaceLength",pObject_markings_marking->GetspaceLength());
+    nodemarking->SetDoubleAttribute("lineLength",pObject_markings_marking->GetlineLength());
+    nodemarking->SetDoubleAttribute("startOffset",pObject_markings_marking->GetstartOffset());
+    nodemarking->SetDoubleAttribute("stopOffset",pObject_markings_marking->GetstopOffset());
+
+    return true;
 }
 
 //--------------

+ 1 - 0
src/common/common/xodr/OpenDrive/OpenDriveXmlWriter.h

@@ -84,6 +84,7 @@ public:
     bool WriteSignal(TiXmlElement * node, Signal * pSignal);
     bool WriteSignal_positionInertial(TiXmlElement * node, signal_positionInertial * pSignal_positionInertial);
     bool WriteSignal_laneValidity(TiXmlElement * node, signal_laneValidity * pSignal_laneValidity);
+    bool WriteObjectMarkings(TiXmlElement * node,Object_markings * pObject_markings);
     bool WriteObjectMarkingsMarking(TiXmlElement * node,Object_markings_marking * pObject_markings_marking);
 
     //--------------

+ 2 - 1
src/common/common/xodr/xodrfunc/xodrdijkstra.cpp

@@ -113,6 +113,7 @@ xodrdijkstra::xodrdijkstra(OpenDrive  * pxodr)
     int i;
     double  nlenth = 0;
     int nroadsize = mpxodr->GetRoadCount();
+//    if(nroadsize<2)return;
     for(i=0;i<nroadsize;i++)
     {
         Road * px = mpxodr->GetRoad(i);
@@ -1077,7 +1078,7 @@ xodrdijkstra::xodrdijkstra(OpenDrive  * pxodr)
         }
     }
 
-    for(i=0;i<(xvertexsamearray.size()-1);i++)
+    for(i=0;i<(((int)xvertexsamearray.size())-1);i++)
     {
         int j;
         for(j=(i+1);j<(xvertexsamearray.size());j++)

+ 3 - 0
src/common/modulecomm/Readme.md

@@ -0,0 +1,3 @@
+TIPS:
+# 1. 不使用FastRTPS
+如果只使用共享内存通信(不使用DDS),可以在生成的systemdef.pri里加上DEFINES += MODULECOMM_NO_FASTRTPS,这样就不需要libfastcdr.so libfastrtps.so libtinyxml2.so。

+ 7 - 0
src/common/modulecomm/modulecomm.pro

@@ -58,6 +58,11 @@ unix {
     error( "Couldn't find the modulecomm_inter.pri file!" )
 }
 
+
+if(contains(DEFINES,MODULECOMM_NO_FASTRTPS)){
+DEFINES += NOT_USEFASTRTPS
+}else{
+
 if(contains(DEFINES,SYSTEM_AGX)){
 DEFINES += USE_FASTRTPS
 LIBS += -L$$PWD/../../../thirdpartylib/FastRTPS/lib/libarm64
@@ -70,6 +75,8 @@ LIBS += -L$$PWD/../../../thirdpartylib/FastRTPS/lib/libamd64
 system("cd ./../../../thirdpartylib/FastRTPS/lib ; unzip -x -n libamd64.zip ; cd ../../../include ; echo $PWD")
 }
 
+}
+
 
 
 if(contains(DEFINES,USE_FASTRTPS)){

+ 10 - 2
src/common/modulecomm/shm/procsm_if.cpp

@@ -210,12 +210,20 @@ procsm_if::~procsm_if()
     if(mnType == procsm::ModeRead)
     {
 
+        QTime xTime;
+        xTime.start();
+        bool bDel = true;
         mpReadThread->requestInterruption();
         while(!mpReadThread->isFinished())
         {
-
+            if(xTime.elapsed() > 1000)
+            {
+                bDel = false;
+                std::cout<<"procsm_if Thread Read not finish."<<std::endl;
+                break;
+            }
         }
-        delete mpReadThread;
+        if(bDel)delete mpReadThread;
     }
     delete mpPSM;
 }

+ 32 - 0
src/controller/controller_UI_test/mainwindow.cpp

@@ -1,6 +1,9 @@
 #include "mainwindow.h"
 #include "ui_mainwindow.h"
 
+#include <QMouseEvent>
+#include <QDesktopWidget>
+
 MainWindow::MainWindow(QWidget *parent) :
     QMainWindow(parent),
     ui(new Ui::MainWindow)
@@ -10,6 +13,12 @@ MainWindow::MainWindow(QWidget *parent) :
     ui->lineEdit_2->setValidator(new QIntValidator(ui->lineEdit_2));
     ui->lineEdit_3->setValidator(new QIntValidator(ui->lineEdit_3));
 
+    this->setFixedSize(900, 600);
+    QDesktopWidget *deskdop = QApplication::desktop();
+    QRect rect = deskdop->screenGeometry();
+    move(rect.width() / 4, rect.height() / 4);
+//    setWindowIcon(QIcon(":/background/360logo.ico"));
+
 }
 
 MainWindow::~MainWindow()
@@ -17,6 +26,29 @@ MainWindow::~MainWindow()
     delete ui;
 }
 
+void MainWindow::mousePressEvent(QMouseEvent *event)
+{
+    if (event->button() == Qt::LeftButton){
+         windowPos = this->pos();
+         mousePos = event->globalPos();
+         isMousePress = true;
+    }
+}
+
+void MainWindow::mouseReleaseEvent(QMouseEvent *event)
+{
+    if (event->button() == Qt::LeftButton)
+        isMousePress = false;
+}
+
+void MainWindow::mouseMoveEvent(QMouseEvent *event)
+{
+    if (isMousePress == true){
+        move(windowPos + (event->globalPos() - mousePos));
+    }
+}
+
+
 void MainWindow::on_pushButton_clicked()
 {
     ServiceCarStatus.wheelangle = ui->lineEdit->text().toInt();

+ 9 - 0
src/controller/controller_UI_test/mainwindow.h

@@ -23,8 +23,17 @@ private slots:
 
     void on_pushButton_3_clicked();
 
+protected:
+    void mousePressEvent(QMouseEvent *);
+    void mouseReleaseEvent(QMouseEvent *);
+    void mouseMoveEvent(QMouseEvent *);
+
 private:
     Ui::MainWindow *ui;
+
+    bool isMousePress;
+    QPoint windowPos;
+    QPoint mousePos;
 };
 
 #endif // MAINWINDOW_H

+ 11 - 0
src/decition/common/perception_sf/eyes.cpp

@@ -1,5 +1,9 @@
 #include <perception_sf/eyes.h>
 #include <time.h>
+#include <QTime>
+
+#include "ivlog.h"
+extern iv::Ivlog * givlog;
 
 iv::perception::Eyes::Eyes() {
     mgpsindex = 0;
@@ -125,6 +129,13 @@ void iv::perception::Eyes::getSensorObstacle(iv::ObsRadar& brain_obs_radar, iv::
                 *data = *gps_ins_data_;
                 brain_gps_data =  data;
                 mgpsreadindex = mgpsindex;
+                QTime current_time=QTime::currentTime();
+                double hour=current_time.hour();
+                double min=current_time.minute();
+                double second=current_time.second();
+                double msec=current_time.msec();
+//                givlog->debug("decition_brain","hour: %f,min: %f,second: %f,msec: %f",
+//                                hour,min,second,msec);
             }
 
 //            brain_gps_data = gps_ins_data_;

+ 1 - 1
src/decition/common/perception_sf/sensor_radar.cpp

@@ -29,7 +29,7 @@ iv::perception::RadarSensor::RadarSensor() {
 
     iv::perception::gRadar = this;
 
-    mparadar = iv::modulecomm::RegisterRecv(gstrmemradar.data(),iv::perception::ListenRadar);
+//    mparadar = iv::modulecomm::RegisterRecv(gstrmemradar.data(),iv::perception::ListenRadar);
 //    mparadar = new adcmemshare("radar",10*sizeof(iv::ObstacleBasic)*64,10);
 //    mparadar->listenmsg(iv::perception::ListenRadar);
 }

+ 20 - 0
src/decition/decition_brain_sf/decition/adc_adapter/sightseeing_adapter.cpp

@@ -190,6 +190,12 @@ iv::decition::Decition iv::decition::SightseeingAdapter::getAdapterDeciton(GPS_I
     if((obsDistance>8.0)&&(obsSpeed<reverse_speed)){
         controlBrake =0;
         controlSpeed =0;
+        accAim=0;
+    }
+    if(obsDistance>60){
+        if(accAim<-0.5){
+            accAim=max(accAim,-0.5f);
+        }
     }
 
 
@@ -199,6 +205,20 @@ iv::decition::Decition iv::decition::SightseeingAdapter::getAdapterDeciton(GPS_I
     lastTorque=(*decition)->torque;
 
 
+
+
+
+    if((ServiceCarStatus.table_look_up_on==true)&&(IsINterpolationOK()))
+    {
+        double ftorque,fbrake;
+        GetTorqueBrake(now_gps_ins.speed, accAim,ftorque,fbrake);
+        if(accAim>0){
+            ftorque=max(ftorque,3.2);
+        }
+        (*decition)->brake = fbrake;
+
+        (*decition)->torque= ftorque;
+    }
 //    givlog->debug("brain_decition","brake: %f,obsDistance: %f,obsSpeed: %f,reverse_speed: %f",
 //                            (*decition)->brake,obsDistance,obsSpeed,reverse_speed);
 

+ 3 - 0
src/decition/decition_brain_sf/decition/brain.cpp

@@ -885,6 +885,9 @@ void iv::decition::BrainDecition::run() {
             //		ODS("\n决策刹车:%f\n", decition_gps->brake);
             std::cout<<ServiceCarStatus.mRunTime.elapsed()<<"ms:"<< "\n决策方向:%f\n" << decition_gps->wheel_angle << std::endl;
             std::cout<<ServiceCarStatus.mRunTime.elapsed()<<"ms:"<< "\n决策速度:%f\n" << decition_gps->speed << std::endl;
+//            double decition_period=GetTickCount()-start;
+//            givlog->debug("decition_brain","period: %f",
+//                            decition_period);
             last = start;
             //decitionMaker->decideFromGPS(decition_gps, gps_data_, navigation_data);		//gps_data_为当前读到的gps位置信息  navigation_data为导航数据  decition_gps为根据前两者得出的决策速度与决策角度
             //            }

+ 10 - 2
src/decition/decition_brain_sf/decition/decide_gps_00.cpp

@@ -197,6 +197,7 @@ bool qiedianCount = false;
 static int obstacle_avoid_flag=0;
 static int front_car_id=-1;
 static int front_car_vector_id=-1;
+static bool final_brake_lock=false,brake_mode=false;
 
 //日常展示
 
@@ -1062,7 +1063,7 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
                         double forecast_final=secSpeed*secSpeed+5;
                         int forecast_final_point=((int)forecast_final)*10+1500;
                         static int BrakePoint=-1;
-                        static bool final_brake=false,final_brake_lock=false;
+                        static bool final_brake=false;
                         static double distance_to_end=1000;
                         if(PathPoint+forecast_final_point>gpsMapLine.size())
                         {                           
@@ -1081,6 +1082,7 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
                         {
                             final_brake=false;
                             final_brake_lock=false;
+                            brake_mode=false;
                             BrakePoint=-1;
                         }
                         if(final_brake==true){
@@ -1088,7 +1090,8 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
                                             minDecelerate=-0.7;
                                 }else{
                                             dSpeed=min(dSpeed, 3.0);
-                                            final_brake_lock=true;                                            
+                                            final_brake_lock=true;
+                                            brake_mode=true;
                                             if(distance_to_end<0.8){
                                                             minDecelerate=-0.7;
                                             }
@@ -1295,6 +1298,7 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
 
     //  dSpeed = getSpeed(gpsTraceNow);
     dSpeed =80;
+
     planTrace.clear();//Add By YuChuli, 2020.11.26
     for(int i=0;i<gpsTraceNow.size();i++){
         TracePoint pt(gpsTraceNow[i].x,gpsTraceNow[i].y);
@@ -1535,6 +1539,10 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
 //            dSpeed =gpsMapLine[PathPoint]->speed*3.6;
 //        }
     }
+    //givlog->debug("decition_brain","brake_mode: %d",brake_mode);
+    if(brake_mode==true){
+        dSpeed=min(dSpeed, 3.0);
+    }
 
     if(front_car_id>0){
         static bool brake_state=false;

+ 16 - 7
src/detection/detection_lidar_PointPillars_MultiHead/main.cpp

@@ -63,11 +63,13 @@ void GetLidarObj(std::vector<float> out_detections,std::vector<int> out_labels,
 {
     int i;
     int obj_size = out_detections.size()/kOutputNumBoxFeature;
-//    givlog->verbose("OBJ","object size is %d",obj_size);
+    //    givlog->verbose("OBJ","object size is %d",obj_size);
     for(i=0;i<obj_size;i++)
     {
-        if (out_scores.at(i) < 0.10) continue;
         iv::lidar::lidarobject lidarobj;
+        if (out_scores.at(i) < 0.12) continue;
+        if (out_labels.at(i) == 5) continue;
+
         lidarobj.set_tyaw(out_detections.at(i*7+6));
         iv::lidar::PointXYZ centroid;
         iv::lidar::PointXYZ * _centroid;
@@ -100,8 +102,13 @@ void GetLidarObj(std::vector<float> out_detections,std::vector<int> out_labels,
         position.set_z(out_detections.at(i*7+2));
         _position = lidarobj.mutable_position();
         _position->CopyFrom(position);
-
         lidarobj.set_mntype(out_labels.at(i));
+        // label 2  8
+        if(out_labels.at(i)==2){
+            lidarobj.set_mntype(8);
+        }else if(out_labels.at(i)==8){
+            lidarobj.set_mntype(2);
+        }
         lidarobj.set_score(out_scores.at(i));
         lidarobj.add_type_probs(out_scores.at(i));
 
@@ -111,6 +118,7 @@ void GetLidarObj(std::vector<float> out_detections,std::vector<int> out_labels,
         point_cloud.set_y(out_detections.at(i*7+1));
         point_cloud.set_z(out_detections.at(i*7+2));
         point_cloud.set_i(out_detections.at(out_labels.at(i)));
+
         _point_cloud = lidarobj.add_cloud();
         _point_cloud->CopyFrom(point_cloud);
 
@@ -122,6 +130,7 @@ void GetLidarObj(std::vector<float> out_detections,std::vector<int> out_labels,
         pld = lidarobj.mutable_dimensions();
         pld->CopyFrom(ld);
 
+        //        std::cout<<"x y z   :  "<<out_detections.at(i*7+3)<<"    "<< out_detections.at(i*7+4)<<"    "<<out_detections.at(i*7+5)<<std::endl;
         iv::lidar::lidarobject * po = lidarobjvec.add_obj();
         po->CopyFrom(lidarobj);
     }
@@ -328,8 +337,8 @@ int main(int argc, char *argv[])
 
        std::cout<<"use onnx model."<<std::endl;
     pPillars = new PointPillars(
-      0.1,
-      0.2,
+      0.15,
+      0.10,
       true,
       pfe_file,
       backbone_file,
@@ -340,8 +349,8 @@ int main(int argc, char *argv[])
     {
         std::cout<<"use engine mode."<<std::endl;
     pPillars = new PointPillars(
-      0.1,
-      0.2,
+      0.15,
+      0.10,
       false,
       pfe_trt_file,
       backbone_trt_file,

+ 2 - 1
src/detection/detection_lidar_cnn_segmentation/detection_lidar_cnn_segmentation.pro

@@ -49,7 +49,7 @@ LIBS += -lpcl_io -lpcl_common
 LIBS += -lboost_system  -lavutil  -lprotobuf -lcudnn
 
 
-unix:!macx: LIBS += -L$$PWD/../../../thirdpartylib/caffe -lcaffe -lcudnn
+unix:!macx: LIBS += -L$$PWD/../../../thirdpartylib/caffe/arm64 -lcaffe -lcudnn
 
 HEADERS += \
     cluster2d.h \
@@ -70,5 +70,6 @@ INCLUDEPATH += $$PWD/caffe/proto/
 }
 
 INCLUDEPATH += $$PWD/../../include/msgtype
+LIBS += -L/usr/lib/aarch64-linux-gnu/ -lglog
 
 

+ 259 - 0
src/driver/driver_can_nvidia_agx_new/canctrl.cpp

@@ -0,0 +1,259 @@
+#include "canctrl.h"
+
+#include <memory>
+
+canctrl * gc;
+static iv::canstate::canstate proCanSt;
+void Listencansend0(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
+{
+    iv::can::canmsg msg;
+
+    if(false == msg.ParseFromArray(strdata,nSize))
+    {
+        std::cout<<"Listencansend Parse fail."<<std::endl;
+        return;
+    }
+
+    gc->sendmsg(0,msg);
+
+}
+
+void Listencansend1(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
+{
+    iv::can::canmsg msg;
+
+    if(false == msg.ParseFromArray(strdata,nSize))
+    {
+        std::cout<<"Listencansend Parse fail."<<std::endl;
+        return;
+    }
+
+    gc->sendmsg(1,msg);
+
+}
+
+
+
+
+canctrl::canctrl(const char * strmemsend0,const char * strmemrecv0,const char * strmemsend1,const char * strmemrecv1,const char * strcan0name,const char * strcan1name)
+{
+
+    gc = this;
+
+    mparecv0 = iv::modulecomm::RegisterSend(strmemrecv0,100000,3);
+    mparecv1 = iv::modulecomm::RegisterSend(strmemrecv1,100000,3);
+    mpcanState = iv::modulecomm::RegisterSend("canstate",18,3);
+
+    mpasend0 = iv::modulecomm::RegisterRecv(strmemsend0,Listencansend0);
+    mpasend1 = iv::modulecomm::RegisterRecv(strmemsend1,Listencansend1);
+
+    mpcan = new nvcan(strcan0name,strcan1name);
+    mspcan.reset(mpcan);
+    connect(mpcan,SIGNAL(SIG_CANOPENSTATE(bool,int,const char*)),this,SLOT(onCANState(bool,int,const char*)));
+    mpcan->startdev();
+
+    mptheadstate = new std::thread(&canctrl::threadstate,this);
+}
+
+canctrl::~canctrl()
+{
+    mpcan->stopdev();
+
+    delete mpcan;
+
+    mbstaterun = false;
+    mptheadstate->join();
+
+    iv::modulecomm::Unregister(mpasend0);
+    iv::modulecomm::Unregister(mpcanState);
+    iv::modulecomm::Unregister(mparecv0);
+
+}
+
+void canctrl::threadstate()
+{
+    int ncount = 0;
+    while(mbstaterun)
+    {
+        std::this_thread::sleep_for(std::chrono::milliseconds(100));
+        ncount++;
+        if(ncount>=10)
+        {
+            ncount = 0;
+            proCanSt.set_b_canstate(true);
+            int nsize = proCanSt.ByteSize();
+            std::shared_ptr<char > strdata_ptr= std::shared_ptr<char>(new char[nsize]);
+            if(proCanSt.SerializeToArray(strdata_ptr.get(),nsize))
+            {
+                iv::modulecomm::ModuleSendMsg(mpcanState,strdata_ptr.get(),nsize);
+            }
+        }
+    }
+
+    std::cout<<"threadstate exit."<<std::endl;
+}
+
+void canctrl::run()
+{
+
+    QTime xTime;
+    xTime.start();
+    int nOldTime = xTime.elapsed();
+    int i;
+
+    while(!isInterruptionRequested())
+    {
+        if(mbCANOpen)
+        {
+            basecan_msg xmsg[2500];
+            int nRec1,nRec2,nSend1,nSend2;
+            if((nRec1 =mpcan->GetMessage(0,xmsg,2500))>0)
+            {
+                sharecanmsg(mparecv0,xmsg,nRec1,0);
+            }
+
+
+
+            nSend1 = 0;
+            nSend2 = 0;
+
+            msleep(5);
+        }
+        else
+        {
+
+            msleep(1);
+            mpcan->mivlog->error("%s open can card fail",__func__);
+
+            if(xTime.elapsed()>1000)
+            {
+                qDebug("Not Open CANCARD exceed 1 second. so exit program.");
+                exit(-1);
+            }
+        }
+//        mpcan->mfault->SetFaultState(0, 0, "ok");
+    }
+
+    qDebug("thread canctrl complete.");
+
+}
+
+void canctrl::onCANState(bool bCAN, int nR, const char *strres)
+{
+    mbCANOpen = bCAN;
+    mpcan->mivlog->info("can","canstate is %s ",strres);
+}
+
+void canctrl::sendmsg(int index, iv::can::canmsg xmsg)
+{
+
+    std::vector<basecan_msg> * psendmsgvector;
+    QMutex * pMutex;
+
+    if(index == 0)
+    {
+        pMutex = &mMutexcan1;
+        psendmsgvector = &msendmsgvector1;
+    }
+    else
+    {
+        if(index == 1)
+        {
+            pMutex = &mMutexcan2;
+            psendmsgvector = &msendmsgvector2;
+        }
+        else
+        {
+            std::cout<<" canctrl::sendmsg "<<" index error. index: "<<index<<std::endl;
+            return;
+        }
+    }
+
+
+    if((int)psendmsgvector->size() > SENDMSGBUFSIZE)
+    {
+        mpcan->mivlog->warn("sendmsg buf full");
+        return;
+    }
+
+
+    pMutex->lock();
+    if(psendmsgvector->size() > 1000)psendmsgvector->clear();
+    int i;
+    for(i=0;i<xmsg.rawmsg_size();i++)
+    {
+        basecan_msg sendmsg;
+        iv::can::canraw x;
+        x.CopyFrom(xmsg.rawmsg(i));
+        sendmsg.id = x.id();
+        sendmsg.isExtern = x.bext();
+        sendmsg.isRemote = x.bremote();
+        sendmsg.mSetTime = QDateTime::currentMSecsSinceEpoch();
+        int nlen = x.len();
+
+        if((nlen < 0) || (nlen > 8))
+        {
+            nlen = 0;
+            mpcan->mivlog->warn("sendmsg nlen err");
+            continue;
+ //           mpcan->mfault->SetFaultState(1, 0, "sendmsg nlen err");
+        }
+        sendmsg.nLen = nlen;
+        if(sendmsg.nLen > 0)
+        {
+            memcpy(sendmsg.data,x.data().data(),sendmsg.nLen);
+        }
+
+        psendmsgvector->push_back(sendmsg);
+    }
+    pMutex->unlock();
+
+    if(mbCANOpen)
+    {
+        pMutex->lock();
+        for(i=0;i<psendmsgvector->size();i++)
+        {
+            mpcan->SetMessage(index,&(psendmsgvector->at(i)));
+        }
+        psendmsgvector->clear();
+        pMutex->unlock();
+        mpcan->CmdSend();
+    }
+
+
+}
+
+void canctrl::sharecanmsg(void *xpa, basecan_msg * pxmsg,int ncount,int nch)
+{
+    iv::can::canmsg xmsg;
+
+    int i;
+    for(i=0;i<ncount;i++)
+    {
+        iv::can::canraw * praw = xmsg.add_rawmsg();
+        praw->set_id(pxmsg[i].id);
+        praw->set_data(pxmsg[i].data,8);
+        praw->set_bext(pxmsg[i].isExtern);
+        praw->set_bremote(pxmsg[i].isRemote);
+        praw->set_rectime(QDateTime::currentMSecsSinceEpoch());
+        praw->set_len(pxmsg[i].nLen);
+
+    }
+    xmsg.set_channel(nch);
+
+    xmsg.set_index(mindex[nch]);
+    mindex[nch]++;
+
+    int nsize = xmsg.ByteSize();
+    char * strdata = new char[xmsg.ByteSize()];
+    if(xmsg.SerializePartialToArray(strdata,nsize))
+    {
+        iv::modulecomm::ModuleSendMsg(xpa,strdata,nsize);
+    }
+    else
+    {
+        mpcan->mivlog->warn("canctrl::sharecanmsg serialize error");
+//        mpcan->mfault->SetFaultState(1, 0, "sharecanmsg serialize error");
+    }
+    delete strdata;
+}

+ 61 - 0
src/driver/driver_can_nvidia_agx_new/canctrl.h

@@ -0,0 +1,61 @@
+#ifndef CANCTRL_H
+#define CANCTRL_H
+
+#include <QThread>
+#include <QMutex>
+#include <memory>
+#include <QTimer>
+#include <array>
+#include <vector>
+#include <iostream>
+#include "nvcan.h"
+#include "modulecomm.h"
+#include "canmsg.pb.h"
+#include "canraw.pb.h"
+#include "canstate.pb.h"
+
+class canctrl : public QThread
+{
+    Q_OBJECT
+public:
+    canctrl(const char * strmemsend0,const char * strmemrecv0,const char * strmemsend1,const char * strmemrecv1,const char * strcan0name,const char * strcan1name);
+    ~canctrl();
+
+private slots:
+    void onCANState(bool bCAN,int nR,const char * strres);
+
+private:
+    void run();
+
+    basecan * mpcan;
+    std::shared_ptr<basecan> mspcan;
+    bool mbCANOpen = false;
+
+    std::vector<basecan_msg> msendmsgvector1;
+    std::vector<basecan_msg> msendmsgvector2;
+    const int SENDMSGBUFSIZE = 3000;
+
+    QMutex mMutexcan1;
+    QMutex mMutexcan2;
+
+    int mindex[2];
+
+    void * mpasend0,  * mparecv0,  *mpcanState;
+    void * mpasend1,  * mparecv1;
+
+public:
+    void sendmsg(int index,iv::can::canmsg xmsg);
+    void sharecanmsg(void * xpa,basecan_msg * pxmsg,int ncount,int nch);
+
+
+private:
+    void  threadstate();
+    std::thread * mptheadstate;
+    bool mbstaterun = true;
+
+
+
+
+};
+
+#endif // CANCTRL_H

+ 54 - 0
src/driver/driver_can_nvidia_agx_new/driver_can_nvidia_agx_new.pro

@@ -0,0 +1,54 @@
+QT -= gui
+
+QT += network xml dbus
+
+CONFIG += c++11 console
+CONFIG -= app_bundle
+
+QMAKE_LFLAGS += -no-pie
+
+DEFINES += NV
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which as been marked deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+!include(../../../include/common.pri ) {
+    error( "Couldn't find the common.pri file!" )
+}
+
+!include(../../../include/ivprotobuf.pri ) {
+    error( "Couldn't find the ivprotobuf.pri file!" )
+}
+
+
+DEFINES += TEST_PROG
+
+DEFINES += SEND_STAT
+
+INCLUDEPATH += $$PWD/../../include/base/driver/can
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
+
+SOURCES += main.cpp \
+    nvcan.cpp \
+    canctrl.cpp \
+    ../../include/msgtype/canmsg.pb.cc \
+    ../../include/msgtype/canraw.pb.cc \
+    ../../include/msgtype/canstate.pb.cc \
+    ../../include/base/driver/can/basecan.cpp
+
+HEADERS += \
+    nvcan.h \
+    canctrl.h \
+    ../../include/msgtype/canmsg.pb.h \
+    ../../include/msgtype/canraw.pb.h \
+    ../../include/msgtype/canstate.pb.h \
+    ../../include/base/driver/can/basecan.h
+
+

+ 159 - 0
src/driver/driver_can_nvidia_agx_new/main.cpp

@@ -0,0 +1,159 @@
+#include <QCoreApplication>
+#include <QObject>
+
+#include <signal.h>
+
+#include "nvcan.h"
+#include "canctrl.h"
+
+#include <unistd.h>
+
+#include <thread>
+#include <iostream>
+
+#include <xmlparam.h>
+
+#include "ivversion.h"
+#include "ivexit.h"
+#include <signal.h>
+
+
+static canctrl * gpcanctrl;
+
+void exitfunc()
+{
+    qDebug("enter exit func.");
+    gpcanctrl->requestInterruption();
+
+    QTime  xTime;
+    xTime.start();
+    while(xTime.elapsed()<1000)
+    {
+        if(gpcanctrl->isFinished())
+        {
+            qDebug("canctrl complete.");
+            delete gpcanctrl;
+            break;
+        }
+    }
+
+}
+
+void signal_handler(int sig)
+{
+    if(sig == SIGINT)
+    {
+        exitfunc();
+    }
+}
+
+#ifdef TEST_PROG
+void threadtest()
+{
+    return;
+    QTimer xTimer;
+    xTimer.setTimerType(Qt::PreciseTimer);
+    void * pa = iv::modulecomm::RegisterSend("cansend0",100000,100);
+    while(true)
+    {
+        iv::can::canmsg xmsg;
+        xmsg.set_channel(0);
+        xmsg.set_mstime(QDateTime::currentMSecsSinceEpoch());
+        xmsg.set_index(0);
+        int i;
+        for(i=0;i<8;i++)
+        {
+            iv::can::canraw * pcanraw = xmsg.add_rawmsg();
+            pcanraw->set_bext(false);
+            pcanraw->set_id(11);
+            pcanraw->set_bremote(false);
+            char xdata[8];
+            xdata[0] = 11;
+            pcanraw->set_data(xdata,8);
+            pcanraw->set_len(8);
+        }
+
+        int nbytesize = xmsg.ByteSize();
+        std::shared_ptr<char> str_ptr = std::shared_ptr<char>(new char[nbytesize]);
+        if(xmsg.SerializeToArray(str_ptr.get(),nbytesize))
+            iv::modulecomm::ModuleSendMsg(pa,str_ptr.get(),nbytesize);
+
+        std::this_thread::sleep_for(std::chrono::milliseconds(5));
+ //       std::this_thread::sleep_for(std::chrono::microseconds(50000));
+    }
+}
+
+void threadtest2()
+{
+    return;
+    QTimer xTimer;
+    xTimer.setTimerType(Qt::PreciseTimer);
+    void * pa = iv::modulecomm::RegisterSend("cansend1",100000,100);
+    while(true)
+    {
+        iv::can::canmsg xmsg;
+        xmsg.set_channel(1);
+        xmsg.set_mstime(QDateTime::currentMSecsSinceEpoch());
+        xmsg.set_index(0);
+        int i;
+        for(i=0;i<3;i++)
+        {
+            iv::can::canraw * pcanraw = xmsg.add_rawmsg();
+            pcanraw->set_bext(false);
+            pcanraw->set_id(11);
+            pcanraw->set_bremote(false);
+            char xdata[8];
+            xdata[0] = 11;
+            pcanraw->set_data(xdata,8);
+            pcanraw->set_len(8);
+        }
+
+        int nbytesize = xmsg.ByteSize();
+        std::shared_ptr<char> str_ptr = std::shared_ptr<char>(new char[nbytesize]);
+        if(xmsg.SerializeToArray(str_ptr.get(),nbytesize))
+            iv::modulecomm::ModuleSendMsg(pa,str_ptr.get(),nbytesize);
+
+        std::this_thread::sleep_for(std::chrono::milliseconds(50));
+ //       std::this_thread::sleep_for(std::chrono::microseconds(50000));
+    }
+}
+#endif
+
+
+int main(int argc, char *argv[])
+{
+    showversion("driver_can_nvidia_agx");
+    QCoreApplication a(argc, argv);
+
+
+    QString strpath = QCoreApplication::applicationDirPath();
+    if(argc < 2)
+        strpath = strpath + "/driver_can_socket.xml";
+    else
+        strpath = argv[1];
+    std::cout<<strpath.toStdString()<<std::endl;
+    iv::xmlparam::Xmlparam xp(strpath.toStdString());
+
+    std::string strmemsend0 = xp.GetParam("cansend0_agx","cansend0");
+    std::string strmemrecv0 = xp.GetParam("canrecv0_agx","canrecv0");
+    std::string strmemsend1 = xp.GetParam("cansend1_agx","cansend1");
+    std::string strmemrecv1 = xp.GetParam("canrecv1_agx","canrecv1");
+    std::string strcanname0 = xp.GetParam("canname0","can0");
+    std::string strcanname1 = xp.GetParam("canname1","can1");
+
+    gpcanctrl = new canctrl(strmemsend0.data(),strmemrecv0.data(),strmemsend1.data(),strmemrecv1.data(),strcanname0.data(),strcanname1.data());
+    gpcanctrl->start();
+
+    iv::ivexit::RegIVExitCall(exitfunc);
+
+    signal(SIGINT,signal_handler);
+
+#ifdef TEST_PROG
+    std::thread * pthread = new std::thread(threadtest);
+    pthread = new std::thread(threadtest2);
+#endif
+
+ //   std::thread b(func);
+
+    return a.exec();
+}

+ 525 - 0
src/driver/driver_can_nvidia_agx_new/nvcan.cpp

@@ -0,0 +1,525 @@
+#include "nvcan.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <string.h>
+#include <signal.h>
+#include <ctype.h>
+#include <libgen.h>
+#include <time.h>
+#include <errno.h>
+
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/ioctl.h>
+#include <sys/uio.h>
+#include <net/if.h>
+
+
+#include <linux/can.h>
+#include <linux/can/raw.h>
+
+#include <QDateTime>
+
+#include <iostream>
+#include  <thread>
+
+/* for hardware timestamps - since Linux 2.6.30 */
+#ifndef SO_TIMESTAMPING
+#define SO_TIMESTAMPING 37
+#endif
+
+/* from #include <linux/net_tstamp.h> - since Linux 2.6.30 */
+#define SOF_TIMESTAMPING_SOFTWARE (1<<4)
+#define SOF_TIMESTAMPING_RX_SOFTWARE (1<<3)
+#define SOF_TIMESTAMPING_RAW_HARDWARE (1<<6)
+
+#define MAXSOCK 16    /* max. number of CAN interfaces given on the cmdline */
+#define MAXIFNAMES 30 /* size of receive name index to omit ioctls */
+#define MAXCOL 6      /* number of different colors for colorized output */
+#define ANYDEV "any"  /* name of interface to receive from any CAN interface */
+#define ANL "\r\n"    /* newline in ASC mode */
+
+#define SILENT_INI 42 /* detect user setting on commandline */
+#define SILENT_OFF 0  /* no silent mode */
+#define SILENT_ANI 1  /* silent mode with animation */
+#define SILENT_ON  2  /* silent mode (completely silent) */
+
+#include <QTime>
+
+#define BUF_SIZE 1000
+
+std::string CANNAME[] = {"can0","can1"};
+
+nvcan::nvcan(const char * strcan0name,const char * strcan1name)
+{
+//    qDebug("nvcan");
+//    connect(this,SIGNAL(SIG_CANOPENSTATE(bool,int,const char*)),this,SLOT(onMsg(bool,int,const char*)));
+
+    CANNAME[0] = strcan0name;
+    CANNAME[1] = strcan1name;
+    mfault = new iv::Ivfault("can_agx");
+    mivlog = new iv::Ivlog("can_agx");
+
+
+    mfault->SetFaultState(0,0,"Prepare Initialize.");
+
+    QTimer * timer1 = new QTimer();
+    connect(timer1,SIGNAL(timeout()),this,SLOT(TimerSecond()));
+    timer1->start(1000);
+
+
+}
+
+int nvcan::ExecOpen(int &s, const char *strcanname)
+{
+    struct sockaddr_can addr;
+    struct ifreq ifr;
+    s = socket(PF_CAN, SOCK_RAW, CAN_RAW);
+    if (s < 0) {
+        mfault->SetFaultState(2,1,"Create Socket Error.");
+        emit SIG_CANOPENSTATE(false,-1,"Create Socket Error");
+        return -1;
+    }
+
+    addr.can_family = AF_CAN;
+
+    memset(&ifr.ifr_name, 0, sizeof(ifr.ifr_name));
+    strncpy(ifr.ifr_name, strcanname, IFNAMSIZ);
+
+    if (ioctl(s, SIOCGIFINDEX, &ifr) < 0) {
+        mfault->SetFaultState(2,2,"SIOCGIFINDEX.");
+        emit SIG_CANOPENSTATE(false,-2,"SIOCGIFINDEX");
+        return -2;
+    }
+    addr.can_ifindex = ifr.ifr_ifindex;
+
+    if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
+        mfault->SetFaultState(2,3,"bind error.");
+        emit SIG_CANOPENSTATE(false,-3,"bind error");
+        return -3;
+    }
+
+    return 0;
+}
+
+int nvcan::ExecRecv(int & s,fd_set & rdfs,int nch)
+{
+    char ctrlmsg[CMSG_SPACE(sizeof(struct timeval) + 3*sizeof(struct timespec) + sizeof(__u32))];
+    struct sockaddr_can addr;
+    struct timeval timeout_config = { 0, 0 };
+    timeout_config.tv_sec= 0;
+    timeout_config.tv_usec = 0;;
+    struct iovec iov;
+    struct msghdr msg;
+    struct canfd_frame frame;
+    int nbytes, i, maxdlen;
+
+    iov.iov_base = &frame;
+    msg.msg_name = &addr;
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+    msg.msg_control = &ctrlmsg;
+//    int ret = select(s, &rdfs, NULL, NULL, &timeout_config);
+//    if (ret < 0) {
+//        emit SIG_CANOPENSTATE(false,-4,"select error");
+//        mfault->SetFaultState(2,4,"select error.");
+//        std::cout<<"select error."<<std::endl;
+//        mbCANOpen = false;
+//        return 0;
+//    }
+
+//       std::cout<<"time: "<<QDateTime::currentMSecsSinceEpoch()<<" ret : "<<ret<<std::endl;
+
+    bool bRecv = false;
+
+    if (FD_ISSET(s, &rdfs)) {
+
+
+
+        /* these settings may be modified by recvmsg() */
+        iov.iov_len = sizeof(frame);
+        msg.msg_namelen = sizeof(addr);
+        msg.msg_controllen = sizeof(ctrlmsg);
+        msg.msg_flags = 0;
+
+        mMutexRW.lock();
+        nbytes = recvmsg(s, &msg, 0);
+        mMutexRW.unlock();
+
+ //       std::cout<<"nbytes: "<<nbytes<<std::endl;
+        if (nbytes < 0) {
+            //                   if ((errno == ENETDOWN) && !down_causes_exit) {
+            if ((errno == ENETDOWN)) {
+                mivlog->error("interface down" );
+                mfault->SetFaultState(1, 0, "interface down");
+                emit SIG_CANOPENSTATE(false,-5,"can card down");
+                //                   fprintf(stderr, "%s: interface down\n", CANNAME[i].data());
+                return -1;
+            }
+            return 0;
+            //                    perror("read");
+            //                    return 1;
+        }
+
+        if ((size_t)nbytes == CAN_MTU)
+            maxdlen = CAN_MAX_DLEN;
+        else if ((size_t)nbytes == CANFD_MTU)
+            maxdlen = CANFD_MAX_DLEN;
+        else {
+
+            mivlog->warn("read incomplete message");
+            return 0;
+        }
+
+        mMutexSecondCount.lock();
+        mnSecond_RecvCount[nch]++;
+        mMutexSecondCount.unlock();
+        bRecv = true;
+        mMutex.lock();
+
+        basecan_msg msg;
+        msg.id = frame.can_id&0x1fffffff;
+        if((frame.can_id&0x80000000)!= 0)msg.isExtern = true;
+        else msg.isExtern = false;
+        if((frame.can_id&0x40000000)!= 0)msg.isRemote = true;
+        else msg.isRemote = false;
+        msg.nLen = frame.len;
+        if((frame.len<9)&&(frame.len>0))memcpy(msg.data,frame.data,frame.len);
+        if(mMsgRecvBuf[i].size()<BUF_SIZE)
+        {
+            mMsgRecvBuf[i].push_back(msg);
+        }
+
+        mMutex.unlock();
+
+
+
+    }
+
+    if(bRecv == false)return 0;
+    return 1;
+
+}
+
+
+void nvcan::TimerSecond()
+{
+    qint64 xSecond_RecvCount[2];
+    qint64 xSecond_SendCount[2];
+    std::vector<qint64> xvectorsendlat[2];
+    qint64 xLatency[2];
+    qint64 xLatencyMax[2];
+    int i;
+
+    //Copy Data And Reset.
+    mMutexSecondCount.lock();
+    for(i=0;i<2;i++)
+    {
+        xSecond_RecvCount[i] = mnSecond_RecvCount[i];
+        xSecond_SendCount[i] = mnSecond_SendCount[i];
+        xvectorsendlat[i] = mvectorsendlat[i];
+        mnSecond_RecvCount[i] = 0;
+        mnSecond_SendCount[i] = 0;
+        mvectorsendlat[i].clear();
+    }
+    mMutexSecondCount.unlock();
+
+   //Calulate Average Latency And Maximum Latency
+    for(i=0;i<2;i++)
+    {
+        xLatency[i] = 0;
+        xLatencyMax[i] = 0;
+        int j;
+        for(j=0;j<((int)xvectorsendlat[i].size());j++)
+        {
+            qint64 xlat = xvectorsendlat[i].at(j);
+            xLatency[i] = xLatency[i] + xlat;
+            if(xlat > xLatencyMax[i])xLatencyMax[i] =xlat;
+        }
+        if(xvectorsendlat[i].size()  > 0)
+        {
+            xLatency[i] = xLatency[i]/xvectorsendlat[i].size();
+        }
+    }
+
+    //Print
+    std::cout<<"Second Count:"<<std::endl;
+    std::cout<<"       "<<"ch0 Recv Count: "<<xSecond_RecvCount[0]<<std::endl;
+    std::cout<<"       "<<"ch1 Recv Count: "<<xSecond_RecvCount[1]<<std::endl;
+    std::cout<<"       "<<"ch0 Send Count: "<<xSecond_SendCount[0]<<std::endl;
+    std::cout<<"       "<<"    Latency Max: "<<xLatencyMax[0]<<" Avg:"<<xLatency[0]<<std::endl;
+    std::cout<<"       "<<"ch1 Send Count: "<<xSecond_SendCount[1]<<std::endl;
+    std::cout<<"       "<<"    Latency Max: "<<xLatencyMax[1]<<" Avg:"<<xLatency[1]<<std::endl;
+
+
+}
+
+int nvcan::ExecSend(int * s,struct canfd_frame & framesend,int nch,qint64 xMsgSetTime)
+{
+    int nretry = 0;
+
+    bool bSend = false;
+    //write retry 5 times
+    while(nretry<5)
+    {
+        if (write(*s, &framesend,16) != 16) {
+            mivlog->error("write error 1");
+            nretry++;
+            perror("write error.");
+            std::this_thread::sleep_for(std::chrono::microseconds(100));
+        }
+        else
+        {
+            bSend = true;
+
+            qint64 nLat = QDateTime::currentMSecsSinceEpoch() - xMsgSetTime;
+            mMutexSecondCount.lock();
+            mnSecond_SendCount[nch]++;
+            mvectorsendlat[nch].push_back(nLat);
+            mMutexSecondCount.unlock();
+            break;
+        }
+
+    }
+    if(bSend)return 1;
+    return -1;
+
+}
+
+void nvcan::run()
+{
+
+    int currmax = 2;
+    fd_set rdfs;
+    int s[MAXSOCK];
+    int i;
+
+    mfault->SetFaultState(0,0,"Initializing.");
+    
+    for(i=0;i<currmax;i++)
+    {
+
+        if(ExecOpen(s[i],CANNAME[i].data()) != 0)
+        {
+            std::cout<<"Open CAN "<<CANNAME[i]<<" Fail"<<std::endl;
+            return;
+        }
+        continue;
+    }
+
+    mps = &s[0];
+    mbCANOpen = true;
+    mivlog->verbose("open can succesfully.");
+    mfault->SetFaultState(0,0,"CAN OK.");
+    emit SIG_CANOPENSTATE(true,0,"open can card successfully");
+
+    std::cout<<"can open succesfully."<<std::endl;
+
+
+    mbRunning = true;
+
+    bool bRecv;
+
+    struct timeval timeout_config = { 0, 0 };
+
+    while((!QThread::isInterruptionRequested())&&(mbCANOpen))
+    {
+        FD_ZERO(&rdfs);
+        for (i=0; i<currmax; i++)
+            FD_SET(s[i], &rdfs);
+
+
+        int ret = select(s[currmax-1]+1, &rdfs, NULL, NULL, &timeout_config);
+
+        bRecv = false;
+
+        int nrecv1 = ExecRecv(s[0],rdfs,0);
+        if(nrecv1 >0)bRecv = true;
+        else
+        {
+            if(nrecv1<0)std::cout<<"CAN Recv Error."<<std::endl;
+        }
+        int nrecv2 = ExecRecv(s[1],rdfs,1);
+        if(nrecv2 >0)bRecv = true;
+        else
+        {
+            if(nrecv2<0)std::cout<<"CAN Recv Error."<<std::endl;
+        }
+
+        if(bRecv)continue;
+
+        mWaitMutex.lock();
+        mwc.wait(&mWaitMutex,1);
+        mWaitMutex.unlock();
+
+        struct canfd_frame framesend[2500];
+        qint64 sendsettime[2500];
+
+        for(int nch =0;nch<currmax;nch++)
+        {
+            int nsend = 0;
+            mMutex.lock();
+            int nbufsize = mMsgSendBuf[nch].size();
+            if(nbufsize>2500)nbufsize = 2500;
+            for(i=0;i<nbufsize;i++)
+            {
+                if(i>=2500)break;
+                memcpy(framesend[i].data,mMsgSendBuf[nch].at(i).data,8);
+                framesend[i].can_id = mMsgSendBuf[nch].at(i).id;
+                if(mMsgSendBuf[nch].at(i).isExtern)
+                {
+                    framesend[i].can_id = framesend[i].can_id|0x80000000;
+                }
+                else
+                {
+                    framesend[i].can_id = framesend[i].can_id&0x7ff;
+                }
+                if(mMsgSendBuf[nch].at(i).isRemote)
+                {
+                    framesend[i].can_id= framesend[i].can_id|0x40000000;
+                }
+
+                framesend[i].len = mMsgSendBuf[nch].at(i).nLen;
+                sendsettime[i] = mMsgSendBuf[nch].at(i).mSetTime;
+
+                nsend++;
+            }
+            mMsgSendBuf[nch].clear();
+            mMutex.unlock();
+
+            if(nsend > 0)
+            {
+                for(i=0;i<nsend;i++)
+                {
+                    int nretry = 0;
+
+                    bool bSend = false;
+                    //write retry 5 times
+                    while(nretry<5)
+                    {
+                        if (write(s[nch], &framesend[i],16) != 16) {
+                            mivlog->error("write error 1");
+                            nretry++;
+                            perror("write error.");
+                            std::this_thread::sleep_for(std::chrono::microseconds(100));
+                        }
+                        else
+                        {
+                            bSend = true;
+
+                            qint64 nLat = QDateTime::currentMSecsSinceEpoch() - sendsettime[i];
+                            mMutexSecondCount.lock();
+                            mnSecond_SendCount[nch]++;
+                            mvectorsendlat[nch].push_back(nLat);
+                            mMutexSecondCount.unlock();
+                            break;
+                        }
+
+                    }
+  //                  std::cout<<" i "<<i<<" send "<<std::endl;
+  //                  ExecSend(&(s[nch]),framesend[i],nch,sendsettime[i]);
+                }
+            }
+
+
+        }
+
+
+
+    }
+
+    for (i=0; i<currmax; i++)
+    {
+        close(s[i]);
+    }
+    qDebug("nvcan thread close.");
+    mbRunning = false;
+}
+
+void nvcan::startdev()
+{
+    start();
+}
+
+void nvcan::stopdev()
+{
+    requestInterruption();
+    QTime xTime;
+    xTime.start();
+    while(xTime.elapsed()<100)
+    {
+        if(mbRunning == false)
+        {
+            mfault->SetFaultState(1, 0, "can closed");
+            mivlog->error("can is closed at %d",xTime.elapsed());
+            qDebug("can is closed.");
+            break;
+        }
+    }
+}
+
+int nvcan::GetMessage(const int nch,basecan_msg *pMsg, const int nCap)
+{
+    if((nch>1)||(nch < 0))return -1;
+    if(mMsgRecvBuf[nch].size() == 0)return 0;
+
+    int nRtn;
+    nRtn = nCap;
+    mMutex.lock();
+    if(nRtn > mMsgRecvBuf[nch].size())nRtn = mMsgRecvBuf[nch].size();
+    int i;
+    for(i=0;i<nRtn;i++)
+    {
+        memcpy(&pMsg[i],&(mMsgRecvBuf[nch].at(i)),sizeof(basecan_msg));
+    }
+
+    std::vector<basecan_msg>::iterator iter;
+    iter = mMsgRecvBuf[nch].begin();
+    for(i=0;i<nRtn;i++)
+    {
+        iter = mMsgRecvBuf[nch].erase(iter);
+    }
+
+    mMutex.unlock();
+
+    return nRtn;
+
+}
+
+int nvcan::SetMessage(const int nch, basecan_msg *pMsg)
+{
+    if((nch>1)||(nch < 0))return -1;
+
+    mMutex.lock();
+    if(mMsgSendBuf[nch].size() > BUF_SIZE)
+    {
+        std::cout<<"buffer full."<<std::endl;
+        mMutex.unlock();
+        return -2;
+    }
+
+    if(mMsgRecvBuf[nch].size() > 100)
+    {
+        std::cout<<"buffer data more 100"<<std::endl;
+    }
+
+
+    mMsgSendBuf[nch].push_back(*pMsg);
+    mMutex.unlock();
+    return 0;
+}
+
+void nvcan::CmdSend()
+{
+    mwc.wakeAll();
+}
+
+void nvcan::onMsg(bool bCAN, int nR, const char *strres)
+{
+    mivlog->verbose("msg is %s ",strres);
+}
+

+ 75 - 0
src/driver/driver_can_nvidia_agx_new/nvcan.h

@@ -0,0 +1,75 @@
+#ifndef NVCAN_H
+#define NVCAN_H
+#include "basecan.h"
+
+#include <vector>
+#include <QMutex>
+
+#include <thread>
+
+#include <QWaitCondition>
+#include <QMutex>
+#include <QTimer>
+
+class nvcan : public basecan
+{
+    Q_OBJECT
+public:
+    nvcan(const char * strcan0name,const char * strcan1name);
+public:
+    void startdev();
+    void stopdev();
+
+    int GetMessage(const int nch,basecan_msg * pMsg,const int nCap);
+    int SetMessage(const int nch,basecan_msg * pMsg);
+
+    virtual void CmdSend();
+
+private slots:
+    void onMsg(bool bCAN,int nR,const char * strres);
+
+    void TimerSecond();
+
+private:
+    void run();
+    int * mps = 0;
+
+
+    std::vector<basecan_msg> mMsgRecvBuf[2];
+
+    std::vector<basecan_msg> mMsgSendBuf[2];
+
+    QMutex mMutex;
+
+    bool mbCANOpen = false;
+    bool mbRunning = false;
+    int mnDevNum;
+
+private:
+    bool mbSendRun = true;
+
+    QWaitCondition mwc;
+    QMutex mWaitMutex;
+
+    std::thread * mpsendthread;
+
+    QMutex mMutexRW;
+
+private:
+
+    int mnSecond_RecvCount[2];
+    int mnSecond_SendCount[2];
+
+    std::vector<qint64> mvectorsendlat[2];
+
+    QMutex mMutexSecondCount;
+
+private:
+    int ExecOpen(int & s,const char * strcanname);
+    int ExecRecv(int & s,fd_set & rdfs,int nch);
+    int ExecSend(int * s ,struct canfd_frame & framesend,int nch,qint64 xMsgSetTime);
+
+
+};
+
+#endif // NVCAN_H

+ 229 - 0
src/driver/driver_can_socket/canctrl.cpp

@@ -0,0 +1,229 @@
+#include "canctrl.h"
+
+#include <memory>
+
+canctrl * gc;
+static iv::canstate::canstate proCanSt;
+void Listencansend0(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
+{
+    iv::can::canmsg msg;
+
+    if(false == msg.ParseFromArray(strdata,nSize))
+    {
+        std::cout<<"Listencansend Parse fail."<<std::endl;
+        return;
+    }
+
+    gc->sendmsg(0,msg);
+
+}
+
+
+
+
+canctrl::canctrl(const char * strmemsend0,const char * strmemrecv0,const char * strcansend)
+{
+
+    gc = this;
+
+    mparecv0 = iv::modulecomm::RegisterSend(strmemrecv0,100000,3);
+    mpcanState = iv::modulecomm::RegisterSend("canstate",18,3);
+
+    mpasend0 = iv::modulecomm::RegisterRecv(strmemsend0,Listencansend0);
+
+    mpcan = new nvcan(strcansend);
+    mspcan.reset(mpcan);
+    connect(mpcan,SIGNAL(SIG_CANOPENSTATE(bool,int,const char*)),this,SLOT(onCANState(bool,int,const char*)));
+    mpcan->startdev();
+
+    mptheadstate = new std::thread(&canctrl::threadstate,this);
+}
+
+canctrl::~canctrl()
+{
+    mpcan->stopdev();
+
+    delete mpcan;
+
+    mbstaterun = false;
+    mptheadstate->join();
+
+    iv::modulecomm::Unregister(mpasend0);
+    iv::modulecomm::Unregister(mpcanState);
+    iv::modulecomm::Unregister(mparecv0);
+
+}
+
+void canctrl::threadstate()
+{
+    int ncount = 0;
+    while(mbstaterun)
+    {
+        std::this_thread::sleep_for(std::chrono::milliseconds(100));
+        ncount++;
+        if(ncount>=10)
+        {
+            ncount = 0;
+            proCanSt.set_b_canstate(true);
+            int nsize = proCanSt.ByteSize();
+            std::shared_ptr<char > strdata_ptr= std::shared_ptr<char>(new char[nsize]);
+            if(proCanSt.SerializeToArray(strdata_ptr.get(),nsize))
+            {
+                iv::modulecomm::ModuleSendMsg(mpcanState,strdata_ptr.get(),nsize);
+            }
+        }
+    }
+
+    std::cout<<"threadstate exit."<<std::endl;
+}
+
+void canctrl::run()
+{
+
+    QTime xTime;
+    xTime.start();
+    int nOldTime = xTime.elapsed();
+    int i;
+
+    while(!isInterruptionRequested())
+    {
+        if(mbCANOpen)
+        {
+            basecan_msg xmsg[2500];
+            int nRec1,nRec2,nSend1,nSend2;
+            if((nRec1 =mpcan->GetMessage(0,xmsg,2500))>0)
+            {
+                sharecanmsg(mparecv0,xmsg,nRec1,0);
+            }
+
+
+
+            nSend1 = 0;
+            nSend2 = 0;
+
+            msleep(1);
+        }
+        else
+        {
+
+            msleep(1);
+            mpcan->mivlog->error("%s open can card fail",__func__);
+
+            if(xTime.elapsed()>1000)
+            {
+                qDebug("Not Open CANCARD exceed 1 second. so exit program.");
+                exit(-1);
+            }
+        }
+//        mpcan->mfault->SetFaultState(0, 0, "ok");
+    }
+
+    qDebug("thread canctrl complete.");
+
+}
+
+void canctrl::onCANState(bool bCAN, int nR, const char *strres)
+{
+    mbCANOpen = bCAN;
+    mpcan->mivlog->info("can","canstate is %s ",strres);
+}
+
+void canctrl::sendmsg(int index, iv::can::canmsg xmsg)
+{
+
+    std::vector<basecan_msg> * psendmsgvector;
+    QMutex * pMutex;
+
+    pMutex = &mMutexcan1;
+    psendmsgvector = &msendmsgvector1;
+
+
+    if(psendmsgvector->size() > SENDMSGBUFSIZE)
+    {
+        mpcan->mivlog->warn("sendmsg buf full");
+        return;
+    }
+
+
+    pMutex->lock();
+    if(psendmsgvector->size() > 1000)psendmsgvector->clear();
+    int i;
+    for(i=0;i<xmsg.rawmsg_size();i++)
+    {
+        basecan_msg sendmsg;
+        iv::can::canraw x;
+        x.CopyFrom(xmsg.rawmsg(i));
+        sendmsg.id = x.id();
+        sendmsg.isExtern = x.bext();
+        sendmsg.isRemote = x.bremote();
+#ifdef SEND_STAT
+        sendmsg.mSetTime = QDateTime::currentMSecsSinceEpoch();
+#endif
+        int nlen = x.len();
+
+        if((nlen < 0) || (nlen > 8))
+        {
+            nlen = 0;
+            mpcan->mivlog->warn("sendmsg nlen err");
+            continue;
+ //           mpcan->mfault->SetFaultState(1, 0, "sendmsg nlen err");
+        }
+        sendmsg.nLen = nlen;
+        if(sendmsg.nLen > 0)
+        {
+            memcpy(sendmsg.data,x.data().data(),sendmsg.nLen);
+        }
+
+        psendmsgvector->push_back(sendmsg);
+    }
+    pMutex->unlock();
+
+    if(mbCANOpen)
+    {
+        mMutexcan1.lock();
+        for(i=0;i<msendmsgvector1.size();i++)
+        {
+            mpcan->SetMessage(0,&(msendmsgvector1.at(i)));
+        }
+        msendmsgvector1.clear();
+        mMutexcan1.unlock();
+        mpcan->CmdSend();
+    }
+
+
+}
+
+void canctrl::sharecanmsg(void *xpa, basecan_msg * pxmsg,int ncount,int nch)
+{
+    iv::can::canmsg xmsg;
+
+    int i;
+    for(i=0;i<ncount;i++)
+    {
+        iv::can::canraw * praw = xmsg.add_rawmsg();
+        praw->set_id(pxmsg[i].id);
+        praw->set_data(pxmsg[i].data,8);
+        praw->set_bext(pxmsg[i].isExtern);
+        praw->set_bremote(pxmsg[i].isRemote);
+        praw->set_rectime(QDateTime::currentMSecsSinceEpoch());
+        praw->set_len(pxmsg[i].nLen);
+
+    }
+    xmsg.set_channel(nch);
+
+    xmsg.set_index(mindex[nch]);
+    mindex[nch]++;
+
+    int nsize = xmsg.ByteSize();
+    char * strdata = new char[xmsg.ByteSize()];
+    if(xmsg.SerializePartialToArray(strdata,nsize))
+    {
+        iv::modulecomm::ModuleSendMsg(xpa,strdata,nsize);
+    }
+    else
+    {
+        mpcan->mivlog->warn("canctrl::sharecanmsg serialize error");
+//        mpcan->mfault->SetFaultState(1, 0, "sharecanmsg serialize error");
+    }
+    delete strdata;
+}

+ 58 - 0
src/driver/driver_can_socket/canctrl.h

@@ -0,0 +1,58 @@
+#ifndef CANCTRL_H
+#define CANCTRL_H
+
+#include <QThread>
+#include <QMutex>
+#include <memory>
+#include <QTimer>
+#include <array>
+#include <vector>
+#include <iostream>
+#include "nvcan.h"
+#include "modulecomm.h"
+#include "canmsg.pb.h"
+#include "canraw.pb.h"
+#include "canstate.pb.h"
+
+class canctrl : public QThread
+{
+    Q_OBJECT
+public:
+    canctrl(const char * strmemsend0,const char * strmemrecv0,const char * strcanname);
+    ~canctrl();
+
+private slots:
+    void onCANState(bool bCAN,int nR,const char * strres);
+
+private:
+    void run();
+
+    basecan * mpcan;
+    std::shared_ptr<basecan> mspcan;
+    bool mbCANOpen = false;
+
+    std::vector<basecan_msg> msendmsgvector1;
+    const int SENDMSGBUFSIZE = 3000;
+
+    QMutex mMutexcan1;
+
+    int mindex[2];
+
+    void * mpasend0,  * mparecv0,  *mpcanState;
+
+public:
+    void sendmsg(int index,iv::can::canmsg xmsg);
+    void sharecanmsg(void * xpa,basecan_msg * pxmsg,int ncount,int nch);
+
+
+private:
+    void  threadstate();
+    std::thread * mptheadstate;
+    bool mbstaterun = true;
+
+
+
+
+};
+
+#endif // CANCTRL_H

+ 54 - 0
src/driver/driver_can_socket/driver_can_socket.pro

@@ -0,0 +1,54 @@
+QT -= gui
+
+QT += network xml dbus
+
+CONFIG += c++11 console
+CONFIG -= app_bundle
+
+QMAKE_LFLAGS += -no-pie
+
+DEFINES += NV
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which as been marked deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+!include(../../../include/common.pri ) {
+    error( "Couldn't find the common.pri file!" )
+}
+
+!include(../../../include/ivprotobuf.pri ) {
+    error( "Couldn't find the ivprotobuf.pri file!" )
+}
+
+
+#DEFINES += TEST_PROG
+
+DEFINES += SEND_STAT
+
+INCLUDEPATH += $$PWD/../../include/base/driver/can
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
+
+SOURCES += main.cpp \
+    nvcan.cpp \
+    canctrl.cpp \
+    ../../include/msgtype/canmsg.pb.cc \
+    ../../include/msgtype/canraw.pb.cc \
+    ../../include/msgtype/canstate.pb.cc \
+    ../../include/base/driver/can/basecan.cpp
+
+HEADERS += \
+    nvcan.h \
+    canctrl.h \
+    ../../include/msgtype/canmsg.pb.h \
+    ../../include/msgtype/canraw.pb.h \
+    ../../include/msgtype/canstate.pb.h \
+    ../../include/base/driver/can/basecan.h
+
+

+ 120 - 0
src/driver/driver_can_socket/main.cpp

@@ -0,0 +1,120 @@
+#include <QCoreApplication>
+#include <QObject>
+
+#include <signal.h>
+
+#include "nvcan.h"
+#include "canctrl.h"
+
+#include <unistd.h>
+
+#include <thread>
+#include <iostream>
+
+#include <xmlparam.h>
+
+#include "ivversion.h"
+#include "ivexit.h"
+#include <signal.h>
+
+
+static canctrl * gpcanctrl;
+
+void exitfunc()
+{
+    qDebug("enter exit func.");
+    gpcanctrl->requestInterruption();
+
+    QTime  xTime;
+    xTime.start();
+    while(xTime.elapsed()<1000)
+    {
+        if(gpcanctrl->isFinished())
+        {
+            qDebug("canctrl complete.");
+            delete gpcanctrl;
+            break;
+        }
+    }
+
+}
+
+void signal_handler(int sig)
+{
+    if(sig == SIGINT)
+    {
+        exitfunc();
+    }
+}
+
+#ifdef TEST_PROG
+void threadtest()
+{
+    QTimer xTimer;
+    xTimer.setTimerType(Qt::PreciseTimer);
+    void * pa = iv::modulecomm::RegisterSend("cansend0",100000,100);
+    return;
+    while(true)
+    {
+        iv::can::canmsg xmsg;
+        xmsg.set_channel(0);
+        xmsg.set_mstime(QDateTime::currentMSecsSinceEpoch());
+        xmsg.set_index(0);
+        int i;
+        for(i=0;i<10;i++)
+        {
+            iv::can::canraw * pcanraw = xmsg.add_rawmsg();
+            pcanraw->set_bext(false);
+            pcanraw->set_id(11);
+            pcanraw->set_bremote(false);
+            char xdata[8];
+            xdata[0] = 11;
+            pcanraw->set_data(xdata,8);
+            pcanraw->set_len(8);
+        }
+
+        int nbytesize = xmsg.ByteSize();
+        std::shared_ptr<char> str_ptr = std::shared_ptr<char>(new char[nbytesize]);
+        if(xmsg.SerializeToArray(str_ptr.get(),nbytesize))
+            iv::modulecomm::ModuleSendMsg(pa,str_ptr.get(),nbytesize);
+
+        std::this_thread::sleep_for(std::chrono::milliseconds(5));
+ //       std::this_thread::sleep_for(std::chrono::microseconds(50000));
+    }
+}
+#endif
+
+
+int main(int argc, char *argv[])
+{
+    showversion("driver_can_nvidia_agx");
+    QCoreApplication a(argc, argv);
+
+
+    QString strpath = QCoreApplication::applicationDirPath();
+    if(argc < 2)
+        strpath = strpath + "/driver_can_socket.xml";
+    else
+        strpath = argv[1];
+    std::cout<<strpath.toStdString()<<std::endl;
+    iv::xmlparam::Xmlparam xp(strpath.toStdString());
+
+    std::string strmemsend0 = xp.GetParam("cansend0_agx","cansend1");
+    std::string strmemrecv0 = xp.GetParam("canrecv0_agx","canrecv1");
+    std::string strcanname = xp.GetParam("canname","can1");
+
+    gpcanctrl = new canctrl(strmemsend0.data(),strmemrecv0.data(),strcanname.data());
+    gpcanctrl->start();
+
+    iv::ivexit::RegIVExitCall(exitfunc);
+
+    signal(SIGINT,signal_handler);
+
+#ifdef TEST_PROG
+    std::thread * pthread = new std::thread(threadtest);
+#endif
+
+ //   std::thread b(func);
+
+    return a.exec();
+}

+ 684 - 0
src/driver/driver_can_socket/nvcan.cpp

@@ -0,0 +1,684 @@
+#include "nvcan.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <string.h>
+#include <signal.h>
+#include <ctype.h>
+#include <libgen.h>
+#include <time.h>
+#include <errno.h>
+
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/ioctl.h>
+#include <sys/uio.h>
+#include <net/if.h>
+
+
+#include <linux/can.h>
+#include <linux/can/raw.h>
+
+#include <QDateTime>
+
+#include <iostream>
+#include  <thread>
+
+/* for hardware timestamps - since Linux 2.6.30 */
+#ifndef SO_TIMESTAMPING
+#define SO_TIMESTAMPING 37
+#endif
+
+/* from #include <linux/net_tstamp.h> - since Linux 2.6.30 */
+#define SOF_TIMESTAMPING_SOFTWARE (1<<4)
+#define SOF_TIMESTAMPING_RX_SOFTWARE (1<<3)
+#define SOF_TIMESTAMPING_RAW_HARDWARE (1<<6)
+
+#define MAXSOCK 16    /* max. number of CAN interfaces given on the cmdline */
+#define MAXIFNAMES 30 /* size of receive name index to omit ioctls */
+#define MAXCOL 6      /* number of different colors for colorized output */
+#define ANYDEV "any"  /* name of interface to receive from any CAN interface */
+#define ANL "\r\n"    /* newline in ASC mode */
+
+#define SILENT_INI 42 /* detect user setting on commandline */
+#define SILENT_OFF 0  /* no silent mode */
+#define SILENT_ANI 1  /* silent mode with animation */
+#define SILENT_ON  2  /* silent mode (completely silent) */
+
+#include <QTime>
+
+#define BUF_SIZE 1000
+
+std::string CANNAME[] = {"can0","can1"};
+
+nvcan::nvcan(const char * strcanname)
+{
+//    qDebug("nvcan");
+//    connect(this,SIGNAL(SIG_CANOPENSTATE(bool,int,const char*)),this,SLOT(onMsg(bool,int,const char*)));
+
+    CANNAME[0] = strcanname;
+    mfault = new iv::Ivfault("can_socket");
+    mivlog = new iv::Ivlog("can_socket");
+
+
+    mfault->SetFaultState(0,0,"Prepare Initialize.");
+
+    mpsendthread = new std::thread(&nvcan::threadsend,this);
+
+
+}
+
+void nvcan::ExecRecv(int s)
+{
+
+}
+
+void nvcan::run()
+{
+
+    int currmax = 1;
+    fd_set rdfs;
+    int s[MAXSOCK];
+    int ret;
+    
+    struct sockaddr_can addr;
+    char ctrlmsg[CMSG_SPACE(sizeof(struct timeval) + 3*sizeof(struct timespec) + sizeof(__u32))];
+    struct iovec iov;
+    struct msghdr msg;
+    struct canfd_frame frame;
+    int nbytes, i, maxdlen;
+    struct ifreq ifr;
+    struct timeval tv, last_tv;
+    struct timeval timeout_config = { 0, 0 }, *timeout_current = 0;
+
+    mfault->SetFaultState(0,0,"Initializing.");
+    
+    for(i=0;i<currmax;i++)
+    {
+        s[i] = socket(PF_CAN, SOCK_RAW, CAN_RAW);
+        if (s[i] < 0) {
+            mfault->SetFaultState(2,1,"Create Socket Error.");
+            emit SIG_CANOPENSTATE(false,-1,"Create Socket Error");
+            return;
+        }
+
+        addr.can_family = AF_CAN;
+
+        memset(&ifr.ifr_name, 0, sizeof(ifr.ifr_name));
+        strncpy(ifr.ifr_name, CANNAME[i].data(), 5);
+
+        if (ioctl(s[i], SIOCGIFINDEX, &ifr) < 0) {
+            mfault->SetFaultState(2,2,"SIOCGIFINDEX.");
+            emit SIG_CANOPENSTATE(false,-2,"SIOCGIFINDEX");
+            return;
+        }
+        addr.can_ifindex = ifr.ifr_ifindex;
+
+        if (bind(s[i], (struct sockaddr *)&addr, sizeof(addr)) < 0) {
+            mfault->SetFaultState(2,3,"bind error.");
+            emit SIG_CANOPENSTATE(false,-3,"bind error");
+            return;
+        }
+    }
+
+    mps = &s[0];
+    mbCANOpen = true;
+    mivlog->verbose("open can succesfully.");
+    mfault->SetFaultState(0,0,"CAN OK.");
+    emit SIG_CANOPENSTATE(true,0,"open can card successfully");
+
+    std::cout<<"can open succesfully."<<std::endl;
+
+    iov.iov_base = &frame;
+    msg.msg_name = &addr;
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+    msg.msg_control = &ctrlmsg;
+
+    qint64 nLastRecv = QDateTime::currentMSecsSinceEpoch();
+    int nRecvState = 0; // 0 Have Data  1 No Data;
+
+    mbRunning = true;
+
+    int nrecvcount = 0;
+
+    qint64 nlastsecond = 0;
+    int nsecondrecvcount = 0;
+
+    qint64 nLastSecond = 0;
+    int nsecondsend = 0;
+    int nretry = 0;
+#ifdef SEND_STAT
+    std::vector<qint64> xvectorlat;
+#endif
+    int secondretrycount = 0;
+
+    while((!QThread::isInterruptionRequested())&&(mbCANOpen))
+    {
+        FD_ZERO(&rdfs);
+        for (i=0; i<currmax; i++)
+            FD_SET(s[i], &rdfs);
+
+        if (timeout_current)
+            *timeout_current = timeout_config;
+
+        timeout_config.tv_sec= 0;
+        timeout_config.tv_usec = 0;;
+        timeout_current = &timeout_config;
+        ret = select(s[currmax-1]+1, &rdfs, NULL, NULL, timeout_current);
+        if (ret < 0) {
+            emit SIG_CANOPENSTATE(false,-4,"select error");
+            mfault->SetFaultState(2,4,"select error.");
+            std::cout<<"select error."<<std::endl;
+            mbCANOpen = false;
+            continue;
+        }
+
+ //       std::cout<<"time: "<<QDateTime::currentMSecsSinceEpoch()<<" ret : "<<ret<<std::endl;
+
+        bool bRecv = false;
+        for (i=0; i<currmax; i++) {  /* check all CAN RAW sockets */
+
+            if (FD_ISSET(s[i], &rdfs)) {
+
+                nLastRecv = QDateTime::currentMSecsSinceEpoch();
+                /* these settings may be modified by recvmsg() */
+                iov.iov_len = sizeof(frame);
+                msg.msg_namelen = sizeof(addr);
+                msg.msg_controllen = sizeof(ctrlmsg);
+                msg.msg_flags = 0;
+
+                mMutexRW.lock();
+                nbytes = recvmsg(s[i], &msg, 0);
+                mMutexRW.unlock();
+
+                if (nbytes < 0) {
+ //                   if ((errno == ENETDOWN) && !down_causes_exit) {
+                    if ((errno == ENETDOWN)) {
+                        mivlog->error("%s interface down", CANNAME[i].data());
+                        mfault->SetFaultState(1, 0, "interface down");
+                        emit SIG_CANOPENSTATE(false,-5,"can card down");
+                        fprintf(stderr, "%s: interface down\n", CANNAME[i].data());
+                        return;
+                    }
+                    continue;
+//                    perror("read");
+//                    return 1;
+                }
+
+                if ((size_t)nbytes == CAN_MTU)
+                    maxdlen = CAN_MAX_DLEN;
+                else if ((size_t)nbytes == CANFD_MTU)
+                    maxdlen = CANFD_MAX_DLEN;
+                else {
+                    std::cout<<"read incomplate message."<<std::endl;
+                    mivlog->warn("read incomplete message");
+                    continue;
+                }
+
+                bRecv = true;
+                nrecvcount++;
+ //               qDebug("receive msg.");
+                mMutex.lock();
+
+                basecan_msg msg;
+                msg.id = frame.can_id&0x1fffffff;
+                if((frame.can_id&0x80000000)!= 0)msg.isExtern = true;
+                else msg.isExtern = false;
+                if((frame.can_id&0x40000000)!= 0)msg.isRemote = true;
+                else msg.isRemote = false;
+                msg.nLen = frame.len;
+                nsecondrecvcount++;
+                if((frame.len<9)&&(frame.len>0))memcpy(msg.data,frame.data,frame.len);
+                if(mMsgRecvBuf[i].size()<BUF_SIZE)
+                {
+                    mMsgRecvBuf[i].push_back(msg);
+                }
+
+                mMutex.unlock();
+
+
+
+            }
+        }
+
+        qint64 nsecondnow = QDateTime::currentSecsSinceEpoch();
+        if(nlastsecond != nsecondnow)
+        {
+            nlastsecond = nsecondnow;
+            std::cout<<"second recv count:"<<nsecondrecvcount<<std::endl;
+            nsecondrecvcount = 0;
+        }
+
+        if((QDateTime::currentMSecsSinceEpoch() - nLastRecv)> 1000)
+        {
+            if(nRecvState == 0)
+            {
+                nRecvState = -1;
+                mfault->SetFaultState(0,1,"More than 1 second not receive data.");
+            }
+        }
+        else
+        {
+            if(nRecvState == -1)
+            {
+                nRecvState = 0;
+                mfault->SetFaultState(0,0,"CAN OK.");
+            }
+        }
+
+        if(bRecv)continue;
+
+
+        mWaitMutex.lock();
+        mwc.wait(&mWaitMutex,1);
+        mWaitMutex.unlock();
+
+#ifdef TEST_PROG
+ //       qDebug("send time : %lld",QDateTime::currentMSecsSinceEpoch());
+#endif
+
+        struct canfd_frame framesend[2500];
+#ifdef SEND_STAT
+        qint64 sendsettime[2500];
+#endif
+
+        for(int nch =0;nch<currmax;nch++)
+        {
+            int nsend = 0;
+            mMutex.lock();
+            int nbufsize = mMsgSendBuf[nch].size();
+            if(nbufsize>2500)nbufsize = 2500;
+            for(i=0;i<nbufsize;i++)
+            {
+                if(i>=2500)break;
+                memcpy(framesend[i].data,mMsgSendBuf[nch].at(i).data,8);
+                framesend[i].can_id = mMsgSendBuf[nch].at(i).id;
+                if(mMsgSendBuf[nch].at(i).isExtern)
+                {
+                    framesend[i].can_id = framesend[i].can_id|0x80000000;
+                }
+                else
+                {
+                    framesend[i].can_id = framesend[i].can_id&0x7ff;
+                }
+                if(mMsgSendBuf[nch].at(i).isRemote)
+                {
+                    framesend[i].can_id= framesend[i].can_id|0x40000000;
+                }
+
+                framesend[i].len = mMsgSendBuf[nch].at(i).nLen;
+#ifdef SEND_STAT
+                sendsettime[i] = mMsgSendBuf[nch].at(i).mSetTime;
+#endif
+
+                nsend++;
+            }
+            mMsgSendBuf[nch].clear();
+            mMutex.unlock();
+
+            if(nsend > 0)
+            {
+                for(i=0;i<nsend;i++)
+                {
+                    mMutexRW.lock();
+
+                    if (write(mps[nch], &framesend[i],16) != 16) {
+                        mMutexRW.unlock();
+                        mivlog->error("write error 1");
+ //                       perror("write error 1.");
+
+                        nretry++;
+                        secondretrycount++;
+                        if(nretry > 5)
+                        {
+ //                           std::cout<<"retry fail,retry:"<<nretry<<std::endl;
+                        }
+                        else
+                        {
+
+
+                        }
+                        if(nretry < 5)
+                        {
+                            i--;
+                        }
+                        else
+                        {
+                            nretry = 0;
+//                            std::cout<<"retry more than 100. drop this message."<<std::endl;
+                        }
+                         std::this_thread::sleep_for(std::chrono::microseconds(100));
+ //                       std::cout<<"retry send."<<std::endl;
+                        continue;
+                    }
+                    else
+                    {
+                        mMutexRW.unlock();
+#ifdef SEND_STAT
+                        qint64 nnowms = QDateTime::currentMSecsSinceEpoch();
+                        qint64 nlat = nnowms - sendsettime[i];
+                        xvectorlat.push_back(nlat);
+                        nretry = 0;
+                        nsecondsend++;
+#endif
+                    }
+                }
+            }
+
+                        qint64 nnowsecond = QDateTime::currentSecsSinceEpoch();
+                        if( nnowsecond != nLastSecond)
+                        {
+                            nLastSecond = nnowsecond;
+                            std::cout<<" second send count: "<<nsecondsend<<std::endl;
+                            nsecondsend = 0;
+#ifdef SEND_STAT
+                            int j;
+                            int nsendcount = xvectorlat.size();
+                            if(nsendcount > 0)
+                            {
+                                qint64 xlatmax = 0;
+                                qint64 xlatavg = 0;
+                                for(j=0;j<nsendcount;j++)
+                                {
+                                    if(xvectorlat[j]> xlatmax)xlatmax = xvectorlat[j];
+                                    xlatavg = xlatavg + xvectorlat[j];
+                                }
+                                xlatavg = xlatavg/nsendcount;
+                                std::cout<<" max latency: "<<xlatmax<<" avg latency: "<<xlatavg
+                                        <<" second retry count:"<<secondretrycount<<std::endl;
+
+
+                                xvectorlat.clear();
+                            }
+#endif
+                            secondretrycount = 0;
+                        }
+
+
+        }
+
+
+
+    }
+
+    for (i=0; i<currmax; i++)
+    {
+        close(s[i]);
+    }
+    qDebug("nvcan thread close.");
+    mbRunning = false;
+}
+
+void nvcan::threadsend()
+{
+
+    return;
+    int currmax = 1;
+    int s[MAXSOCK];
+    int i;
+
+    struct sockaddr_can addr;
+    struct ifreq ifr;
+
+    for(i=0;i<currmax;i++)
+    {
+        s[i] = socket(PF_CAN, SOCK_RAW, CAN_RAW);
+        if (s[i] < 0) {
+            return;
+        }
+
+        addr.can_family = AF_CAN;
+
+        memset(&ifr.ifr_name, 0, sizeof(ifr.ifr_name));
+        strncpy(ifr.ifr_name, CANNAME[i].data(), 5);
+
+        if (ioctl(s[i], SIOCGIFINDEX, &ifr) < 0) {
+            return;
+        }
+        addr.can_ifindex = ifr.ifr_ifindex;
+
+        if (bind(s[i], (struct sockaddr *)&addr, sizeof(addr)) < 0) {
+            return;
+        }
+    }
+
+    std::cout<<"threadsend open can success."<<std::endl;
+
+    mps = &s[0];
+
+ //   int currmax = 1;
+ //   int i;
+    while(mbCANOpen == false)
+    {
+        std::this_thread::sleep_for(std::chrono::milliseconds(1));
+    }
+
+    qint64 nLastSecond = 0;
+    int nsecondsend = 0;
+    int nretry = 0;
+#ifdef SEND_STAT
+    std::vector<qint64> xvectorlat;
+#endif
+    int secondretrycount = 0;
+    while(mbSendRun)
+    {
+        mWaitMutex.lock();
+        mwc.wait(&mWaitMutex,100);
+        mWaitMutex.unlock();
+
+#ifdef TEST_PROG
+ //       qDebug("send time : %lld",QDateTime::currentMSecsSinceEpoch());
+#endif
+
+        struct canfd_frame framesend[2500];
+#ifdef SEND_STAT
+        qint64 sendsettime[2500];
+#endif
+
+        for(int nch =0;nch<currmax;nch++)
+        {
+            int nsend = 0;
+            mMutex.lock();
+            int nbufsize = mMsgSendBuf[nch].size();
+            if(nbufsize>2500)nbufsize = 2500;
+            for(i=0;i<nbufsize;i++)
+            {
+                if(i>=2500)break;
+                memcpy(framesend[i].data,mMsgSendBuf[nch].at(i).data,8);
+                framesend[i].can_id = mMsgSendBuf[nch].at(i).id;
+                if(mMsgSendBuf[nch].at(i).isExtern)
+                {
+                    framesend[i].can_id = framesend[i].can_id|0x80000000;
+                }
+                else
+                {
+                    framesend[i].can_id = framesend[i].can_id&0x7ff;
+                }
+                if(mMsgSendBuf[nch].at(i).isRemote)
+                {
+                    framesend[i].can_id= framesend[i].can_id|0x40000000;
+                }
+
+                framesend[i].len = mMsgSendBuf[nch].at(i).nLen;
+#ifdef SEND_STAT
+                sendsettime[i] = mMsgSendBuf[nch].at(i).mSetTime;
+#endif
+
+                nsend++;
+            }
+            mMsgSendBuf[nch].clear();
+            mMutex.unlock();
+
+            if(nsend > 0)
+            {
+                for(i=0;i<nsend;i++)
+                {
+                    mMutexRW.lock();
+
+                    if (write(mps[nch], &framesend[i],16) != 16) {
+                        mMutexRW.unlock();
+                        mivlog->error("write error 1");
+ //                       perror("write error 1.");
+
+                        nretry++;
+                        secondretrycount++;
+                        if(nretry > 30)
+                        {
+ //                           std::cout<<"retry fail,retry:"<<nretry<<std::endl;
+                        }
+                        else
+                        {
+
+
+                        }
+                        if(nretry < 100)
+                        {
+                            i--;
+                        }
+                        else
+                        {
+                            nretry = 0;
+//                            std::cout<<"retry more than 100. drop this message."<<std::endl;
+                        }
+                         std::this_thread::sleep_for(std::chrono::microseconds(100));
+ //                       std::cout<<"retry send."<<std::endl;
+                        continue;
+                    }
+                    else
+                    {
+                        mMutexRW.unlock();
+#ifdef SEND_STAT
+                        qint64 nnowms = QDateTime::currentMSecsSinceEpoch();
+                        qint64 nlat = nnowms - sendsettime[i];
+                        xvectorlat.push_back(nlat);
+                        nretry = 0;
+                        nsecondsend++;
+#endif
+                    }
+                }
+            }
+
+                        qint64 nnowsecond = QDateTime::currentSecsSinceEpoch();
+                        if( nnowsecond != nLastSecond)
+                        {
+                            nLastSecond = nnowsecond;
+                            std::cout<<" second send count: "<<nsecondsend<<std::endl;
+                            nsecondsend = 0;
+#ifdef SEND_STAT
+                            int j;
+                            int nsendcount = xvectorlat.size();
+                            if(nsendcount > 0)
+                            {
+                                qint64 xlatmax = 0;
+                                qint64 xlatavg = 0;
+                                for(j=0;j<nsendcount;j++)
+                                {
+                                    if(xvectorlat[j]> xlatmax)xlatmax = xvectorlat[j];
+                                    xlatavg = xlatavg + xvectorlat[j];
+                                }
+                                xlatavg = xlatavg/nsendcount;
+                                std::cout<<" max latency: "<<xlatmax<<" avg latency: "<<xlatavg
+                                        <<" second retry count:"<<secondretrycount<<std::endl;
+
+
+                                xvectorlat.clear();
+                            }
+#endif
+                            secondretrycount = 0;
+                        }
+
+
+        }
+    }
+
+    std::cout<<"nvcan::threadsend exit."<<std::endl;
+
+}
+
+void nvcan::startdev()
+{
+    start();
+}
+
+void nvcan::stopdev()
+{
+    requestInterruption();
+    QTime xTime;
+    xTime.start();
+    while(xTime.elapsed()<100)
+    {
+        if(mbRunning == false)
+        {
+            mfault->SetFaultState(1, 0, "can closed");
+            mivlog->error("can is closed at %d",xTime.elapsed());
+            qDebug("can is closed.");
+            break;
+        }
+    }
+}
+
+int nvcan::GetMessage(const int nch,basecan_msg *pMsg, const int nCap)
+{
+    if((nch>1)||(nch < 0))return -1;
+    if(mMsgRecvBuf[nch].size() == 0)return 0;
+
+    int nRtn;
+    nRtn = nCap;
+    mMutex.lock();
+    if(nRtn > mMsgRecvBuf[nch].size())nRtn = mMsgRecvBuf[nch].size();
+    int i;
+    for(i=0;i<nRtn;i++)
+    {
+        memcpy(&pMsg[i],&(mMsgRecvBuf[nch].at(i)),sizeof(basecan_msg));
+    }
+
+    std::vector<basecan_msg>::iterator iter;
+    iter = mMsgRecvBuf[nch].begin();
+    for(i=0;i<nRtn;i++)
+    {
+        iter = mMsgRecvBuf[nch].erase(iter);
+    }
+
+    mMutex.unlock();
+
+    return nRtn;
+
+}
+
+int nvcan::SetMessage(const int nch, basecan_msg *pMsg)
+{
+    if((nch>1)||(nch < 0))return -1;
+
+    mMutex.lock();
+    if(mMsgSendBuf[nch].size() > BUF_SIZE)
+    {
+        std::cout<<"buffer full."<<std::endl;
+        mMutex.unlock();
+        return -2;
+    }
+
+    if(mMsgRecvBuf[nch].size() > 100)
+    {
+        std::cout<<"buffer data more 100"<<std::endl;
+    }
+
+
+    mMsgSendBuf[nch].push_back(*pMsg);
+    mMutex.unlock();
+    return 0;
+}
+
+void nvcan::CmdSend()
+{
+    mwc.wakeAll();
+}
+
+void nvcan::onMsg(bool bCAN, int nR, const char *strres)
+{
+    mivlog->verbose("msg is %s ",strres);
+}
+

+ 60 - 0
src/driver/driver_can_socket/nvcan.h

@@ -0,0 +1,60 @@
+#ifndef NVCAN_H
+#define NVCAN_H
+#include "basecan.h"
+
+#include <vector>
+#include <QMutex>
+
+#include <thread>
+
+#include <QWaitCondition>
+#include <QMutex>
+
+class nvcan : public basecan
+{
+    Q_OBJECT
+public:
+    nvcan(const char * strcanname);
+public:
+    void startdev();
+    void stopdev();
+
+    int GetMessage(const int nch,basecan_msg * pMsg,const int nCap);
+    int SetMessage(const int nch,basecan_msg * pMsg);
+
+    virtual void CmdSend();
+
+private slots:
+    void onMsg(bool bCAN,int nR,const char * strres);
+
+private:
+    void run();
+    void threadsend();
+    int * mps = 0;
+
+
+    std::vector<basecan_msg> mMsgRecvBuf[2];
+
+    std::vector<basecan_msg> mMsgSendBuf[2];
+
+    QMutex mMutex;
+
+    bool mbCANOpen = false;
+    bool mbRunning = false;
+    int mnDevNum;
+
+private:
+    bool mbSendRun = true;
+
+    QWaitCondition mwc;
+    QMutex mWaitMutex;
+
+    std::thread * mpsendthread;
+
+    QMutex mMutexRW;
+
+private:
+    void ExecRecv(int s);
+};
+
+#endif // NVCAN_H

+ 73 - 0
src/driver/driver_cloud_grpc_civetweb/.gitignore

@@ -0,0 +1,73 @@
+# This file is used to ignore files which are generated
+# ----------------------------------------------------------------------------
+
+*~
+*.autosave
+*.a
+*.core
+*.moc
+*.o
+*.obj
+*.orig
+*.rej
+*.so
+*.so.*
+*_pch.h.cpp
+*_resource.rc
+*.qm
+.#*
+*.*#
+core
+!core/
+tags
+.DS_Store
+.directory
+*.debug
+Makefile*
+*.prl
+*.app
+moc_*.cpp
+ui_*.h
+qrc_*.cpp
+Thumbs.db
+*.res
+*.rc
+/.qmake.cache
+/.qmake.stash
+
+# qtcreator generated files
+*.pro.user*
+
+# xemacs temporary files
+*.flc
+
+# Vim temporary files
+.*.swp
+
+# Visual Studio generated files
+*.ib_pdb_index
+*.idb
+*.ilk
+*.pdb
+*.sln
+*.suo
+*.vcproj
+*vcproj.*.*.user
+*.ncb
+*.sdf
+*.opensdf
+*.vcxproj
+*vcxproj.*
+
+# MinGW generated files
+*.Debug
+*.Release
+
+# Python byte code
+*.pyc
+
+# Binaries
+# --------
+*.dll
+*.exe
+

+ 63 - 0
src/driver/driver_cloud_grpc_civetweb/driver_cloud_grpc_civetweb.pro

@@ -0,0 +1,63 @@
+QT -= gui
+
+CONFIG += c++11 console
+CONFIG -= app_bundle
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which as been marked deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+system(protoc -I=./../../include/proto3 --cpp_out=./../../include/msgtype   ./../../include/proto3/uploadthreadmsg.proto)
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
+
+SOURCES += main.cpp \
+    ../driver_cloud_grpc_thread/uploadthreadmsg.grpc.pb.cc \
+    ../../include/msgtype/uploadthreadmsg.pb.cc \
+    grpcpc.cpp \
+    ../../include/msgtype/cloud.pb.cc \
+    ../../include/msgtype/rawpic.pb.cc \
+    grpccivet.cpp \
+    ../../../thirdpartylib/civetweb/CivetServer.cpp \
+    ../../../thirdpartylib/civetweb/civetweb.c
+
+
+!include(../../../include/common.pri ) {
+    error( "Couldn't find the common.pri file!" )
+}
+
+
+INCLUDEPATH += $$PWD/../../driver/driver_cloud_grpc_thread
+
+INCLUDEPATH += $$PWD/../../../thirdpartylib/grpc/include
+
+LIBS += -L$$PWD/../../../thirdpartylib/grpc/lib
+
+LIBS += -lprotobuf -lyaml-cpp
+
+
+LIBS += -lgrpc++_unsecure -lgrpc++_reflection -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_hash -labsl_bad_variant_access -labsl_city -labsl_status -labsl_cord -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_bad_optional_access -labsl_raw_logging_internal -labsl_log_severity
+
+HEADERS += \
+    ../driver_cloud_grpc_thread/uploadthreadmsg.grpc.pb.h \
+    ../../include/msgtype/uploadthreadmsg.pb.h \
+    grpcpc.h \
+    ../../include/msgtype/cloud.pb.h \
+    ../../include/msgtype/rawpic.pb.h \
+    grpccivet.h \
+    ../../../thirdpartylib/civetweb/CivetServer.h \
+    ../../../thirdpartylib/civetweb/civetweb.h
+
+INCLUDEPATH += $$PWD/../../../thirdpartylib/civetweb
+DEFINES += NO_SSL
+#DEFINES += NO_SSL_DL
+DEFINES += USE_WEBSOCKET
+
+
+
+LIBS += -ldl -lrt

+ 417 - 0
src/driver/driver_cloud_grpc_civetweb/frontend/index.html

@@ -0,0 +1,417 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<title>ADCIV WEB UI. Designed Base CivetWeb.</title>
+<script>
+
+//var i_width=window.document.body.clientWidth//网页可用宽度  
+//var i_height=window.document.body.clientHeight;
+//var pic = document.getElementById("myCanvas");
+//pic.style.height=i_height+"px";
+//pic.style.width=i_width+"px";
+var index=0
+var xc=0
+//var int=self.setInterval('clock()',100);
+var int2=self.setInterval('changeFrontImage()',29);
+var int1=self.setInterval('updatectrl()',100);
+//var int3=self.setInterval('changeRearImage()',29);
+//var int4=self.setInterval('changeLeftImage()',29);
+//var int5=self.setInterval('changeRightImage()',29);
+
+var oldvel= 0;
+var oldwheel = 0.5;
+var nchange = 50;
+
+	var n = 0;
+	var ic = 0;
+        var upcount = 0;
+	var image=new Image();//放入函数里面:浏览器运行一分钟左右系统内存用到高达90%,故做一个全局的反冲图片
+	var imagerear=new Image();
+	var imageleft=new Image();
+	var imageright=new Image();
+
+
+
+                document.onkeydown=function(event){
+			nchange = 50;
+                    //keyCode来获取按键的编码,来判断那个键是否按下
+                    //还有altKey shiftKry altKey等 来判断是否按下
+//                    console.log("按键按下");
+                    if(event.keyCode==87){
+			var valuex = 0.1;
+			valuex = parseFloat(document.getElementById("sildervel").value);
+			valuex = valuex + 0.1;
+			document.getElementById("sildervel").value = valuex;  
+                        console.log("w键按下了");
+			document.getElementById("demo").innerHTML=valuex;
+                    }
+                    if(event.keyCode==83){
+			document.getElementById("sildervel").value = parseFloat(document.getElementById("sildervel").value) - 0.1;  
+                        console.log("s键按下了");
+			document.getElementById("demo").innerHTML=Date();
+                    }
+                    if(event.keyCode==65){
+			document.getElementById("silderwheel").value = parseFloat(document.getElementById("silderwheel").value) - 0.01;
+                        console.log("a键按下了");
+			document.getElementById("demo").innerHTML=Date();
+                    }
+                    if(event.keyCode==68){
+			document.getElementById("silderwheel").value = parseFloat(document.getElementById("silderwheel").value) + 0.01;
+                        console.log("d键按下了");
+			document.getElementById("demo").innerHTML=Date();
+                    }
+                    if(event.keyCode==80){
+			document.getElementById("sildervel").value = 0;
+                    }
+                    if(event.keyCode==67){
+			document.getElementById("silderwheel").value = 0.5;
+                    }
+                    if(event.altKey && event.keyCode==89){
+                        console.log("alt+y键同时按下了");
+                    }
+                }
+//                document.onkeyup=function(){
+//                    console.log("按键松开");
+//                }
+                
+                //2.
+                var input=document.getElementsByTagName("input")[0];
+                input.onkeydown=function(){
+                    //console.log("input中按下");
+                    //可以来限制input中不能输入数字
+                    if(event.keyCode>=48 && event.keyCode<=57){//数字1-9对应48-57
+                        //取消input的默认行为,使输入东西不显示
+                        return false;
+                    }
+            }
+
+function onClickStop(){	
+	document.getElementById("sildervel").value = 0;  
+//	document.getElementById("demo").innerHTML=Date();
+}
+function onClickCenter(){	
+	document.getElementById("silderwheel").value = 0.5;  
+//	document.getElementById("demo").innerHTML=Date();
+}
+
+function updatectrl(){ 
+
+	var vel = parseFloat(document.getElementById("sildervel").value);
+	var wheel = parseFloat(document.getElementById("silderwheel").value);
+	if((vel == oldvel)&&(wheel == oldwheel))
+	{
+		if(nchange > 0)nchange = nchange-1;
+		if(nchange <= 0)
+		{
+			if(vel>=0)
+			{
+				vel = vel - 0.1;
+				document.getElementById("sildervel").value = vel;
+				oldvel = parseFloat(document.getElementById("sildervel").value);
+			}
+		}
+	}
+	else
+	{
+		nchange = 50;
+		oldvel = vel;
+		oldwheel = wheel;
+	}
+	document.getElementById("demo").innerHTML=nchange;
+}
+	function changeFrontImage()
+	{ 
+		if(ic == 1)
+		{
+			return;
+		}
+		ic = 1;
+		var canvas=document.getElementById("myCanvas2");  
+		var cxt=canvas.getContext("2d");
+
+		//ctx.restore();
+		image.src="./picfront?"+n;
+		imagerear.src="./picrear?"+n;
+		imageleft.src="./picleft?"+n;
+		imageright.src="./picright?"+n;
+		n++; 
+		var nerror = 0;
+				CanvasWidth = 960*(1920-40)/1920;
+				CanvasHeight = 540*(1920-40)/1920;
+		
+		image.onload = function () //确保图片已经加载完毕  
+		{  
+			if (image.complete)//如果图片加载完成,绘制
+			{
+				cxt.save();
+				imgScale = 1.0;
+
+				imgScale = CanvasWidth/image.width;
+				if(imgScale* image.height > CanvasHeight)imgScale = CanvasHeight/image.height;
+//				cxt.drawImage(image,0,0);  
+				cxt.drawImage(image,0,0,image.width,image.height,20+CanvasWidth/2.0,0,image.width*imgScale,image.height*imgScale);  
+//				cxt.drawImage(image,0,0,image.width,image.height,0,0,image.width*imgScale*0.5,image.height*imgScale*0.5); 
+//				cxt.drawImage(image,0,0,image.width,image.height,40+CanvasWidth*1.5,0,image.width*imgScale*0.5,image.height*imgScale*0.5); 
+//				cxt.drawImage(image,0,0,image.width,image.height,20+CanvasWidth/2.0,20+CanvasHeight,image.width*imgScale,image.height*imgScale); 
+				cxt.restore();
+				nerror = 0;
+				upcount++;
+			}
+			else
+			{
+				nerror++;
+				if(nerror>100)
+				{
+					alert(image.complete);
+					nerror = 0;
+				}
+			}
+			ic = 0;
+			
+		}  
+		image.onerror=function(){  
+			document.getElementById("F2").innerHTML="error N:"+n; 
+			ic = 0;
+		}; 
+		imagerear.onload = function () //确保图片已经加载完毕  
+		{  
+			if (imagerear.complete)//如果图片加载完成,绘制
+			{
+				cxt.save();
+				imgScale = 1.0;
+
+				imgScale = CanvasWidth/imagerear.width;
+				if(imgScale* image.height > CanvasHeight)imgScale = CanvasHeight/imagerear.height;
+//				cxt.drawImage(image,0,0);  
+//				cxt.drawImage(image,0,0,image.width,image.height,20+CanvasWidth/2.0,0,image.width*imgScale,image.height*imgScale);  
+//				cxt.drawImage(image,0,0,image.width,image.height,0,0,image.width*imgScale*0.5,image.height*imgScale*0.5); 
+//				cxt.drawImage(image,0,0,image.width,image.height,40+CanvasWidth*1.5,0,image.width*imgScale*0.5,image.height*imgScale*0.5); 
+				cxt.drawImage(imagerear,0,0,imagerear.width,imagerear.height,20+CanvasWidth/2.0,20+CanvasHeight,imagerear.width*imgScale,imagerear.height*imgScale); 
+				cxt.restore();
+				nerror = 0;
+				upcount++;
+			}
+			else
+			{
+				nerror++;
+				if(nerror>100)
+				{
+					alert(image.complete);
+					nerror = 0;
+				}
+			}
+			ic = 0;
+			
+		}  
+		imagerear.onerror=function(){  
+			document.getElementById("F2").innerHTML="error N:"+n; 
+			ic = 0;
+		};  
+		//ctx.save();
+  	}
+
+	function changeRearImage()
+	{ 
+		if(ic == 1)
+		{
+			return;
+		}
+		ic = 1;
+		var canvas=document.getElementById("myCanvas2");  
+		var cxt=canvas.getContext("2d");
+
+		//ctx.restore();
+		imagerear.src="./picrear?"+n;
+		n++; 
+		var nerror = 0;
+		
+		imagerear.onload = function () //确保图片已经加载完毕  
+		{  
+			if (imagerear.complete)//如果图片加载完成,绘制
+			{
+				cxt.save();
+				imgScale = 1.0;
+				CanvasWidth = 960*(1920-40)/1920;
+				CanvasHeight = 540*(1920-40)/1920;
+				imgScale = CanvasWidth/imagerear.width;
+				if(imgScale* imagerear.height > CanvasHeight)imgScale = CanvasHeight/imagerear.height;
+//				cxt.drawImage(image,0,0);  
+				cxt.drawImage(imagerear,0,0,imagerear.width,imagerear.height,20+CanvasWidth/2.0,20+CanvasHeight,imagerear.width*imgScale,imagerear.height*imgScale); 
+				cxt.restore();
+				nerror = 0;
+				upcount++;
+			}
+			else
+			{
+				nerror++;
+				if(nerror>100)
+				{
+					alert(image.complete);
+					nerror = 0;
+				}
+			}
+			ic = 0;
+			
+		}  
+		imagerear.onerror=function(){  
+			document.getElementById("F2").innerHTML="error N:"+n; 
+			ic = 0;
+		};  
+		//ctx.save();
+  	}
+
+	function changeLeftImage()
+	{ 
+		if(ic == 1)
+		{
+			return;
+		}
+		ic = 1;
+		var canvas=document.getElementById("myCanvas2");  
+		var cxt=canvas.getContext("2d");
+
+		//ctx.restore();
+		image.src="./picleft?"+n;
+		n++; 
+		var nerror = 0;
+		
+		image.onload = function () //确保图片已经加载完毕  
+		{  
+			if (image.complete)//如果图片加载完成,绘制
+			{
+				cxt.save();
+				imgScale = 1.0;
+				CanvasWidth = 960*(1920-40)/1920;
+				CanvasHeight = 540*(1920-40)/1920;
+				imgScale = CanvasWidth/image.width;
+				if(imgScale* image.height > CanvasHeight)imgScale = CanvasHeight/image.height;
+//				cxt.drawImage(image,0,0);   
+				cxt.drawImage(image,0,0,image.width,image.height,0,0,image.width*imgScale*0.5,image.height*imgScale*0.5); 
+				cxt.restore();
+				nerror = 0;
+				upcount++;
+			}
+			else
+			{
+				nerror++;
+				if(nerror>100)
+				{
+					alert(image.complete);
+					nerror = 0;
+				}
+			}
+			ic = 0;
+			
+		}  
+		image.onerror=function(){  
+			document.getElementById("F2").innerHTML="error N:"+n; 
+			ic = 0;
+		};  
+		//ctx.save();
+  	}
+
+	function changeRightImage()
+	{ 
+		if(ic == 1)
+		{
+			return;
+		}
+		ic = 1;
+		var canvas=document.getElementById("myCanvas2");  
+		var cxt=canvas.getContext("2d");
+
+		//ctx.restore();
+		image.src="./picright?"+n;
+		n++; 
+		var nerror = 0;
+		
+		image.onload = function () //确保图片已经加载完毕  
+		{  
+			if (image.complete)//如果图片加载完成,绘制
+			{
+				cxt.save();
+				imgScale = 1.0;
+				CanvasWidth = 960*(1920-40)/1920;
+				CanvasHeight = 540*(1920-40)/1920;
+				imgScale = CanvasWidth/image.width;
+				if(imgScale* image.height > CanvasHeight)imgScale = CanvasHeight/image.height;
+//				cxt.drawImage(image,0,0);  
+				cxt.drawImage(image,0,0,image.width,image.height,40+CanvasWidth*1.5,0,image.width*imgScale*0.5,image.height*imgScale*0.5); 
+				cxt.restore();
+				nerror = 0;
+				upcount++;
+			}
+			else
+			{
+				nerror++;
+				if(nerror>100)
+				{
+					alert(image.complete);
+					nerror = 0;
+				}
+			}
+			ic = 0;
+			
+		}  
+		image.onerror=function(){  
+			document.getElementById("F2").innerHTML="error N:"+n; 
+			ic = 0;
+		};  
+		//ctx.save();
+  	}
+
+function clock() 
+{ 
+	if(ic == 0)
+	{
+		ic = 1;
+		changeImage();
+	}
+} 
+function load() {
+	changeImage();
+}
+
+
+
+</script>
+</head>
+<body onload="changeImage()">
+<!-- <div id='websock_text_field'>No websocket connection yet</div>-->
+<!--  <iframe id='image' src="" width="800" height="600"></iframe>  -->
+
+<form>
+<br>
+<label for="title" style="width:300px;display:inline-block;">远程控制系统</label>
+<input type="radio" style="width:100px;display:inline-block;height:30px;" name="ctrl" value="auto" checked>
+<label style="width:100px;display:inline-block;">自动</label>
+<input type="radio" style="width:100px;display:inline-block;height:30px;" name="ctrl" value="man">
+<label style="width:100px;display:inline-block;">远程</label>
+<input type="radio" style="width:100px;display:inline-block;height:30px;" name="shift" value="D" checked>
+<label style="width:100px;display:inline-block;">前进</label>
+<input type="radio" style="width:100px;display:inline-block;height:30px;" name="shift" value="R">
+<label style="width:100px;display:inline-block;">后退</label>
+<br>
+<br>
+<br>
+<label style="width:150px;display:inline-block;" >车速</label>
+<input type="range" name="slidervel" id="sildervel" value="0.0" max="10" min="0" step="0.1" style="width:900px"/>
+<label style="width:50px;display:inline-block;" > </label>
+<button type="button" onclick="onClickStop()" style="width:100px;"  >停车</button>
+<br>
+<br>
+<label style="width:150px;display:inline-block;" >转向</label>
+<input type="range" name="sliderwheel" id="silderwheel" value="0.5" max="1" min="0" step="0.01" style="width:900px;"/>
+<label style="width:50px;display:inline-block;" > </label>
+<button type="button" onclick="onClickCenter()" style="width:100px;"  >居中</button>
+</form> 
+<p>  </p>
+<canvas id="myCanvas2" width="1920" height="1080" style="border:0px solid #c3c3c3;">  
+Your browser does not support the canvas element.  
+</canvas>
+
+<p id="demo">This is a paragraph.</p> 
+
+</body>
+</html>

BIN
src/driver/driver_cloud_grpc_civetweb/frontend/tvsnow.jpg


+ 7 - 0
src/driver/driver_cloud_grpc_civetweb/grpccivet.cpp

@@ -0,0 +1,7 @@
+#include "grpccivet.h"
+
+grpccivet::grpccivet()
+{
+//    mpgrpcpc = new grpcpc;
+//    mpgrpcpc->start();
+}

+ 16 - 0
src/driver/driver_cloud_grpc_civetweb/grpccivet.h

@@ -0,0 +1,16 @@
+#ifndef GRPCCIVET_H
+#define GRPCCIVET_H
+
+
+#include "grpcpc.h"
+
+class grpccivet
+{
+public:
+    grpccivet();
+
+private:
+    grpcpc * mpgrpcpc;
+};
+
+#endif // GRPCCIVET_H

+ 422 - 0
src/driver/driver_cloud_grpc_civetweb/grpcpc.cpp

@@ -0,0 +1,422 @@
+#include "grpcpc.h"
+
+#include <memory>
+static grpcpc * ggrpcpc;
+
+
+
+grpcpc::grpcpc(std::string stryamlpath)
+{
+
+
+    mstrpicmsgname[0] = "picfront";
+    mstrpicmsgname[1] = "picrear";
+    mstrpicmsgname[2] = "picleft";
+    mstrpicmsgname[3] = "picright";
+
+
+    ggrpcpc = this;
+
+
+    unsigned int i;
+
+    for(i=0;i<NUM_CAM;i++)
+    {
+        mnPicUpLatency[i] = 1000;
+        mnFrameRate[i] = 0;
+        mnPicDownLatency[i] = 1000;
+    }
+
+
+    for(i=0;i<NUM_CAM;i++)
+    {
+        unsigned int j;
+        for(j=0;j<NUM_THREAD_PERCAM;j++)
+        {
+            mpThread[i*NUM_THREAD_PERCAM + j] = new std::thread(&grpcpc::threadpicdownload,this,i);
+        }
+    }
+}
+
+
+void grpcpc::run()
+{
+    int nsize = mvectormsgunit.size();
+    int nctrlsize = mvectorctrlmsgunit.size();
+    int i;
+
+    qint64 nlasttime = 0;
+
+    int ninterval = atoi(gstruploadinterval.data());
+    if(ninterval<=0)ninterval = 100;
+
+    QTime xTime;
+    xTime.start();
+    int nlastsend = xTime.elapsed();
+
+    std::string target_str = gstrserverip+":";
+    target_str = target_str + gstrserverport ;//std::to_string()
+    auto cargs = grpc::ChannelArguments();
+    cargs.SetMaxReceiveMessageSize(1024 * 1024 * 1024); // 1 GB
+    cargs.SetMaxSendMessageSize(1024 * 1024 * 1024);
+
+    std::shared_ptr<Channel> channel = grpc::CreateCustomChannel(
+             target_str, grpc::InsecureChannelCredentials(),cargs);
+
+    std::unique_ptr<iv::UploadThread::Stub> stub_ = iv::UploadThread::NewStub(channel);
+
+
+    iv::queryReqThread request;
+    iv::queryReplyThread xreply;
+
+    int nid = 0;
+    int nctrlid = 0;
+
+    // Container for the data we expect from the server.
+//    iv::queryReply reply;
+
+    gpr_timespec timespec;
+      timespec.tv_sec = 30;//设置阻塞时间为2秒
+      timespec.tv_nsec = 0;
+      timespec.clock_type = GPR_TIMESPAN;
+
+      qint64 nLastCtrlTime = 0;
+
+
+    while(!QThread::isInterruptionRequested())
+    {
+        std::this_thread::sleep_for(std::chrono::milliseconds(1));
+        if(abs(xTime.elapsed()-nlastsend)<ninterval)
+        {
+            continue;
+        }
+
+        bool bImportant = false;
+        int nkeeptime = 0;
+
+            iv::cloud::cloudmsg xmsg;
+            xmsg.set_xtime(QDateTime::currentMSecsSinceEpoch());
+            nlastsend = xTime.elapsed();
+
+            {
+
+                ClientContext context ;
+                context.set_deadline(timespec);
+ //               qint64 time1 = QDateTime::currentMSecsSinceEpoch();
+
+                request.set_strquerymd5(gstrqueryMD5);
+                request.set_strvin(gstrVIN);
+
+                request.set_nlasttime(nlasttime);
+
+                request.set_id(nctrlid);nctrlid++;
+                request.set_strctrlmd5(gstrctrlMD5);
+                request.set_strvin(gstrVIN);
+                request.set_ntime(QDateTime::currentMSecsSinceEpoch());
+                request.set_bimportant(bImportant);
+                request.set_kepptime(nkeeptime);
+
+                if(nLastCtrlTime != mnmsgsendupdatetime)
+                {
+
+                    mMutexmsgsend.lock();
+                    nLastCtrlTime = mnmsgsendupdatetime;
+                    xmsg.CopyFrom(mmsgsend);
+                    mMutexmsgsend.unlock();
+                    if(xmsg.xclouddata_size()>0)
+                    {
+                        int nbytesize = xmsg.ByteSize();
+                        std::vector<char> pvectordata;
+                        pvectordata.resize(nbytesize);
+                        if(xmsg.SerializeToArray(pvectordata.data(),nbytesize))
+                        {
+
+                            request.set_xdata(pvectordata.data(),pvectordata.size());
+
+                        }
+                    }
+                }
+
+
+
+                QDateTime xTime;
+                xTime.fromMSecsSinceEpoch(1607905685318);  //1607914763641
+//                qDebug("time:%s",xTime.toString("yyyy-MM-dd:hh:mm:ss:zzz").toLatin1().data());
+//                qDebug("nlasttime is %ld",nlasttime);//1607905685318
+                nid++;
+                // The actual RPC.
+                Status status = stub_->queryctrl(&context, request, &xreply);
+                if (status.ok()) {
+ //                   std::cout<<nid<<" query successfully, res is "<<xreply.nres()<<std::endl;
+                    if(xreply.nres() == 1)
+                    {
+
+                        if(nlasttime != xmsg.xtime())
+                        {
+                            iv::cloud::cloudmsg xmsg;
+                            if(xmsg.ParseFromArray(xreply.xdata().data(),xreply.xdata().size()))
+                            {
+                                mMutexmsgrecv.lock();
+                                mmsgrecv.CopyFrom(xmsg);
+                                mnmsgrecvupdatetime = QDateTime::currentMSecsSinceEpoch();
+                                mMutexmsgrecv.unlock();
+                            }
+                        }
+
+                        nlasttime = xreply.ntime();
+                    }
+                    else
+                    {
+                        std::this_thread::sleep_for(std::chrono::milliseconds(30));
+                    }
+                } else {
+                  std::cout << status.error_code() << ": " << status.error_message()
+                            << std::endl;
+                  std::cout<<"RPC failed"<<std::endl;
+
+                  if(status.error_code() == 4)
+                  {
+                      std::cout<<" RPC Exceed Time, Create New stub_"<<std::endl;
+                      channel = grpc::CreateCustomChannel(
+                               target_str, grpc::InsecureChannelCredentials(),cargs);
+
+                      stub_ = iv::UploadThread::NewStub(channel);
+                  }
+                  std::this_thread::sleep_for(std::chrono::milliseconds(900));
+
+                }
+
+            }
+
+
+
+    }
+}
+
+
+
+std::string grpcpc::GetVIN()
+{
+    return gstrVIN;
+}
+
+
+//int gnPicNum[NUM_CAM];
+//QMutex gMutexPic[NUM_CAM];
+//qint64 gnTimeSecond[NUM_CAM];
+
+
+void grpcpc::threadpicdownload(int nCamPos)
+{
+    std::cout<<"thread cam "<<nCamPos<<"run"<<std::endl;
+    int nsize = mvectormsgunit.size();
+    int i;
+
+    std::string strcclientid = "civetweb";//ServiceRCIni.GetClientID();
+
+    int ninterval = atoi(gstruploadinterval.data());
+    if(ninterval<=0)ninterval = 100;
+
+    QTime xTime;
+    xTime.start();
+    int nlastsend = xTime.elapsed();
+
+    std::string target_str = gstrserverip+":";
+    target_str = target_str + gstrserverport ;//std::to_string()
+    auto cargs = grpc::ChannelArguments();
+    cargs.SetMaxReceiveMessageSize(1024 * 1024 * 1024); // 1 GB
+    cargs.SetMaxSendMessageSize(1024 * 1024 * 1024);
+
+    std::shared_ptr<Channel> channel = grpc::CreateCustomChannel(
+             target_str, grpc::InsecureChannelCredentials(),cargs);
+
+    std::unique_ptr<iv::UploadThread::Stub> stub_ = iv::UploadThread::NewStub(channel);
+
+
+    iv::PicDownReqThread request;
+
+    int nid = 0;
+
+    // Container for the data we expect from the server.
+    iv::PicDownReplyThread reply;
+
+    gpr_timespec timespec;
+      timespec.tv_sec = 30;//设置阻塞时间为2秒
+      timespec.tv_nsec = 0;
+      timespec.clock_type = GPR_TIMESPAN;
+
+ //   ClientContext context;
+
+
+
+    while(true)
+    {
+        std::shared_ptr<char> pstr_ptr;
+        if((nCamPos<0)||(nCamPos >= NUM_CAM))
+        {
+            std::cout<<"Cam Pos Error. "<<"Pos: "<<nCamPos<<" TOTAL:"<<NUM_CAM<<std::endl;
+            std::this_thread::sleep_for(std::chrono::milliseconds(100));
+            continue;
+        }
+
+
+
+        request.set_strclientid(strcclientid);
+        request.set_ncampos(nCamPos);
+        request.set_strquerymd5(gstrqueryMD5);
+        request.set_strvin(gstrVIN);
+
+
+        ClientContext context ;
+        context.set_deadline(timespec);
+        qint64 time1 = QDateTime::currentMSecsSinceEpoch();
+
+
+        //If extend 10 seconds not request picture, pause get picture from server.
+        if((time1 - mnLastGetPicTime)>10000)
+        {
+            std::cout<<"not need updata"<<std::endl;
+            std::this_thread::sleep_for(std::chrono::milliseconds(50));
+            continue;
+        }
+        nlastsend = xTime.elapsed();
+        // The actual RPC.
+        Status status = stub_->querypic(&context, request, &reply);
+        if (status.ok()) {
+
+            if(reply.nres() == 1)
+            {
+                std::cout<<nCamPos<<":pic time is "<<reply.npictime()<<std::endl;
+                mnPicUpLatency[nCamPos] = reply.npicuplatency();
+                mnFrameRate[nCamPos] = reply.npicframerate();
+                mnPicDownLatency[nCamPos] = QDateTime::currentMSecsSinceEpoch() - time1;
+                iv::vision::rawpic xrawpic;
+                if(xrawpic.ParseFromArray(reply.xdata().data(),reply.xdata().size()))
+                {
+                    mMutexPic[nCamPos].lock();
+                    mRawPic[nCamPos].CopyFrom(xrawpic);
+                    mnPicUpdateTime[nCamPos] = QDateTime::currentMSecsSinceEpoch();
+                    xrawpic.CopyFrom(mRawPic[nCamPos]);
+                    //               iv::modulecomm::ModuleSendMsg(mpaPic[nCamPos],reply.xdata().data(),reply.xdata().size());
+                    mMutexPic[nCamPos].unlock();
+                }
+//                iv::cloud::cloudmsg xmsg;
+//                if(xmsg.ParseFromArray(reply.xdata().data(),reply.xdata().size()))
+//                {
+//                    sharectrlmsg(&xmsg);
+//                }
+            }
+            else
+            {
+                std::this_thread::sleep_for(std::chrono::milliseconds(10*NUM_THREAD_PERCAM));
+            }
+        } else {
+          std::cout << status.error_code() << ": " << status.error_message()
+                    << std::endl;
+          std::cout<<"camera dowm"<<nCamPos<<" RPC failed"<<std::endl;
+          if(status.error_code() == 4)
+          {
+              std::cout<<nCamPos<<" RPC Exceed Time, Create New stub_"<<std::endl;
+              channel = grpc::CreateCustomChannel(
+                       target_str, grpc::InsecureChannelCredentials(),cargs);
+
+              stub_ = iv::UploadThread::NewStub(channel);
+          }
+          std::this_thread::sleep_for(std::chrono::milliseconds(900));
+
+        }
+
+
+    }
+}
+
+qint64 grpcpc::GetPicLatency(int nCamPos)
+{
+    if((nCamPos < 0)||(nCamPos >= NUM_CAM))return -1;
+    return mnPicUpLatency[nCamPos];
+}
+
+int grpcpc::GetFrameRate(int nCamPos)
+{
+    if((nCamPos < 0)||(nCamPos >= NUM_CAM))return -1;
+    return mnFrameRate[nCamPos];
+}
+
+qint64 grpcpc::GetPicDownLatency(int nCamPos)
+{
+    if((nCamPos < 0)||(nCamPos >= NUM_CAM))return -1;
+    return mnPicDownLatency[nCamPos];
+}
+
+void grpcpc::setserverip(std::string strip)
+{
+    gstrserverip = strip;
+}
+
+void grpcpc::setserverport(std::string strport)
+{
+    gstrserverport = strport;
+}
+
+void grpcpc::setqueryinterval(std::string strinterval)
+{
+    gstruploadinterval = strinterval;
+}
+
+void grpcpc::setVIN(std::string strVIN)
+{
+    gstrVIN = strVIN;
+}
+
+void grpcpc::setqueryMD5(std::string strmd5)
+{
+    gstrqueryMD5 = strmd5;
+}
+
+void grpcpc::setctrlMD5(std::string strmd5)
+{
+    gstrctrlMD5 = strmd5;
+}
+
+
+int grpcpc::GetRawPic(unsigned int camindex,iv::vision::rawpic & xrawpic)
+{
+    mnLastGetPicTime = QDateTime::currentMSecsSinceEpoch();
+    if((camindex >= NUM_CAM))return -1;
+    qint64 now = QDateTime::currentMSecsSinceEpoch();
+    if((now - mnPicUpdateTime[camindex])>1000)
+    {
+        return 0;
+    }
+    mMutexPic[camindex].lock();
+    xrawpic.CopyFrom(mRawPic[camindex]);
+
+    mMutexPic[camindex].unlock();
+    return 1;
+}
+
+int grpcpc::GetRecvMsg(iv::cloud::cloudmsg & xmsg)
+{
+    mnLastGetmsgTime = QDateTime::currentMSecsSinceEpoch();
+    qint64 now = QDateTime::currentMSecsSinceEpoch();
+    if((now - mnmsgrecvupdatetime) > 1000)
+    {
+        return 0;
+    }
+    mMutexmsgrecv.lock();
+    xmsg.CopyFrom(mmsgrecv);
+
+    mMutexmsgrecv.unlock();
+    return 1;
+}
+
+int grpcpc::SetSendMsg(iv::cloud::cloudmsg & xmsg)
+{
+    mMutexmsgsend.lock();
+    mmsgsend.CopyFrom(xmsg);
+    mnmsgsendupdatetime = QDateTime::currentMSecsSinceEpoch();
+    mMutexmsgsend.unlock();
+    return 0;
+}
+
+

+ 151 - 0
src/driver/driver_cloud_grpc_civetweb/grpcpc.h

@@ -0,0 +1,151 @@
+#ifndef GRPCPC_H
+#define GRPCPC_H
+
+#include <QThread>
+
+#include <yaml-cpp/yaml.h>
+
+#include <QDateTime>
+
+#include <iostream>
+
+#include <vector>
+
+#include <memory>
+
+#include <QMutex>
+
+#include <thread>
+
+#include "modulecomm.h"
+
+#include "rawpic.pb.h"
+#include "cloud.pb.h"
+
+#include <iostream>
+#include <memory>
+#include <string>
+
+#include <grpcpp/grpcpp.h>
+
+#include "uploadthreadmsg.grpc.pb.h"
+
+#ifndef NUM_CAM
+#define NUM_CAM 4
+#endif
+
+#ifndef NUM_THREAD_PERCAM
+#define NUM_THREAD_PERCAM 1
+//int NUM_THREAD_PERCAM = 1;
+#endif
+
+using grpc::Channel;
+using grpc::ClientContext;
+using grpc::Status;
+
+namespace iv {
+struct msgunit
+{
+    char mstrmsgname[256];
+    int mnBufferSize = 10000;
+    int mnBufferCount = 1;
+    void * mpa;
+    std::shared_ptr<char> mpstrmsgdata;
+    int mndatasize = 0;
+    bool mbRefresh = false;
+    bool mbImportant = false;
+    int mnkeeptime = 100;
+};
+}
+
+class grpcpc : public QThread
+{
+public:
+    grpcpc(std::string stryamlpath);
+
+private:
+    void run();
+
+private:
+    std::string gstrserverip = "127.0.0.1";//"111.33.136.149";//"127.0.0.1";// "140.143.237.38";
+    std::string gstrserverport = "50051";//"9000";
+    std::string gstruploadinterval = "100";
+    void * gpa;
+    QMutex gMutexMsg;
+    std::vector<iv::msgunit> mvectormsgunit;
+
+    std::vector<iv::msgunit> mvectorctrlmsgunit;
+
+
+    std::string gstrVIN = "AAAAAAAAAAAAAAAAA";
+    std::string gstrqueryMD5 = "5d41402abc4b2a76b9719d911017c592";
+    std::string gstrctrlMD5 = "5d41402abc4b2a76b9719d911017c592";
+
+
+
+
+    int gindex = 0;
+
+
+private:
+
+
+public:
+    void UpdateData(const char * strdata,const unsigned int nSize,const char * strmemname);
+    std::string GetVIN();
+
+private:
+    void threadpicdownload(int nCamPos);
+    void * mpaPic[NUM_CAM];
+    std::string mstrpicmsgname[NUM_CAM];
+
+    std::thread * mpThread[NUM_CAM * NUM_THREAD_PERCAM];
+
+    QMutex mMutexPic[NUM_CAM];
+
+    qint64 mnPicUpLatency[NUM_CAM];
+    int mnFrameRate[NUM_CAM];
+    int mnPicDownLatency[NUM_CAM];
+
+
+public:
+    qint64 GetPicLatency(int nCamPos);
+    int GetFrameRate(int nCamPos);
+    qint64 GetPicDownLatency(int nCamPos);
+
+
+public:
+    void setserverip(std::string strip);
+    void setserverport(std::string strport);
+    void setqueryinterval(std::string strinterval);
+    void setVIN(std::string strVIN);
+    void setqueryMD5(std::string strmd5);
+    void setctrlMD5(std::string strmd5);
+
+private:
+    iv::vision::rawpic mRawPic[NUM_CAM];
+    qint64 mnPicUpdateTime[NUM_CAM];
+//    QMutex mMuteRawPic[NUM_CAM];
+    qint64 mnLastGetPicTime = 0;
+
+    iv::cloud::cloudmsg mmsgrecv;
+    qint64 mnmsgrecvupdatetime = 0;
+    QMutex mMutexmsgrecv;
+    qint64 mnLastGetmsgTime = 0;
+
+    iv::cloud::cloudmsg mmsgsend;
+    qint64 mnmsgsendupdatetime = 0;
+    QMutex mMutexmsgsend;
+
+
+public:
+    int GetRawPic(unsigned int camindex,iv::vision::rawpic & xrawpic);
+    int GetRecvMsg(iv::cloud::cloudmsg & xmsg);
+    int SetSendMsg(iv::cloud::cloudmsg & xmsg);
+
+
+
+
+};
+
+#endif // GRPCPC_H

+ 401 - 0
src/driver/driver_cloud_grpc_civetweb/main.cpp

@@ -0,0 +1,401 @@
+#include <QCoreApplication>
+
+
+#include <QMutex>
+#include <iostream>
+#include <QFile>
+
+#include "xmlparam.h"
+
+#include "rawpic.pb.h"
+
+#include "CivetServer.h"
+#include <cstring>
+
+#ifdef _WIN32
+#include <windows.h>
+#else
+#include <unistd.h>
+#endif
+
+#include "grpccivet.h"
+
+#define DOCUMENT_ROOT "./frontend/dist"
+
+QByteArray gbasnow;
+
+
+grpcpc * ggrpc;
+
+class WsStartHandler : public CivetHandler
+{
+  public:
+    bool
+    handleGet(CivetServer *server, struct mg_connection *conn)
+    {
+
+    mg_printf(conn,
+              "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: "
+              "close\r\n\r\n");
+
+    mg_printf(conn, "<!DOCTYPE html>\n");
+    mg_printf(conn, "<html>\n<head>\n");
+    mg_printf(conn, "<meta charset=\"UTF-8\">\n");
+    mg_printf(conn, "<title>ADC IV RemoteCtrl UI</title>\n");
+
+    QFile xFile;
+    xFile.setFileName("./frontend/index.html");
+    if(xFile.open(QIODevice::ReadOnly))
+    {
+        QByteArray ba = xFile.readAll();
+        mg_printf(conn,ba.data());
+
+    }
+
+    return 1;
+
+
+
+    }
+};
+
+class PicFrontHandler : public CivetHandler
+{
+  public:
+    bool
+    handleGet(CivetServer *server, struct mg_connection *conn)
+    {
+
+        static int ncount;
+
+        mg_printf(conn,
+                  "HTTP/1.1 200 OK\r\n"
+                  "Connection: close\r\n"
+                  "Max-Age: 0\r\n"
+                  "Expires: 0\r\n"
+                  "Cache-Control: no-cache, no-store, must-revalidate, private\r\n"
+                  "Pragma: no-cache\r\n"
+                  "Content-Type: multipart/x-mixed-replace; "
+                  "boundary=--BoundaryString\r\n"
+                  "\r\n");
+
+        mg_printf(conn,"<meta http-equiv=\"refresh\" content=\"1\">");
+        mg_printf(conn,
+        "<script type=\"text/javascript\">\r\n"
+            "function myrefresh() {\r\n"
+                "window.location.reload();\r\n"
+            "}\r\n"
+            "setTimeout('myrefresh()', 1000);\r\n"
+        "</script>\r\n");
+
+        QByteArray ba;
+
+
+        iv::vision::rawpic xrawpic;
+        if(ggrpc->GetRawPic(0,xrawpic) == 1)
+        {
+            ba.append(xrawpic.picdata().data(),xrawpic.picdata().size());
+        }
+        else
+        {
+            ba = gbasnow;
+        }
+//        if(gLastUpdate > 0)
+//        {
+//        iv::vision::rawpic xrawpic;
+//        gMutex.lock();
+//        xrawpic.CopyFrom(mRawPic);
+//        gMutex.unlock();
+//        ba.append(xrawpic.picdata().data(),xrawpic.picdata().size());
+
+//        }
+        mg_printf(conn,
+                  "--BoundaryString\r\n"
+                  "Content-type: image/jpeg\r\n"
+                  "Content-Length: %zu\r\n"
+                  "\r\n",
+                  ba.size());
+
+
+        mg_write(conn, ba.data(), ba.size());
+
+
+        mg_printf(conn, "\r\n\r\n");
+
+
+        ncount++;
+        printf("send pic. %d\n",ncount);
+
+        return true;
+    }
+};
+
+
+class PicRearHandler : public CivetHandler
+{
+  public:
+    bool
+    handleGet(CivetServer *server, struct mg_connection *conn)
+    {
+
+        static int ncount;
+
+        mg_printf(conn,
+                  "HTTP/1.1 200 OK\r\n"
+                  "Connection: close\r\n"
+                  "Max-Age: 0\r\n"
+                  "Expires: 0\r\n"
+                  "Cache-Control: no-cache, no-store, must-revalidate, private\r\n"
+                  "Pragma: no-cache\r\n"
+                  "Content-Type: multipart/x-mixed-replace; "
+                  "boundary=--BoundaryString\r\n"
+                  "\r\n");
+
+        mg_printf(conn,"<meta http-equiv=\"refresh\" content=\"1\">");
+        mg_printf(conn,
+        "<script type=\"text/javascript\">\r\n"
+            "function myrefresh() {\r\n"
+                "window.location.reload();\r\n"
+            "}\r\n"
+            "setTimeout('myrefresh()', 1000);\r\n"
+        "</script>\r\n");
+
+        QByteArray ba;
+
+
+        iv::vision::rawpic xrawpic;
+        if(ggrpc->GetRawPic(1,xrawpic) == 1)
+        {
+            ba.append(xrawpic.picdata().data(),xrawpic.picdata().size());
+        }
+        else
+        {
+            ba = gbasnow;
+        }
+//        if(gLastUpdate > 0)
+//        {
+//        iv::vision::rawpic xrawpic;
+//        gMutex.lock();
+//        xrawpic.CopyFrom(mRawPic);
+//        gMutex.unlock();
+//        ba.append(xrawpic.picdata().data(),xrawpic.picdata().size());
+
+//        }
+        mg_printf(conn,
+                  "--BoundaryString\r\n"
+                  "Content-type: image/jpeg\r\n"
+                  "Content-Length: %zu\r\n"
+                  "\r\n",
+                  ba.size());
+
+
+        mg_write(conn, ba.data(), ba.size());
+
+
+        mg_printf(conn, "\r\n\r\n");
+
+
+        ncount++;
+        printf("send pic. %d\n",ncount);
+
+        return true;
+    }
+};
+
+
+
+class PicLeftHandler : public CivetHandler
+{
+  public:
+    bool
+    handleGet(CivetServer *server, struct mg_connection *conn)
+    {
+
+        static int ncount;
+
+        mg_printf(conn,
+                  "HTTP/1.1 200 OK\r\n"
+                  "Connection: close\r\n"
+                  "Max-Age: 0\r\n"
+                  "Expires: 0\r\n"
+                  "Cache-Control: no-cache, no-store, must-revalidate, private\r\n"
+                  "Pragma: no-cache\r\n"
+                  "Content-Type: multipart/x-mixed-replace; "
+                  "boundary=--BoundaryString\r\n"
+                  "\r\n");
+
+        mg_printf(conn,"<meta http-equiv=\"refresh\" content=\"1\">");
+        mg_printf(conn,
+        "<script type=\"text/javascript\">\r\n"
+            "function myrefresh() {\r\n"
+                "window.location.reload();\r\n"
+            "}\r\n"
+            "setTimeout('myrefresh()', 1000);\r\n"
+        "</script>\r\n");
+
+        QByteArray ba;
+
+
+        iv::vision::rawpic xrawpic;
+        if(ggrpc->GetRawPic(2,xrawpic) == 1)
+        {
+            ba.append(xrawpic.picdata().data(),xrawpic.picdata().size());
+        }
+        else
+        {
+            ba = gbasnow;
+        }
+//        if(gLastUpdate > 0)
+//        {
+//        iv::vision::rawpic xrawpic;
+//        gMutex.lock();
+//        xrawpic.CopyFrom(mRawPic);
+//        gMutex.unlock();
+//        ba.append(xrawpic.picdata().data(),xrawpic.picdata().size());
+
+//        }
+        mg_printf(conn,
+                  "--BoundaryString\r\n"
+                  "Content-type: image/jpeg\r\n"
+                  "Content-Length: %zu\r\n"
+                  "\r\n",
+                  ba.size());
+
+
+        mg_write(conn, ba.data(), ba.size());
+
+
+        mg_printf(conn, "\r\n\r\n");
+
+
+        ncount++;
+        printf("send pic. %d\n",ncount);
+
+        return true;
+    }
+};
+
+
+
+class PicRightHandler : public CivetHandler
+{
+  public:
+    bool
+    handleGet(CivetServer *server, struct mg_connection *conn)
+    {
+
+        static int ncount;
+
+        mg_printf(conn,
+                  "HTTP/1.1 200 OK\r\n"
+                  "Connection: close\r\n"
+                  "Max-Age: 0\r\n"
+                  "Expires: 0\r\n"
+                  "Cache-Control: no-cache, no-store, must-revalidate, private\r\n"
+                  "Pragma: no-cache\r\n"
+                  "Content-Type: multipart/x-mixed-replace; "
+                  "boundary=--BoundaryString\r\n"
+                  "\r\n");
+
+        mg_printf(conn,"<meta http-equiv=\"refresh\" content=\"1\">");
+        mg_printf(conn,
+        "<script type=\"text/javascript\">\r\n"
+            "function myrefresh() {\r\n"
+                "window.location.reload();\r\n"
+            "}\r\n"
+            "setTimeout('myrefresh()', 1000);\r\n"
+        "</script>\r\n");
+
+        QByteArray ba;
+
+
+        iv::vision::rawpic xrawpic;
+        if(ggrpc->GetRawPic(3,xrawpic) == 1)
+        {
+            ba.append(xrawpic.picdata().data(),xrawpic.picdata().size());
+        }
+        else
+        {
+            ba = gbasnow;
+        }
+//        if(gLastUpdate > 0)
+//        {
+//        iv::vision::rawpic xrawpic;
+//        gMutex.lock();
+//        xrawpic.CopyFrom(mRawPic);
+//        gMutex.unlock();
+//        ba.append(xrawpic.picdata().data(),xrawpic.picdata().size());
+
+//        }
+        mg_printf(conn,
+                  "--BoundaryString\r\n"
+                  "Content-type: image/jpeg\r\n"
+                  "Content-Length: %zu\r\n"
+                  "\r\n",
+                  ba.size());
+
+
+        mg_write(conn, ba.data(), ba.size());
+
+
+        mg_printf(conn, "\r\n\r\n");
+
+
+        ncount++;
+        printf("send pic. %d\n",ncount);
+
+        return true;
+    }
+};
+
+
+int main(int argc, char *argv[])
+{
+    QCoreApplication a(argc, argv);
+
+    iv::xmlparam::Xmlparam xp("./driver_cloud_grpc_civetweb.xml");
+//    std::string strmsgname =  xp.GetParam("imagemsgname","picfront");
+    std::string strport = xp.GetParam("Port","6101");
+//    gpa = iv::modulecomm::RegisterRecv(strmsgname.data(),Listenpic);
+
+    QFile xFile;
+    xFile.setFileName("./frontend/tvsnow.jpg");
+    if(xFile.open(QIODevice::ReadOnly))
+    {
+        gbasnow = xFile.readAll();
+
+    }
+    xFile.close();
+
+    mg_init_library(0);
+
+
+    const char *options[] = {
+        "document_root", DOCUMENT_ROOT, "listening_ports", strport.data(), 0};
+
+    std::vector<std::string> cpp_options;
+    for (int i=0; i<(sizeof(options)/sizeof(options[0])-1); i++) {
+        cpp_options.push_back(options[i]);
+    }
+
+    // CivetServer server(options); // <-- C style start
+    CivetServer server(cpp_options); // <-- C++ style start
+
+    WsStartHandler h_ws;
+    server.addHandler("/", h_ws);
+
+    PicFrontHandler h_picfront;
+    server.addHandler("/picfront", h_picfront);
+
+    PicRearHandler h_picrear;
+    server.addHandler("/picrear", h_picrear);
+    PicLeftHandler h_picleft;
+    server.addHandler("/picleft", h_picleft);
+    PicRightHandler h_picright;
+    server.addHandler("/picright", h_picright);
+
+    ggrpc = new grpcpc("test");
+    ggrpc->start();
+
+    return a.exec();
+}

+ 3 - 3
src/driver/driver_cloud_grpc_client_BS/main.cpp

@@ -23,7 +23,7 @@ struct msgunit
     char mstrmsgname[256];
     int mnBufferSize = 10000;
     int mnBufferCount = 1;
-    void * mpa;
+    void * mpa = nullptr;
     std::shared_ptr<char> mpstrmsgdata;
     int mndatasize = 0;
     bool mbRefresh = false;
@@ -61,13 +61,13 @@ void dec_yaml(const char * stryamlpath)
     catch(YAML::BadFile &e)
     {
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file load fail.");
+        std::cout<<"yaml file load fail."<<std::endl;
         return;
     }
     catch(YAML::ParserException &e)
     {
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file is malformed.");
+        std::cout<<"yaml file is malformed."<<std::endl;
         return;
     }
 

+ 19 - 15
src/driver/driver_cloud_grpc_client_BS/vehicle_control.cpp

@@ -33,7 +33,9 @@ VehicleControlClient::VehicleControlClient(std::shared_ptr<Channel> channel)
 
 VehicleControlClient::~VehicleControlClient(void)
 {
-
+    if(shmRemoteCtrl.mpa != nullptr)iv::modulecomm::Unregister(shmRemoteCtrl.mpa);
+    requestInterruption();
+    while(this->isFinished() == false);
 }
 
 void VehicleControlClient::dec_yaml(const char *stryamlpath)
@@ -46,13 +48,13 @@ void VehicleControlClient::dec_yaml(const char *stryamlpath)
     catch(YAML::BadFile &e)
     {
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file load fail.");
+        std::cout<<"yaml file load fail."<<std::endl;
         return;
     }
     catch(YAML::ParserException &e)
     {
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file is malformed.");
+        std::cout<<"yaml file is malformed."<<std::endl;
         return;
     }
 
@@ -142,10 +144,10 @@ void VehicleControlClient::updateControlData(void)
     std::cout<<"throttle:"<<throttleCMD<<std::endl;
     std::cout<<"brake:"<<brakeCMD<<std::endl;
 #endif
-    std::cout<<"\n"<<"shift:"<<shiftCMD<<std::endl;
-    std::cout<<"steeringWheelAngle:"<<steeringWheelAngleCMD<<std::endl;
-    std::cout<<"throttle:"<<throttleCMD<<std::endl;
-    std::cout<<"brake:"<<brakeCMD<<"\n"<<std::endl;
+//    std::cout<<"\n"<<"shift:"<<shiftCMD<<std::endl;
+//    std::cout<<"steeringWheelAngle:"<<steeringWheelAngleCMD<<std::endl;
+//    std::cout<<"throttle:"<<throttleCMD<<std::endl;
+//    std::cout<<"brake:"<<brakeCMD<<"\n"<<std::endl;
 
     iv::remotectrl xmsg;
     if(modeCMD == CtrlMode::CMD_REMOTE || modeCMD == CtrlMode::CMD_CLOUD_PLATFORM)
@@ -188,7 +190,7 @@ void VehicleControlClient::updateControlData(void)
     std::shared_ptr<char> pstr;pstr.reset(str);
     if(!xmsg.SerializeToArray(str,ndatasize))
     {
-        std::cout<<"MainWindow::on_horizontalSlider_valueChanged serialize error."<<std::endl;
+        std::cout<<"updateControlData serialize error."<<std::endl;
         return;
     }
     iv::modulecomm::ModuleSendMsg(shmRemoteCtrl.mpa,str,ndatasize);
@@ -200,12 +202,12 @@ void VehicleControlClient::run()
     xTime.start();
     int lastTime = xTime.elapsed();
     uint64_t interval = std::atoi(gstrcontrolInterval.c_str());
-    while (true)
+    while (!QThread::isInterruptionRequested())
     {
         if(abs(xTime.elapsed() - lastTime)>=interval)
         {
             std::string reply = vehicleControl();
-            std::cout<< reply <<std::endl;
+//            std::cout<< reply <<std::endl;
             updateControlData();
             lastTime = xTime.elapsed();
         }
@@ -224,7 +226,8 @@ VehicleChangeCtrlModeClient::VehicleChangeCtrlModeClient(std::shared_ptr<Channel
 
 VehicleChangeCtrlModeClient::~VehicleChangeCtrlModeClient(void)
 {
-
+    requestInterruption();
+    while(this->isFinished() == false);
 }
 
 std::string VehicleChangeCtrlModeClient::changeCtrlMode(void)
@@ -280,7 +283,7 @@ void VehicleChangeCtrlModeClient::run()
     xTime.start();
     int lastTime = xTime.elapsed();
     uint64_t interval = std::atoi(gstrcontrolInterval.c_str()) + 5; // move 5 ms to avoid ctrl data request
-    while (true)
+    while (!QThread::isInterruptionRequested())
     {
         if(abs(xTime.elapsed() - lastTime)>=interval)
         {
@@ -299,7 +302,8 @@ VehicleUploadMapClient::VehicleUploadMapClient(std::shared_ptr<Channel> channel)
 
 VehicleUploadMapClient::~VehicleUploadMapClient(void)
 {
-
+    requestInterruption();
+    while(this->isFinished() == false);
 }
 
 std::string VehicleUploadMapClient::uploadMap(void)
@@ -367,14 +371,14 @@ void VehicleUploadMapClient::run()
     xTime.start();
     int lastTime = xTime.elapsed();
     uint64_t interval = std::atoi(gstruploadMapInterval.c_str());
-    while (true)
+    while (!QThread::isInterruptionRequested())
     {
         if(abs(xTime.elapsed() - lastTime)>=interval)
         {
             if(isNeedMap == false)
             {
                 std::string reply = uploadMap();
-                std::cout<< reply <<std::endl;
+//                std::cout<< reply <<std::endl;
                 if(isNeedMap == true)
                 {
                     updateMapPOIData();

+ 2 - 2
src/driver/driver_cloud_grpc_client_BS/vehicle_control.h

@@ -26,7 +26,7 @@ struct msgunit
     char mstrmsgname[256];
     int mnBufferSize = 10000;
     int mnBufferCount = 1;
-    void * mpa;
+    void * mpa = nullptr;
     std::shared_ptr<char> mpstrmsgdata;
     int mndatasize = 0;
     bool mbRefresh = false;
@@ -72,7 +72,7 @@ private:
     double throttleCMD = 0;
     double brakeCMD = 0;
 
-    org::jeecg::defsControl::grpc::CtrlMode modeCMD = org::jeecg::defsControl::grpc::CtrlMode::CMD_EMERGENCY_STOP; ///< update by slot function
+    org::jeecg::defsControl::grpc::CtrlMode modeCMD = org::jeecg::defsControl::grpc::CtrlMode::CMD_AUTO; ///< update by slot function
 
 public slots:
     void ctrlMode_Changed_Slot(org::jeecg::defsControl::grpc::CtrlMode ctrlMode);

+ 7 - 5
src/driver/driver_cloud_grpc_client_BS/vehicle_patrol.cpp

@@ -29,7 +29,9 @@ VehiclePatrolExceptionClient::VehiclePatrolExceptionClient(std::shared_ptr<Chann
 
 VehiclePatrolExceptionClient::~VehiclePatrolExceptionClient(void)
 {
-
+    if(shmGPSIMU.mpa != nullptr)iv::modulecomm::Unregister(shmGPSIMU.mpa);
+    requestInterruption();
+    while(this->isFinished() == false);
 }
 
 void VehiclePatrolExceptionClient::dec_yaml(const char *stryamlpath)
@@ -42,13 +44,13 @@ void VehiclePatrolExceptionClient::dec_yaml(const char *stryamlpath)
     catch(YAML::BadFile &e)
     {
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file load fail.");
+        std::cout<<"yaml file load fail."<<std::endl;
         return;
     }
     catch(YAML::ParserException &e)
     {
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file is malformed.");
+        std::cout<<"yaml file is malformed."<<std::endl;
         return;
     }
 
@@ -81,7 +83,7 @@ void VehiclePatrolExceptionClient::ListenGPSIMUMsg(const char * strdata,const un
     iv::gps::gpsimu xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenGPSIMUMsg parese error."<<std::endl;
         return;
     }
 
@@ -210,7 +212,7 @@ void VehiclePatrolExceptionClient::run()
     xTime.start();
     int lastTime = xTime.elapsed();
     uint64_t interval = std::atoi(gstrpatrolInterval.c_str());
-    while (true)
+    while (!QThread::isInterruptionRequested())
     {
         if(abs(xTime.elapsed() - lastTime)>=interval)
         {

+ 1 - 1
src/driver/driver_cloud_grpc_client_BS/vehicle_patrol.h

@@ -27,7 +27,7 @@ struct msgunit
     char mstrmsgname[256];
     int mnBufferSize = 10000;
     int mnBufferCount = 1;
-    void * mpa;
+    void * mpa = nullptr;
     std::shared_ptr<char> mpstrmsgdata;
     int mndatasize = 0;
     bool mbRefresh = false;

+ 23 - 12
src/driver/driver_cloud_grpc_client_BS/vehicle_upload.cpp

@@ -54,7 +54,15 @@ DataExchangeClient::DataExchangeClient(std::shared_ptr<Channel> channel)
 
 DataExchangeClient::~DataExchangeClient(void)
 {
-
+    if(shmPicFront.mpa != nullptr)iv::modulecomm::Unregister(shmPicFront.mpa);
+    if(shmPicRear.mpa != nullptr)iv::modulecomm::Unregister(shmPicRear.mpa);
+    if(shmPicLeft.mpa != nullptr)iv::modulecomm::Unregister(shmPicLeft.mpa);
+    if(shmPicRight.mpa != nullptr)iv::modulecomm::Unregister(shmPicRight.mpa);
+    if(shmChassis.mpa != nullptr)iv::modulecomm::Unregister(shmChassis.mpa);
+    if(shmGPSIMU.mpa != nullptr)iv::modulecomm::Unregister(shmGPSIMU.mpa);
+    if(shmPlatformFeedback.mpa != nullptr)iv::modulecomm::Unregister(shmPlatformFeedback.mpa);
+    requestInterruption();
+    while(this->isFinished() == false);
 }
 
 void DataExchangeClient::dec_yaml(const char *stryamlpath)
@@ -67,13 +75,13 @@ void DataExchangeClient::dec_yaml(const char *stryamlpath)
     catch(YAML::BadFile &e)
     {
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file load fail.");
+        std::cout<<"yaml file load fail."<<std::endl;
         return;
     }
     catch(YAML::ParserException &e)
     {
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file is malformed.");
+        std::cout<<"yaml file is malformed."<<std::endl;
         return;
     }
 
@@ -220,7 +228,7 @@ void DataExchangeClient::ListenFrontPicMsg(const char * strdata,const unsigned i
     iv::vision::rawpic xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenFrontPicMsg parese error."<<std::endl;
         return;
     }
 
@@ -238,7 +246,7 @@ void DataExchangeClient::ListenRearPicMsg(const char * strdata,const unsigned in
     iv::vision::rawpic xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenRearPicMsg parese error."<<std::endl;
         return;
     }
 
@@ -256,7 +264,7 @@ void DataExchangeClient::ListenLeftPicMsg(const char * strdata,const unsigned in
     iv::vision::rawpic xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenLeftPicMsg parese error."<<std::endl;
         return;
     }
 
@@ -274,7 +282,7 @@ void DataExchangeClient::ListenRightPicMsg(const char * strdata,const unsigned i
     iv::vision::rawpic xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenRightPicMsg parese error."<<std::endl;
         return;
     }
 
@@ -292,7 +300,7 @@ void DataExchangeClient::ListenChassisMsg(const char * strdata,const unsigned in
     iv::chassis xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenChassisMsg parese error."<<std::endl;
         return;
     }
 
@@ -307,7 +315,7 @@ void DataExchangeClient::ListenGPSIMUMsg(const char * strdata,const unsigned int
     iv::gps::gpsimu xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenGPSIMUMsg parese error."<<std::endl;
         return;
     }
 
@@ -331,7 +339,7 @@ void DataExchangeClient::ListenPlatformFeedbackMsg(const char * strdata,const un
     iv::platformFeedback xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenPlatformFeedbackMsg parese error."<<std::endl;
         return;
     }
 
@@ -628,12 +636,15 @@ void DataExchangeClient::run()
     }
 
     int lastTime = xTime.elapsed();
+    int realLastTime = xTime.elapsed();
     uint64_t interval = std::atoi(gstruploadInterval.c_str());
-    while (true)
+    while (!QThread::isInterruptionRequested())
     {
         if(abs(xTime.elapsed() - lastTime)>=interval)
         {
-            updateData(abs(xTime.elapsed() - lastTime));
+            uint64_t realInterval = abs(xTime.elapsed() - realLastTime);
+            realLastTime = xTime.elapsed();
+            updateData(realInterval);
             std::string reply = uploadVehicleInfo();
 //            std::cout<< reply <<std::endl;
 //            std::cout<<std::setprecision(12)<<destinationPosition.latitude()<<","<<destinationPosition.longitude()<<std::endl;

+ 1 - 1
src/driver/driver_cloud_grpc_client_BS/vehicle_upload.h

@@ -27,7 +27,7 @@ struct msgunit
     char mstrmsgname[256];
     int mnBufferSize = 10000;
     int mnBufferCount = 1;
-    void * mpa;
+    void * mpa = nullptr;
     std::shared_ptr<char> mpstrmsgdata;
     int mndatasize = 0;
     bool mbRefresh = false;

+ 1 - 1
src/driver/driver_cloud_grpc_pc_thread/grpcpc.cpp

@@ -524,7 +524,7 @@ void grpcpc::threadpicdownload(int nCamPos)
         } else {
           std::cout << status.error_code() << ": " << status.error_message()
                     << std::endl;
-          std::cout<<"RPC failed"<<std::endl;
+          std::cout<<"camera dowm"<<nCamPos<<" RPC failed"<<std::endl;
           if(status.error_code() == 4)
           {
               std::cout<<nCamPos<<" RPC Exceed Time, Create New stub_"<<std::endl;

+ 0 - 2
src/driver/driver_gps_hcp2/driver_gps_hcp2.pro

@@ -37,5 +37,3 @@ HEADERS += \
     ../../include/msgtype/gps.pb.h \
     ../../include/msgtype/gpsimu.pb.h \
     ../../include/msgtype/imu.pb.h
-
-DISTFILES +=

+ 5 - 1
src/driver/driver_gps_hcp2/hcp2.cpp

@@ -507,7 +507,9 @@ void hcp2::SerialGPSDecodeSen(QString strsen)
    strx = strlistrmc.at(17);
    vu = strx.toDouble();
 
-   fVel = sqrt(ve*ve + vn* vn);
+//   fVel = sqrt(ve*ve + vn*vn + vu*vu);
+   strx = strlistrmc.at(18);
+   fVel = strx.toDouble();
 
    if((mTime.elapsed()-mOldTime) >= 100)
    {
@@ -592,6 +594,7 @@ void hcp2::SerialGPSDecodeSen(QString strsen)
    gpsimu.set_vd(vu);
    gpsimu.set_ve(ve);
    gpsimu.set_vn(vn);
+   gpsimu.set_speed(fVel);
    gpsimu.set_lat(fLat);
    gpsimu.set_lon(fLon);
    gpsimu.set_heading(fheading);
@@ -638,6 +641,7 @@ void hcp2::SerialGPSDecodeSen(QString strsen)
    mfVe = ve;
    mfVn = vn;
    mfVu = vu;
+   mVel = fVel;
    mheading = fheading;
    mfPitch = fPitch;
    mfRoll = fRoll;

+ 39 - 31
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0-binutil.c

@@ -9,82 +9,90 @@ ars408_can_database_ch0_rx_t ars408_can_database_ch0_rx;
 uint32_t ars408_can_database_ch0_Receive(ars408_can_database_ch0_rx_t* _m, const uint8_t* _d, uint32_t _id, uint8_t dlc_)
 {
  uint32_t recid = 0;
- if ((_id >= 0x8U) && (_id < 0x402U)) {
+ if ((_id >= 0x8U) && (_id < 0x401U)) {
   if ((_id >= 0x8U) && (_id < 0x204U)) {
    if ((_id >= 0x8U) && (_id < 0x201U)) {
     if (_id == 0x8U) {
-     recid = Unpack_CollDetRelayCtrl_ARS408_can_database_ch0(&(_m->CollDetRelayCtrl), _d, dlc_);
+     recid = Unpack_CollDetRelayCtrl_ch0_ARS408_can_database_ch0(&(_m->CollDetRelayCtrl_ch0), _d, dlc_);
     } else if (_id == 0x200U) {
-     recid = Unpack_RadarConfiguration_ARS408_can_database_ch0(&(_m->RadarConfiguration), _d, dlc_);
+     recid = Unpack_RadarConfiguration_ch0_ARS408_can_database_ch0(&(_m->RadarConfiguration_ch0), _d, dlc_);
     }
    } else {
     if (_id == 0x201U) {
-     recid = Unpack_RadarState_ARS408_can_database_ch0(&(_m->RadarState), _d, dlc_);
+     recid = Unpack_RadarState_ch0_ARS408_can_database_ch0(&(_m->RadarState_ch0), _d, dlc_);
     } else {
      if (_id == 0x202U) {
-      recid = Unpack_FilterCfg_ARS408_can_database_ch0(&(_m->FilterCfg), _d, dlc_);
+      recid = Unpack_FilterCfg_ch0_ARS408_can_database_ch0(&(_m->FilterCfg_ch0), _d, dlc_);
      } else if (_id == 0x203U) {
-      recid = Unpack_FilterState_Header_ARS408_can_database_ch0(&(_m->FilterState_Header), _d, dlc_);
+      recid = Unpack_FilterState_Header_ch0_ARS408_can_database_ch0(&(_m->FilterState_Header_ch0), _d, dlc_);
      }
     }
    }
   } else {
-   if ((_id >= 0x204U) && (_id < 0x301U)) {
+   if ((_id >= 0x204U) && (_id < 0x300U)) {
     if (_id == 0x204U) {
-     recid = Unpack_FilterState_Cfg_ARS408_can_database_ch0(&(_m->FilterState_Cfg), _d, dlc_);
-    } else if (_id == 0x300U) {
-     recid = Unpack_SpeedInformation_ARS408_can_database_ch0(&(_m->SpeedInformation), _d, dlc_);
+     recid = Unpack_FilterState_Cfg_ch0_ARS408_can_database_ch0(&(_m->FilterState_Cfg_ch0), _d, dlc_);
+    } else {
+     if (_id == 0x205U) {
+      recid = Unpack_PolygonFilter_Cfg_ch0_ARS408_can_database_ch0(&(_m->PolygonFilter_Cfg_ch0), _d, dlc_);
+     } else if (_id == 0x206U) {
+      recid = Unpack_PolygonFilter_State_ch0_ARS408_can_database_ch0(&(_m->PolygonFilter_State_ch0), _d, dlc_);
+     }
     }
    } else {
-    if (_id == 0x301U) {
-     recid = Unpack_YawRateInformation_ARS408_can_database_ch0(&(_m->YawRateInformation), _d, dlc_);
+    if (_id == 0x300U) {
+     recid = Unpack_SpeedInformation_ch0_ARS408_can_database_ch0(&(_m->SpeedInformation_ch0), _d, dlc_);
     } else {
-     if (_id == 0x400U) {
-      recid = Unpack_CollDetCfg_ARS408_can_database_ch0(&(_m->CollDetCfg), _d, dlc_);
-     } else if (_id == 0x401U) {
-      recid = Unpack_CollDetRegionCfg_ARS408_can_database_ch0(&(_m->CollDetRegionCfg), _d, dlc_);
+     if (_id == 0x301U) {
+      recid = Unpack_YawRateInformation_ch0_ARS408_can_database_ch0(&(_m->YawRateInformation_ch0), _d, dlc_);
+     } else if (_id == 0x400U) {
+      recid = Unpack_CollDetCfg_ch0_ARS408_can_database_ch0(&(_m->CollDetCfg_ch0), _d, dlc_);
      }
     }
    }
   }
  } else {
-  if ((_id >= 0x402U) && (_id < 0x60CU)) {
-   if ((_id >= 0x402U) && (_id < 0x600U)) {
-    if (_id == 0x402U) {
-     recid = Unpack_CollDetRegionState_ARS408_can_database_ch0(&(_m->CollDetRegionState), _d, dlc_);
-    } else if (_id == 0x408U) {
-     recid = Unpack_CollDetState_ARS408_can_database_ch0(&(_m->CollDetState), _d, dlc_);
+  if ((_id >= 0x401U) && (_id < 0x60CU)) {
+   if ((_id >= 0x401U) && (_id < 0x600U)) {
+    if (_id == 0x401U) {
+     recid = Unpack_CollDetRegionCfg_ch0_ARS408_can_database_ch0(&(_m->CollDetRegionCfg_ch0), _d, dlc_);
+    } else {
+     if (_id == 0x402U) {
+      recid = Unpack_CollDetRegionState_ch0_ARS408_can_database_ch0(&(_m->CollDetRegionState_ch0), _d, dlc_);
+     } else if (_id == 0x408U) {
+      recid = Unpack_CollDetState_ch0_ARS408_can_database_ch0(&(_m->CollDetState_ch0), _d, dlc_);
+     }
     }
    } else {
     if (_id == 0x600U) {
-     recid = Unpack_Cluster_0_Status_ARS408_can_database_ch0(&(_m->Cluster_0_Status), _d, dlc_);
+     recid = Unpack_Cluster_0_Status_ch0_ARS408_can_database_ch0(&(_m->Cluster_0_Status_ch0), _d, dlc_);
     } else {
      if (_id == 0x60AU) {
-      recid = Unpack_Obj_0_Status_ARS408_can_database_ch0(&(_m->Obj_0_Status), _d, dlc_);
+      recid = Unpack_Obj_0_Status_ch0_ARS408_can_database_ch0(&(_m->Obj_0_Status_ch0), _d, dlc_);
      } else if (_id == 0x60BU) {
-      recid = Unpack_Obj_1_General_ARS408_can_database_ch0(&(_m->Obj_1_General), _d, dlc_);
+      recid = Unpack_Obj_1_General_ch0_ARS408_can_database_ch0(&(_m->Obj_1_General_ch0), _d, dlc_);
      }
     }
    }
   } else {
    if ((_id >= 0x60CU) && (_id < 0x700U)) {
     if (_id == 0x60CU) {
-     recid = Unpack_Obj_2_Quality_ARS408_can_database_ch0(&(_m->Obj_2_Quality), _d, dlc_);
+     recid = Unpack_Obj_2_Quality_ch0_ARS408_can_database_ch0(&(_m->Obj_2_Quality_ch0), _d, dlc_);
     } else {
      if (_id == 0x60DU) {
-      recid = Unpack_Obj_3_Extended_ARS408_can_database_ch0(&(_m->Obj_3_Extended), _d, dlc_);
+      recid = Unpack_Obj_3_Extended_ch0_ARS408_can_database_ch0(&(_m->Obj_3_Extended_ch0), _d, dlc_);
      } else if (_id == 0x60EU) {
-      recid = Unpack_Obj_4_Warning_ARS408_can_database_ch0(&(_m->Obj_4_Warning), _d, dlc_);
+      recid = Unpack_Obj_4_Warning_ch0_ARS408_can_database_ch0(&(_m->Obj_4_Warning_ch0), _d, dlc_);
      }
     }
    } else {
     if (_id == 0x700U) {
-     recid = Unpack_VersionID_ARS408_can_database_ch0(&(_m->VersionID), _d, dlc_);
+     recid = Unpack_VersionID_ch0_ARS408_can_database_ch0(&(_m->VersionID_ch0), _d, dlc_);
     } else {
      if (_id == 0x701U) {
-      recid = Unpack_Cluster_1_General_ARS408_can_database_ch0(&(_m->Cluster_1_General), _d, dlc_);
+      recid = Unpack_Cluster_1_General_ch0_ARS408_can_database_ch0(&(_m->Cluster_1_General_ch0), _d, dlc_);
      } else if (_id == 0x702U) {
-      recid = Unpack_Cluster_2_Quality_ARS408_can_database_ch0(&(_m->Cluster_2_Quality), _d, dlc_);
+      recid = Unpack_Cluster_2_Quality_ch0_ARS408_can_database_ch0(&(_m->Cluster_2_Quality_ch0), _d, dlc_);
      }
     }
    }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0-binutil.h

@@ -15,27 +15,29 @@ extern "C" {
 
 typedef struct
 {
-  CollDetRelayCtrl_t CollDetRelayCtrl;
-  RadarConfiguration_t RadarConfiguration;
-  RadarState_t RadarState;
-  FilterCfg_t FilterCfg;
-  FilterState_Header_t FilterState_Header;
-  FilterState_Cfg_t FilterState_Cfg;
-  SpeedInformation_t SpeedInformation;
-  YawRateInformation_t YawRateInformation;
-  CollDetCfg_t CollDetCfg;
-  CollDetRegionCfg_t CollDetRegionCfg;
-  CollDetRegionState_t CollDetRegionState;
-  CollDetState_t CollDetState;
-  Cluster_0_Status_t Cluster_0_Status;
-  Obj_0_Status_t Obj_0_Status;
-  Obj_1_General_t Obj_1_General;
-  Obj_2_Quality_t Obj_2_Quality;
-  Obj_3_Extended_t Obj_3_Extended;
-  Obj_4_Warning_t Obj_4_Warning;
-  VersionID_t VersionID;
-  Cluster_1_General_t Cluster_1_General;
-  Cluster_2_Quality_t Cluster_2_Quality;
+  CollDetRelayCtrl_ch0_t CollDetRelayCtrl_ch0;
+  RadarConfiguration_ch0_t RadarConfiguration_ch0;
+  RadarState_ch0_t RadarState_ch0;
+  FilterCfg_ch0_t FilterCfg_ch0;
+  FilterState_Header_ch0_t FilterState_Header_ch0;
+  FilterState_Cfg_ch0_t FilterState_Cfg_ch0;
+  PolygonFilter_Cfg_ch0_t PolygonFilter_Cfg_ch0;
+  PolygonFilter_State_ch0_t PolygonFilter_State_ch0;
+  SpeedInformation_ch0_t SpeedInformation_ch0;
+  YawRateInformation_ch0_t YawRateInformation_ch0;
+  CollDetCfg_ch0_t CollDetCfg_ch0;
+  CollDetRegionCfg_ch0_t CollDetRegionCfg_ch0;
+  CollDetRegionState_ch0_t CollDetRegionState_ch0;
+  CollDetState_ch0_t CollDetState_ch0;
+  Cluster_0_Status_ch0_t Cluster_0_Status_ch0;
+  Obj_0_Status_ch0_t Obj_0_Status_ch0;
+  Obj_1_General_ch0_t Obj_1_General_ch0;
+  Obj_2_Quality_ch0_t Obj_2_Quality_ch0;
+  Obj_3_Extended_ch0_t Obj_3_Extended_ch0;
+  Obj_4_Warning_ch0_t Obj_4_Warning_ch0;
+  VersionID_ch0_t VersionID_ch0;
+  Cluster_1_General_ch0_t Cluster_1_General_ch0;
+  Cluster_2_Quality_ch0_t Cluster_2_Quality_ch0;
 } ars408_can_database_ch0_rx_t;
 
 // There is no any TX mapped massage.

+ 2 - 2
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0-config.h

@@ -47,7 +47,7 @@
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
 
-/* #define ARS408_CAN_DATABASE_CH0_USE_SIGFLOAT */
+ #define ARS408_CAN_DATABASE_CH0_USE_SIGFLOAT
 
 
 /* ------------------------------------------------------------------------- *
@@ -103,7 +103,7 @@
   and loaded to payload
 
   In unpack function checksum signal is checked with calculated.
-  (result may be tested in dedicated Fmon_*** function).
+  (result may be tested in dedicated Fmon_*** function). */
 
 /* #define ARS408_CAN_DATABASE_CH0_AUTO_CSM */
 

+ 31 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0-fmon.c

@@ -7,107 +7,117 @@ Put the monitor function content here, keep in mind -
 next generation will completely clear all manually added code (!)
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_CollDetRelayCtrl_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarConfiguration_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_RadarConfiguration_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarState_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_RadarState_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterCfg_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_FilterCfg_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Header_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_FilterState_Header_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Cfg_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_FilterState_Cfg_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_SpeedInformation_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_Cfg_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_YawRateInformation_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_State_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetCfg_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_SpeedInformation_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionCfg_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_YawRateInformation_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionState_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_CollDetCfg_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetState_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_CollDetRegionCfg_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_0_Status_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_CollDetRegionState_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_0_Status_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_CollDetState_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_1_General_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_Cluster_0_Status_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_2_Quality_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_Obj_0_Status_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_3_Extended_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_Obj_1_General_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_4_Warning_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_Obj_2_Quality_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_VersionID_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_Obj_3_Extended_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_1_General_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_Obj_4_Warning_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_2_Quality_ars408_can_database_ch0(FrameMonitor_t* _mon)
+void FMon_VersionID_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_1_General_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_2_Quality_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0-fmon.h

@@ -20,27 +20,29 @@ It is the user responsibility to defined these functions in the
 separated .c file. If it won't be done the linkage error will happen
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_RadarConfiguration_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_RadarState_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_FilterCfg_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_FilterState_Header_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_FilterState_Cfg_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_SpeedInformation_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_YawRateInformation_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_CollDetCfg_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_CollDetRegionCfg_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_CollDetRegionState_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_CollDetState_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_Cluster_0_Status_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_Obj_0_Status_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_Obj_1_General_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_Obj_2_Quality_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_Obj_3_Extended_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_Obj_4_Warning_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_VersionID_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_Cluster_1_General_ars408_can_database_ch0(FrameMonitor_t* _mon);
-void FMon_Cluster_2_Quality_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_CollDetRelayCtrl_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_RadarConfiguration_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_RadarState_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_FilterCfg_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_FilterState_Header_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_FilterState_Cfg_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_Cfg_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_State_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_SpeedInformation_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_YawRateInformation_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_CollDetCfg_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_CollDetRegionCfg_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_CollDetRegionState_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_CollDetState_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_Cluster_0_Status_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_Obj_0_Status_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_Obj_1_General_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_Obj_2_Quality_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_Obj_3_Extended_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_Obj_4_Warning_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_VersionID_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_Cluster_1_General_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
+void FMon_Cluster_2_Quality_ch0_ars408_can_database_ch0(FrameMonitor_t* _mon);
 
 #endif // ARS408_CAN_DATABASE_CH0_USE_DIAG_MONITORS
 

File diff suppressed because it is too large
+ 338 - 188
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0.c


File diff suppressed because it is too large
+ 335 - 159
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0.h


+ 34 - 26
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1-binutil.c

@@ -13,36 +13,40 @@ uint32_t ars408_can_database_ch1_Receive(ars408_can_database_ch1_rx_t* _m, const
   if ((_id >= 0x8U) && (_id < 0x214U)) {
    if ((_id >= 0x8U) && (_id < 0x211U)) {
     if (_id == 0x8U) {
-     recid = Unpack_CollDetRelayCtrl_ARS408_can_database_ch1(&(_m->CollDetRelayCtrl), _d, dlc_);
+     recid = Unpack_CollDetRelayCtrl_ch1_ARS408_can_database_ch1(&(_m->CollDetRelayCtrl_ch1), _d, dlc_);
     } else if (_id == 0x210U) {
-     recid = Unpack_RadarConfiguration_ARS408_can_database_ch1(&(_m->RadarConfiguration), _d, dlc_);
+     recid = Unpack_RadarConfiguration_ch1_ARS408_can_database_ch1(&(_m->RadarConfiguration_ch1), _d, dlc_);
     }
    } else {
     if (_id == 0x211U) {
-     recid = Unpack_RadarState_ARS408_can_database_ch1(&(_m->RadarState), _d, dlc_);
+     recid = Unpack_RadarState_ch1_ARS408_can_database_ch1(&(_m->RadarState_ch1), _d, dlc_);
     } else {
      if (_id == 0x212U) {
-      recid = Unpack_FilterCfg_ARS408_can_database_ch1(&(_m->FilterCfg), _d, dlc_);
+      recid = Unpack_FilterCfg_ch1_ARS408_can_database_ch1(&(_m->FilterCfg_ch1), _d, dlc_);
      } else if (_id == 0x213U) {
-      recid = Unpack_FilterState_Header_ARS408_can_database_ch1(&(_m->FilterState_Header), _d, dlc_);
+      recid = Unpack_FilterState_Header_ch1_ARS408_can_database_ch1(&(_m->FilterState_Header_ch1), _d, dlc_);
      }
     }
    }
   } else {
-   if ((_id >= 0x214U) && (_id < 0x311U)) {
+   if ((_id >= 0x214U) && (_id < 0x310U)) {
     if (_id == 0x214U) {
-     recid = Unpack_FilterState_Cfg_ARS408_can_database_ch1(&(_m->FilterState_Cfg), _d, dlc_);
-    } else if (_id == 0x310U) {
-     recid = Unpack_SpeedInformation_ARS408_can_database_ch1(&(_m->SpeedInformation), _d, dlc_);
+     recid = Unpack_FilterState_Cfg_ch1_ARS408_can_database_ch1(&(_m->FilterState_Cfg_ch1), _d, dlc_);
+    } else {
+     if (_id == 0x215U) {
+      recid = Unpack_PolygonFilter_Cfg_ch1_ARS408_can_database_ch1(&(_m->PolygonFilter_Cfg_ch1), _d, dlc_);
+     } else if (_id == 0x216U) {
+      recid = Unpack_PolygonFilter_State_ch1_ARS408_can_database_ch1(&(_m->PolygonFilter_State_ch1), _d, dlc_);
+     }
     }
    } else {
-    if (_id == 0x311U) {
-     recid = Unpack_YawRateInformation_ARS408_can_database_ch1(&(_m->YawRateInformation), _d, dlc_);
+    if (_id == 0x310U) {
+     recid = Unpack_SpeedInformation_ch1_ARS408_can_database_ch1(&(_m->SpeedInformation_ch1), _d, dlc_);
     } else {
-     if (_id == 0x408U) {
-      recid = Unpack_CollDetState_ARS408_can_database_ch1(&(_m->CollDetState), _d, dlc_);
+     if (_id == 0x311U) {
+      recid = Unpack_YawRateInformation_ch1_ARS408_can_database_ch1(&(_m->YawRateInformation_ch1), _d, dlc_);
      } else if (_id == 0x410U) {
-      recid = Unpack_CollDetCfg_ARS408_can_database_ch1(&(_m->CollDetCfg), _d, dlc_);
+      recid = Unpack_CollDetCfg_ch1_ARS408_can_database_ch1(&(_m->CollDetCfg_ch1), _d, dlc_);
      }
     }
    }
@@ -51,40 +55,44 @@ uint32_t ars408_can_database_ch1_Receive(ars408_can_database_ch1_rx_t* _m, const
   if ((_id >= 0x411U) && (_id < 0x61CU)) {
    if ((_id >= 0x411U) && (_id < 0x610U)) {
     if (_id == 0x411U) {
-     recid = Unpack_CollDetRegionCfg_ARS408_can_database_ch1(&(_m->CollDetRegionCfg), _d, dlc_);
-    } else if (_id == 0x412U) {
-     recid = Unpack_CollDetRegionState_ARS408_can_database_ch1(&(_m->CollDetRegionState), _d, dlc_);
+     recid = Unpack_CollDetRegionCfg_ch1_ARS408_can_database_ch1(&(_m->CollDetRegionCfg_ch1), _d, dlc_);
+    } else {
+     if (_id == 0x412U) {
+      recid = Unpack_CollDetRegionState_ch1_ARS408_can_database_ch1(&(_m->CollDetRegionState_ch1), _d, dlc_);
+     } else if (_id == 0x418U) {
+      recid = Unpack_CollDetState_ch1_ARS408_can_database_ch1(&(_m->CollDetState_ch1), _d, dlc_);
+     }
     }
    } else {
     if (_id == 0x610U) {
-     recid = Unpack_Cluster_0_Status_ARS408_can_database_ch1(&(_m->Cluster_0_Status), _d, dlc_);
+     recid = Unpack_Cluster_0_Status_ch1_ARS408_can_database_ch1(&(_m->Cluster_0_Status_ch1), _d, dlc_);
     } else {
      if (_id == 0x61AU) {
-      recid = Unpack_Obj_0_Status_ARS408_can_database_ch1(&(_m->Obj_0_Status), _d, dlc_);
+      recid = Unpack_Obj_0_Status_ch1_ARS408_can_database_ch1(&(_m->Obj_0_Status_ch1), _d, dlc_);
      } else if (_id == 0x61BU) {
-      recid = Unpack_Obj_1_General_ARS408_can_database_ch1(&(_m->Obj_1_General), _d, dlc_);
+      recid = Unpack_Obj_1_General_ch1_ARS408_can_database_ch1(&(_m->Obj_1_General_ch1), _d, dlc_);
      }
     }
    }
   } else {
    if ((_id >= 0x61CU) && (_id < 0x710U)) {
     if (_id == 0x61CU) {
-     recid = Unpack_Obj_2_Quality_ARS408_can_database_ch1(&(_m->Obj_2_Quality), _d, dlc_);
+     recid = Unpack_Obj_2_Quality_ch1_ARS408_can_database_ch1(&(_m->Obj_2_Quality_ch1), _d, dlc_);
     } else {
      if (_id == 0x61DU) {
-      recid = Unpack_Obj_3_Extended_ARS408_can_database_ch1(&(_m->Obj_3_Extended), _d, dlc_);
+      recid = Unpack_Obj_3_Extended_ch1_ARS408_can_database_ch1(&(_m->Obj_3_Extended_ch1), _d, dlc_);
      } else if (_id == 0x61EU) {
-      recid = Unpack_Obj_4_Warning_ARS408_can_database_ch1(&(_m->Obj_4_Warning), _d, dlc_);
+      recid = Unpack_Obj_4_Warning_ch1_ARS408_can_database_ch1(&(_m->Obj_4_Warning_ch1), _d, dlc_);
      }
     }
    } else {
     if (_id == 0x710U) {
-     recid = Unpack_VersionID_ARS408_can_database_ch1(&(_m->VersionID), _d, dlc_);
+     recid = Unpack_VersionID_ch1_ARS408_can_database_ch1(&(_m->VersionID_ch1), _d, dlc_);
     } else {
      if (_id == 0x711U) {
-      recid = Unpack_Cluster_1_General_ARS408_can_database_ch1(&(_m->Cluster_1_General), _d, dlc_);
+      recid = Unpack_Cluster_1_General_ch1_ARS408_can_database_ch1(&(_m->Cluster_1_General_ch1), _d, dlc_);
      } else if (_id == 0x712U) {
-      recid = Unpack_Cluster_2_Quality_ARS408_can_database_ch1(&(_m->Cluster_2_Quality), _d, dlc_);
+      recid = Unpack_Cluster_2_Quality_ch1_ARS408_can_database_ch1(&(_m->Cluster_2_Quality_ch1), _d, dlc_);
      }
     }
    }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1-binutil.h

@@ -15,27 +15,29 @@ extern "C" {
 
 typedef struct
 {
-  CollDetRelayCtrl_t CollDetRelayCtrl;
-  RadarConfiguration_t RadarConfiguration;
-  RadarState_t RadarState;
-  FilterCfg_t FilterCfg;
-  FilterState_Header_t FilterState_Header;
-  FilterState_Cfg_t FilterState_Cfg;
-  SpeedInformation_t SpeedInformation;
-  YawRateInformation_t YawRateInformation;
-  CollDetState_t CollDetState;
-  CollDetCfg_t CollDetCfg;
-  CollDetRegionCfg_t CollDetRegionCfg;
-  CollDetRegionState_t CollDetRegionState;
-  Cluster_0_Status_t Cluster_0_Status;
-  Obj_0_Status_t Obj_0_Status;
-  Obj_1_General_t Obj_1_General;
-  Obj_2_Quality_t Obj_2_Quality;
-  Obj_3_Extended_t Obj_3_Extended;
-  Obj_4_Warning_t Obj_4_Warning;
-  VersionID_t VersionID;
-  Cluster_1_General_t Cluster_1_General;
-  Cluster_2_Quality_t Cluster_2_Quality;
+  CollDetRelayCtrl_ch1_t CollDetRelayCtrl_ch1;
+  RadarConfiguration_ch1_t RadarConfiguration_ch1;
+  RadarState_ch1_t RadarState_ch1;
+  FilterCfg_ch1_t FilterCfg_ch1;
+  FilterState_Header_ch1_t FilterState_Header_ch1;
+  FilterState_Cfg_ch1_t FilterState_Cfg_ch1;
+  PolygonFilter_Cfg_ch1_t PolygonFilter_Cfg_ch1;
+  PolygonFilter_State_ch1_t PolygonFilter_State_ch1;
+  SpeedInformation_ch1_t SpeedInformation_ch1;
+  YawRateInformation_ch1_t YawRateInformation_ch1;
+  CollDetCfg_ch1_t CollDetCfg_ch1;
+  CollDetRegionCfg_ch1_t CollDetRegionCfg_ch1;
+  CollDetRegionState_ch1_t CollDetRegionState_ch1;
+  CollDetState_ch1_t CollDetState_ch1;
+  Cluster_0_Status_ch1_t Cluster_0_Status_ch1;
+  Obj_0_Status_ch1_t Obj_0_Status_ch1;
+  Obj_1_General_ch1_t Obj_1_General_ch1;
+  Obj_2_Quality_ch1_t Obj_2_Quality_ch1;
+  Obj_3_Extended_ch1_t Obj_3_Extended_ch1;
+  Obj_4_Warning_ch1_t Obj_4_Warning_ch1;
+  VersionID_ch1_t VersionID_ch1;
+  Cluster_1_General_ch1_t Cluster_1_General_ch1;
+  Cluster_2_Quality_ch1_t Cluster_2_Quality_ch1;
 } ars408_can_database_ch1_rx_t;
 
 // There is no any TX mapped massage.

+ 2 - 2
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1-config.h

@@ -47,7 +47,7 @@
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
 
-/* #define ARS408_CAN_DATABASE_CH1_USE_SIGFLOAT */
+ #define ARS408_CAN_DATABASE_CH1_USE_SIGFLOAT
 
 
 /* ------------------------------------------------------------------------- *
@@ -103,7 +103,7 @@
   and loaded to payload
 
   In unpack function checksum signal is checked with calculated.
-  (result may be tested in dedicated Fmon_*** function).
+  (result may be tested in dedicated Fmon_*** function). */
 
 /* #define ARS408_CAN_DATABASE_CH1_AUTO_CSM */
 

+ 31 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1-fmon.c

@@ -7,107 +7,117 @@ Put the monitor function content here, keep in mind -
 next generation will completely clear all manually added code (!)
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_CollDetRelayCtrl_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarConfiguration_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_RadarConfiguration_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarState_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_RadarState_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterCfg_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_FilterCfg_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Header_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_FilterState_Header_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Cfg_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_FilterState_Cfg_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_SpeedInformation_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_Cfg_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_YawRateInformation_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_State_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetState_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_SpeedInformation_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetCfg_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_YawRateInformation_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionCfg_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_CollDetCfg_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionState_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_CollDetRegionCfg_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_0_Status_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_CollDetRegionState_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_0_Status_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_CollDetState_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_1_General_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_Cluster_0_Status_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_2_Quality_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_Obj_0_Status_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_3_Extended_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_Obj_1_General_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_4_Warning_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_Obj_2_Quality_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_VersionID_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_Obj_3_Extended_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_1_General_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_Obj_4_Warning_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_2_Quality_ars408_can_database_ch1(FrameMonitor_t* _mon)
+void FMon_VersionID_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_1_General_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_2_Quality_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1-fmon.h

@@ -20,27 +20,29 @@ It is the user responsibility to defined these functions in the
 separated .c file. If it won't be done the linkage error will happen
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_RadarConfiguration_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_RadarState_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_FilterCfg_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_FilterState_Header_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_FilterState_Cfg_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_SpeedInformation_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_YawRateInformation_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_CollDetState_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_CollDetCfg_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_CollDetRegionCfg_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_CollDetRegionState_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_Cluster_0_Status_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_Obj_0_Status_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_Obj_1_General_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_Obj_2_Quality_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_Obj_3_Extended_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_Obj_4_Warning_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_VersionID_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_Cluster_1_General_ars408_can_database_ch1(FrameMonitor_t* _mon);
-void FMon_Cluster_2_Quality_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_CollDetRelayCtrl_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_RadarConfiguration_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_RadarState_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_FilterCfg_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_FilterState_Header_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_FilterState_Cfg_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_Cfg_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_State_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_SpeedInformation_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_YawRateInformation_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_CollDetCfg_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_CollDetRegionCfg_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_CollDetRegionState_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_CollDetState_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_Cluster_0_Status_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_Obj_0_Status_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_Obj_1_General_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_Obj_2_Quality_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_Obj_3_Extended_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_Obj_4_Warning_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_VersionID_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_Cluster_1_General_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
+void FMon_Cluster_2_Quality_ch1_ars408_can_database_ch1(FrameMonitor_t* _mon);
 
 #endif // ARS408_CAN_DATABASE_CH1_USE_DIAG_MONITORS
 

File diff suppressed because it is too large
+ 366 - 216
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1.c


File diff suppressed because it is too large
+ 372 - 200
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1.h


+ 34 - 26
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2-binutil.c

@@ -13,36 +13,40 @@ uint32_t ars408_can_database_ch2_Receive(ars408_can_database_ch2_rx_t* _m, const
   if ((_id >= 0x8U) && (_id < 0x224U)) {
    if ((_id >= 0x8U) && (_id < 0x221U)) {
     if (_id == 0x8U) {
-     recid = Unpack_CollDetRelayCtrl_ARS408_can_database_ch2(&(_m->CollDetRelayCtrl), _d, dlc_);
+     recid = Unpack_CollDetRelayCtrl_ch2_ARS408_can_database_ch2(&(_m->CollDetRelayCtrl_ch2), _d, dlc_);
     } else if (_id == 0x220U) {
-     recid = Unpack_RadarConfiguration_ARS408_can_database_ch2(&(_m->RadarConfiguration), _d, dlc_);
+     recid = Unpack_RadarConfiguration_ch2_ARS408_can_database_ch2(&(_m->RadarConfiguration_ch2), _d, dlc_);
     }
    } else {
     if (_id == 0x221U) {
-     recid = Unpack_RadarState_ARS408_can_database_ch2(&(_m->RadarState), _d, dlc_);
+     recid = Unpack_RadarState_ch2_ARS408_can_database_ch2(&(_m->RadarState_ch2), _d, dlc_);
     } else {
      if (_id == 0x222U) {
-      recid = Unpack_FilterCfg_ARS408_can_database_ch2(&(_m->FilterCfg), _d, dlc_);
+      recid = Unpack_FilterCfg_ch2_ARS408_can_database_ch2(&(_m->FilterCfg_ch2), _d, dlc_);
      } else if (_id == 0x223U) {
-      recid = Unpack_FilterState_Header_ARS408_can_database_ch2(&(_m->FilterState_Header), _d, dlc_);
+      recid = Unpack_FilterState_Header_ch2_ARS408_can_database_ch2(&(_m->FilterState_Header_ch2), _d, dlc_);
      }
     }
    }
   } else {
-   if ((_id >= 0x224U) && (_id < 0x321U)) {
+   if ((_id >= 0x224U) && (_id < 0x320U)) {
     if (_id == 0x224U) {
-     recid = Unpack_FilterState_Cfg_ARS408_can_database_ch2(&(_m->FilterState_Cfg), _d, dlc_);
-    } else if (_id == 0x320U) {
-     recid = Unpack_SpeedInformation_ARS408_can_database_ch2(&(_m->SpeedInformation), _d, dlc_);
+     recid = Unpack_FilterState_Cfg_ch2_ARS408_can_database_ch2(&(_m->FilterState_Cfg_ch2), _d, dlc_);
+    } else {
+     if (_id == 0x225U) {
+      recid = Unpack_PolygonFilter_Cfg_ch2_ARS408_can_database_ch2(&(_m->PolygonFilter_Cfg_ch2), _d, dlc_);
+     } else if (_id == 0x226U) {
+      recid = Unpack_PolygonFilter_State_ch2_ARS408_can_database_ch2(&(_m->PolygonFilter_State_ch2), _d, dlc_);
+     }
     }
    } else {
-    if (_id == 0x321U) {
-     recid = Unpack_YawRateInformation_ARS408_can_database_ch2(&(_m->YawRateInformation), _d, dlc_);
+    if (_id == 0x320U) {
+     recid = Unpack_SpeedInformation_ch2_ARS408_can_database_ch2(&(_m->SpeedInformation_ch2), _d, dlc_);
     } else {
-     if (_id == 0x408U) {
-      recid = Unpack_CollDetState_ARS408_can_database_ch2(&(_m->CollDetState), _d, dlc_);
+     if (_id == 0x321U) {
+      recid = Unpack_YawRateInformation_ch2_ARS408_can_database_ch2(&(_m->YawRateInformation_ch2), _d, dlc_);
      } else if (_id == 0x420U) {
-      recid = Unpack_CollDetCfg_ARS408_can_database_ch2(&(_m->CollDetCfg), _d, dlc_);
+      recid = Unpack_CollDetCfg_ch2_ARS408_can_database_ch2(&(_m->CollDetCfg_ch2), _d, dlc_);
      }
     }
    }
@@ -51,40 +55,44 @@ uint32_t ars408_can_database_ch2_Receive(ars408_can_database_ch2_rx_t* _m, const
   if ((_id >= 0x421U) && (_id < 0x62CU)) {
    if ((_id >= 0x421U) && (_id < 0x620U)) {
     if (_id == 0x421U) {
-     recid = Unpack_CollDetRegionCfg_ARS408_can_database_ch2(&(_m->CollDetRegionCfg), _d, dlc_);
-    } else if (_id == 0x422U) {
-     recid = Unpack_CollDetRegionState_ARS408_can_database_ch2(&(_m->CollDetRegionState), _d, dlc_);
+     recid = Unpack_CollDetRegionCfg_ch2_ARS408_can_database_ch2(&(_m->CollDetRegionCfg_ch2), _d, dlc_);
+    } else {
+     if (_id == 0x422U) {
+      recid = Unpack_CollDetRegionState_ch2_ARS408_can_database_ch2(&(_m->CollDetRegionState_ch2), _d, dlc_);
+     } else if (_id == 0x428U) {
+      recid = Unpack_CollDetState_ch2_ARS408_can_database_ch2(&(_m->CollDetState_ch2), _d, dlc_);
+     }
     }
    } else {
     if (_id == 0x620U) {
-     recid = Unpack_Cluster_0_Status_ARS408_can_database_ch2(&(_m->Cluster_0_Status), _d, dlc_);
+     recid = Unpack_Cluster_0_Status_ch2_ARS408_can_database_ch2(&(_m->Cluster_0_Status_ch2), _d, dlc_);
     } else {
      if (_id == 0x62AU) {
-      recid = Unpack_Obj_0_Status_ARS408_can_database_ch2(&(_m->Obj_0_Status), _d, dlc_);
+      recid = Unpack_Obj_0_Status_ch2_ARS408_can_database_ch2(&(_m->Obj_0_Status_ch2), _d, dlc_);
      } else if (_id == 0x62BU) {
-      recid = Unpack_Obj_1_General_ARS408_can_database_ch2(&(_m->Obj_1_General), _d, dlc_);
+      recid = Unpack_Obj_1_General_ch2_ARS408_can_database_ch2(&(_m->Obj_1_General_ch2), _d, dlc_);
      }
     }
    }
   } else {
    if ((_id >= 0x62CU) && (_id < 0x720U)) {
     if (_id == 0x62CU) {
-     recid = Unpack_Obj_2_Quality_ARS408_can_database_ch2(&(_m->Obj_2_Quality), _d, dlc_);
+     recid = Unpack_Obj_2_Quality_ch2_ARS408_can_database_ch2(&(_m->Obj_2_Quality_ch2), _d, dlc_);
     } else {
      if (_id == 0x62DU) {
-      recid = Unpack_Obj_3_Extended_ARS408_can_database_ch2(&(_m->Obj_3_Extended), _d, dlc_);
+      recid = Unpack_Obj_3_Extended_ch2_ARS408_can_database_ch2(&(_m->Obj_3_Extended_ch2), _d, dlc_);
      } else if (_id == 0x62EU) {
-      recid = Unpack_Obj_4_Warning_ARS408_can_database_ch2(&(_m->Obj_4_Warning), _d, dlc_);
+      recid = Unpack_Obj_4_Warning_ch2_ARS408_can_database_ch2(&(_m->Obj_4_Warning_ch2), _d, dlc_);
      }
     }
    } else {
     if (_id == 0x720U) {
-     recid = Unpack_VersionID_ARS408_can_database_ch2(&(_m->VersionID), _d, dlc_);
+     recid = Unpack_VersionID_ch2_ARS408_can_database_ch2(&(_m->VersionID_ch2), _d, dlc_);
     } else {
      if (_id == 0x721U) {
-      recid = Unpack_Cluster_1_General_ARS408_can_database_ch2(&(_m->Cluster_1_General), _d, dlc_);
+      recid = Unpack_Cluster_1_General_ch2_ARS408_can_database_ch2(&(_m->Cluster_1_General_ch2), _d, dlc_);
      } else if (_id == 0x722U) {
-      recid = Unpack_Cluster_2_Quality_ARS408_can_database_ch2(&(_m->Cluster_2_Quality), _d, dlc_);
+      recid = Unpack_Cluster_2_Quality_ch2_ARS408_can_database_ch2(&(_m->Cluster_2_Quality_ch2), _d, dlc_);
      }
     }
    }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2-binutil.h

@@ -15,27 +15,29 @@ extern "C" {
 
 typedef struct
 {
-  CollDetRelayCtrl_t CollDetRelayCtrl;
-  RadarConfiguration_t RadarConfiguration;
-  RadarState_t RadarState;
-  FilterCfg_t FilterCfg;
-  FilterState_Header_t FilterState_Header;
-  FilterState_Cfg_t FilterState_Cfg;
-  SpeedInformation_t SpeedInformation;
-  YawRateInformation_t YawRateInformation;
-  CollDetState_t CollDetState;
-  CollDetCfg_t CollDetCfg;
-  CollDetRegionCfg_t CollDetRegionCfg;
-  CollDetRegionState_t CollDetRegionState;
-  Cluster_0_Status_t Cluster_0_Status;
-  Obj_0_Status_t Obj_0_Status;
-  Obj_1_General_t Obj_1_General;
-  Obj_2_Quality_t Obj_2_Quality;
-  Obj_3_Extended_t Obj_3_Extended;
-  Obj_4_Warning_t Obj_4_Warning;
-  VersionID_t VersionID;
-  Cluster_1_General_t Cluster_1_General;
-  Cluster_2_Quality_t Cluster_2_Quality;
+  CollDetRelayCtrl_ch2_t CollDetRelayCtrl_ch2;
+  RadarConfiguration_ch2_t RadarConfiguration_ch2;
+  RadarState_ch2_t RadarState_ch2;
+  FilterCfg_ch2_t FilterCfg_ch2;
+  FilterState_Header_ch2_t FilterState_Header_ch2;
+  FilterState_Cfg_ch2_t FilterState_Cfg_ch2;
+  PolygonFilter_Cfg_ch2_t PolygonFilter_Cfg_ch2;
+  PolygonFilter_State_ch2_t PolygonFilter_State_ch2;
+  SpeedInformation_ch2_t SpeedInformation_ch2;
+  YawRateInformation_ch2_t YawRateInformation_ch2;
+  CollDetCfg_ch2_t CollDetCfg_ch2;
+  CollDetRegionCfg_ch2_t CollDetRegionCfg_ch2;
+  CollDetRegionState_ch2_t CollDetRegionState_ch2;
+  CollDetState_ch2_t CollDetState_ch2;
+  Cluster_0_Status_ch2_t Cluster_0_Status_ch2;
+  Obj_0_Status_ch2_t Obj_0_Status_ch2;
+  Obj_1_General_ch2_t Obj_1_General_ch2;
+  Obj_2_Quality_ch2_t Obj_2_Quality_ch2;
+  Obj_3_Extended_ch2_t Obj_3_Extended_ch2;
+  Obj_4_Warning_ch2_t Obj_4_Warning_ch2;
+  VersionID_ch2_t VersionID_ch2;
+  Cluster_1_General_ch2_t Cluster_1_General_ch2;
+  Cluster_2_Quality_ch2_t Cluster_2_Quality_ch2;
 } ars408_can_database_ch2_rx_t;
 
 // There is no any TX mapped massage.

+ 2 - 2
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2-config.h

@@ -47,7 +47,7 @@
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
 
-/* #define ARS408_CAN_DATABASE_CH2_USE_SIGFLOAT */
+ #define ARS408_CAN_DATABASE_CH2_USE_SIGFLOAT
 
 
 /* ------------------------------------------------------------------------- *
@@ -103,7 +103,7 @@
   and loaded to payload
 
   In unpack function checksum signal is checked with calculated.
-  (result may be tested in dedicated Fmon_*** function).
+  (result may be tested in dedicated Fmon_*** function). */
 
 /* #define ARS408_CAN_DATABASE_CH2_AUTO_CSM */
 

+ 31 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2-fmon.c

@@ -7,107 +7,117 @@ Put the monitor function content here, keep in mind -
 next generation will completely clear all manually added code (!)
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_CollDetRelayCtrl_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarConfiguration_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_RadarConfiguration_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarState_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_RadarState_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterCfg_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_FilterCfg_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Header_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_FilterState_Header_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Cfg_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_FilterState_Cfg_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_SpeedInformation_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_Cfg_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_YawRateInformation_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_State_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetState_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_SpeedInformation_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetCfg_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_YawRateInformation_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionCfg_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_CollDetCfg_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionState_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_CollDetRegionCfg_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_0_Status_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_CollDetRegionState_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_0_Status_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_CollDetState_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_1_General_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_Cluster_0_Status_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_2_Quality_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_Obj_0_Status_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_3_Extended_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_Obj_1_General_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_4_Warning_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_Obj_2_Quality_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_VersionID_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_Obj_3_Extended_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_1_General_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_Obj_4_Warning_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_2_Quality_ars408_can_database_ch2(FrameMonitor_t* _mon)
+void FMon_VersionID_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_1_General_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_2_Quality_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2-fmon.h

@@ -20,27 +20,29 @@ It is the user responsibility to defined these functions in the
 separated .c file. If it won't be done the linkage error will happen
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_RadarConfiguration_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_RadarState_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_FilterCfg_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_FilterState_Header_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_FilterState_Cfg_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_SpeedInformation_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_YawRateInformation_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_CollDetState_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_CollDetCfg_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_CollDetRegionCfg_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_CollDetRegionState_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_Cluster_0_Status_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_Obj_0_Status_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_Obj_1_General_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_Obj_2_Quality_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_Obj_3_Extended_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_Obj_4_Warning_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_VersionID_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_Cluster_1_General_ars408_can_database_ch2(FrameMonitor_t* _mon);
-void FMon_Cluster_2_Quality_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_CollDetRelayCtrl_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_RadarConfiguration_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_RadarState_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_FilterCfg_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_FilterState_Header_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_FilterState_Cfg_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_Cfg_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_State_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_SpeedInformation_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_YawRateInformation_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_CollDetCfg_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_CollDetRegionCfg_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_CollDetRegionState_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_CollDetState_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_Cluster_0_Status_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_Obj_0_Status_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_Obj_1_General_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_Obj_2_Quality_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_Obj_3_Extended_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_Obj_4_Warning_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_VersionID_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_Cluster_1_General_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
+void FMon_Cluster_2_Quality_ch2_ars408_can_database_ch2(FrameMonitor_t* _mon);
 
 #endif // ARS408_CAN_DATABASE_CH2_USE_DIAG_MONITORS
 

File diff suppressed because it is too large
+ 366 - 216
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2.c


File diff suppressed because it is too large
+ 372 - 200
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2.h


+ 34 - 26
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3-binutil.c

@@ -13,36 +13,40 @@ uint32_t ars408_can_database_ch3_Receive(ars408_can_database_ch3_rx_t* _m, const
   if ((_id >= 0x8U) && (_id < 0x234U)) {
    if ((_id >= 0x8U) && (_id < 0x231U)) {
     if (_id == 0x8U) {
-     recid = Unpack_CollDetRelayCtrl_ARS408_can_database_ch3(&(_m->CollDetRelayCtrl), _d, dlc_);
+     recid = Unpack_CollDetRelayCtrl_ch3_ARS408_can_database_ch3(&(_m->CollDetRelayCtrl_ch3), _d, dlc_);
     } else if (_id == 0x230U) {
-     recid = Unpack_RadarConfiguration_ARS408_can_database_ch3(&(_m->RadarConfiguration), _d, dlc_);
+     recid = Unpack_RadarConfiguration_ch3_ARS408_can_database_ch3(&(_m->RadarConfiguration_ch3), _d, dlc_);
     }
    } else {
     if (_id == 0x231U) {
-     recid = Unpack_RadarState_ARS408_can_database_ch3(&(_m->RadarState), _d, dlc_);
+     recid = Unpack_RadarState_ch3_ARS408_can_database_ch3(&(_m->RadarState_ch3), _d, dlc_);
     } else {
      if (_id == 0x232U) {
-      recid = Unpack_FilterCfg_ARS408_can_database_ch3(&(_m->FilterCfg), _d, dlc_);
+      recid = Unpack_FilterCfg_ch3_ARS408_can_database_ch3(&(_m->FilterCfg_ch3), _d, dlc_);
      } else if (_id == 0x233U) {
-      recid = Unpack_FilterState_Header_ARS408_can_database_ch3(&(_m->FilterState_Header), _d, dlc_);
+      recid = Unpack_FilterState_Header_ch3_ARS408_can_database_ch3(&(_m->FilterState_Header_ch3), _d, dlc_);
      }
     }
    }
   } else {
-   if ((_id >= 0x234U) && (_id < 0x331U)) {
+   if ((_id >= 0x234U) && (_id < 0x330U)) {
     if (_id == 0x234U) {
-     recid = Unpack_FilterState_Cfg_ARS408_can_database_ch3(&(_m->FilterState_Cfg), _d, dlc_);
-    } else if (_id == 0x330U) {
-     recid = Unpack_SpeedInformation_ARS408_can_database_ch3(&(_m->SpeedInformation), _d, dlc_);
+     recid = Unpack_FilterState_Cfg_ch3_ARS408_can_database_ch3(&(_m->FilterState_Cfg_ch3), _d, dlc_);
+    } else {
+     if (_id == 0x235U) {
+      recid = Unpack_PolygonFilter_Cfg_ch3_ARS408_can_database_ch3(&(_m->PolygonFilter_Cfg_ch3), _d, dlc_);
+     } else if (_id == 0x236U) {
+      recid = Unpack_PolygonFilter_State_ch3_ARS408_can_database_ch3(&(_m->PolygonFilter_State_ch3), _d, dlc_);
+     }
     }
    } else {
-    if (_id == 0x331U) {
-     recid = Unpack_YawRateInformation_ARS408_can_database_ch3(&(_m->YawRateInformation), _d, dlc_);
+    if (_id == 0x330U) {
+     recid = Unpack_SpeedInformation_ch3_ARS408_can_database_ch3(&(_m->SpeedInformation_ch3), _d, dlc_);
     } else {
-     if (_id == 0x408U) {
-      recid = Unpack_CollDetState_ARS408_can_database_ch3(&(_m->CollDetState), _d, dlc_);
+     if (_id == 0x331U) {
+      recid = Unpack_YawRateInformation_ch3_ARS408_can_database_ch3(&(_m->YawRateInformation_ch3), _d, dlc_);
      } else if (_id == 0x430U) {
-      recid = Unpack_CollDetCfg_ARS408_can_database_ch3(&(_m->CollDetCfg), _d, dlc_);
+      recid = Unpack_CollDetCfg_ch3_ARS408_can_database_ch3(&(_m->CollDetCfg_ch3), _d, dlc_);
      }
     }
    }
@@ -51,40 +55,44 @@ uint32_t ars408_can_database_ch3_Receive(ars408_can_database_ch3_rx_t* _m, const
   if ((_id >= 0x431U) && (_id < 0x63CU)) {
    if ((_id >= 0x431U) && (_id < 0x630U)) {
     if (_id == 0x431U) {
-     recid = Unpack_CollDetRegionCfg_ARS408_can_database_ch3(&(_m->CollDetRegionCfg), _d, dlc_);
-    } else if (_id == 0x432U) {
-     recid = Unpack_CollDetRegionState_ARS408_can_database_ch3(&(_m->CollDetRegionState), _d, dlc_);
+     recid = Unpack_CollDetRegionCfg_ch3_ARS408_can_database_ch3(&(_m->CollDetRegionCfg_ch3), _d, dlc_);
+    } else {
+     if (_id == 0x432U) {
+      recid = Unpack_CollDetRegionState_ch3_ARS408_can_database_ch3(&(_m->CollDetRegionState_ch3), _d, dlc_);
+     } else if (_id == 0x438U) {
+      recid = Unpack_CollDetState_ch3_ARS408_can_database_ch3(&(_m->CollDetState_ch3), _d, dlc_);
+     }
     }
    } else {
     if (_id == 0x630U) {
-     recid = Unpack_Cluster_0_Status_ARS408_can_database_ch3(&(_m->Cluster_0_Status), _d, dlc_);
+     recid = Unpack_Cluster_0_Status_ch3_ARS408_can_database_ch3(&(_m->Cluster_0_Status_ch3), _d, dlc_);
     } else {
      if (_id == 0x63AU) {
-      recid = Unpack_Obj_0_Status_ARS408_can_database_ch3(&(_m->Obj_0_Status), _d, dlc_);
+      recid = Unpack_Obj_0_Status_ch3_ARS408_can_database_ch3(&(_m->Obj_0_Status_ch3), _d, dlc_);
      } else if (_id == 0x63BU) {
-      recid = Unpack_Obj_1_General_ARS408_can_database_ch3(&(_m->Obj_1_General), _d, dlc_);
+      recid = Unpack_Obj_1_General_ch3_ARS408_can_database_ch3(&(_m->Obj_1_General_ch3), _d, dlc_);
      }
     }
    }
   } else {
    if ((_id >= 0x63CU) && (_id < 0x730U)) {
     if (_id == 0x63CU) {
-     recid = Unpack_Obj_2_Quality_ARS408_can_database_ch3(&(_m->Obj_2_Quality), _d, dlc_);
+     recid = Unpack_Obj_2_Quality_ch3_ARS408_can_database_ch3(&(_m->Obj_2_Quality_ch3), _d, dlc_);
     } else {
      if (_id == 0x63DU) {
-      recid = Unpack_Obj_3_Extended_ARS408_can_database_ch3(&(_m->Obj_3_Extended), _d, dlc_);
+      recid = Unpack_Obj_3_Extended_ch3_ARS408_can_database_ch3(&(_m->Obj_3_Extended_ch3), _d, dlc_);
      } else if (_id == 0x63EU) {
-      recid = Unpack_Obj_4_Warning_ARS408_can_database_ch3(&(_m->Obj_4_Warning), _d, dlc_);
+      recid = Unpack_Obj_4_Warning_ch3_ARS408_can_database_ch3(&(_m->Obj_4_Warning_ch3), _d, dlc_);
      }
     }
    } else {
     if (_id == 0x730U) {
-     recid = Unpack_VersionID_ARS408_can_database_ch3(&(_m->VersionID), _d, dlc_);
+     recid = Unpack_VersionID_ch3_ARS408_can_database_ch3(&(_m->VersionID_ch3), _d, dlc_);
     } else {
      if (_id == 0x731U) {
-      recid = Unpack_Cluster_1_General_ARS408_can_database_ch3(&(_m->Cluster_1_General), _d, dlc_);
+      recid = Unpack_Cluster_1_General_ch3_ARS408_can_database_ch3(&(_m->Cluster_1_General_ch3), _d, dlc_);
      } else if (_id == 0x732U) {
-      recid = Unpack_Cluster_2_Quality_ARS408_can_database_ch3(&(_m->Cluster_2_Quality), _d, dlc_);
+      recid = Unpack_Cluster_2_Quality_ch3_ARS408_can_database_ch3(&(_m->Cluster_2_Quality_ch3), _d, dlc_);
      }
     }
    }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3-binutil.h

@@ -15,27 +15,29 @@ extern "C" {
 
 typedef struct
 {
-  CollDetRelayCtrl_t CollDetRelayCtrl;
-  RadarConfiguration_t RadarConfiguration;
-  RadarState_t RadarState;
-  FilterCfg_t FilterCfg;
-  FilterState_Header_t FilterState_Header;
-  FilterState_Cfg_t FilterState_Cfg;
-  SpeedInformation_t SpeedInformation;
-  YawRateInformation_t YawRateInformation;
-  CollDetState_t CollDetState;
-  CollDetCfg_t CollDetCfg;
-  CollDetRegionCfg_t CollDetRegionCfg;
-  CollDetRegionState_t CollDetRegionState;
-  Cluster_0_Status_t Cluster_0_Status;
-  Obj_0_Status_t Obj_0_Status;
-  Obj_1_General_t Obj_1_General;
-  Obj_2_Quality_t Obj_2_Quality;
-  Obj_3_Extended_t Obj_3_Extended;
-  Obj_4_Warning_t Obj_4_Warning;
-  VersionID_t VersionID;
-  Cluster_1_General_t Cluster_1_General;
-  Cluster_2_Quality_t Cluster_2_Quality;
+  CollDetRelayCtrl_ch3_t CollDetRelayCtrl_ch3;
+  RadarConfiguration_ch3_t RadarConfiguration_ch3;
+  RadarState_ch3_t RadarState_ch3;
+  FilterCfg_ch3_t FilterCfg_ch3;
+  FilterState_Header_ch3_t FilterState_Header_ch3;
+  FilterState_Cfg_ch3_t FilterState_Cfg_ch3;
+  PolygonFilter_Cfg_ch3_t PolygonFilter_Cfg_ch3;
+  PolygonFilter_State_ch3_t PolygonFilter_State_ch3;
+  SpeedInformation_ch3_t SpeedInformation_ch3;
+  YawRateInformation_ch3_t YawRateInformation_ch3;
+  CollDetCfg_ch3_t CollDetCfg_ch3;
+  CollDetRegionCfg_ch3_t CollDetRegionCfg_ch3;
+  CollDetRegionState_ch3_t CollDetRegionState_ch3;
+  CollDetState_ch3_t CollDetState_ch3;
+  Cluster_0_Status_ch3_t Cluster_0_Status_ch3;
+  Obj_0_Status_ch3_t Obj_0_Status_ch3;
+  Obj_1_General_ch3_t Obj_1_General_ch3;
+  Obj_2_Quality_ch3_t Obj_2_Quality_ch3;
+  Obj_3_Extended_ch3_t Obj_3_Extended_ch3;
+  Obj_4_Warning_ch3_t Obj_4_Warning_ch3;
+  VersionID_ch3_t VersionID_ch3;
+  Cluster_1_General_ch3_t Cluster_1_General_ch3;
+  Cluster_2_Quality_ch3_t Cluster_2_Quality_ch3;
 } ars408_can_database_ch3_rx_t;
 
 // There is no any TX mapped massage.

+ 2 - 2
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3-config.h

@@ -47,7 +47,7 @@
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
 
-/* #define ARS408_CAN_DATABASE_CH3_USE_SIGFLOAT */
+ #define ARS408_CAN_DATABASE_CH3_USE_SIGFLOAT
 
 
 /* ------------------------------------------------------------------------- *
@@ -103,7 +103,7 @@
   and loaded to payload
 
   In unpack function checksum signal is checked with calculated.
-  (result may be tested in dedicated Fmon_*** function).
+  (result may be tested in dedicated Fmon_*** function). */
 
 /* #define ARS408_CAN_DATABASE_CH3_AUTO_CSM */
 

+ 31 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3-fmon.c

@@ -7,107 +7,117 @@ Put the monitor function content here, keep in mind -
 next generation will completely clear all manually added code (!)
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_CollDetRelayCtrl_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarConfiguration_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_RadarConfiguration_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarState_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_RadarState_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterCfg_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_FilterCfg_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Header_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_FilterState_Header_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Cfg_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_FilterState_Cfg_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_SpeedInformation_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_Cfg_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_YawRateInformation_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_State_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetState_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_SpeedInformation_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetCfg_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_YawRateInformation_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionCfg_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_CollDetCfg_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionState_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_CollDetRegionCfg_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_0_Status_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_CollDetRegionState_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_0_Status_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_CollDetState_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_1_General_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_Cluster_0_Status_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_2_Quality_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_Obj_0_Status_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_3_Extended_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_Obj_1_General_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_4_Warning_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_Obj_2_Quality_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_VersionID_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_Obj_3_Extended_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_1_General_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_Obj_4_Warning_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_2_Quality_ars408_can_database_ch3(FrameMonitor_t* _mon)
+void FMon_VersionID_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_1_General_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_2_Quality_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3-fmon.h

@@ -20,27 +20,29 @@ It is the user responsibility to defined these functions in the
 separated .c file. If it won't be done the linkage error will happen
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_RadarConfiguration_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_RadarState_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_FilterCfg_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_FilterState_Header_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_FilterState_Cfg_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_SpeedInformation_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_YawRateInformation_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_CollDetState_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_CollDetCfg_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_CollDetRegionCfg_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_CollDetRegionState_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_Cluster_0_Status_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_Obj_0_Status_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_Obj_1_General_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_Obj_2_Quality_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_Obj_3_Extended_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_Obj_4_Warning_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_VersionID_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_Cluster_1_General_ars408_can_database_ch3(FrameMonitor_t* _mon);
-void FMon_Cluster_2_Quality_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_CollDetRelayCtrl_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_RadarConfiguration_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_RadarState_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_FilterCfg_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_FilterState_Header_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_FilterState_Cfg_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_Cfg_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_State_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_SpeedInformation_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_YawRateInformation_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_CollDetCfg_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_CollDetRegionCfg_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_CollDetRegionState_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_CollDetState_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_Cluster_0_Status_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_Obj_0_Status_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_Obj_1_General_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_Obj_2_Quality_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_Obj_3_Extended_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_Obj_4_Warning_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_VersionID_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_Cluster_1_General_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
+void FMon_Cluster_2_Quality_ch3_ars408_can_database_ch3(FrameMonitor_t* _mon);
 
 #endif // ARS408_CAN_DATABASE_CH3_USE_DIAG_MONITORS
 

File diff suppressed because it is too large
+ 366 - 216
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3.c


File diff suppressed because it is too large
+ 372 - 200
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3.h


+ 34 - 26
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4-binutil.c

@@ -13,36 +13,40 @@ uint32_t ars408_can_database_ch4_Receive(ars408_can_database_ch4_rx_t* _m, const
   if ((_id >= 0x8U) && (_id < 0x244U)) {
    if ((_id >= 0x8U) && (_id < 0x241U)) {
     if (_id == 0x8U) {
-     recid = Unpack_CollDetRelayCtrl_ARS408_can_database_ch4(&(_m->CollDetRelayCtrl), _d, dlc_);
+     recid = Unpack_CollDetRelayCtrl_ch4_ARS408_can_database_ch4(&(_m->CollDetRelayCtrl_ch4), _d, dlc_);
     } else if (_id == 0x240U) {
-     recid = Unpack_RadarConfiguration_ARS408_can_database_ch4(&(_m->RadarConfiguration), _d, dlc_);
+     recid = Unpack_RadarConfiguration_ch4_ARS408_can_database_ch4(&(_m->RadarConfiguration_ch4), _d, dlc_);
     }
    } else {
     if (_id == 0x241U) {
-     recid = Unpack_RadarState_ARS408_can_database_ch4(&(_m->RadarState), _d, dlc_);
+     recid = Unpack_RadarState_ch4_ARS408_can_database_ch4(&(_m->RadarState_ch4), _d, dlc_);
     } else {
      if (_id == 0x242U) {
-      recid = Unpack_FilterCfg_ARS408_can_database_ch4(&(_m->FilterCfg), _d, dlc_);
+      recid = Unpack_FilterCfg_ch4_ARS408_can_database_ch4(&(_m->FilterCfg_ch4), _d, dlc_);
      } else if (_id == 0x243U) {
-      recid = Unpack_FilterState_Header_ARS408_can_database_ch4(&(_m->FilterState_Header), _d, dlc_);
+      recid = Unpack_FilterState_Header_ch4_ARS408_can_database_ch4(&(_m->FilterState_Header_ch4), _d, dlc_);
      }
     }
    }
   } else {
-   if ((_id >= 0x244U) && (_id < 0x341U)) {
+   if ((_id >= 0x244U) && (_id < 0x340U)) {
     if (_id == 0x244U) {
-     recid = Unpack_FilterState_Cfg_ARS408_can_database_ch4(&(_m->FilterState_Cfg), _d, dlc_);
-    } else if (_id == 0x340U) {
-     recid = Unpack_SpeedInformation_ARS408_can_database_ch4(&(_m->SpeedInformation), _d, dlc_);
+     recid = Unpack_FilterState_Cfg_ch4_ARS408_can_database_ch4(&(_m->FilterState_Cfg_ch4), _d, dlc_);
+    } else {
+     if (_id == 0x245U) {
+      recid = Unpack_PolygonFilter_Cfg_ch4_ARS408_can_database_ch4(&(_m->PolygonFilter_Cfg_ch4), _d, dlc_);
+     } else if (_id == 0x246U) {
+      recid = Unpack_PolygonFilter_State_ch4_ARS408_can_database_ch4(&(_m->PolygonFilter_State_ch4), _d, dlc_);
+     }
     }
    } else {
-    if (_id == 0x341U) {
-     recid = Unpack_YawRateInformation_ARS408_can_database_ch4(&(_m->YawRateInformation), _d, dlc_);
+    if (_id == 0x340U) {
+     recid = Unpack_SpeedInformation_ch4_ARS408_can_database_ch4(&(_m->SpeedInformation_ch4), _d, dlc_);
     } else {
-     if (_id == 0x408U) {
-      recid = Unpack_CollDetState_ARS408_can_database_ch4(&(_m->CollDetState), _d, dlc_);
+     if (_id == 0x341U) {
+      recid = Unpack_YawRateInformation_ch4_ARS408_can_database_ch4(&(_m->YawRateInformation_ch4), _d, dlc_);
      } else if (_id == 0x440U) {
-      recid = Unpack_CollDetCfg_ARS408_can_database_ch4(&(_m->CollDetCfg), _d, dlc_);
+      recid = Unpack_CollDetCfg_ch4_ARS408_can_database_ch4(&(_m->CollDetCfg_ch4), _d, dlc_);
      }
     }
    }
@@ -51,40 +55,44 @@ uint32_t ars408_can_database_ch4_Receive(ars408_can_database_ch4_rx_t* _m, const
   if ((_id >= 0x441U) && (_id < 0x64CU)) {
    if ((_id >= 0x441U) && (_id < 0x640U)) {
     if (_id == 0x441U) {
-     recid = Unpack_CollDetRegionCfg_ARS408_can_database_ch4(&(_m->CollDetRegionCfg), _d, dlc_);
-    } else if (_id == 0x442U) {
-     recid = Unpack_CollDetRegionState_ARS408_can_database_ch4(&(_m->CollDetRegionState), _d, dlc_);
+     recid = Unpack_CollDetRegionCfg_ch4_ARS408_can_database_ch4(&(_m->CollDetRegionCfg_ch4), _d, dlc_);
+    } else {
+     if (_id == 0x442U) {
+      recid = Unpack_CollDetRegionState_ch4_ARS408_can_database_ch4(&(_m->CollDetRegionState_ch4), _d, dlc_);
+     } else if (_id == 0x448U) {
+      recid = Unpack_CollDetState_ch4_ARS408_can_database_ch4(&(_m->CollDetState_ch4), _d, dlc_);
+     }
     }
    } else {
     if (_id == 0x640U) {
-     recid = Unpack_Cluster_0_Status_ARS408_can_database_ch4(&(_m->Cluster_0_Status), _d, dlc_);
+     recid = Unpack_Cluster_0_Status_ch4_ARS408_can_database_ch4(&(_m->Cluster_0_Status_ch4), _d, dlc_);
     } else {
      if (_id == 0x64AU) {
-      recid = Unpack_Obj_0_Status_ARS408_can_database_ch4(&(_m->Obj_0_Status), _d, dlc_);
+      recid = Unpack_Obj_0_Status_ch4_ARS408_can_database_ch4(&(_m->Obj_0_Status_ch4), _d, dlc_);
      } else if (_id == 0x64BU) {
-      recid = Unpack_Obj_1_General_ARS408_can_database_ch4(&(_m->Obj_1_General), _d, dlc_);
+      recid = Unpack_Obj_1_General_ch4_ARS408_can_database_ch4(&(_m->Obj_1_General_ch4), _d, dlc_);
      }
     }
    }
   } else {
    if ((_id >= 0x64CU) && (_id < 0x740U)) {
     if (_id == 0x64CU) {
-     recid = Unpack_Obj_2_Quality_ARS408_can_database_ch4(&(_m->Obj_2_Quality), _d, dlc_);
+     recid = Unpack_Obj_2_Quality_ch4_ARS408_can_database_ch4(&(_m->Obj_2_Quality_ch4), _d, dlc_);
     } else {
      if (_id == 0x64DU) {
-      recid = Unpack_Obj_3_Extended_ARS408_can_database_ch4(&(_m->Obj_3_Extended), _d, dlc_);
+      recid = Unpack_Obj_3_Extended_ch4_ARS408_can_database_ch4(&(_m->Obj_3_Extended_ch4), _d, dlc_);
      } else if (_id == 0x64EU) {
-      recid = Unpack_Obj_4_Warning_ARS408_can_database_ch4(&(_m->Obj_4_Warning), _d, dlc_);
+      recid = Unpack_Obj_4_Warning_ch4_ARS408_can_database_ch4(&(_m->Obj_4_Warning_ch4), _d, dlc_);
      }
     }
    } else {
     if (_id == 0x740U) {
-     recid = Unpack_VersionID_ARS408_can_database_ch4(&(_m->VersionID), _d, dlc_);
+     recid = Unpack_VersionID_ch4_ARS408_can_database_ch4(&(_m->VersionID_ch4), _d, dlc_);
     } else {
      if (_id == 0x741U) {
-      recid = Unpack_Cluster_1_General_ARS408_can_database_ch4(&(_m->Cluster_1_General), _d, dlc_);
+      recid = Unpack_Cluster_1_General_ch4_ARS408_can_database_ch4(&(_m->Cluster_1_General_ch4), _d, dlc_);
      } else if (_id == 0x742U) {
-      recid = Unpack_Cluster_2_Quality_ARS408_can_database_ch4(&(_m->Cluster_2_Quality), _d, dlc_);
+      recid = Unpack_Cluster_2_Quality_ch4_ARS408_can_database_ch4(&(_m->Cluster_2_Quality_ch4), _d, dlc_);
      }
     }
    }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4-binutil.h

@@ -15,27 +15,29 @@ extern "C" {
 
 typedef struct
 {
-  CollDetRelayCtrl_t CollDetRelayCtrl;
-  RadarConfiguration_t RadarConfiguration;
-  RadarState_t RadarState;
-  FilterCfg_t FilterCfg;
-  FilterState_Header_t FilterState_Header;
-  FilterState_Cfg_t FilterState_Cfg;
-  SpeedInformation_t SpeedInformation;
-  YawRateInformation_t YawRateInformation;
-  CollDetState_t CollDetState;
-  CollDetCfg_t CollDetCfg;
-  CollDetRegionCfg_t CollDetRegionCfg;
-  CollDetRegionState_t CollDetRegionState;
-  Cluster_0_Status_t Cluster_0_Status;
-  Obj_0_Status_t Obj_0_Status;
-  Obj_1_General_t Obj_1_General;
-  Obj_2_Quality_t Obj_2_Quality;
-  Obj_3_Extended_t Obj_3_Extended;
-  Obj_4_Warning_t Obj_4_Warning;
-  VersionID_t VersionID;
-  Cluster_1_General_t Cluster_1_General;
-  Cluster_2_Quality_t Cluster_2_Quality;
+  CollDetRelayCtrl_ch4_t CollDetRelayCtrl_ch4;
+  RadarConfiguration_ch4_t RadarConfiguration_ch4;
+  RadarState_ch4_t RadarState_ch4;
+  FilterCfg_ch4_t FilterCfg_ch4;
+  FilterState_Header_ch4_t FilterState_Header_ch4;
+  FilterState_Cfg_ch4_t FilterState_Cfg_ch4;
+  PolygonFilter_Cfg_ch4_t PolygonFilter_Cfg_ch4;
+  PolygonFilter_State_ch4_t PolygonFilter_State_ch4;
+  SpeedInformation_ch4_t SpeedInformation_ch4;
+  YawRateInformation_ch4_t YawRateInformation_ch4;
+  CollDetCfg_ch4_t CollDetCfg_ch4;
+  CollDetRegionCfg_ch4_t CollDetRegionCfg_ch4;
+  CollDetRegionState_ch4_t CollDetRegionState_ch4;
+  CollDetState_ch4_t CollDetState_ch4;
+  Cluster_0_Status_ch4_t Cluster_0_Status_ch4;
+  Obj_0_Status_ch4_t Obj_0_Status_ch4;
+  Obj_1_General_ch4_t Obj_1_General_ch4;
+  Obj_2_Quality_ch4_t Obj_2_Quality_ch4;
+  Obj_3_Extended_ch4_t Obj_3_Extended_ch4;
+  Obj_4_Warning_ch4_t Obj_4_Warning_ch4;
+  VersionID_ch4_t VersionID_ch4;
+  Cluster_1_General_ch4_t Cluster_1_General_ch4;
+  Cluster_2_Quality_ch4_t Cluster_2_Quality_ch4;
 } ars408_can_database_ch4_rx_t;
 
 // There is no any TX mapped massage.

+ 2 - 2
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4-config.h

@@ -47,7 +47,7 @@
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
 
-/* #define ARS408_CAN_DATABASE_CH4_USE_SIGFLOAT */
+ #define ARS408_CAN_DATABASE_CH4_USE_SIGFLOAT
 
 
 /* ------------------------------------------------------------------------- *
@@ -103,7 +103,7 @@
   and loaded to payload
 
   In unpack function checksum signal is checked with calculated.
-  (result may be tested in dedicated Fmon_*** function).
+  (result may be tested in dedicated Fmon_*** function). */
 
 /* #define ARS408_CAN_DATABASE_CH4_AUTO_CSM */
 

+ 31 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4-fmon.c

@@ -7,107 +7,117 @@ Put the monitor function content here, keep in mind -
 next generation will completely clear all manually added code (!)
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_CollDetRelayCtrl_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarConfiguration_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_RadarConfiguration_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarState_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_RadarState_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterCfg_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_FilterCfg_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Header_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_FilterState_Header_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Cfg_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_FilterState_Cfg_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_SpeedInformation_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_Cfg_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_YawRateInformation_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_State_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetState_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_SpeedInformation_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetCfg_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_YawRateInformation_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionCfg_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_CollDetCfg_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionState_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_CollDetRegionCfg_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_0_Status_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_CollDetRegionState_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_0_Status_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_CollDetState_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_1_General_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_Cluster_0_Status_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_2_Quality_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_Obj_0_Status_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_3_Extended_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_Obj_1_General_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_4_Warning_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_Obj_2_Quality_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_VersionID_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_Obj_3_Extended_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_1_General_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_Obj_4_Warning_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_2_Quality_ars408_can_database_ch4(FrameMonitor_t* _mon)
+void FMon_VersionID_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_1_General_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_2_Quality_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4-fmon.h

@@ -20,27 +20,29 @@ It is the user responsibility to defined these functions in the
 separated .c file. If it won't be done the linkage error will happen
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_RadarConfiguration_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_RadarState_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_FilterCfg_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_FilterState_Header_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_FilterState_Cfg_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_SpeedInformation_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_YawRateInformation_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_CollDetState_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_CollDetCfg_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_CollDetRegionCfg_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_CollDetRegionState_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_Cluster_0_Status_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_Obj_0_Status_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_Obj_1_General_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_Obj_2_Quality_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_Obj_3_Extended_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_Obj_4_Warning_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_VersionID_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_Cluster_1_General_ars408_can_database_ch4(FrameMonitor_t* _mon);
-void FMon_Cluster_2_Quality_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_CollDetRelayCtrl_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_RadarConfiguration_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_RadarState_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_FilterCfg_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_FilterState_Header_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_FilterState_Cfg_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_Cfg_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_State_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_SpeedInformation_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_YawRateInformation_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_CollDetCfg_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_CollDetRegionCfg_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_CollDetRegionState_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_CollDetState_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_Cluster_0_Status_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_Obj_0_Status_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_Obj_1_General_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_Obj_2_Quality_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_Obj_3_Extended_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_Obj_4_Warning_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_VersionID_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_Cluster_1_General_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
+void FMon_Cluster_2_Quality_ch4_ars408_can_database_ch4(FrameMonitor_t* _mon);
 
 #endif // ARS408_CAN_DATABASE_CH4_USE_DIAG_MONITORS
 

File diff suppressed because it is too large
+ 366 - 216
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4.c


File diff suppressed because it is too large
+ 372 - 200
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4.h


+ 34 - 26
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5-binutil.c

@@ -13,36 +13,40 @@ uint32_t ars408_can_database_ch5_Receive(ars408_can_database_ch5_rx_t* _m, const
   if ((_id >= 0x8U) && (_id < 0x254U)) {
    if ((_id >= 0x8U) && (_id < 0x251U)) {
     if (_id == 0x8U) {
-     recid = Unpack_CollDetRelayCtrl_ARS408_can_database_ch5(&(_m->CollDetRelayCtrl), _d, dlc_);
+     recid = Unpack_CollDetRelayCtrl_ch5_ARS408_can_database_ch5(&(_m->CollDetRelayCtrl_ch5), _d, dlc_);
     } else if (_id == 0x250U) {
-     recid = Unpack_RadarConfiguration_ARS408_can_database_ch5(&(_m->RadarConfiguration), _d, dlc_);
+     recid = Unpack_RadarConfiguration_ch5_ARS408_can_database_ch5(&(_m->RadarConfiguration_ch5), _d, dlc_);
     }
    } else {
     if (_id == 0x251U) {
-     recid = Unpack_RadarState_ARS408_can_database_ch5(&(_m->RadarState), _d, dlc_);
+     recid = Unpack_RadarState_ch5_ARS408_can_database_ch5(&(_m->RadarState_ch5), _d, dlc_);
     } else {
      if (_id == 0x252U) {
-      recid = Unpack_FilterCfg_ARS408_can_database_ch5(&(_m->FilterCfg), _d, dlc_);
+      recid = Unpack_FilterCfg_ch5_ARS408_can_database_ch5(&(_m->FilterCfg_ch5), _d, dlc_);
      } else if (_id == 0x253U) {
-      recid = Unpack_FilterState_Header_ARS408_can_database_ch5(&(_m->FilterState_Header), _d, dlc_);
+      recid = Unpack_FilterState_Header_ch5_ARS408_can_database_ch5(&(_m->FilterState_Header_ch5), _d, dlc_);
      }
     }
    }
   } else {
-   if ((_id >= 0x254U) && (_id < 0x351U)) {
+   if ((_id >= 0x254U) && (_id < 0x350U)) {
     if (_id == 0x254U) {
-     recid = Unpack_FilterState_Cfg_ARS408_can_database_ch5(&(_m->FilterState_Cfg), _d, dlc_);
-    } else if (_id == 0x350U) {
-     recid = Unpack_SpeedInformation_ARS408_can_database_ch5(&(_m->SpeedInformation), _d, dlc_);
+     recid = Unpack_FilterState_Cfg_ch5_ARS408_can_database_ch5(&(_m->FilterState_Cfg_ch5), _d, dlc_);
+    } else {
+     if (_id == 0x255U) {
+      recid = Unpack_PolygonFilter_Cfg_ch5_ARS408_can_database_ch5(&(_m->PolygonFilter_Cfg_ch5), _d, dlc_);
+     } else if (_id == 0x256U) {
+      recid = Unpack_PolygonFilter_State_ch5_ARS408_can_database_ch5(&(_m->PolygonFilter_State_ch5), _d, dlc_);
+     }
     }
    } else {
-    if (_id == 0x351U) {
-     recid = Unpack_YawRateInformation_ARS408_can_database_ch5(&(_m->YawRateInformation), _d, dlc_);
+    if (_id == 0x350U) {
+     recid = Unpack_SpeedInformation_ch5_ARS408_can_database_ch5(&(_m->SpeedInformation_ch5), _d, dlc_);
     } else {
-     if (_id == 0x408U) {
-      recid = Unpack_CollDetState_ARS408_can_database_ch5(&(_m->CollDetState), _d, dlc_);
+     if (_id == 0x351U) {
+      recid = Unpack_YawRateInformation_ch5_ARS408_can_database_ch5(&(_m->YawRateInformation_ch5), _d, dlc_);
      } else if (_id == 0x450U) {
-      recid = Unpack_CollDetCfg_ARS408_can_database_ch5(&(_m->CollDetCfg), _d, dlc_);
+      recid = Unpack_CollDetCfg_ch5_ARS408_can_database_ch5(&(_m->CollDetCfg_ch5), _d, dlc_);
      }
     }
    }
@@ -51,40 +55,44 @@ uint32_t ars408_can_database_ch5_Receive(ars408_can_database_ch5_rx_t* _m, const
   if ((_id >= 0x451U) && (_id < 0x65CU)) {
    if ((_id >= 0x451U) && (_id < 0x650U)) {
     if (_id == 0x451U) {
-     recid = Unpack_CollDetRegionCfg_ARS408_can_database_ch5(&(_m->CollDetRegionCfg), _d, dlc_);
-    } else if (_id == 0x452U) {
-     recid = Unpack_CollDetRegionState_ARS408_can_database_ch5(&(_m->CollDetRegionState), _d, dlc_);
+     recid = Unpack_CollDetRegionCfg_ch5_ARS408_can_database_ch5(&(_m->CollDetRegionCfg_ch5), _d, dlc_);
+    } else {
+     if (_id == 0x452U) {
+      recid = Unpack_CollDetRegionState_ch5_ARS408_can_database_ch5(&(_m->CollDetRegionState_ch5), _d, dlc_);
+     } else if (_id == 0x458U) {
+      recid = Unpack_CollDetState_ch5_ARS408_can_database_ch5(&(_m->CollDetState_ch5), _d, dlc_);
+     }
     }
    } else {
     if (_id == 0x650U) {
-     recid = Unpack_Cluster_0_Status_ARS408_can_database_ch5(&(_m->Cluster_0_Status), _d, dlc_);
+     recid = Unpack_Cluster_0_Status_ch5_ARS408_can_database_ch5(&(_m->Cluster_0_Status_ch5), _d, dlc_);
     } else {
      if (_id == 0x65AU) {
-      recid = Unpack_Obj_0_Status_ARS408_can_database_ch5(&(_m->Obj_0_Status), _d, dlc_);
+      recid = Unpack_Obj_0_Status_ch5_ARS408_can_database_ch5(&(_m->Obj_0_Status_ch5), _d, dlc_);
      } else if (_id == 0x65BU) {
-      recid = Unpack_Obj_1_General_ARS408_can_database_ch5(&(_m->Obj_1_General), _d, dlc_);
+      recid = Unpack_Obj_1_General_ch5_ARS408_can_database_ch5(&(_m->Obj_1_General_ch5), _d, dlc_);
      }
     }
    }
   } else {
    if ((_id >= 0x65CU) && (_id < 0x750U)) {
     if (_id == 0x65CU) {
-     recid = Unpack_Obj_2_Quality_ARS408_can_database_ch5(&(_m->Obj_2_Quality), _d, dlc_);
+     recid = Unpack_Obj_2_Quality_ch5_ARS408_can_database_ch5(&(_m->Obj_2_Quality_ch5), _d, dlc_);
     } else {
      if (_id == 0x65DU) {
-      recid = Unpack_Obj_3_Extended_ARS408_can_database_ch5(&(_m->Obj_3_Extended), _d, dlc_);
+      recid = Unpack_Obj_3_Extended_ch5_ARS408_can_database_ch5(&(_m->Obj_3_Extended_ch5), _d, dlc_);
      } else if (_id == 0x65EU) {
-      recid = Unpack_Obj_4_Warning_ARS408_can_database_ch5(&(_m->Obj_4_Warning), _d, dlc_);
+      recid = Unpack_Obj_4_Warning_ch5_ARS408_can_database_ch5(&(_m->Obj_4_Warning_ch5), _d, dlc_);
      }
     }
    } else {
     if (_id == 0x750U) {
-     recid = Unpack_VersionID_ARS408_can_database_ch5(&(_m->VersionID), _d, dlc_);
+     recid = Unpack_VersionID_ch5_ARS408_can_database_ch5(&(_m->VersionID_ch5), _d, dlc_);
     } else {
      if (_id == 0x751U) {
-      recid = Unpack_Cluster_1_General_ARS408_can_database_ch5(&(_m->Cluster_1_General), _d, dlc_);
+      recid = Unpack_Cluster_1_General_ch5_ARS408_can_database_ch5(&(_m->Cluster_1_General_ch5), _d, dlc_);
      } else if (_id == 0x752U) {
-      recid = Unpack_Cluster_2_Quality_ARS408_can_database_ch5(&(_m->Cluster_2_Quality), _d, dlc_);
+      recid = Unpack_Cluster_2_Quality_ch5_ARS408_can_database_ch5(&(_m->Cluster_2_Quality_ch5), _d, dlc_);
      }
     }
    }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5-binutil.h

@@ -15,27 +15,29 @@ extern "C" {
 
 typedef struct
 {
-  CollDetRelayCtrl_t CollDetRelayCtrl;
-  RadarConfiguration_t RadarConfiguration;
-  RadarState_t RadarState;
-  FilterCfg_t FilterCfg;
-  FilterState_Header_t FilterState_Header;
-  FilterState_Cfg_t FilterState_Cfg;
-  SpeedInformation_t SpeedInformation;
-  YawRateInformation_t YawRateInformation;
-  CollDetState_t CollDetState;
-  CollDetCfg_t CollDetCfg;
-  CollDetRegionCfg_t CollDetRegionCfg;
-  CollDetRegionState_t CollDetRegionState;
-  Cluster_0_Status_t Cluster_0_Status;
-  Obj_0_Status_t Obj_0_Status;
-  Obj_1_General_t Obj_1_General;
-  Obj_2_Quality_t Obj_2_Quality;
-  Obj_3_Extended_t Obj_3_Extended;
-  Obj_4_Warning_t Obj_4_Warning;
-  VersionID_t VersionID;
-  Cluster_1_General_t Cluster_1_General;
-  Cluster_2_Quality_t Cluster_2_Quality;
+  CollDetRelayCtrl_ch5_t CollDetRelayCtrl_ch5;
+  RadarConfiguration_ch5_t RadarConfiguration_ch5;
+  RadarState_ch5_t RadarState_ch5;
+  FilterCfg_ch5_t FilterCfg_ch5;
+  FilterState_Header_ch5_t FilterState_Header_ch5;
+  FilterState_Cfg_ch5_t FilterState_Cfg_ch5;
+  PolygonFilter_Cfg_ch5_t PolygonFilter_Cfg_ch5;
+  PolygonFilter_State_ch5_t PolygonFilter_State_ch5;
+  SpeedInformation_ch5_t SpeedInformation_ch5;
+  YawRateInformation_ch5_t YawRateInformation_ch5;
+  CollDetCfg_ch5_t CollDetCfg_ch5;
+  CollDetRegionCfg_ch5_t CollDetRegionCfg_ch5;
+  CollDetRegionState_ch5_t CollDetRegionState_ch5;
+  CollDetState_ch5_t CollDetState_ch5;
+  Cluster_0_Status_ch5_t Cluster_0_Status_ch5;
+  Obj_0_Status_ch5_t Obj_0_Status_ch5;
+  Obj_1_General_ch5_t Obj_1_General_ch5;
+  Obj_2_Quality_ch5_t Obj_2_Quality_ch5;
+  Obj_3_Extended_ch5_t Obj_3_Extended_ch5;
+  Obj_4_Warning_ch5_t Obj_4_Warning_ch5;
+  VersionID_ch5_t VersionID_ch5;
+  Cluster_1_General_ch5_t Cluster_1_General_ch5;
+  Cluster_2_Quality_ch5_t Cluster_2_Quality_ch5;
 } ars408_can_database_ch5_rx_t;
 
 // There is no any TX mapped massage.

+ 2 - 2
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5-config.h

@@ -47,7 +47,7 @@
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
 
-/* #define ARS408_CAN_DATABASE_CH5_USE_SIGFLOAT */
+ #define ARS408_CAN_DATABASE_CH5_USE_SIGFLOAT
 
 
 /* ------------------------------------------------------------------------- *
@@ -103,7 +103,7 @@
   and loaded to payload
 
   In unpack function checksum signal is checked with calculated.
-  (result may be tested in dedicated Fmon_*** function).
+  (result may be tested in dedicated Fmon_*** function). */
 
 /* #define ARS408_CAN_DATABASE_CH5_AUTO_CSM */
 

+ 31 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5-fmon.c

@@ -7,107 +7,117 @@ Put the monitor function content here, keep in mind -
 next generation will completely clear all manually added code (!)
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_CollDetRelayCtrl_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarConfiguration_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_RadarConfiguration_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarState_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_RadarState_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterCfg_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_FilterCfg_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Header_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_FilterState_Header_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Cfg_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_FilterState_Cfg_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_SpeedInformation_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_Cfg_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_YawRateInformation_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_State_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetState_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_SpeedInformation_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetCfg_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_YawRateInformation_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionCfg_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_CollDetCfg_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionState_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_CollDetRegionCfg_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_0_Status_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_CollDetRegionState_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_0_Status_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_CollDetState_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_1_General_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_Cluster_0_Status_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_2_Quality_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_Obj_0_Status_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_3_Extended_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_Obj_1_General_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_4_Warning_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_Obj_2_Quality_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_VersionID_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_Obj_3_Extended_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_1_General_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_Obj_4_Warning_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_2_Quality_ars408_can_database_ch5(FrameMonitor_t* _mon)
+void FMon_VersionID_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_1_General_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_2_Quality_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5-fmon.h

@@ -20,27 +20,29 @@ It is the user responsibility to defined these functions in the
 separated .c file. If it won't be done the linkage error will happen
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_RadarConfiguration_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_RadarState_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_FilterCfg_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_FilterState_Header_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_FilterState_Cfg_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_SpeedInformation_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_YawRateInformation_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_CollDetState_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_CollDetCfg_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_CollDetRegionCfg_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_CollDetRegionState_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_Cluster_0_Status_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_Obj_0_Status_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_Obj_1_General_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_Obj_2_Quality_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_Obj_3_Extended_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_Obj_4_Warning_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_VersionID_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_Cluster_1_General_ars408_can_database_ch5(FrameMonitor_t* _mon);
-void FMon_Cluster_2_Quality_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_CollDetRelayCtrl_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_RadarConfiguration_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_RadarState_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_FilterCfg_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_FilterState_Header_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_FilterState_Cfg_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_Cfg_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_State_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_SpeedInformation_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_YawRateInformation_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_CollDetCfg_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_CollDetRegionCfg_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_CollDetRegionState_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_CollDetState_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_Cluster_0_Status_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_Obj_0_Status_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_Obj_1_General_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_Obj_2_Quality_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_Obj_3_Extended_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_Obj_4_Warning_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_VersionID_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_Cluster_1_General_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
+void FMon_Cluster_2_Quality_ch5_ars408_can_database_ch5(FrameMonitor_t* _mon);
 
 #endif // ARS408_CAN_DATABASE_CH5_USE_DIAG_MONITORS
 

File diff suppressed because it is too large
+ 366 - 216
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5.c


File diff suppressed because it is too large
+ 372 - 200
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5.h


+ 34 - 26
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch6-binutil.c

@@ -13,36 +13,40 @@ uint32_t ars408_can_database_ch6_Receive(ars408_can_database_ch6_rx_t* _m, const
   if ((_id >= 0x8U) && (_id < 0x264U)) {
    if ((_id >= 0x8U) && (_id < 0x261U)) {
     if (_id == 0x8U) {
-     recid = Unpack_CollDetRelayCtrl_ARS408_can_database_ch6(&(_m->CollDetRelayCtrl), _d, dlc_);
+     recid = Unpack_CollDetRelayCtrl_ch6_ARS408_can_database_ch6(&(_m->CollDetRelayCtrl_ch6), _d, dlc_);
     } else if (_id == 0x260U) {
-     recid = Unpack_RadarConfiguration_ARS408_can_database_ch6(&(_m->RadarConfiguration), _d, dlc_);
+     recid = Unpack_RadarConfiguration_ch6_ARS408_can_database_ch6(&(_m->RadarConfiguration_ch6), _d, dlc_);
     }
    } else {
     if (_id == 0x261U) {
-     recid = Unpack_RadarState_ARS408_can_database_ch6(&(_m->RadarState), _d, dlc_);
+     recid = Unpack_RadarState_ch6_ARS408_can_database_ch6(&(_m->RadarState_ch6), _d, dlc_);
     } else {
      if (_id == 0x262U) {
-      recid = Unpack_FilterCfg_ARS408_can_database_ch6(&(_m->FilterCfg), _d, dlc_);
+      recid = Unpack_FilterCfg_ch6_ARS408_can_database_ch6(&(_m->FilterCfg_ch6), _d, dlc_);
      } else if (_id == 0x263U) {
-      recid = Unpack_FilterState_Header_ARS408_can_database_ch6(&(_m->FilterState_Header), _d, dlc_);
+      recid = Unpack_FilterState_Header_ch6_ARS408_can_database_ch6(&(_m->FilterState_Header_ch6), _d, dlc_);
      }
     }
    }
   } else {
-   if ((_id >= 0x264U) && (_id < 0x361U)) {
+   if ((_id >= 0x264U) && (_id < 0x360U)) {
     if (_id == 0x264U) {
-     recid = Unpack_FilterState_Cfg_ARS408_can_database_ch6(&(_m->FilterState_Cfg), _d, dlc_);
-    } else if (_id == 0x360U) {
-     recid = Unpack_SpeedInformation_ARS408_can_database_ch6(&(_m->SpeedInformation), _d, dlc_);
+     recid = Unpack_FilterState_Cfg_ch6_ARS408_can_database_ch6(&(_m->FilterState_Cfg_ch6), _d, dlc_);
+    } else {
+     if (_id == 0x265U) {
+      recid = Unpack_PolygonFilter_Cfg_ch6_ARS408_can_database_ch6(&(_m->PolygonFilter_Cfg_ch6), _d, dlc_);
+     } else if (_id == 0x266U) {
+      recid = Unpack_PolygonFilter_State_ch6_ARS408_can_database_ch6(&(_m->PolygonFilter_State_ch6), _d, dlc_);
+     }
     }
    } else {
-    if (_id == 0x361U) {
-     recid = Unpack_YawRateInformation_ARS408_can_database_ch6(&(_m->YawRateInformation), _d, dlc_);
+    if (_id == 0x360U) {
+     recid = Unpack_SpeedInformation_ch6_ARS408_can_database_ch6(&(_m->SpeedInformation_ch6), _d, dlc_);
     } else {
-     if (_id == 0x408U) {
-      recid = Unpack_CollDetState_ARS408_can_database_ch6(&(_m->CollDetState), _d, dlc_);
+     if (_id == 0x361U) {
+      recid = Unpack_YawRateInformation_ch6_ARS408_can_database_ch6(&(_m->YawRateInformation_ch6), _d, dlc_);
      } else if (_id == 0x460U) {
-      recid = Unpack_CollDetCfg_ARS408_can_database_ch6(&(_m->CollDetCfg), _d, dlc_);
+      recid = Unpack_CollDetCfg_ch6_ARS408_can_database_ch6(&(_m->CollDetCfg_ch6), _d, dlc_);
      }
     }
    }
@@ -51,40 +55,44 @@ uint32_t ars408_can_database_ch6_Receive(ars408_can_database_ch6_rx_t* _m, const
   if ((_id >= 0x461U) && (_id < 0x66CU)) {
    if ((_id >= 0x461U) && (_id < 0x660U)) {
     if (_id == 0x461U) {
-     recid = Unpack_CollDetRegionCfg_ARS408_can_database_ch6(&(_m->CollDetRegionCfg), _d, dlc_);
-    } else if (_id == 0x462U) {
-     recid = Unpack_CollDetRegionState_ARS408_can_database_ch6(&(_m->CollDetRegionState), _d, dlc_);
+     recid = Unpack_CollDetRegionCfg_ch6_ARS408_can_database_ch6(&(_m->CollDetRegionCfg_ch6), _d, dlc_);
+    } else {
+     if (_id == 0x462U) {
+      recid = Unpack_CollDetRegionState_ch6_ARS408_can_database_ch6(&(_m->CollDetRegionState_ch6), _d, dlc_);
+     } else if (_id == 0x468U) {
+      recid = Unpack_CollDetState_ch6_ARS408_can_database_ch6(&(_m->CollDetState_ch6), _d, dlc_);
+     }
     }
    } else {
     if (_id == 0x660U) {
-     recid = Unpack_Cluster_0_Status_ARS408_can_database_ch6(&(_m->Cluster_0_Status), _d, dlc_);
+     recid = Unpack_Cluster_0_Status_ch6_ARS408_can_database_ch6(&(_m->Cluster_0_Status_ch6), _d, dlc_);
     } else {
      if (_id == 0x66AU) {
-      recid = Unpack_Obj_0_Status_ARS408_can_database_ch6(&(_m->Obj_0_Status), _d, dlc_);
+      recid = Unpack_Obj_0_Status_ch6_ARS408_can_database_ch6(&(_m->Obj_0_Status_ch6), _d, dlc_);
      } else if (_id == 0x66BU) {
-      recid = Unpack_Obj_1_General_ARS408_can_database_ch6(&(_m->Obj_1_General), _d, dlc_);
+      recid = Unpack_Obj_1_General_ch6_ARS408_can_database_ch6(&(_m->Obj_1_General_ch6), _d, dlc_);
      }
     }
    }
   } else {
    if ((_id >= 0x66CU) && (_id < 0x760U)) {
     if (_id == 0x66CU) {
-     recid = Unpack_Obj_2_Quality_ARS408_can_database_ch6(&(_m->Obj_2_Quality), _d, dlc_);
+     recid = Unpack_Obj_2_Quality_ch6_ARS408_can_database_ch6(&(_m->Obj_2_Quality_ch6), _d, dlc_);
     } else {
      if (_id == 0x66DU) {
-      recid = Unpack_Obj_3_Extended_ARS408_can_database_ch6(&(_m->Obj_3_Extended), _d, dlc_);
+      recid = Unpack_Obj_3_Extended_ch6_ARS408_can_database_ch6(&(_m->Obj_3_Extended_ch6), _d, dlc_);
      } else if (_id == 0x66EU) {
-      recid = Unpack_Obj_4_Warning_ARS408_can_database_ch6(&(_m->Obj_4_Warning), _d, dlc_);
+      recid = Unpack_Obj_4_Warning_ch6_ARS408_can_database_ch6(&(_m->Obj_4_Warning_ch6), _d, dlc_);
      }
     }
    } else {
     if (_id == 0x760U) {
-     recid = Unpack_VersionID_ARS408_can_database_ch6(&(_m->VersionID), _d, dlc_);
+     recid = Unpack_VersionID_ch6_ARS408_can_database_ch6(&(_m->VersionID_ch6), _d, dlc_);
     } else {
      if (_id == 0x761U) {
-      recid = Unpack_Cluster_1_General_ARS408_can_database_ch6(&(_m->Cluster_1_General), _d, dlc_);
+      recid = Unpack_Cluster_1_General_ch6_ARS408_can_database_ch6(&(_m->Cluster_1_General_ch6), _d, dlc_);
      } else if (_id == 0x762U) {
-      recid = Unpack_Cluster_2_Quality_ARS408_can_database_ch6(&(_m->Cluster_2_Quality), _d, dlc_);
+      recid = Unpack_Cluster_2_Quality_ch6_ARS408_can_database_ch6(&(_m->Cluster_2_Quality_ch6), _d, dlc_);
      }
     }
    }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch6-binutil.h

@@ -15,27 +15,29 @@ extern "C" {
 
 typedef struct
 {
-  CollDetRelayCtrl_t CollDetRelayCtrl;
-  RadarConfiguration_t RadarConfiguration;
-  RadarState_t RadarState;
-  FilterCfg_t FilterCfg;
-  FilterState_Header_t FilterState_Header;
-  FilterState_Cfg_t FilterState_Cfg;
-  SpeedInformation_t SpeedInformation;
-  YawRateInformation_t YawRateInformation;
-  CollDetState_t CollDetState;
-  CollDetCfg_t CollDetCfg;
-  CollDetRegionCfg_t CollDetRegionCfg;
-  CollDetRegionState_t CollDetRegionState;
-  Cluster_0_Status_t Cluster_0_Status;
-  Obj_0_Status_t Obj_0_Status;
-  Obj_1_General_t Obj_1_General;
-  Obj_2_Quality_t Obj_2_Quality;
-  Obj_3_Extended_t Obj_3_Extended;
-  Obj_4_Warning_t Obj_4_Warning;
-  VersionID_t VersionID;
-  Cluster_1_General_t Cluster_1_General;
-  Cluster_2_Quality_t Cluster_2_Quality;
+  CollDetRelayCtrl_ch6_t CollDetRelayCtrl_ch6;
+  RadarConfiguration_ch6_t RadarConfiguration_ch6;
+  RadarState_ch6_t RadarState_ch6;
+  FilterCfg_ch6_t FilterCfg_ch6;
+  FilterState_Header_ch6_t FilterState_Header_ch6;
+  FilterState_Cfg_ch6_t FilterState_Cfg_ch6;
+  PolygonFilter_Cfg_ch6_t PolygonFilter_Cfg_ch6;
+  PolygonFilter_State_ch6_t PolygonFilter_State_ch6;
+  SpeedInformation_ch6_t SpeedInformation_ch6;
+  YawRateInformation_ch6_t YawRateInformation_ch6;
+  CollDetCfg_ch6_t CollDetCfg_ch6;
+  CollDetRegionCfg_ch6_t CollDetRegionCfg_ch6;
+  CollDetRegionState_ch6_t CollDetRegionState_ch6;
+  CollDetState_ch6_t CollDetState_ch6;
+  Cluster_0_Status_ch6_t Cluster_0_Status_ch6;
+  Obj_0_Status_ch6_t Obj_0_Status_ch6;
+  Obj_1_General_ch6_t Obj_1_General_ch6;
+  Obj_2_Quality_ch6_t Obj_2_Quality_ch6;
+  Obj_3_Extended_ch6_t Obj_3_Extended_ch6;
+  Obj_4_Warning_ch6_t Obj_4_Warning_ch6;
+  VersionID_ch6_t VersionID_ch6;
+  Cluster_1_General_ch6_t Cluster_1_General_ch6;
+  Cluster_2_Quality_ch6_t Cluster_2_Quality_ch6;
 } ars408_can_database_ch6_rx_t;
 
 // There is no any TX mapped massage.

+ 2 - 2
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch6-config.h

@@ -47,7 +47,7 @@
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
 
-/* #define ARS408_CAN_DATABASE_CH6_USE_SIGFLOAT */
+ #define ARS408_CAN_DATABASE_CH6_USE_SIGFLOAT
 
 
 /* ------------------------------------------------------------------------- *
@@ -103,7 +103,7 @@
   and loaded to payload
 
   In unpack function checksum signal is checked with calculated.
-  (result may be tested in dedicated Fmon_*** function).
+  (result may be tested in dedicated Fmon_*** function). */
 
 /* #define ARS408_CAN_DATABASE_CH6_AUTO_CSM */
 

+ 31 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch6-fmon.c

@@ -7,107 +7,117 @@ Put the monitor function content here, keep in mind -
 next generation will completely clear all manually added code (!)
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_CollDetRelayCtrl_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarConfiguration_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_RadarConfiguration_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_RadarState_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_RadarState_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterCfg_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_FilterCfg_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Header_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_FilterState_Header_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_FilterState_Cfg_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_FilterState_Cfg_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_SpeedInformation_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_Cfg_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_YawRateInformation_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_PolygonFilter_State_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetState_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_SpeedInformation_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetCfg_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_YawRateInformation_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionCfg_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_CollDetCfg_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_CollDetRegionState_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_CollDetRegionCfg_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_0_Status_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_CollDetRegionState_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_0_Status_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_CollDetState_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_1_General_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_Cluster_0_Status_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_2_Quality_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_Obj_0_Status_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_3_Extended_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_Obj_1_General_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Obj_4_Warning_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_Obj_2_Quality_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_VersionID_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_Obj_3_Extended_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_1_General_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_Obj_4_Warning_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }
 
-void FMon_Cluster_2_Quality_ars408_can_database_ch6(FrameMonitor_t* _mon)
+void FMon_VersionID_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_1_General_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
+{
+  (void)_mon;
+}
+
+void FMon_Cluster_2_Quality_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon)
 {
   (void)_mon;
 }

+ 23 - 21
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch6-fmon.h

@@ -20,27 +20,29 @@ It is the user responsibility to defined these functions in the
 separated .c file. If it won't be done the linkage error will happen
 */
 
-void FMon_CollDetRelayCtrl_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_RadarConfiguration_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_RadarState_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_FilterCfg_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_FilterState_Header_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_FilterState_Cfg_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_SpeedInformation_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_YawRateInformation_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_CollDetState_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_CollDetCfg_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_CollDetRegionCfg_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_CollDetRegionState_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_Cluster_0_Status_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_Obj_0_Status_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_Obj_1_General_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_Obj_2_Quality_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_Obj_3_Extended_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_Obj_4_Warning_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_VersionID_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_Cluster_1_General_ars408_can_database_ch6(FrameMonitor_t* _mon);
-void FMon_Cluster_2_Quality_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_CollDetRelayCtrl_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_RadarConfiguration_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_RadarState_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_FilterCfg_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_FilterState_Header_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_FilterState_Cfg_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_Cfg_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_PolygonFilter_State_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_SpeedInformation_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_YawRateInformation_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_CollDetCfg_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_CollDetRegionCfg_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_CollDetRegionState_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_CollDetState_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_Cluster_0_Status_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_Obj_0_Status_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_Obj_1_General_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_Obj_2_Quality_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_Obj_3_Extended_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_Obj_4_Warning_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_VersionID_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_Cluster_1_General_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
+void FMon_Cluster_2_Quality_ch6_ars408_can_database_ch6(FrameMonitor_t* _mon);
 
 #endif // ARS408_CAN_DATABASE_CH6_USE_DIAG_MONITORS
 

Some files were not shown because too many files changed in this diff