public bool startWorkout() { if (workoutEventHandler == null) { return(false); } forceFinish = false; workoutCountDown = 10; workoutEventArgs wEA = getDefaultEventData(); wEA.message = "Starting " + activeWorkout.title + " in " + workoutCountDown.ToString() + " Seconds"; wEA.segmentTotalMS = activeWorkout.segments[0].length * 1000; wEA.workoutCurrentMS = 0; wEA.workoutTotalMS = activeWorkout.length * 1000; workoutEventHandler(this, wEA); _countDownTimer = new Timer(1000); _countDownTimer.Elapsed += new ElapsedEventHandler(_countDownTimerElapsed); _countDownTimer.Enabled = true; return(true); }
public bool loadWorkout(int workoutToStart) { if (workoutRunning) { return(false); } if (workoutToStart >= workOutList.Count) { return(false); } if (workoutEventHandler == null) { return(false); } activeSegment = -1; activeWorkout = workOutList[workoutToStart]; msTimeForNextSegment = activeWorkout.segments[0].length * 1000; workoutEventArgs wEA = getDefaultEventData(); wEA.message = "Loading Workout " + activeWorkout.title; wEA.segmentTotalMS = activeWorkout.segments[0].length * 1000; wEA.workoutTotalMS = activeWorkout.length * 1000; wEA.starting = true; workoutEventHandler(this, wEA); workOutSeconds = 0; return(true); }
public UserWindow() { InitializeComponent(); uniqueIDSpd = 0; uniqueIDPwr = 0; uniqueIDHr = 0; spdData = new List <Point>(); cadData = new List <Point>(); hrData = new List <Point>(); pwrData = new List <Point>(); avgpwrData = new List <Point>(); pTarget = new PointCollection(10); Point pt01 = new Point(.01, .01); Point pt02 = new Point(.06, .01); Point pt03 = new Point(.07, .06); Point pt04 = new Point(.04, .06); pTarget.Add(pt01); pTarget.Add(pt02); pTarget.Add(pt03); pTarget.Add(pt04); workoutStatus = new workoutEventArgs(); roundRobin = 0; powerMax = 400; labelPwrMax.Content = "400"; dwgEngine = new cDrawingEngine(); }
public void updateWorkoutEvent(object sender, workoutEventArgs e) { workoutStreamToClose = (cWorkout)sender; workoutStatus = e; if (workoutStatus.running) { bWorkoutRunning = true; } }
private int[] segAvgPower; //This should be a queue, probably. public void updateWorkoutEvent(object sender, workoutEventArgs e) { if (e.running && !e.paused && _TCXDataTimer.Enabled == false) { segAvgPower = new int[200]; string title = "none"; try { cWorkout workout = (cWorkout)sender; title = workout.activeWorkout.title; } catch { title = "idk"; } if (TCXFileHandler == null) { TCXFileHandler = new cTCXFileGenerator(firstName, lastName, title); TCXDistanceCount = 0; } _TCXDataTimer.Enabled = true; } else if (e.paused && _TCXDataTimer.Enabled) { _TCXDataTimer.Enabled = false; } else if (e.finished && (_TCXDataTimer.Enabled || e.paused)) { _TCXDataTimer.Enabled = false; //writeTCXData(e.workoutCurrentMS/1000); TCXFileHandler.closeTCXData(); TCXFileHandler = null; } if (e.running && !e.paused) { if (lastSegment != e.currentSegment) { if (lastSegment >= 0 && qPWRQue.Count > 0) { segAvgPower[lastSegment] = (int)qPWRQue.Average(s => s.instPwr); } qPWRQue.Clear(); } lastSegment = e.currentSegment; } }
workoutEventArgs getDefaultEventData() { workoutEventArgs wEA = new workoutEventArgs(); wEA.clear = false; wEA.finished = bIsFinished; wEA.message = ""; wEA.paused = bIsPaused; wEA.segmentCurrentMS = 0; wEA.segmentTotalMS = 0; wEA.starting = false; wEA.workoutCurrentMS = 0; wEA.workoutTotalMS = 0; wEA.currentSegment = activeSegment; wEA.running = bIsRunning; wEA.alternateTarget = 0; return(wEA); }
void _countDownTimerElapsed(object sender, ElapsedEventArgs e) { workoutCountDown--; workoutEventArgs wEA = getDefaultEventData(); if (workoutCountDown > 0) { wEA.message = "Starting " + activeWorkout.title + " in " + workoutCountDown.ToString() + " Seconds"; wEA.segmentTotalMS = activeWorkout.segments[0].length * 1000; wEA.workoutTotalMS = activeWorkout.length * 1000; } else { _countDownTimer.Stop(); activeSegment = 0; wEA.currentSegment = activeSegment; wEA.message = "GGGGOOOOOO!!!"; wEA.segmentTotalMS = activeWorkout.segments[0].length * 1000; wEA.workoutTotalMS = activeWorkout.length * 1000; workoutTime = new Stopwatch(); workoutTime.Start(); if (null != workoutEventStartStop) { workoutStatusArgs wSA = new workoutStatusArgs(); wSA.running = true; workoutEventStartStop(this, wSA); } bIsRunning = true; _updateTimer = new Timer(500); _updateTimer.Elapsed += new ElapsedEventHandler(_updateTimerElapsed); _updateTimer.Enabled = true; } if (null != workoutEventHandler) { workoutEventHandler(this, wEA); } }
void _updateTimerElapsed(object sender, ElapsedEventArgs e) { if (workoutEventHandler == null) { return; } workOutSeconds = (int)(workoutTime.ElapsedMilliseconds / 1000); workoutEventArgs wEA = getDefaultEventData(); if (workoutTime.ElapsedMilliseconds > msTimeForNextSegment && workoutTime.ElapsedMilliseconds / 1000 < activeWorkout.length && activeSegment < activeWorkout.segments.Count - 1) { //New Segment!! activeSegment++; msTimeForNextSegment += activeWorkout.segments[activeSegment].length * 1000; wEA.message = activeWorkout.segments[activeSegment].segmentName; } if (workoutTime.ElapsedMilliseconds / 1000 < activeWorkout.length && !forceFinish) { long segTimeLeft = (msTimeForNextSegment - workoutTime.ElapsedMilliseconds); //active workout ... send a normal update if (segTimeLeft < 1000) { wEA.message = "1s to Go!"; } else if (segTimeLeft < 2000) { wEA.message = "2s to Go!"; } else if (segTimeLeft < 3000) { wEA.message = "3s to Go!"; } wEA.workoutCurrentMS = workoutTime.ElapsedMilliseconds; wEA.workoutTotalMS = activeWorkout.length * 1000; wEA.segmentCurrentMS = activeWorkout.segments[activeSegment].length * 1000 - (msTimeForNextSegment - workoutTime.ElapsedMilliseconds); wEA.segmentTotalMS = activeWorkout.segments[activeSegment].length * 1000; switch (activeWorkout.segments[activeSegment].type) { case "steady": break; case "ramp": wEA.alternateTarget = activeWorkout.segments[activeSegment].effort + ((double)wEA.segmentCurrentMS / wEA.segmentTotalMS) * (activeWorkout.segments[activeSegment].effortFinish - activeWorkout.segments[activeSegment].effort); break; case "overunder": long timeLeft = (msTimeForNextSegment - workoutTime.ElapsedMilliseconds) / 1000; while (timeLeft > 0) { if (timeLeft <= activeWorkout.segments[activeSegment].overTime) { wEA.alternateTarget = activeWorkout.segments[activeSegment].effortFinish; timeLeft = 0; } else { timeLeft -= activeWorkout.segments[activeSegment].overTime; } if (timeLeft > 0 && timeLeft <= activeWorkout.segments[activeSegment].underTime) { wEA.alternateTarget = activeWorkout.segments[activeSegment].effort; timeLeft = 0; } else { timeLeft -= activeWorkout.segments[activeSegment].underTime; } } break; default: wEA.alternateTarget = 0; break; } } else { // Workout is over!! if (!forceFinish) { bIsFinished = true; } forceFinish = false; workoutTime.Stop(); if (null != workoutEventStartStop) { workoutStatusArgs wSA = new workoutStatusArgs(); wSA.running = false; workoutEventStartStop(this, wSA); } bIsRunning = false; wEA.message = "Done!!!"; wEA.finished = true; _updateTimer.Stop(); } if (workoutEventHandler != null) { workoutEventHandler(this, wEA); } }