CIS441 Proj MS 2b

Dependencies:   TextLCD MQTT

Files at this revision

API Documentation at this revision

Comitter:
kchen7
Date:
Fri Dec 13 22:14:27 2019 +0000
Parent:
15:1d611d264a1f
Commit message:
final version;

Changed in this revision

Communication.cpp Show annotated file Show diff for this revision Revisions of this file
Road.cpp Show annotated file Show diff for this revision Revisions of this file
Road.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Communication.cpp	Fri Dec 13 21:31:24 2019 +0000
+++ b/Communication.cpp	Fri Dec 13 22:14:27 2019 +0000
@@ -81,7 +81,7 @@
 //callback for update/control messages
 void Communication::update_message_arrived(MQTT::MessageData& md)
 {
-    printf("UPDATE MESSAGE ARRIVED"); 
+    printf("UPDATE MESSAGE ARRIVED\r\n"); 
     MQTT::Message &message = md.message;
     char* payload = (char*)message.payload;
     printf("%s\r\n", payload);
@@ -90,7 +90,6 @@
     if(payload[4] != 'x') {
         speed = speed * 10 + payload[4] - 48;
     }
-    
     Road::road_in_use(NULL)->update_car_speed(id, speed);
 }
 
--- a/Road.cpp	Fri Dec 13 21:31:24 2019 +0000
+++ b/Road.cpp	Fri Dec 13 22:14:27 2019 +0000
@@ -9,6 +9,7 @@
     intersection_car = -1;
     next_release = 0;
     num_cars = 0;
+    wait_counter = 0; 
     
     pending_car = new AccCar(num_cars, this, pow(2, num_cars));
     pending_car->set_target_speed(rand() % 11 + 5);
@@ -107,6 +108,15 @@
     }
 }
 
+void Road::update_wait_counter() {
+    for (int i = 0; i < num_cars; i++) {
+        if (cars[i]->position == 54) {
+            wait_counter++; 
+            printf("Wait Counter: %d\r\n", wait_counter); 
+        } 
+    } 
+} 
+
 void Road::wait_for_sync() {
     done_flags.wait_all(0xF0);
 }
\ No newline at end of file
--- a/Road.h	Fri Dec 13 21:31:24 2019 +0000
+++ b/Road.h	Fri Dec 13 22:14:27 2019 +0000
@@ -15,6 +15,7 @@
     EventFlags done_flags;
     int active_cars;
     int intersection_car;
+    int wait_counter; 
     static Road* road_in_use(Road* new_road);
     static int ready(int new_ready);
     
@@ -24,6 +25,7 @@
     void wait_for_car_update();
     int check_exit_cars(int cars[]);
     void update_car_speed(int id, int speed);
+    void update_wait_counter(); 
     
     void print_status();
     void publish_car_info();
--- a/main.cpp	Fri Dec 13 21:31:24 2019 +0000
+++ b/main.cpp	Fri Dec 13 22:14:27 2019 +0000
@@ -62,17 +62,23 @@
         printf("successful publish: car info\r\n");
         Communication::publish_road_ready();
         
-        Communication::yield(500); 
+        Communication::yield(50); 
         while(Road::ready(-1) == 0) {
             Communication::yield(50); 
         }
+        road1.update_wait_counter(); 
         printf("----------------------\r\n"); 
     } while( road1.active_cars > 0x00);
     
     // ----------------------------------------------------------------------
     // Timing statistics printout, do not modify
+    printf("Average Wait Time: %fs \r\n", road1.wait_counter / 5.0); 
     printf("Average update cycle took: %fms \r\n", (totalUpdateTime*1.0)/(numberCycles*1.0));
     totalUpdateTime = 0;
     numberCycles = 0;
     // ----------------------------------------------------------------------
+    while (true) {
+        Communication::publish_road_ready();
+        wait(0.1); 
+    }
 }