-/**************************************************** mobileye obstacle status ****************************************************************************
- * message ID:0x738
- * member: type physical unit range note
- * num_obstacles int / [0:255] /
- * timestamp int ms [0:255] only the lowest 8 bits of the timestamp is given
- * app_version: int / [0:255] vesion info consists of X.Y.Z.W
- * active_version int/2bits / [0:3] index of the active section of app_version signal
-/**************************************************** mobileye obstacle data a ****************************************************************************
- * message ID:0x739
- * member: type physical unit range note
- * obstacle_ID int / [0:63] new obstacles are given the last used free ID
- * obstacle_pos_x double m [0,250] longtitude position of the obstacle relative to the ref point
- * obstacle_pos_y double m [-31.93,31.93] lateral position of the obstacle, error relative to pos_x below 10% or 2meters
- * blinker_info int/enum / [0:4] 0 unavailable, 1 off, 2 left, 3 right, 4 both indicated blinkers status
-/**************************************************** mobileye obstacle data b ****************************************************************************
- * message ID:0x73a
- * member: type physical unit range note
- * obstacle_length double m [0,31] length of the obstacle(longitude axis)
- * obstacle_width double m [0,12.5] width of the obstacle(lateral axis)
- * obstacle_age int / [0:255] value starts at 1 when it is first detected, increaments in i each frame
- * obstacle_lane int/enum / [0:3] 0 not assigned, 1 ego lane, 2 next lane(left or right) or next next lane,
- * 3 invalid signal
- * is_cipv_flag int/enum / [0:1] 0 not cipv, 1 cipv(closest in path vehicle)
- * radar_pos_x double m [0,250] longtitude postion of the primary radar target matched to the vision target, dist=relative to ref point
- * if no radar target is matched, value = 0xfff
- * radar_vel_x double m/s [-127.93,127.93] longitude velocity of the radar target matched to the vision targets, if no radar target is matched value=0xfff
-/**************************************************** mobileye obstacle data c ****************************************************************************
- * message ID:0x73b
- * member: type physical unit range note
- * obstacle_angle_rate double degree/s [-327.68, 327.68] Angle rate of Center of Obstacle, negative->moved to left
-/**************************************************** mobileye aftermarket lane ****************************************************************************
-/**************************************************** mobileye LKA left lane a ****************************************************************************
-/**************************************************** mobileye LKA left lane b ****************************************************************************
- * message ID:0x767
- * member: type physical unit range note
- * heading_angle double radians [-0.357, 0.357] physical slope of the lane mark positive->steering towards the right
- * view_range double m [0, 127.996] physical view range of lane mark
-/**************************************************** mobileye LKA right lane a ****************************************************************************
-/**************************************************** mobileye LKA right lane b ****************************************************************************
- * message ID:0x767
- * member: type physical unit range note
- * heading_angle double radians [-0.357, 0.357] physical slope of the lane mark positive->steering towards the right
- * view_range double m [0, 127.996] physical view range of lane mark
-/**************************************************** mobileye next lane a **********************************************************************************
- * message ID:0x76c
- * member: type physical unit range note
- * lane_type enum / [1:2] 1 solid, 2 undecided
- * quality / / / not yet implemented for next lanes
- * model_degree enum / [1:3] 1 linear model, 2 parabolic model, 3 3rd-degree model
- * position double m [-127,128] physical distance between lane mark and camera on the lateral position
- * curvature double / [-0.02, 0.02] given a very low curvature derivative, positive curvature indicates a right hand side curve
-/**************************************************** mobileye LKA right lane b ****************************************************************************
- * message ID:0x76d
- * member: type physical unit range note
- * heading_angle double radians [-0.357, 0.357] physical slope of the lane mark positive->steering towards the right
- * view_range double m [0, 127.996] physical view range of lane mark
-/********************************************** mobileye number of next lane markers reported **************************************************************
- * message ID:0x76b
- * member: type physical unit range note
- * num_of_next_lane_mark_reported enum / 1,2 indicates how many extra lane markers are also reported, on top of left
- * and right lane. Currently two lane marks are always reported one for left and one for
- * right, and they are valid only if the lane type is Solid.
- int res = VCI_Receive(m_devtype, m_devindmob, m_cannum, receivedata, 2500, 10);
- if (res <= 0)
- {
-#ifdef linux
- usleep(1000);
-#endif
-#ifdef WIN32
- Sleep(1);
-#endif
- continue;
- }
- for (int i = 0; i < res; i++)
- {
- switch(receivedata[i].ID)
- {
- case 0x700:
- impl_0x700(receivedata[i]);
- break;
- case 0x737:
- impl_0x737(receivedata[i]);
- break;
- case 0x738:
- impl_0x738(receivedata[i]);
- break;
- case 0x739: case 0x73c: case 0x73f: case 0x742: case 0x745: case 0x748: case 0x74b: case 0x74e: case 0x751: case 0x754: case 0x757: case 0x75a: case 0x75d: case 0x760: case 0x763:
- case 0x73a: case 0x73d: case 0x740: case 0x743: case 0x746: case 0x749: case 0x74c: case 0x74f: case 0x752: case 0x755: case 0x758: case 0x75b: case 0x75e: case 0x761: case 0x764:
- case 0x73b: case 0x73e: case 0x741: case 0x744: case 0x747: case 0x74a: case 0x74d: case 0x750: case 0x753: case 0x756: case 0x759: case 0x75c: case 0x75f: case 0x762: case 0x765:
+/**************************************************** mobileye obstacle status ****************************************************************************
+ * message ID:0x738
+ * member: type physical unit range note
+ * num_obstacles int / [0:255] /
+ * timestamp int ms [0:255] only the lowest 8 bits of the timestamp is given
+ * app_version: int / [0:255] vesion info consists of X.Y.Z.W
+ * active_version int/2bits / [0:3] index of the active section of app_version signal
+/**************************************************** mobileye obstacle data a ****************************************************************************
+ * message ID:0x739
+ * member: type physical unit range note
+ * obstacle_ID int / [0:63] new obstacles are given the last used free ID
+ * obstacle_pos_x double m [0,250] longtitude position of the obstacle relative to the ref point
+ * obstacle_pos_y double m [-31.93,31.93] lateral position of the obstacle, error relative to pos_x below 10% or 2meters
+ * blinker_info int/enum / [0:4] 0 unavailable, 1 off, 2 left, 3 right, 4 both indicated blinkers status
+/**************************************************** mobileye obstacle data b ****************************************************************************
+ * message ID:0x73a
+ * member: type physical unit range note
+ * obstacle_length double m [0,31] length of the obstacle(longitude axis)
+ * obstacle_width double m [0,12.5] width of the obstacle(lateral axis)
+ * obstacle_age int / [0:255] value starts at 1 when it is first detected, increaments in i each frame
+ * obstacle_lane int/enum / [0:3] 0 not assigned, 1 ego lane, 2 next lane(left or right) or next next lane,
+ * 3 invalid signal
+ * is_cipv_flag int/enum / [0:1] 0 not cipv, 1 cipv(closest in path vehicle)
+ * radar_pos_x double m [0,250] longtitude postion of the primary radar target matched to the vision target, dist=relative to ref point
+ * if no radar target is matched, value = 0xfff
+ * radar_vel_x double m/s [-127.93,127.93] longitude velocity of the radar target matched to the vision targets, if no radar target is matched value=0xfff
+/**************************************************** mobileye obstacle data c ****************************************************************************
+ * message ID:0x73b
+ * member: type physical unit range note
+ * obstacle_angle_rate double degree/s [-327.68, 327.68] Angle rate of Center of Obstacle, negative->moved to left
+/**************************************************** mobileye aftermarket lane ****************************************************************************
+/**************************************************** mobileye LKA left lane a ****************************************************************************
+/**************************************************** mobileye LKA left lane b ****************************************************************************
+ * message ID:0x767
+ * member: type physical unit range note
+ * heading_angle double radians [-0.357, 0.357] physical slope of the lane mark positive->steering towards the right
+ * view_range double m [0, 127.996] physical view range of lane mark
+/**************************************************** mobileye LKA right lane a ****************************************************************************
+/**************************************************** mobileye LKA right lane b ****************************************************************************
+ * message ID:0x767
+ * member: type physical unit range note
+ * heading_angle double radians [-0.357, 0.357] physical slope of the lane mark positive->steering towards the right
+ * view_range double m [0, 127.996] physical view range of lane mark
+/**************************************************** mobileye next lane a **********************************************************************************
+ * message ID:0x76c
+ * member: type physical unit range note
+ * lane_type enum / [1:2] 1 solid, 2 undecided
+ * quality / / / not yet implemented for next lanes
+ * model_degree enum / [1:3] 1 linear model, 2 parabolic model, 3 3rd-degree model
+ * position double m [-127,128] physical distance between lane mark and camera on the lateral position
+ * curvature double / [-0.02, 0.02] given a very low curvature derivative, positive curvature indicates a right hand side curve
+/**************************************************** mobileye LKA right lane b ****************************************************************************
+ * message ID:0x76d
+ * member: type physical unit range note
+ * heading_angle double radians [-0.357, 0.357] physical slope of the lane mark positive->steering towards the right
+ * view_range double m [0, 127.996] physical view range of lane mark
+/********************************************** mobileye number of next lane markers reported **************************************************************
+ * message ID:0x76b
+ * member: type physical unit range note
+ * num_of_next_lane_mark_reported enum / 1,2 indicates how many extra lane markers are also reported, on top of left
+ * and right lane. Currently two lane marks are always reported one for left and one for
+ * right, and they are valid only if the lane type is Solid.
+ int res = VCI_Receive(m_devtype, m_devindmob, m_cannum, receivedata, 2500, 10);
+ if (res <= 0)
+ {
+#ifdef linux
+ usleep(1000);
+#endif
+#ifdef WIN32
+ Sleep(1);
+#endif
+ continue;
+ }
+ for (int i = 0; i < res; i++)
+ {
+ switch(receivedata[i].ID)
+ {
+ case 0x700:
+ impl_0x700(receivedata[i]);
+ break;
+ case 0x737:
+ impl_0x737(receivedata[i]);
+ break;
+ case 0x738:
+ impl_0x738(receivedata[i]);
+ break;
+ case 0x739: case 0x73c: case 0x73f: case 0x742: case 0x745: case 0x748: case 0x74b: case 0x74e: case 0x751: case 0x754: case 0x757: case 0x75a: case 0x75d: case 0x760: case 0x763:
+ case 0x73a: case 0x73d: case 0x740: case 0x743: case 0x746: case 0x749: case 0x74c: case 0x74f: case 0x752: case 0x755: case 0x758: case 0x75b: case 0x75e: case 0x761: case 0x764:
+ case 0x73b: case 0x73e: case 0x741: case 0x744: case 0x747: case 0x74a: case 0x74d: case 0x750: case 0x753: case 0x756: case 0x759: case 0x75c: case 0x75f: case 0x762: case 0x765: