CIS441 Proj MS 2b

Dependencies:   TextLCD MQTT

Committer:
mwgold
Date:
Sun Nov 10 23:02:16 2019 +0000
Revision:
0:ca7cb51e9fd1
Child:
1:54512aca944d
initial

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 0:ca7cb51e9fd1 24 Road road1;
mwgold 0:ca7cb51e9fd1 25
mwgold 0:ca7cb51e9fd1 26 stopwatch.start();
mwgold 0:ca7cb51e9fd1 27 stopwatch.reset();
mwgold 0:ca7cb51e9fd1 28
mwgold 0:ca7cb51e9fd1 29 int return_cars[MAX_CARS];
mwgold 0:ca7cb51e9fd1 30
mwgold 0:ca7cb51e9fd1 31 do {
mwgold 0:ca7cb51e9fd1 32
mwgold 0:ca7cb51e9fd1 33 int new_cars = road1.try_enter_car(time);
mwgold 0:ca7cb51e9fd1 34
mwgold 0:ca7cb51e9fd1 35 road1.let_cars_update();
mwgold 0:ca7cb51e9fd1 36 road1.wait_for_car_update();
mwgold 0:ca7cb51e9fd1 37
mwgold 0:ca7cb51e9fd1 38
mwgold 0:ca7cb51e9fd1 39 printf("\r\nRoad 1 Update %d\r\n", time);
mwgold 0:ca7cb51e9fd1 40 road1.print_status();
mwgold 0:ca7cb51e9fd1 41
mwgold 0:ca7cb51e9fd1 42 if(new_cars == -1 && road1.intersection_car == -1){
mwgold 0:ca7cb51e9fd1 43 lcd.printf("x, x");
mwgold 0:ca7cb51e9fd1 44 }
mwgold 0:ca7cb51e9fd1 45 else if(new_cars != -1 && road1.intersection_car == -1){
mwgold 0:ca7cb51e9fd1 46 lcd.printf("%d, x", new_cars);
mwgold 0:ca7cb51e9fd1 47 }
mwgold 0:ca7cb51e9fd1 48 else if(new_cars == -1 && road1.intersection_car != -1){
mwgold 0:ca7cb51e9fd1 49 lcd.printf("x, %d", road1.intersection_car);
mwgold 0:ca7cb51e9fd1 50 }
mwgold 0:ca7cb51e9fd1 51 else{
mwgold 0:ca7cb51e9fd1 52 lcd.printf("%d, %d", new_cars, road1.intersection_car);
mwgold 0:ca7cb51e9fd1 53 }
mwgold 0:ca7cb51e9fd1 54
mwgold 0:ca7cb51e9fd1 55
mwgold 0:ca7cb51e9fd1 56 printf("\r\n");
mwgold 0:ca7cb51e9fd1 57 road1.check_exit_cars(return_cars);
mwgold 0:ca7cb51e9fd1 58
mwgold 0:ca7cb51e9fd1 59 time++;
mwgold 0:ca7cb51e9fd1 60
mwgold 0:ca7cb51e9fd1 61 // ------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 62 // Timing statistics logic, do not modify
mwgold 0:ca7cb51e9fd1 63 totalUpdateTime += stopwatch.read_ms();
mwgold 0:ca7cb51e9fd1 64 numberCycles++;
mwgold 0:ca7cb51e9fd1 65 stopwatch.reset();
mwgold 0:ca7cb51e9fd1 66 // ------------------------------------------------------------------
mwgold 0:ca7cb51e9fd1 67
mwgold 0:ca7cb51e9fd1 68 lcd.cls();
mwgold 0:ca7cb51e9fd1 69 //lcd.printf("1 %d -> %d\n2 %d -> %d", 0,0,car2.position, car2.speed);
mwgold 0:ca7cb51e9fd1 70
mwgold 0:ca7cb51e9fd1 71 } while( road1.active_cars > 0x00);
mwgold 0:ca7cb51e9fd1 72
mwgold 0:ca7cb51e9fd1 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 }