Jelajahi Sumber

Merge branch 'master' into 1+x

lijinliang 3 tahun lalu
induk
melakukan
e46c9dc134
100 mengubah file dengan 9542 tambahan dan 3167 penghapusan
  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. TEMPAT SAMPAH
      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
 show_error=$1
 check_result()
 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[33m*************************************************\e[0m"
         echo -e "\e[31m    Please modify build error first,Exit!\e[0m"
         echo -e "\e[31m    Please modify build error first,Exit!\e[0m"
 		echo -e "\e[33m*************************************************\e[0m"
 		echo -e "\e[33m*************************************************\e[0m"
@@ -33,6 +33,23 @@ check_result()
 	fi
 	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
 MAKEOPT=-j8
 
 
 mkdir bin
 mkdir bin
@@ -44,7 +61,9 @@ cd ../../../
 cd src/common/modulecomm/
 cd src/common/modulecomm/
 $qtmake modulecomm.pro
 $qtmake modulecomm.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libmodulecomm.so ./../../../bin/
 cp libmodulecomm.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -54,7 +73,9 @@ cd ../../../
 cd src/common/xmlparam/
 cd src/common/xmlparam/
 $qtmake xmlparam.pro
 $qtmake xmlparam.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libxmlparam.so ./../../../bin/
 cp libxmlparam.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -64,7 +85,9 @@ cd ../../../
 cd src/common/ndt_cpu/
 cd src/common/ndt_cpu/
 $qtmake ndt_cpu.pro
 $qtmake ndt_cpu.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libndt_cpu.so ./../../../bin/
 cp libndt_cpu.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -84,7 +107,9 @@ cd ../../../
 cd src/common/ivlog/
 cd src/common/ivlog/
 $qtmake ivlog.pro
 $qtmake ivlog.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libivlog.so ./../../../bin/
 cp libivlog.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -94,7 +119,9 @@ cd ../../../
 cd src/common/ivfault/
 cd src/common/ivfault/
 $qtmake ivfault.pro
 $qtmake ivfault.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libivfault.so ./../../../bin/
 cp libivfault.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -104,7 +131,9 @@ cd ../../../
 cd src/common/platformif/
 cd src/common/platformif/
 $qtmake platformif.pro
 $qtmake platformif.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libplatformif.so ./../../../bin/
 cp libplatformif.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -114,7 +143,9 @@ cd ../../../
 cd src/common/ivexit/
 cd src/common/ivexit/
 $qtmake ivexit.pro
 $qtmake ivexit.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libivexit.so ./../../../bin/
 cp libivexit.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -124,7 +155,9 @@ cd ../../../
 cd src/common/ivbacktrace/
 cd src/common/ivbacktrace/
 $qtmake ivbacktrace.pro
 $qtmake ivbacktrace.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libivbacktrace.so ./../../../bin/
 cp libivbacktrace.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -134,7 +167,9 @@ cd ../../../
 cd src/common/ivchart/
 cd src/common/ivchart/
 $qtmake ivchart.pro
 $qtmake ivchart.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libivchart.so ./../../../bin/
 cp libivchart.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -150,7 +185,9 @@ do
 	cd src/controller/${x}/
 	cd src/controller/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -158,7 +195,6 @@ do
 	rm ${x}
 	rm ${x}
 	cd ../../../
 	cd ../../../
 done
 done
-
 decition_app_name=(
 decition_app_name=(
 	decition_brain_sf_1x
 	decition_brain_sf_1x
 )
 )
@@ -168,7 +204,9 @@ do
 	cd src/decition/${x}/
 	cd src/decition/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -189,7 +227,9 @@ do
 	cd src/driver/${x}/
 	cd src/driver/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -208,7 +248,9 @@ do
 	cd src/detection/${x}/
 	cd src/detection/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -227,7 +269,9 @@ do
 	cd src/fusion/${x}/
 	cd src/fusion/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -251,7 +295,9 @@ do
 	cd src/tool/${x}/
 	cd src/tool/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -269,7 +315,9 @@ do
 	cd src/ui/${x}/
 	cd src/ui/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -277,4 +325,4 @@ do
 	rm ${x}
 	rm ${x}
 	cd ../../../
 	cd ../../../
 done
 done
-
+show_result

+ 5 - 0
include/common.pri

@@ -26,6 +26,10 @@ QMAKE_LFLAGS += -no-pie
 
 
 INCLUDEPATH += $$PWD/../src/include/msgtype
 INCLUDEPATH += $$PWD/../src/include/msgtype
 
 
+if(contains(DEFINES,MODULECOMM_NO_FASTRTPS)){
+DEFINES += NOT_USEFASTRTPS
+}else{
+
 if(contains(DEFINES,SYSTEM_AGX)){
 if(contains(DEFINES,SYSTEM_AGX)){
 DEFINES += USE_FASTRTPS
 DEFINES += USE_FASTRTPS
 LIBS += -L$$PWD/../thirdpartylib/FastRTPS/lib/libarm64
 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")
 system("cd ./../thirdpartylib/FastRTPS/lib ; unzip -x -n libamd64.zip ; cd ../../../include ; echo $PWD")
 }
 }
 
 
+}
 
 
 
 
 if(contains(DEFINES,USE_FASTRTPS)){
 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
 show_error=$1
 check_result()
 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[33m*************************************************\e[0m"
         echo -e "\e[31m    Please modify build error first,Exit!\e[0m"
         echo -e "\e[31m    Please modify build error first,Exit!\e[0m"
 		echo -e "\e[33m*************************************************\e[0m"
 		echo -e "\e[33m*************************************************\e[0m"
@@ -33,6 +33,23 @@ check_result()
 	fi
 	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
 MAKEOPT=-j8
 
 
 mkdir bin
 mkdir bin
@@ -44,7 +61,9 @@ cd ../../../
 cd src/common/modulecomm/
 cd src/common/modulecomm/
 $qtmake modulecomm.pro
 $qtmake modulecomm.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libmodulecomm.so ./../../../bin/
 cp libmodulecomm.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -54,7 +73,9 @@ cd ../../../
 cd src/common/xmlparam/
 cd src/common/xmlparam/
 $qtmake xmlparam.pro
 $qtmake xmlparam.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libxmlparam.so ./../../../bin/
 cp libxmlparam.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -64,7 +85,9 @@ cd ../../../
 cd src/common/ndt_cpu/
 cd src/common/ndt_cpu/
 $qtmake ndt_cpu.pro
 $qtmake ndt_cpu.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libndt_cpu.so ./../../../bin/
 cp libndt_cpu.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -74,7 +97,9 @@ cd ../../../
 cd src/common/ivlog/
 cd src/common/ivlog/
 $qtmake ivlog.pro
 $qtmake ivlog.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libivlog.so ./../../../bin/
 cp libivlog.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -84,7 +109,9 @@ cd ../../../
 cd src/common/ivfault/
 cd src/common/ivfault/
 $qtmake ivfault.pro
 $qtmake ivfault.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libivfault.so ./../../../bin/
 cp libivfault.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -94,7 +121,9 @@ cd ../../../
 cd src/common/platformif/
 cd src/common/platformif/
 $qtmake platformif.pro
 $qtmake platformif.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libplatformif.so ./../../../bin/
 cp libplatformif.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -104,7 +133,9 @@ cd ../../../
 cd src/common/ivexit/
 cd src/common/ivexit/
 $qtmake ivexit.pro
 $qtmake ivexit.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libivexit.so ./../../../bin/
 cp libivexit.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -114,7 +145,9 @@ cd ../../../
 cd src/common/ivbacktrace/
 cd src/common/ivbacktrace/
 $qtmake ivbacktrace.pro
 $qtmake ivbacktrace.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libivbacktrace.so ./../../../bin/
 cp libivbacktrace.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -124,7 +157,9 @@ cd ../../../
 cd src/common/ivchart/
 cd src/common/ivchart/
 $qtmake ivchart.pro
 $qtmake ivchart.pro
 make $MAKEOPT
 make $MAKEOPT
-check_result $?
+build_result=$?
+check_result $build_result
+store_result
 make clean
 make clean
 cp libivchart.so ./../../../bin/
 cp libivchart.so ./../../../bin/
 rm Makefile
 rm Makefile
@@ -140,7 +175,9 @@ do
 	cd src/controller/${x}/
 	cd src/controller/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -148,9 +185,8 @@ do
 	rm ${x}
 	rm ${x}
 	cd ../../../
 	cd ../../../
 done
 done
-
 decition_app_name=(
 decition_app_name=(
-	decition_brain_sf
+#	decition_brain_sf
 	#decition_brain_ge3
 	#decition_brain_ge3
 	#decition_brain_qingyuan
 	#decition_brain_qingyuan
 	#decition_brain_vv7
 	#decition_brain_vv7
@@ -161,7 +197,9 @@ do
 	cd src/decition/${x}/
 	cd src/decition/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -188,7 +226,9 @@ do
 	cd src/driver/${x}/
 	cd src/driver/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -208,7 +248,9 @@ do
 	cd src/detection/${x}/
 	cd src/detection/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -227,7 +269,9 @@ do
 	cd src/fusion/${x}/
 	cd src/fusion/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -255,7 +299,9 @@ do
 	cd src/tool/${x}/
 	cd src/tool/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -273,7 +319,9 @@ do
 	cd src/ui/${x}/
 	cd src/ui/${x}/
 	$qtmake ${x}.pro
 	$qtmake ${x}.pro
 	make $MAKEOPT
 	make $MAKEOPT
-	check_result $?
+	build_result=$?
+	check_result $build_result
+	store_result
 	make clean
 	make clean
 	cp ${x} ./../../../bin/
 	cp ${x} ./../../../bin/
 	rm Makefile
 	rm Makefile
@@ -281,4 +329,4 @@ do
 	rm ${x}
 	rm ${x}
 	cd ../../../
 	cd ../../../
 done
 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);
     mmarking.push_back(xmarking);
 }
 }
 
 
+Object_markings::Object_markings()
+{
+
+}
+
 vector<Object_markings_marking> * Object_markings::GetMarkingVector()
 vector<Object_markings_marking> * Object_markings::GetMarkingVector()
 {
 {
     return &mmarking;
     return &mmarking;

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

@@ -65,6 +65,7 @@ private:
 
 
 public:
 public:
     Object_markings(Object_markings_marking xmarking);
     Object_markings(Object_markings_marking xmarking);
+    Object_markings();
 
 
     vector<Object_markings_marking> * GetMarkingVector();
     vector<Object_markings_marking> * GetMarkingVector();
     Object_markings_marking* GetMarking(unsigned int i);
     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)
 bool OpenDriveXmlParser::ReadObjectOutlines(Object * pObject,TiXmlElement *node)
 {
 {
     Object_outlines xoutlines;
     Object_outlines xoutlines;
@@ -1649,6 +1740,12 @@ bool OpenDriveXmlParser::ReadObject(Road *road, TiXmlElement *node)
         subNode = subNode->NextSiblingElement("outline");
         subNode = subNode->NextSiblingElement("outline");
     }
     }
 
 
+    subNode = node->FirstChildElement("markings");
+    if(subNode)
+    {
+        ReadObjectMarkings(pobject,subNode);
+    }
+
     return true;
     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_positionInertial(Signal * pSignal, TiXmlElement *node);
     bool ReadSignal_laneValidity(Signal * pSignal,TiXmlElement * node);
     bool ReadSignal_laneValidity(Signal * pSignal,TiXmlElement * node);
     bool ReadObject(Road * road,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);
 	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);
         WriteObjectOutlinesOutline(nodeObject,pObject_outlines_outline);
     }
     }
 
 
-//    unsigned nmarkingcount =
+    Object_markings * pObject_markings = pObject->Getmarkings();
+    if(pObject_markings != NULL)
+    {
+        WriteObjectMarkings(nodeObject,pObject_markings);
+    }
+
 
 
     return true;
     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)
 bool OpenDriveXmlWriter::WriteObjectMarkingsMarking(TiXmlElement *node, Object_markings_marking *pObject_markings_marking)
 {
 {
     TiXmlElement * nodemarking = new TiXmlElement("marking");
     TiXmlElement * nodemarking = new TiXmlElement("marking");
     node->LinkEndChild(nodemarking);
     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(TiXmlElement * node, Signal * pSignal);
     bool WriteSignal_positionInertial(TiXmlElement * node, signal_positionInertial * pSignal_positionInertial);
     bool WriteSignal_positionInertial(TiXmlElement * node, signal_positionInertial * pSignal_positionInertial);
     bool WriteSignal_laneValidity(TiXmlElement * node, signal_laneValidity * pSignal_laneValidity);
     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);
     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;
     int i;
     double  nlenth = 0;
     double  nlenth = 0;
     int nroadsize = mpxodr->GetRoadCount();
     int nroadsize = mpxodr->GetRoadCount();
+//    if(nroadsize<2)return;
     for(i=0;i<nroadsize;i++)
     for(i=0;i<nroadsize;i++)
     {
     {
         Road * px = mpxodr->GetRoad(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;
         int j;
         for(j=(i+1);j<(xvertexsamearray.size());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!" )
     error( "Couldn't find the modulecomm_inter.pri file!" )
 }
 }
 
 
+
+if(contains(DEFINES,MODULECOMM_NO_FASTRTPS)){
+DEFINES += NOT_USEFASTRTPS
+}else{
+
 if(contains(DEFINES,SYSTEM_AGX)){
 if(contains(DEFINES,SYSTEM_AGX)){
 DEFINES += USE_FASTRTPS
 DEFINES += USE_FASTRTPS
 LIBS += -L$$PWD/../../../thirdpartylib/FastRTPS/lib/libarm64
 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")
 system("cd ./../../../thirdpartylib/FastRTPS/lib ; unzip -x -n libamd64.zip ; cd ../../../include ; echo $PWD")
 }
 }
 
 
+}
+
 
 
 
 
 if(contains(DEFINES,USE_FASTRTPS)){
 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)
     if(mnType == procsm::ModeRead)
     {
     {
 
 
+        QTime xTime;
+        xTime.start();
+        bool bDel = true;
         mpReadThread->requestInterruption();
         mpReadThread->requestInterruption();
         while(!mpReadThread->isFinished())
         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;
     delete mpPSM;
 }
 }

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

@@ -1,6 +1,9 @@
 #include "mainwindow.h"
 #include "mainwindow.h"
 #include "ui_mainwindow.h"
 #include "ui_mainwindow.h"
 
 
+#include <QMouseEvent>
+#include <QDesktopWidget>
+
 MainWindow::MainWindow(QWidget *parent) :
 MainWindow::MainWindow(QWidget *parent) :
     QMainWindow(parent),
     QMainWindow(parent),
     ui(new Ui::MainWindow)
     ui(new Ui::MainWindow)
@@ -10,6 +13,12 @@ MainWindow::MainWindow(QWidget *parent) :
     ui->lineEdit_2->setValidator(new QIntValidator(ui->lineEdit_2));
     ui->lineEdit_2->setValidator(new QIntValidator(ui->lineEdit_2));
     ui->lineEdit_3->setValidator(new QIntValidator(ui->lineEdit_3));
     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()
 MainWindow::~MainWindow()
@@ -17,6 +26,29 @@ MainWindow::~MainWindow()
     delete ui;
     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()
 void MainWindow::on_pushButton_clicked()
 {
 {
     ServiceCarStatus.wheelangle = ui->lineEdit->text().toInt();
     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();
     void on_pushButton_3_clicked();
 
 
+protected:
+    void mousePressEvent(QMouseEvent *);
+    void mouseReleaseEvent(QMouseEvent *);
+    void mouseMoveEvent(QMouseEvent *);
+
 private:
 private:
     Ui::MainWindow *ui;
     Ui::MainWindow *ui;
+
+    bool isMousePress;
+    QPoint windowPos;
+    QPoint mousePos;
 };
 };
 
 
 #endif // MAINWINDOW_H
 #endif // MAINWINDOW_H

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

@@ -1,5 +1,9 @@
 #include <perception_sf/eyes.h>
 #include <perception_sf/eyes.h>
 #include <time.h>
 #include <time.h>
+#include <QTime>
+
+#include "ivlog.h"
+extern iv::Ivlog * givlog;
 
 
 iv::perception::Eyes::Eyes() {
 iv::perception::Eyes::Eyes() {
     mgpsindex = 0;
     mgpsindex = 0;
@@ -125,6 +129,13 @@ void iv::perception::Eyes::getSensorObstacle(iv::ObsRadar& brain_obs_radar, iv::
                 *data = *gps_ins_data_;
                 *data = *gps_ins_data_;
                 brain_gps_data =  data;
                 brain_gps_data =  data;
                 mgpsreadindex = mgpsindex;
                 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_;
 //            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;
     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 = new adcmemshare("radar",10*sizeof(iv::ObstacleBasic)*64,10);
 //    mparadar->listenmsg(iv::perception::ListenRadar);
 //    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)){
     if((obsDistance>8.0)&&(obsSpeed<reverse_speed)){
         controlBrake =0;
         controlBrake =0;
         controlSpeed =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;
     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",
 //    givlog->debug("brain_decition","brake: %f,obsDistance: %f,obsSpeed: %f,reverse_speed: %f",
 //                            (*decition)->brake,obsDistance,obsSpeed,reverse_speed);
 //                            (*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);
             //		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->wheel_angle << std::endl;
             std::cout<<ServiceCarStatus.mRunTime.elapsed()<<"ms:"<< "\n决策速度:%f\n" << decition_gps->speed << 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;
             last = start;
             //decitionMaker->decideFromGPS(decition_gps, gps_data_, navigation_data);		//gps_data_为当前读到的gps位置信息  navigation_data为导航数据  decition_gps为根据前两者得出的决策速度与决策角度
             //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 obstacle_avoid_flag=0;
 static int front_car_id=-1;
 static int front_car_id=-1;
 static int front_car_vector_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;
                         double forecast_final=secSpeed*secSpeed+5;
                         int forecast_final_point=((int)forecast_final)*10+1500;
                         int forecast_final_point=((int)forecast_final)*10+1500;
                         static int BrakePoint=-1;
                         static int BrakePoint=-1;
-                        static bool final_brake=false,final_brake_lock=false;
+                        static bool final_brake=false;
                         static double distance_to_end=1000;
                         static double distance_to_end=1000;
                         if(PathPoint+forecast_final_point>gpsMapLine.size())
                         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=false;
                             final_brake_lock=false;
                             final_brake_lock=false;
+                            brake_mode=false;
                             BrakePoint=-1;
                             BrakePoint=-1;
                         }
                         }
                         if(final_brake==true){
                         if(final_brake==true){
@@ -1088,7 +1090,8 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
                                             minDecelerate=-0.7;
                                             minDecelerate=-0.7;
                                 }else{
                                 }else{
                                             dSpeed=min(dSpeed, 3.0);
                                             dSpeed=min(dSpeed, 3.0);
-                                            final_brake_lock=true;                                            
+                                            final_brake_lock=true;
+                                            brake_mode=true;
                                             if(distance_to_end<0.8){
                                             if(distance_to_end<0.8){
                                                             minDecelerate=-0.7;
                                                             minDecelerate=-0.7;
                                             }
                                             }
@@ -1295,6 +1298,7 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
 
 
     //  dSpeed = getSpeed(gpsTraceNow);
     //  dSpeed = getSpeed(gpsTraceNow);
     dSpeed =80;
     dSpeed =80;
+
     planTrace.clear();//Add By YuChuli, 2020.11.26
     planTrace.clear();//Add By YuChuli, 2020.11.26
     for(int i=0;i<gpsTraceNow.size();i++){
     for(int i=0;i<gpsTraceNow.size();i++){
         TracePoint pt(gpsTraceNow[i].x,gpsTraceNow[i].y);
         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;
 //            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){
     if(front_car_id>0){
         static bool brake_state=false;
         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 i;
     int obj_size = out_detections.size()/kOutputNumBoxFeature;
     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++)
     for(i=0;i<obj_size;i++)
     {
     {
-        if (out_scores.at(i) < 0.10) continue;
         iv::lidar::lidarobject lidarobj;
         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));
         lidarobj.set_tyaw(out_detections.at(i*7+6));
         iv::lidar::PointXYZ centroid;
         iv::lidar::PointXYZ centroid;
         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.set_z(out_detections.at(i*7+2));
         _position = lidarobj.mutable_position();
         _position = lidarobj.mutable_position();
         _position->CopyFrom(position);
         _position->CopyFrom(position);
-
         lidarobj.set_mntype(out_labels.at(i));
         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.set_score(out_scores.at(i));
         lidarobj.add_type_probs(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_y(out_detections.at(i*7+1));
         point_cloud.set_z(out_detections.at(i*7+2));
         point_cloud.set_z(out_detections.at(i*7+2));
         point_cloud.set_i(out_detections.at(out_labels.at(i)));
         point_cloud.set_i(out_detections.at(out_labels.at(i)));
+
         _point_cloud = lidarobj.add_cloud();
         _point_cloud = lidarobj.add_cloud();
         _point_cloud->CopyFrom(point_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 = lidarobj.mutable_dimensions();
         pld->CopyFrom(ld);
         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();
         iv::lidar::lidarobject * po = lidarobjvec.add_obj();
         po->CopyFrom(lidarobj);
         po->CopyFrom(lidarobj);
     }
     }
@@ -328,8 +337,8 @@ int main(int argc, char *argv[])
 
 
        std::cout<<"use onnx model."<<std::endl;
        std::cout<<"use onnx model."<<std::endl;
     pPillars = new PointPillars(
     pPillars = new PointPillars(
-      0.1,
-      0.2,
+      0.15,
+      0.10,
       true,
       true,
       pfe_file,
       pfe_file,
       backbone_file,
       backbone_file,
@@ -340,8 +349,8 @@ int main(int argc, char *argv[])
     {
     {
         std::cout<<"use engine mode."<<std::endl;
         std::cout<<"use engine mode."<<std::endl;
     pPillars = new PointPillars(
     pPillars = new PointPillars(
-      0.1,
-      0.2,
+      0.15,
+      0.10,
       false,
       false,
       pfe_trt_file,
       pfe_trt_file,
       backbone_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
 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 += \
 HEADERS += \
     cluster2d.h \
     cluster2d.h \
@@ -70,5 +70,6 @@ INCLUDEPATH += $$PWD/caffe/proto/
 }
 }
 
 
 INCLUDEPATH += $$PWD/../../include/msgtype
 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>

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

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

@@ -26,7 +26,7 @@ struct msgunit
     char mstrmsgname[256];
     char mstrmsgname[256];
     int mnBufferSize = 10000;
     int mnBufferSize = 10000;
     int mnBufferCount = 1;
     int mnBufferCount = 1;
-    void * mpa;
+    void * mpa = nullptr;
     std::shared_ptr<char> mpstrmsgdata;
     std::shared_ptr<char> mpstrmsgdata;
     int mndatasize = 0;
     int mndatasize = 0;
     bool mbRefresh = false;
     bool mbRefresh = false;
@@ -72,7 +72,7 @@ private:
     double throttleCMD = 0;
     double throttleCMD = 0;
     double brakeCMD = 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:
 public slots:
     void ctrlMode_Changed_Slot(org::jeecg::defsControl::grpc::CtrlMode ctrlMode);
     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)
 VehiclePatrolExceptionClient::~VehiclePatrolExceptionClient(void)
 {
 {
-
+    if(shmGPSIMU.mpa != nullptr)iv::modulecomm::Unregister(shmGPSIMU.mpa);
+    requestInterruption();
+    while(this->isFinished() == false);
 }
 }
 
 
 void VehiclePatrolExceptionClient::dec_yaml(const char *stryamlpath)
 void VehiclePatrolExceptionClient::dec_yaml(const char *stryamlpath)
@@ -42,13 +44,13 @@ void VehiclePatrolExceptionClient::dec_yaml(const char *stryamlpath)
     catch(YAML::BadFile &e)
     catch(YAML::BadFile &e)
     {
     {
         std::cout<<e.what()<<std::endl;
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file load fail.");
+        std::cout<<"yaml file load fail."<<std::endl;
         return;
         return;
     }
     }
     catch(YAML::ParserException &e)
     catch(YAML::ParserException &e)
     {
     {
         std::cout<<e.what()<<std::endl;
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file is malformed.");
+        std::cout<<"yaml file is malformed."<<std::endl;
         return;
         return;
     }
     }
 
 
@@ -81,7 +83,7 @@ void VehiclePatrolExceptionClient::ListenGPSIMUMsg(const char * strdata,const un
     iv::gps::gpsimu xdata;
     iv::gps::gpsimu xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     if(!xdata.ParseFromArray(strdata,nSize))
     {
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenGPSIMUMsg parese error."<<std::endl;
         return;
         return;
     }
     }
 
 
@@ -210,7 +212,7 @@ void VehiclePatrolExceptionClient::run()
     xTime.start();
     xTime.start();
     int lastTime = xTime.elapsed();
     int lastTime = xTime.elapsed();
     uint64_t interval = std::atoi(gstrpatrolInterval.c_str());
     uint64_t interval = std::atoi(gstrpatrolInterval.c_str());
-    while (true)
+    while (!QThread::isInterruptionRequested())
     {
     {
         if(abs(xTime.elapsed() - lastTime)>=interval)
         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];
     char mstrmsgname[256];
     int mnBufferSize = 10000;
     int mnBufferSize = 10000;
     int mnBufferCount = 1;
     int mnBufferCount = 1;
-    void * mpa;
+    void * mpa = nullptr;
     std::shared_ptr<char> mpstrmsgdata;
     std::shared_ptr<char> mpstrmsgdata;
     int mndatasize = 0;
     int mndatasize = 0;
     bool mbRefresh = false;
     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)
 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)
 void DataExchangeClient::dec_yaml(const char *stryamlpath)
@@ -67,13 +75,13 @@ void DataExchangeClient::dec_yaml(const char *stryamlpath)
     catch(YAML::BadFile &e)
     catch(YAML::BadFile &e)
     {
     {
         std::cout<<e.what()<<std::endl;
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file load fail.");
+        std::cout<<"yaml file load fail."<<std::endl;
         return;
         return;
     }
     }
     catch(YAML::ParserException &e)
     catch(YAML::ParserException &e)
     {
     {
         std::cout<<e.what()<<std::endl;
         std::cout<<e.what()<<std::endl;
-        qDebug("yaml file is malformed.");
+        std::cout<<"yaml file is malformed."<<std::endl;
         return;
         return;
     }
     }
 
 
@@ -220,7 +228,7 @@ void DataExchangeClient::ListenFrontPicMsg(const char * strdata,const unsigned i
     iv::vision::rawpic xdata;
     iv::vision::rawpic xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     if(!xdata.ParseFromArray(strdata,nSize))
     {
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenFrontPicMsg parese error."<<std::endl;
         return;
         return;
     }
     }
 
 
@@ -238,7 +246,7 @@ void DataExchangeClient::ListenRearPicMsg(const char * strdata,const unsigned in
     iv::vision::rawpic xdata;
     iv::vision::rawpic xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     if(!xdata.ParseFromArray(strdata,nSize))
     {
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenRearPicMsg parese error."<<std::endl;
         return;
         return;
     }
     }
 
 
@@ -256,7 +264,7 @@ void DataExchangeClient::ListenLeftPicMsg(const char * strdata,const unsigned in
     iv::vision::rawpic xdata;
     iv::vision::rawpic xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     if(!xdata.ParseFromArray(strdata,nSize))
     {
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenLeftPicMsg parese error."<<std::endl;
         return;
         return;
     }
     }
 
 
@@ -274,7 +282,7 @@ void DataExchangeClient::ListenRightPicMsg(const char * strdata,const unsigned i
     iv::vision::rawpic xdata;
     iv::vision::rawpic xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     if(!xdata.ParseFromArray(strdata,nSize))
     {
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenRightPicMsg parese error."<<std::endl;
         return;
         return;
     }
     }
 
 
@@ -292,7 +300,7 @@ void DataExchangeClient::ListenChassisMsg(const char * strdata,const unsigned in
     iv::chassis xdata;
     iv::chassis xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     if(!xdata.ParseFromArray(strdata,nSize))
     {
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenChassisMsg parese error."<<std::endl;
         return;
         return;
     }
     }
 
 
@@ -307,7 +315,7 @@ void DataExchangeClient::ListenGPSIMUMsg(const char * strdata,const unsigned int
     iv::gps::gpsimu xdata;
     iv::gps::gpsimu xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     if(!xdata.ParseFromArray(strdata,nSize))
     {
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenGPSIMUMsg parese error."<<std::endl;
         return;
         return;
     }
     }
 
 
@@ -331,7 +339,7 @@ void DataExchangeClient::ListenPlatformFeedbackMsg(const char * strdata,const un
     iv::platformFeedback xdata;
     iv::platformFeedback xdata;
     if(!xdata.ParseFromArray(strdata,nSize))
     if(!xdata.ParseFromArray(strdata,nSize))
     {
     {
-        std::cout<<" MainWindow::UpdateSlider parese error."<<std::endl;
+        std::cout<<" ListenPlatformFeedbackMsg parese error."<<std::endl;
         return;
         return;
     }
     }
 
 
@@ -628,12 +636,15 @@ void DataExchangeClient::run()
     }
     }
 
 
     int lastTime = xTime.elapsed();
     int lastTime = xTime.elapsed();
+    int realLastTime = xTime.elapsed();
     uint64_t interval = std::atoi(gstruploadInterval.c_str());
     uint64_t interval = std::atoi(gstruploadInterval.c_str());
-    while (true)
+    while (!QThread::isInterruptionRequested())
     {
     {
         if(abs(xTime.elapsed() - lastTime)>=interval)
         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::string reply = uploadVehicleInfo();
 //            std::cout<< reply <<std::endl;
 //            std::cout<< reply <<std::endl;
 //            std::cout<<std::setprecision(12)<<destinationPosition.latitude()<<","<<destinationPosition.longitude()<<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];
     char mstrmsgname[256];
     int mnBufferSize = 10000;
     int mnBufferSize = 10000;
     int mnBufferCount = 1;
     int mnBufferCount = 1;
-    void * mpa;
+    void * mpa = nullptr;
     std::shared_ptr<char> mpstrmsgdata;
     std::shared_ptr<char> mpstrmsgdata;
     int mndatasize = 0;
     int mndatasize = 0;
     bool mbRefresh = false;
     bool mbRefresh = false;

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

@@ -524,7 +524,7 @@ void grpcpc::threadpicdownload(int nCamPos)
         } else {
         } else {
           std::cout << status.error_code() << ": " << status.error_message()
           std::cout << status.error_code() << ": " << status.error_message()
                     << std::endl;
                     << std::endl;
-          std::cout<<"RPC failed"<<std::endl;
+          std::cout<<"camera dowm"<<nCamPos<<" RPC failed"<<std::endl;
           if(status.error_code() == 4)
           if(status.error_code() == 4)
           {
           {
               std::cout<<nCamPos<<" RPC Exceed Time, Create New stub_"<<std::endl;
               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/gps.pb.h \
     ../../include/msgtype/gpsimu.pb.h \
     ../../include/msgtype/gpsimu.pb.h \
     ../../include/msgtype/imu.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);
    strx = strlistrmc.at(17);
    vu = strx.toDouble();
    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)
    if((mTime.elapsed()-mOldTime) >= 100)
    {
    {
@@ -592,6 +594,7 @@ void hcp2::SerialGPSDecodeSen(QString strsen)
    gpsimu.set_vd(vu);
    gpsimu.set_vd(vu);
    gpsimu.set_ve(ve);
    gpsimu.set_ve(ve);
    gpsimu.set_vn(vn);
    gpsimu.set_vn(vn);
+   gpsimu.set_speed(fVel);
    gpsimu.set_lat(fLat);
    gpsimu.set_lat(fLat);
    gpsimu.set_lon(fLon);
    gpsimu.set_lon(fLon);
    gpsimu.set_heading(fheading);
    gpsimu.set_heading(fheading);
@@ -638,6 +641,7 @@ void hcp2::SerialGPSDecodeSen(QString strsen)
    mfVe = ve;
    mfVe = ve;
    mfVn = vn;
    mfVn = vn;
    mfVu = vu;
    mfVu = vu;
+   mVel = fVel;
    mheading = fheading;
    mheading = fheading;
    mfPitch = fPitch;
    mfPitch = fPitch;
    mfRoll = fRoll;
    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 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;
  uint32_t recid = 0;
- if ((_id >= 0x8U) && (_id < 0x402U)) {
+ if ((_id >= 0x8U) && (_id < 0x401U)) {
   if ((_id >= 0x8U) && (_id < 0x204U)) {
   if ((_id >= 0x8U) && (_id < 0x204U)) {
    if ((_id >= 0x8U) && (_id < 0x201U)) {
    if ((_id >= 0x8U) && (_id < 0x201U)) {
     if (_id == 0x8U) {
     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) {
     } 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 {
    } else {
     if (_id == 0x201U) {
     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 {
     } else {
      if (_id == 0x202U) {
      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) {
      } 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 {
   } else {
-   if ((_id >= 0x204U) && (_id < 0x301U)) {
+   if ((_id >= 0x204U) && (_id < 0x300U)) {
     if (_id == 0x204U) {
     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 {
    } 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 {
     } 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 {
  } 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 {
    } else {
     if (_id == 0x600U) {
     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 {
     } else {
      if (_id == 0x60AU) {
      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) {
      } 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 {
   } else {
    if ((_id >= 0x60CU) && (_id < 0x700U)) {
    if ((_id >= 0x60CU) && (_id < 0x700U)) {
     if (_id == 0x60CU) {
     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 {
     } else {
      if (_id == 0x60DU) {
      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) {
      } 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 {
    } else {
     if (_id == 0x700U) {
     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 {
     } else {
      if (_id == 0x701U) {
      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) {
      } 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
 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;
 } ars408_can_database_ch0_rx_t;
 
 
 // There is no any TX mapped massage.
 // 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.
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
   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
   and loaded to payload
 
 
   In unpack function checksum signal is checked with calculated.
   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 */
 /* #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 (!)
 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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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;
   (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
 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
 #endif // ARS408_CAN_DATABASE_CH0_USE_DIAG_MONITORS
 
 

File diff ditekan karena terlalu besar
+ 338 - 188
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch0.c


File diff ditekan karena terlalu besar
+ 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 < 0x214U)) {
    if ((_id >= 0x8U) && (_id < 0x211U)) {
    if ((_id >= 0x8U) && (_id < 0x211U)) {
     if (_id == 0x8U) {
     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) {
     } 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 {
    } else {
     if (_id == 0x211U) {
     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 {
     } else {
      if (_id == 0x212U) {
      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) {
      } 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 {
   } else {
-   if ((_id >= 0x214U) && (_id < 0x311U)) {
+   if ((_id >= 0x214U) && (_id < 0x310U)) {
     if (_id == 0x214U) {
     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 {
    } 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 {
     } 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) {
      } 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 < 0x61CU)) {
    if ((_id >= 0x411U) && (_id < 0x610U)) {
    if ((_id >= 0x411U) && (_id < 0x610U)) {
     if (_id == 0x411U) {
     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 {
    } else {
     if (_id == 0x610U) {
     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 {
     } else {
      if (_id == 0x61AU) {
      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) {
      } 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 {
   } else {
    if ((_id >= 0x61CU) && (_id < 0x710U)) {
    if ((_id >= 0x61CU) && (_id < 0x710U)) {
     if (_id == 0x61CU) {
     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 {
     } else {
      if (_id == 0x61DU) {
      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) {
      } 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 {
    } else {
     if (_id == 0x710U) {
     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 {
     } else {
      if (_id == 0x711U) {
      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) {
      } 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
 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;
 } ars408_can_database_ch1_rx_t;
 
 
 // There is no any TX mapped massage.
 // 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.
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
   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
   and loaded to payload
 
 
   In unpack function checksum signal is checked with calculated.
   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 */
 /* #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 (!)
 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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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;
   (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
 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
 #endif // ARS408_CAN_DATABASE_CH1_USE_DIAG_MONITORS
 
 

File diff ditekan karena terlalu besar
+ 366 - 216
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch1.c


File diff ditekan karena terlalu besar
+ 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 < 0x224U)) {
    if ((_id >= 0x8U) && (_id < 0x221U)) {
    if ((_id >= 0x8U) && (_id < 0x221U)) {
     if (_id == 0x8U) {
     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) {
     } 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 {
    } else {
     if (_id == 0x221U) {
     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 {
     } else {
      if (_id == 0x222U) {
      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) {
      } 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 {
   } else {
-   if ((_id >= 0x224U) && (_id < 0x321U)) {
+   if ((_id >= 0x224U) && (_id < 0x320U)) {
     if (_id == 0x224U) {
     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 {
    } 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 {
     } 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) {
      } 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 < 0x62CU)) {
    if ((_id >= 0x421U) && (_id < 0x620U)) {
    if ((_id >= 0x421U) && (_id < 0x620U)) {
     if (_id == 0x421U) {
     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 {
    } else {
     if (_id == 0x620U) {
     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 {
     } else {
      if (_id == 0x62AU) {
      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) {
      } 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 {
   } else {
    if ((_id >= 0x62CU) && (_id < 0x720U)) {
    if ((_id >= 0x62CU) && (_id < 0x720U)) {
     if (_id == 0x62CU) {
     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 {
     } else {
      if (_id == 0x62DU) {
      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) {
      } 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 {
    } else {
     if (_id == 0x720U) {
     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 {
     } else {
      if (_id == 0x721U) {
      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) {
      } 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
 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;
 } ars408_can_database_ch2_rx_t;
 
 
 // There is no any TX mapped massage.
 // 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.
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
   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
   and loaded to payload
 
 
   In unpack function checksum signal is checked with calculated.
   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 */
 /* #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 (!)
 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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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;
   (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
 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
 #endif // ARS408_CAN_DATABASE_CH2_USE_DIAG_MONITORS
 
 

File diff ditekan karena terlalu besar
+ 366 - 216
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch2.c


File diff ditekan karena terlalu besar
+ 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 < 0x234U)) {
    if ((_id >= 0x8U) && (_id < 0x231U)) {
    if ((_id >= 0x8U) && (_id < 0x231U)) {
     if (_id == 0x8U) {
     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) {
     } 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 {
    } else {
     if (_id == 0x231U) {
     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 {
     } else {
      if (_id == 0x232U) {
      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) {
      } 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 {
   } else {
-   if ((_id >= 0x234U) && (_id < 0x331U)) {
+   if ((_id >= 0x234U) && (_id < 0x330U)) {
     if (_id == 0x234U) {
     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 {
    } 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 {
     } 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) {
      } 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 < 0x63CU)) {
    if ((_id >= 0x431U) && (_id < 0x630U)) {
    if ((_id >= 0x431U) && (_id < 0x630U)) {
     if (_id == 0x431U) {
     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 {
    } else {
     if (_id == 0x630U) {
     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 {
     } else {
      if (_id == 0x63AU) {
      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) {
      } 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 {
   } else {
    if ((_id >= 0x63CU) && (_id < 0x730U)) {
    if ((_id >= 0x63CU) && (_id < 0x730U)) {
     if (_id == 0x63CU) {
     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 {
     } else {
      if (_id == 0x63DU) {
      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) {
      } 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 {
    } else {
     if (_id == 0x730U) {
     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 {
     } else {
      if (_id == 0x731U) {
      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) {
      } 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
 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;
 } ars408_can_database_ch3_rx_t;
 
 
 // There is no any TX mapped massage.
 // 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.
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
   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
   and loaded to payload
 
 
   In unpack function checksum signal is checked with calculated.
   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 */
 /* #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 (!)
 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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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;
   (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
 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
 #endif // ARS408_CAN_DATABASE_CH3_USE_DIAG_MONITORS
 
 

File diff ditekan karena terlalu besar
+ 366 - 216
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch3.c


File diff ditekan karena terlalu besar
+ 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 < 0x244U)) {
    if ((_id >= 0x8U) && (_id < 0x241U)) {
    if ((_id >= 0x8U) && (_id < 0x241U)) {
     if (_id == 0x8U) {
     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) {
     } 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 {
    } else {
     if (_id == 0x241U) {
     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 {
     } else {
      if (_id == 0x242U) {
      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) {
      } 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 {
   } else {
-   if ((_id >= 0x244U) && (_id < 0x341U)) {
+   if ((_id >= 0x244U) && (_id < 0x340U)) {
     if (_id == 0x244U) {
     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 {
    } 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 {
     } 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) {
      } 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 < 0x64CU)) {
    if ((_id >= 0x441U) && (_id < 0x640U)) {
    if ((_id >= 0x441U) && (_id < 0x640U)) {
     if (_id == 0x441U) {
     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 {
    } else {
     if (_id == 0x640U) {
     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 {
     } else {
      if (_id == 0x64AU) {
      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) {
      } 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 {
   } else {
    if ((_id >= 0x64CU) && (_id < 0x740U)) {
    if ((_id >= 0x64CU) && (_id < 0x740U)) {
     if (_id == 0x64CU) {
     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 {
     } else {
      if (_id == 0x64DU) {
      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) {
      } 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 {
    } else {
     if (_id == 0x740U) {
     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 {
     } else {
      if (_id == 0x741U) {
      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) {
      } 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
 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;
 } ars408_can_database_ch4_rx_t;
 
 
 // There is no any TX mapped massage.
 // 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.
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
   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
   and loaded to payload
 
 
   In unpack function checksum signal is checked with calculated.
   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 */
 /* #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 (!)
 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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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;
   (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
 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
 #endif // ARS408_CAN_DATABASE_CH4_USE_DIAG_MONITORS
 
 

File diff ditekan karena terlalu besar
+ 366 - 216
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch4.c


File diff ditekan karena terlalu besar
+ 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 < 0x254U)) {
    if ((_id >= 0x8U) && (_id < 0x251U)) {
    if ((_id >= 0x8U) && (_id < 0x251U)) {
     if (_id == 0x8U) {
     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) {
     } 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 {
    } else {
     if (_id == 0x251U) {
     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 {
     } else {
      if (_id == 0x252U) {
      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) {
      } 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 {
   } else {
-   if ((_id >= 0x254U) && (_id < 0x351U)) {
+   if ((_id >= 0x254U) && (_id < 0x350U)) {
     if (_id == 0x254U) {
     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 {
    } 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 {
     } 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) {
      } 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 < 0x65CU)) {
    if ((_id >= 0x451U) && (_id < 0x650U)) {
    if ((_id >= 0x451U) && (_id < 0x650U)) {
     if (_id == 0x451U) {
     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 {
    } else {
     if (_id == 0x650U) {
     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 {
     } else {
      if (_id == 0x65AU) {
      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) {
      } 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 {
   } else {
    if ((_id >= 0x65CU) && (_id < 0x750U)) {
    if ((_id >= 0x65CU) && (_id < 0x750U)) {
     if (_id == 0x65CU) {
     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 {
     } else {
      if (_id == 0x65DU) {
      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) {
      } 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 {
    } else {
     if (_id == 0x750U) {
     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 {
     } else {
      if (_id == 0x751U) {
      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) {
      } 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
 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;
 } ars408_can_database_ch5_rx_t;
 
 
 // There is no any TX mapped massage.
 // 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.
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
   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
   and loaded to payload
 
 
   In unpack function checksum signal is checked with calculated.
   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 */
 /* #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 (!)
 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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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;
   (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
 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
 #endif // ARS408_CAN_DATABASE_CH5_USE_DIAG_MONITORS
 
 

File diff ditekan karena terlalu besar
+ 366 - 216
src/driver/driver_radar_continental_ARS408_SRR308/CAN_database_code/ars408_can_database_ch5.c


File diff ditekan karena terlalu besar
+ 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 < 0x264U)) {
    if ((_id >= 0x8U) && (_id < 0x261U)) {
    if ((_id >= 0x8U) && (_id < 0x261U)) {
     if (_id == 0x8U) {
     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) {
     } 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 {
    } else {
     if (_id == 0x261U) {
     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 {
     } else {
      if (_id == 0x262U) {
      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) {
      } 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 {
   } else {
-   if ((_id >= 0x264U) && (_id < 0x361U)) {
+   if ((_id >= 0x264U) && (_id < 0x360U)) {
     if (_id == 0x264U) {
     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 {
    } 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 {
     } 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) {
      } 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 < 0x66CU)) {
    if ((_id >= 0x461U) && (_id < 0x660U)) {
    if ((_id >= 0x461U) && (_id < 0x660U)) {
     if (_id == 0x461U) {
     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 {
    } else {
     if (_id == 0x660U) {
     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 {
     } else {
      if (_id == 0x66AU) {
      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) {
      } 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 {
   } else {
    if ((_id >= 0x66CU) && (_id < 0x760U)) {
    if ((_id >= 0x66CU) && (_id < 0x760U)) {
     if (_id == 0x66CU) {
     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 {
     } else {
      if (_id == 0x66DU) {
      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) {
      } 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 {
    } else {
     if (_id == 0x760U) {
     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 {
     } else {
      if (_id == 0x761U) {
      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) {
      } 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
 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;
 } ars408_can_database_ch6_rx_t;
 
 
 // There is no any TX mapped massage.
 // 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.
   3. In unpack function '_phys' signal will be written by '_ro' signal.
   User have to use '_phys' signal to read physical value. */
   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
   and loaded to payload
 
 
   In unpack function checksum signal is checked with calculated.
   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 */
 /* #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 (!)
 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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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)_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;
   (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
 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
 #endif // ARS408_CAN_DATABASE_CH6_USE_DIAG_MONITORS
 
 

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini