Dependencies:   TextLCD MQTT

Revision:
4:ef8866873df5
Parent:
1:54512aca944d
Child:
7:15c2ed6e5162
--- a/AccCar.cpp	Mon Nov 11 01:33:28 2019 +0000
+++ b/AccCar.cpp	Wed Dec 11 21:13:57 2019 +0000
@@ -37,57 +37,22 @@
             target_speed = rand() % 11 + 5;
         }
         
-        if( position < 54 ) {       
-            if (forward_car != NULL && forward_car->position > -1) {
-                if (forward_car->position - position < MONITOR_DIST && forward_car->position < 55) {
-                    road->done_flags.wait_all(forward_car->flag, osWaitForever, false);
-                    
-                    int diff = forward_car->position - position;
-                    int maxSafeSpeed = diff - SAFETY_GAP;
-                    
-                    speed = std::min(maxSafeSpeed, target_speed);
-                } else {
-                    speed = target_speed;   
-                }
-            } else {
-                speed = target_speed;
-            }
-            
-            int distance_to_intersection = 54 - position;
-            speed = std::min(distance_to_intersection, speed);
-                  
-        } else if( position == 54 ) {
-            if( waited) {
-                speed = road->intersection->attemptEnterIntersection(this->id); 
+        if (forward_car != NULL && forward_car->position > -1) {
+            if (forward_car->position - position < MONITOR_DIST) {
+                road->done_flags.wait_all(forward_car->flag, osWaitForever, false);
+                
+                int diff = forward_car->position - position;
+                int maxSafeSpeed = diff - SAFETY_GAP;
+                
+                speed = std::min(maxSafeSpeed, target_speed);
             } else {
-                speed = 0;   
-                waited = true;
-                road->intendToEnter(this->id); 
-            }
-        } else if( position < 56 ) {
-            speed = 1;
-        } else {
-            if( position == 56 ) {
-                road->intersection->leaveIntersection(); 
+                speed = target_speed;   
             }
-            
-            if (forward_car != NULL && forward_car->position > -1) {
-                if (forward_car->position - position < MONITOR_DIST ) {
-                    road->done_flags.wait_all(forward_car->flag, osWaitForever, false);
-                    
-                    int diff = forward_car->position - position;
-                    int maxSafeSpeed = diff - SAFETY_GAP;
-                    
-                    speed = std::min(maxSafeSpeed, target_speed);
-                } else {
-                    speed = target_speed;   
-                }
-
-            } else {
-                speed = target_speed;
-            }
-        } 
+        } else {
+            speed = target_speed;
+        }
         
+        Communication::publish_car_info(id, position, speed);
         road->done_flags.set(flag);   
     } while( position < 100 );
 }