Emanuel Kuflik
/
smat_controller
541 smart traffic controller
AccCar.h@2:f10d6fecb345, 2019-12-06 (annotated)
- 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?
User | Revision | Line number | New 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 |