541 smart traffic controller

Dependencies:   MQTT

Committer:
micallef25
Date:
Fri Dec 06 15:47:37 2019 +0000
Revision:
2:f10d6fecb345
Child:
7:fd8e0604faaa
basic communication with mqtt and car threads

Who changed what in which revision?

UserRevisionLine numberNew contents of line
micallef25 2:f10d6fecb345 1 #ifndef _ACC_CAR_H_
micallef25 2:f10d6fecb345 2 #define _ACC_CAR_H_
micallef25 2:f10d6fecb345 3
micallef25 2:f10d6fecb345 4 #include "mqtt.h"
micallef25 2:f10d6fecb345 5 #include "mbed.h"
micallef25 2:f10d6fecb345 6 #include "Road.h"
micallef25 2:f10d6fecb345 7
micallef25 2:f10d6fecb345 8 class Road;
micallef25 2:f10d6fecb345 9
micallef25 2:f10d6fecb345 10 class AccCar{
micallef25 2:f10d6fecb345 11 public:
micallef25 2:f10d6fecb345 12 int position;
micallef25 2:f10d6fecb345 13 int speed;
micallef25 2:f10d6fecb345 14 int flag;
micallef25 2:f10d6fecb345 15 bool waited;
micallef25 2:f10d6fecb345 16
micallef25 2:f10d6fecb345 17 // constructor
micallef25 2:f10d6fecb345 18 AccCar(int id, Road* road, int flag, mqtt* mqtt_singleton);
micallef25 2:f10d6fecb345 19
micallef25 2:f10d6fecb345 20 // sets the car ahead of it
micallef25 2:f10d6fecb345 21 void set_forward_car(AccCar* car);
micallef25 2:f10d6fecb345 22
micallef25 2:f10d6fecb345 23 // main update function where all the logic is held
micallef25 2:f10d6fecb345 24 void update();
micallef25 2:f10d6fecb345 25
micallef25 2:f10d6fecb345 26 // reset the car
micallef25 2:f10d6fecb345 27 void reset(int speed);
micallef25 2:f10d6fecb345 28
micallef25 2:f10d6fecb345 29 // kill the car essentially
micallef25 2:f10d6fecb345 30 void stop();
micallef25 2:f10d6fecb345 31
micallef25 2:f10d6fecb345 32 // for breaking continuous right of way ties
micallef25 2:f10d6fecb345 33 int car_clock;
micallef25 2:f10d6fecb345 34
micallef25 2:f10d6fecb345 35 int get_car_id();
micallef25 2:f10d6fecb345 36
micallef25 2:f10d6fecb345 37 int wait_time;
micallef25 2:f10d6fecb345 38
micallef25 2:f10d6fecb345 39 int get_cycles();
micallef25 2:f10d6fecb345 40
micallef25 2:f10d6fecb345 41 protected:
micallef25 2:f10d6fecb345 42 int car_id;
micallef25 2:f10d6fecb345 43 int target_speed;
micallef25 2:f10d6fecb345 44 AccCar* forward_car;
micallef25 2:f10d6fecb345 45 Road* road;
micallef25 2:f10d6fecb345 46 Thread* thread;
micallef25 2:f10d6fecb345 47 position_msg_t* msg;
micallef25 2:f10d6fecb345 48 mqtt* singleton;
micallef25 2:f10d6fecb345 49
micallef25 2:f10d6fecb345 50 int cycles;
micallef25 2:f10d6fecb345 51
micallef25 2:f10d6fecb345 52 // state of the car... are we crossing driving or stopping?
micallef25 2:f10d6fecb345 53 drive_state_t state;
micallef25 2:f10d6fecb345 54 // just tells us if we are the lead car or not.
micallef25 2:f10d6fecb345 55 // if we are lead car we do not have to worry about anything in front
micallef25 2:f10d6fecb345 56 bool lead;
micallef25 2:f10d6fecb345 57
micallef25 2:f10d6fecb345 58 // update our speed
micallef25 2:f10d6fecb345 59 void update_speed();
micallef25 2:f10d6fecb345 60
micallef25 2:f10d6fecb345 61 //
micallef25 2:f10d6fecb345 62 void drive_normal();
micallef25 2:f10d6fecb345 63
micallef25 2:f10d6fecb345 64 //
micallef25 2:f10d6fecb345 65 void get_new_target_speed();
micallef25 2:f10d6fecb345 66
micallef25 2:f10d6fecb345 67 //
micallef25 2:f10d6fecb345 68 void make_position_msg(position_msg_t* msg);
micallef25 2:f10d6fecb345 69
micallef25 2:f10d6fecb345 70 };
micallef25 2:f10d6fecb345 71 #endif