CIS441 Proj MS 2b

Dependencies:   TextLCD MQTT

Committer:
mwgold
Date:
Wed Dec 11 21:13:57 2019 +0000
Revision:
4:ef8866873df5
Parent:
3:aa2778d92301
Child:
6:e59641c4562c
test0;

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 TextLCD lcd(p15, p16, p17, p18, p19, p20);
mwgold 0:ca7cb51e9fd1 12
mwgold 0:ca7cb51e9fd1 13 // main() runs in its own thread in the OS
mwgold 0:ca7cb51e9fd1 14 int main() {
mwgold 0:ca7cb51e9fd1 15 // ------------------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 16 // The following three variables are used for timing statistics, do not modify them
mwgold 0:ca7cb51e9fd1 17 Timer stopwatch; // A timer to keep track of how long the updates take, for statistics purposes
mwgold 0:ca7cb51e9fd1 18 int numberCycles = 0;
mwgold 0:ca7cb51e9fd1 19 int totalUpdateTime = 0;
mwgold 0:ca7cb51e9fd1 20 // ------------------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 21
mwgold 0:ca7cb51e9fd1 22 int time = 0;
mwgold 0:ca7cb51e9fd1 23
mwgold 4:ef8866873df5 24 Road road1;
mwgold 0:ca7cb51e9fd1 25
mwgold 0:ca7cb51e9fd1 26 stopwatch.start();
mwgold 0:ca7cb51e9fd1 27 stopwatch.reset();
mwgold 0:ca7cb51e9fd1 28
mwgold 4:ef8866873df5 29 int return_cars[MAX_CARS];
mwgold 0:ca7cb51e9fd1 30
mwgold 0:ca7cb51e9fd1 31 do {
mwgold 4:ef8866873df5 32 Road::ready(0);
mwgold 0:ca7cb51e9fd1 33
mwgold 4:ef8866873df5 34 int new_cars = road1.try_enter_car(time);
kchen7 1:54512aca944d 35
mwgold 4:ef8866873df5 36 road1.let_cars_update();
mwgold 4:ef8866873df5 37 road1.wait_for_car_update();
mwgold 0:ca7cb51e9fd1 38
mwgold 0:ca7cb51e9fd1 39
mwgold 0:ca7cb51e9fd1 40 printf("\r\nRoad 1 Update %d\r\n", time);
mwgold 4:ef8866873df5 41 road1.print_status();
mwgold 4:ef8866873df5 42
mwgold 4:ef8866873df5 43 if(new_cars == -1 && road1.intersection_car == -1){
mwgold 4:ef8866873df5 44 lcd.printf("x, x");
mwgold 0:ca7cb51e9fd1 45 }
mwgold 4:ef8866873df5 46 else if(new_cars != -1 && road1.intersection_car == -1){
mwgold 4:ef8866873df5 47 lcd.printf("%d, x", new_cars);
mwgold 0:ca7cb51e9fd1 48 }
mwgold 4:ef8866873df5 49 else if(new_cars == -1 && road1.intersection_car != -1){
mwgold 4:ef8866873df5 50 lcd.printf("x, %d", road1.intersection_car);
mwgold 0:ca7cb51e9fd1 51 }
mwgold 0:ca7cb51e9fd1 52 else{
mwgold 4:ef8866873df5 53 lcd.printf("%d, %d", new_cars, road1.intersection_car);
mwgold 0:ca7cb51e9fd1 54 }
mwgold 0:ca7cb51e9fd1 55
mwgold 4:ef8866873df5 56
mwgold 4:ef8866873df5 57 printf("\r\n");
mwgold 4:ef8866873df5 58 road1.check_exit_cars(return_cars);
mwgold 4:ef8866873df5 59
mwgold 4:ef8866873df5 60 time++;
mwgold 0:ca7cb51e9fd1 61
mwgold 0:ca7cb51e9fd1 62 // ------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 63 // Timing statistics logic, do not modify
mwgold 0:ca7cb51e9fd1 64 totalUpdateTime += stopwatch.read_ms();
mwgold 0:ca7cb51e9fd1 65 numberCycles++;
mwgold 0:ca7cb51e9fd1 66 stopwatch.reset();
mwgold 0:ca7cb51e9fd1 67 // ------------------------------------------------------------------
mwgold 4:ef8866873df5 68
mwgold 4:ef8866873df5 69 lcd.cls();
mwgold 4:ef8866873df5 70
mwgold 4:ef8866873df5 71 Communication::publish_road_ready();
mwgold 4:ef8866873df5 72 while(Road::ready(-1) == 0);
mwgold 4:ef8866873df5 73 } while( road1.active_cars > 0x00);
mwgold 0:ca7cb51e9fd1 74
mwgold 0:ca7cb51e9fd1 75 // ----------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 76 // Timing statistics printout, do not modify
mwgold 0:ca7cb51e9fd1 77 printf("Average update cycle took: %fms \r\n", (totalUpdateTime*1.0)/(numberCycles*1.0));
mwgold 0:ca7cb51e9fd1 78 totalUpdateTime = 0;
mwgold 0:ca7cb51e9fd1 79 numberCycles = 0;
mwgold 0:ca7cb51e9fd1 80 // ----------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 81 }