DovesLapTimer 4.0.0
GPS-based lap timing Arduino library — go-karts to race cars
Loading...
Searching...
No Matches
CourseManager.h
Go to the documentation of this file.
1
12#ifndef _COURSE_MANAGER_H
13#define _COURSE_MANAGER_H
14
15#include <Arduino.h>
16#include "DovesLapTimer.h"
17#include "WaypointLapTimer.h"
18#include "CourseDetector.h"
19
29
36
39 const char* name;
40 float lengthFt;
41 bool active;
42};
43
45public:
46 CourseManager(TrackConfig& config, double crossingThreshold = 7.0, Stream *debugSerial = NULL);
47
48 void updateCurrentTime(unsigned long ms);
49 int loop(double lat, double lng, float altMeters, float speedKnots);
50 void reset();
52
53 // Detection state
54 bool isDetectionComplete() const;
55 int getActiveCourseIndex() const;
56 const char* getActiveCourseName() const;
57 int getCourseCount() const;
59
60 // Timer access
63 bool isLapAnythingActive() const;
64
65 // Track metadata
66 const char* getTrackName() const;
67 const char* getShortName() const;
68
69 // Detector access
71
72 // Threshold setters
73 void setSpeedThresholdMph(float mph);
74 void setWaypointProximityMeters(float meters);
75 void setDetectionProximityMeters(float meters);
76
77private:
78 template<typename... Args>
79 void debug_print(Args&&... args) {
80 if(_serial) { _serial->print(std::forward<Args>(args)...); }
81 }
82 template<typename... Args>
83 void debug_println(Args&&... args) {
84 if(_serial) { _serial->println(std::forward<Args>(args)...); }
85 }
86
87 void _initCourses(TrackConfig& config);
88 void _handleCandidatesReady(float currentOdometer);
89 void _activateLapAnything();
90
91 Stream *_serial;
92 double _crossingThreshold;
93
94 CourseTimerEntry _courseTimers[MAX_COURSES];
95 int _courseCount;
96
97 CourseDetector _detector;
98 WaypointLapTimer _lapAnythingTimer;
99
100 int _activeCourseIndex;
101 bool _detectionComplete;
102 bool _lapAnythingActive;
103 int _detectionRejectionCount;
104
105 const char* _trackLongName;
106 const char* _trackShortName;
107};
108
109#endif
#define MAX_COURSES
Definition DovesLapTimer.h:45
void loop()
Definition basic_oled_example.ino:116
Definition CourseDetector.h:30
Definition CourseManager.h:44
void setSpeedThresholdMph(float mph)
Definition CourseManager.cpp:252
const char * getShortName() const
Definition CourseManager.cpp:244
void setDetectionProximityMeters(float meters)
Definition CourseManager.cpp:261
int getActiveCourseIndex() const
Definition CourseManager.cpp:208
void updateCurrentTime(unsigned long ms)
Definition CourseManager.cpp:87
WaypointLapTimer * getLapAnythingTimer()
Definition CourseManager.cpp:232
void reset()
Definition CourseManager.cpp:182
const char * getActiveCourseName() const
Definition CourseManager.cpp:212
DovesLapTimer * getActiveTimer()
Definition CourseManager.cpp:226
CourseDetector * getDetector()
Definition CourseManager.cpp:248
void setWaypointProximityMeters(float meters)
Definition CourseManager.cpp:257
void pruneInactiveCourses()
Definition CourseManager.cpp:172
bool isDetectionComplete() const
Definition CourseManager.cpp:204
const char * getTrackName() const
Definition CourseManager.cpp:240
int getDetectionRejectionCount() const
Definition CourseManager.cpp:222
int getCourseCount() const
Definition CourseManager.cpp:218
bool isLapAnythingActive() const
Definition CourseManager.cpp:236
Definition DovesLapTimer.h:86
Definition WaypointLapTimer.h:37
Definition CourseManager.h:20
double startALat
Definition CourseManager.h:23
double startBLat
Definition CourseManager.h:23
double sector3BLat
Definition CourseManager.h:25
bool hasSector3
Definition CourseManager.h:27
double sector3ALat
Definition CourseManager.h:25
double startBLng
Definition CourseManager.h:23
const char * name
Definition CourseManager.h:21
double sector3ALng
Definition CourseManager.h:25
double sector3BLng
Definition CourseManager.h:25
double sector2ALat
Definition CourseManager.h:24
double sector2ALng
Definition CourseManager.h:24
double sector2BLng
Definition CourseManager.h:24
bool hasSector2
Definition CourseManager.h:26
double startALng
Definition CourseManager.h:23
double sector2BLat
Definition CourseManager.h:24
float lengthFt
Definition CourseManager.h:22
Definition CourseManager.h:37
const char * name
Definition CourseManager.h:39
float lengthFt
Definition CourseManager.h:40
bool active
Definition CourseManager.h:41
DovesLapTimer timer
Definition CourseManager.h:38
Definition CourseManager.h:30
int courseCount
Definition CourseManager.h:34
const char * shortName
Definition CourseManager.h:32
const char * longName
Definition CourseManager.h:31
CourseConfig courses[MAX_COURSES]
Definition CourseManager.h:33