CIS441 Proj MS 2b

Dependencies:   TextLCD MQTT

Committer:
kchen7
Date:
Fri Dec 13 19:37:24 2019 +0000
Revision:
13:2c12f60bd10a
Parent:
12:ade22f4681af
Child:
14:8b65b1f342ee
pushing an update;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mwgold 0:ca7cb51e9fd1 1 /* mbed Microcontroller Library
mwgold 0:ca7cb51e9fd1 2 * Copyright (c) 2018 ARM Limited
mwgold 0:ca7cb51e9fd1 3 * SPDX-License-Identifier: Apache-2.0
mwgold 0:ca7cb51e9fd1 4 */
mwgold 0:ca7cb51e9fd1 5
mwgold 0:ca7cb51e9fd1 6 #include "mbed.h"
mwgold 0:ca7cb51e9fd1 7 #include "Road.h"
mwgold 0:ca7cb51e9fd1 8 #include "AccCar.h"
mwgold 0:ca7cb51e9fd1 9 #include "TextLCD.h"
mwgold 0:ca7cb51e9fd1 10
mwgold 0:ca7cb51e9fd1 11 // main() runs in its own thread in the OS
mwgold 0:ca7cb51e9fd1 12 int main() {
mwgold 6:e59641c4562c 13 Communication::init();
kchen7 12:ade22f4681af 14 wait(1);
mwgold 9:f5981ced0b47 15 printf("starting simulation/r/n");
mwgold 0:ca7cb51e9fd1 16 // ------------------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 17 // The following three variables are used for timing statistics, do not modify them
mwgold 0:ca7cb51e9fd1 18 Timer stopwatch; // A timer to keep track of how long the updates take, for statistics purposes
mwgold 0:ca7cb51e9fd1 19 int numberCycles = 0;
mwgold 0:ca7cb51e9fd1 20 int totalUpdateTime = 0;
mwgold 0:ca7cb51e9fd1 21 // ------------------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 22
mwgold 0:ca7cb51e9fd1 23 int time = 0;
mwgold 0:ca7cb51e9fd1 24
mwgold 4:ef8866873df5 25 Road road1;
mwgold 0:ca7cb51e9fd1 26
mwgold 0:ca7cb51e9fd1 27 stopwatch.start();
mwgold 0:ca7cb51e9fd1 28 stopwatch.reset();
mwgold 0:ca7cb51e9fd1 29
mwgold 4:ef8866873df5 30 int return_cars[MAX_CARS];
mwgold 0:ca7cb51e9fd1 31
mwgold 10:8df624795295 32 do {
mwgold 10:8df624795295 33 Road::ready(0);
kchen7 13:2c12f60bd10a 34 Communication::yield(50);
kchen7 12:ade22f4681af 35
mwgold 4:ef8866873df5 36 int new_cars = road1.try_enter_car(time);
kchen7 13:2c12f60bd10a 37 Communication::yield(50);
kchen7 13:2c12f60bd10a 38
mwgold 4:ef8866873df5 39 road1.let_cars_update();
kchen7 13:2c12f60bd10a 40 Communication::yield(50);
kchen7 13:2c12f60bd10a 41
kchen7 12:ade22f4681af 42 printf("main.cpp: update flags raised\n");
kchen7 12:ade22f4681af 43
mwgold 4:ef8866873df5 44 road1.wait_for_car_update();
kchen7 7:15c2ed6e5162 45 printf("main.cpp: finished updating\n");
kchen7 12:ade22f4681af 46
mwgold 0:ca7cb51e9fd1 47 printf("\r\nRoad 1 Update %d\r\n", time);
mwgold 4:ef8866873df5 48 road1.print_status();
mwgold 4:ef8866873df5 49
mwgold 4:ef8866873df5 50 printf("\r\n");
kchen7 11:2ab3397b6e30 51 road1.check_exit_cars(return_cars);
mwgold 8:c40e805eecba 52
mwgold 4:ef8866873df5 53 time++;
mwgold 0:ca7cb51e9fd1 54
mwgold 0:ca7cb51e9fd1 55 // ------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 56 // Timing statistics logic, do not modify
mwgold 0:ca7cb51e9fd1 57 totalUpdateTime += stopwatch.read_ms();
mwgold 0:ca7cb51e9fd1 58 numberCycles++;
mwgold 0:ca7cb51e9fd1 59 stopwatch.reset();
mwgold 0:ca7cb51e9fd1 60 // ------------------------------------------------------------------
mwgold 8:c40e805eecba 61
mwgold 8:c40e805eecba 62 road1.publish_car_info();
kchen7 12:ade22f4681af 63 printf("successful publish: car info\r\n");
mwgold 4:ef8866873df5 64 Communication::publish_road_ready();
kchen7 12:ade22f4681af 65
kchen7 13:2c12f60bd10a 66 Communication::yield(50);
mwgold 10:8df624795295 67 while(Road::ready(-1) == 0) {
kchen7 13:2c12f60bd10a 68 Communication::yield(50);
mwgold 10:8df624795295 69 }
kchen7 12:ade22f4681af 70 printf("----------------------\r\n");
mwgold 4:ef8866873df5 71 } while( road1.active_cars > 0x00);
mwgold 0:ca7cb51e9fd1 72
kchen7 12:ade22f4681af 73 // ----------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 74 // Timing statistics printout, do not modify
mwgold 0:ca7cb51e9fd1 75 printf("Average update cycle took: %fms \r\n", (totalUpdateTime*1.0)/(numberCycles*1.0));
mwgold 0:ca7cb51e9fd1 76 totalUpdateTime = 0;
mwgold 0:ca7cb51e9fd1 77 numberCycles = 0;
mwgold 0:ca7cb51e9fd1 78 // ----------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 79 }