Emanuel Kuflik
/
smat_controller
Road.h@5:e0d8e5e922f1, 2019-12-10 (annotated)
- Committer:
- micallef25
- Date:
- Tue Dec 10 23:39:25 2019 +0000
- Revision:
- 5:e0d8e5e922f1
- Parent:
- 4:64c6fc70ddb7
- Child:
- 7:fd8e0604faaa
stable
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
micallef25 | 2:f10d6fecb345 | 1 | #ifndef _ROAD_H_ |
micallef25 | 2:f10d6fecb345 | 2 | #define _ROAD_H_ |
micallef25 | 2:f10d6fecb345 | 3 | |
micallef25 | 2:f10d6fecb345 | 4 | #include "AccCar.h" |
micallef25 | 2:f10d6fecb345 | 5 | #include "mbed.h" |
MannyK | 4:64c6fc70ddb7 | 6 | #include "mqtt.h" |
micallef25 | 2:f10d6fecb345 | 7 | |
micallef25 | 2:f10d6fecb345 | 8 | // no need to make it dynamic since we know our max upfront |
micallef25 | 2:f10d6fecb345 | 9 | #define MAX_CARS_ON_ROAD 5 |
micallef25 | 2:f10d6fecb345 | 10 | #define MAC_CAR_BITS_ON_ROAD 1 << MAX_CAR_ON_ROAD |
micallef25 | 2:f10d6fecb345 | 11 | |
micallef25 | 2:f10d6fecb345 | 12 | class AccCar; |
micallef25 | 2:f10d6fecb345 | 13 | |
micallef25 | 2:f10d6fecb345 | 14 | class Road { |
micallef25 | 2:f10d6fecb345 | 15 | public: |
micallef25 | 2:f10d6fecb345 | 16 | EventFlags go_flags; |
micallef25 | 2:f10d6fecb345 | 17 | EventFlags done_flags; |
micallef25 | 2:f10d6fecb345 | 18 | |
MannyK | 4:64c6fc70ddb7 | 19 | Road( int id , mqtt* mqtt_singleton); |
micallef25 | 2:f10d6fecb345 | 20 | |
micallef25 | 2:f10d6fecb345 | 21 | void add_acc_car(AccCar* car); |
micallef25 | 2:f10d6fecb345 | 22 | |
micallef25 | 2:f10d6fecb345 | 23 | void let_cars_update(); |
micallef25 | 2:f10d6fecb345 | 24 | |
micallef25 | 2:f10d6fecb345 | 25 | void wait_for_car_update(); |
micallef25 | 2:f10d6fecb345 | 26 | |
micallef25 | 2:f10d6fecb345 | 27 | bool can_car_enter(int speed); |
micallef25 | 2:f10d6fecb345 | 28 | |
micallef25 | 2:f10d6fecb345 | 29 | int get_new_car_id(); |
micallef25 | 2:f10d6fecb345 | 30 | |
micallef25 | 2:f10d6fecb345 | 31 | int get_active_cars(); |
micallef25 | 2:f10d6fecb345 | 32 | |
micallef25 | 2:f10d6fecb345 | 33 | AccCar* get_car(int id); |
micallef25 | 2:f10d6fecb345 | 34 | |
micallef25 | 2:f10d6fecb345 | 35 | AccCar* get_forward_car(int id); |
micallef25 | 2:f10d6fecb345 | 36 | |
micallef25 | 2:f10d6fecb345 | 37 | void DESTROY_ALL_CARS(); |
micallef25 | 2:f10d6fecb345 | 38 | |
micallef25 | 2:f10d6fecb345 | 39 | bool simulating(); |
micallef25 | 2:f10d6fecb345 | 40 | |
micallef25 | 2:f10d6fecb345 | 41 | int get_road_id(); |
micallef25 | 2:f10d6fecb345 | 42 | |
micallef25 | 2:f10d6fecb345 | 43 | int get_road_clock(); |
micallef25 | 2:f10d6fecb345 | 44 | |
micallef25 | 2:f10d6fecb345 | 45 | AccCar* get_last_car(); |
micallef25 | 2:f10d6fecb345 | 46 | |
micallef25 | 5:e0d8e5e922f1 | 47 | bool synchronize(bool simulating); |
micallef25 | 5:e0d8e5e922f1 | 48 | |
micallef25 | 5:e0d8e5e922f1 | 49 | road_msg_t* msg; |
MannyK | 4:64c6fc70ddb7 | 50 | |
micallef25 | 2:f10d6fecb345 | 51 | private: |
micallef25 | 2:f10d6fecb345 | 52 | // for sharing intersections |
micallef25 | 2:f10d6fecb345 | 53 | int road_id; |
micallef25 | 2:f10d6fecb345 | 54 | |
micallef25 | 5:e0d8e5e922f1 | 55 | mqtt* singleton; |
micallef25 | 5:e0d8e5e922f1 | 56 | |
micallef25 | 2:f10d6fecb345 | 57 | // store our cars here we only need 5 |
micallef25 | 2:f10d6fecb345 | 58 | AccCar* car_table[MAX_CARS_ON_ROAD]; |
micallef25 | 2:f10d6fecb345 | 59 | |
micallef25 | 2:f10d6fecb345 | 60 | // how many active cars we have |
micallef25 | 2:f10d6fecb345 | 61 | int active_cars; |
micallef25 | 2:f10d6fecb345 | 62 | |
micallef25 | 2:f10d6fecb345 | 63 | // each car gets its own bit |
micallef25 | 2:f10d6fecb345 | 64 | int active_car_bits; |
micallef25 | 2:f10d6fecb345 | 65 | |
micallef25 | 2:f10d6fecb345 | 66 | // |
micallef25 | 2:f10d6fecb345 | 67 | int road_clock; |
micallef25 | 2:f10d6fecb345 | 68 | }; |
micallef25 | 2:f10d6fecb345 | 69 | #endif |