private static async void DispatchBasedOnTime(BusSvc bs) { while (BusHelper.IsWithinServiceTiming(bs.routeName)) { BusHelper.AddBusOnRoad(bs.routeName + "-" + BusHelper.ActiveBuses.Count, bs.routeName); // dispatch again after freq await Task.Delay(TimeSpan.FromMinutes(bs.freq [BusHelper.GetTimeOfDay(bs.routeName)])); } }
// private static double avgSpeedPeak = 4.0; // in m/s // private static double avgSpeedNonPeak = 5.0; // in m/s // private static double avgBoardingTimePeak = 30; // in secs // private static double avgBoardingTimeNonPeak = 15; // in secs public static void DispatchBuses() { // set timer for each bus service to dispatch bus at freq (if within service timing) foreach (BusSvc bs in BusHelper.BusSvcs.Values) { Device.StartTimer(TimeSpan.FromMinutes(bs.freq [(int)Days.WEEKDAY]), () => { BusHelper.AddBusOnRoad(bs.routeName + "-" + BusHelper.ActiveBuses.Count, bs.routeName); return(IsWithinServiceTiming(bs.routeName)); }); } }