CIS441 Proj MS 2b

Dependencies:   TextLCD MQTT

Committer:
kchen7
Date:
Fri Dec 13 21:12:41 2019 +0000
Revision:
14:8b65b1f342ee
Parent:
13:2c12f60bd10a
Child:
16:cb7cbf2cc23b
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 12:ade22f4681af 41 printf("main.cpp: update flags raised\n");
kchen7 12:ade22f4681af 42
mwgold 4:ef8866873df5 43 road1.wait_for_car_update();
kchen7 7:15c2ed6e5162 44 printf("main.cpp: finished updating\n");
kchen7 12:ade22f4681af 45
mwgold 0:ca7cb51e9fd1 46 printf("\r\nRoad 1 Update %d\r\n", time);
mwgold 4:ef8866873df5 47 road1.print_status();
mwgold 4:ef8866873df5 48
mwgold 4:ef8866873df5 49 printf("\r\n");
kchen7 11:2ab3397b6e30 50 road1.check_exit_cars(return_cars);
mwgold 8:c40e805eecba 51
mwgold 4:ef8866873df5 52 time++;
mwgold 0:ca7cb51e9fd1 53
mwgold 0:ca7cb51e9fd1 54 // ------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 55 // Timing statistics logic, do not modify
mwgold 0:ca7cb51e9fd1 56 totalUpdateTime += stopwatch.read_ms();
mwgold 0:ca7cb51e9fd1 57 numberCycles++;
mwgold 0:ca7cb51e9fd1 58 stopwatch.reset();
mwgold 0:ca7cb51e9fd1 59 // ------------------------------------------------------------------
mwgold 8:c40e805eecba 60
mwgold 8:c40e805eecba 61 road1.publish_car_info();
kchen7 12:ade22f4681af 62 printf("successful publish: car info\r\n");
mwgold 4:ef8866873df5 63 Communication::publish_road_ready();
kchen7 12:ade22f4681af 64
kchen7 14:8b65b1f342ee 65 Communication::yield(500);
mwgold 10:8df624795295 66 while(Road::ready(-1) == 0) {
kchen7 13:2c12f60bd10a 67 Communication::yield(50);
mwgold 10:8df624795295 68 }
kchen7 12:ade22f4681af 69 printf("----------------------\r\n");
mwgold 4:ef8866873df5 70 } while( road1.active_cars > 0x00);
mwgold 0:ca7cb51e9fd1 71
kchen7 12:ade22f4681af 72 // ----------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 73 // Timing statistics printout, do not modify
mwgold 0:ca7cb51e9fd1 74 printf("Average update cycle took: %fms \r\n", (totalUpdateTime*1.0)/(numberCycles*1.0));
mwgold 0:ca7cb51e9fd1 75 totalUpdateTime = 0;
mwgold 0:ca7cb51e9fd1 76 numberCycles = 0;
mwgold 0:ca7cb51e9fd1 77 // ----------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 78 }