Added member variables to GPS for lap detection
This commit is contained in:
@@ -44,6 +44,7 @@ enum Type : uint8_t {
|
|||||||
ConfigTengSetHigh,
|
ConfigTengSetHigh,
|
||||||
BatteryCal,
|
BatteryCal,
|
||||||
AllConfigUpdated,
|
AllConfigUpdated,
|
||||||
|
AllTrackLoaded,
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace task
|
} // namespace task
|
||||||
|
|||||||
@@ -375,5 +375,6 @@ int Config::loadTrack(unsigned int idx) {
|
|||||||
loaded_track_ = track_data;
|
loaded_track_ = track_data;
|
||||||
trackGlobalWrite(loaded_track_);
|
trackGlobalWrite(loaded_track_);
|
||||||
is_track_loaded_ = true;
|
is_track_loaded_ = true;
|
||||||
|
router::send(module::All, task::AllTrackLoaded);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,29 @@ int Gps::loop(unsigned long timeout_ms) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Task active;
|
||||||
|
int res = queue_.pop(active);
|
||||||
|
if (res == 0) {
|
||||||
|
if (active.target_ == module::Gps) {
|
||||||
|
|
||||||
|
} else if (active.target_ == module::All) {
|
||||||
|
switch (active.type_)
|
||||||
|
{
|
||||||
|
case task::AllTrackLoaded:
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (logger_ != nullptr) {
|
||||||
|
logger_->debug("GPS received track loaded sig");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
lap_active_ = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,15 @@
|
|||||||
#include "data/gps_store.h"
|
#include "data/gps_store.h"
|
||||||
#include "base/router.h"
|
#include "base/router.h"
|
||||||
|
|
||||||
|
namespace trigger_status {
|
||||||
|
|
||||||
|
enum TriggerStatus {
|
||||||
|
Idle,
|
||||||
|
Armed,
|
||||||
|
Trigd,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
class Gps : public ModuleBase {
|
class Gps : public ModuleBase {
|
||||||
private:
|
private:
|
||||||
TinyGPSPlus *gps_;
|
TinyGPSPlus *gps_;
|
||||||
@@ -20,6 +29,12 @@ private:
|
|||||||
SystemLogger *logger_;
|
SystemLogger *logger_;
|
||||||
RingBuffer<Task, 16> queue_;
|
RingBuffer<Task, 16> queue_;
|
||||||
uint32_t last_fix_value_ = 0;
|
uint32_t last_fix_value_ = 0;
|
||||||
|
trigger_status::TriggerStatus start_line_trigger_ = trigger_status::Idle;
|
||||||
|
bool lap_active_ = false;
|
||||||
|
unsigned long last_check_ = 0;
|
||||||
|
unsigned long check_interval_ = 250;
|
||||||
|
unsigned long last_arm_ = 0;
|
||||||
|
int arm_sign_ = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int push(const Task &task) override;
|
int push(const Task &task) override;
|
||||||
|
|||||||
Reference in New Issue
Block a user