void lapStats_init()
{
    lapstats_reset_distance();
    reset_elapsed_time();
    set_active_track(NULL);
    resetPredictiveTimer();
    reset_current_lap();
    g_geo_circle_radius = 0;
    g_configured = 0;
    g_lastLapTime = 0;
    g_lastSectorTime = 0;
    g_at_sf = 0;
    g_lapStartTimestamp = -1;
    g_at_sector = 0;
    g_lastSectorTimestamp = 0;
    g_lapCount = 0;
    g_sector = -1;     // Indicates we haven't crossed start/finish yet.
    g_lastSector = -1; // Indicates no previous sector.
}
/**
 * Useful for setting up internal state for unit tests.
 */
static void lapstats_setup_internals(const Track *track, const float gc_radius,
                                     const bool auto_detect)
{
    set_active_track(track);
    if (!track)
        return;

    g_geo_circle_radius = gc_radius;
    g_start_finish_enabled = isStartFinishEnabled(track);
    g_sector_enabled = isSectorTrackingEnabled(track);
    g_track_status = auto_detect ? TRACK_STATUS_AUTO_DETECTED :
                     TRACK_STATUS_FIXED_CONFIG;

    setup_geo_triggers(track, g_geo_circle_radius *
                       GEO_TRIGGER_RADIUS_MULTIPLIER);
    setup_geo_circles();

    lc_setup(track, g_geo_circle_radius);

    g_configured = 1;
}
void ElapsedLapTimeTest::setUp() {
        lapStats_init();
        set_active_track(&track);
        memset(&gpsSnap, 0, sizeof(GpsSnapshot));
}