// // Created by ricardo on 2022/5/6. // #ifndef AUTO_PILOT_BUS_CONTROLLER_H #define AUTO_PILOT_BUS_CONTROLLER_H #include "stdlib.h" #include "rail.h" #include "query.h" #include "bus.h" /** * 当前正在处理的请求 */ extern bus_query_t *target_query; /** * 当前选择的策略 */ extern int chosen_strategy; /** * 在先来先服务策略下应该前进的方向 * @return 前进的方向 */ int FCFSDirection(); /** * 在先来先服务策略下给出处理的请求 * @return 需要处理的请求 */ bus_query_t *FCFSQuery(); /** * 获得在SSTF策略下应该处理的请求 * @return 指向需要处理的请求的指针 */ bus_query_t *SSTFGetQuery(); /** * 根据指定的请求获得前进的方向,也就是前往指定的请求最近的方向 * 在SSTF策略中使用 * @param query 指定完成的请求 * @return 前进的方向 */ int SSTFDirection(bus_query_t* query); /** * 在当前站上可以顺便服务的请求 * @param direction 当前公交车前进的方向 * @return 服务的请求指针 */ bus_query_t *SSTFBTWQuery(int direction); /** * 获得在SCAN策略下应该处理的请求 * @return 指向需要处理的请求的指针 */ bus_query_t *SCANGetQuery(int direction); /** * 根据指定的请求获得前进的方向 * 在SCAN策略中使用 * @param query 指定完成的请求 * @return 前进的方向 */ int SCANDirection(bus_query_t *query, int orientation); /** * 在当前站上可以顺便服务的请求 * @return 服务的请求指针 */ bus_query_t *SCANBTWQuery(); #endif //AUTO_PILOT_BUS_CONTROLLER_H