mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-06 20:43:46 +08:00
ab81464bd1
Add navigation and map matching providers with the vendored map service sources. Co-authored-by: Daniel Koepping <elkoled@gmail.com> Co-authored-by: Danny <dannyirwin31@yahoo.com> Co-authored-by: Prabhaav Pillai <prabhaav@msu.edu> Co-authored-by: dirwin31 <83434411+dirwin31@users.noreply.github.com>
120 lines
5.7 KiB
Go
120 lines
5.7 KiB
Go
package settings
|
|
|
|
import (
|
|
"encoding/json"
|
|
"log/slog"
|
|
)
|
|
|
|
func Migrate(version uint64, jsonString []byte) MapdSettings {
|
|
var migratedSettings any
|
|
|
|
switch version {
|
|
case 1:
|
|
var v1Settings V1Settings
|
|
err := json.Unmarshal(jsonString, &v1Settings)
|
|
if err != nil {
|
|
slog.Error("Error unmarshalling V1 settings: %v", "error", err)
|
|
return MapdSettings{}
|
|
}
|
|
migratedSettings = v1Settings
|
|
}
|
|
|
|
if version == 1 {
|
|
v1Settings := migratedSettings.(V1Settings)
|
|
migratedSettings = v2(v1Settings)
|
|
version = 2
|
|
}
|
|
|
|
return migratedSettings.(MapdSettings)
|
|
}
|
|
|
|
func v2(v1Settings V1Settings) MapdSettings {
|
|
personalitySettings := PersonalitySettings{
|
|
TargetSpeedJerk: v1Settings.TargetSpeedJerk,
|
|
TargetSpeedAccel: v1Settings.TargetSpeedAccel,
|
|
CurveTargetSpeedTimeOffset: v1Settings.TargetSpeedTimeOffset,
|
|
SpeedLimitIncreaseTargetSpeedTimeOffset: v1Settings.TargetSpeedTimeOffset,
|
|
SpeedLimitDecreaseTargetSpeedTimeOffset: v1Settings.TargetSpeedTimeOffset,
|
|
VisionCurveTargetLatA: v1Settings.VisionCurveTargetLatA,
|
|
VisionCurveMinTargetV: v1Settings.VisionCurveMinTargetV,
|
|
MapCurveTargetLatA: v1Settings.MapCurveTargetLatA,
|
|
SlowDownForNextSpeedLimit: v1Settings.SlowDownForNextSpeedLimit,
|
|
SpeedUpForNextSpeedLimit: v1Settings.SpeedUpForNextSpeedLimit,
|
|
}
|
|
|
|
v2Settings := MapdSettings{
|
|
SettingsVersion: 2,
|
|
VisionCurveSpeedControlEnabled: v1Settings.VisionCurveSpeedControlEnabled,
|
|
MapCurveSpeedControlEnabled: v1Settings.MapCurveSpeedControlEnabled,
|
|
SpeedLimitControlEnabled: v1Settings.SpeedLimitControlEnabled,
|
|
ExternalSpeedLimitControlEnabled: v1Settings.ExternalSpeedLimitControlEnabled,
|
|
VisionCurveUseEnableSpeed: v1Settings.VisionCurveUseEnableSpeed,
|
|
SpeedLimitUseEnableSpeed: v1Settings.SpeedLimitUseEnableSpeed,
|
|
MapCurveUseEnableSpeed: v1Settings.MapCurveUseEnableSpeed,
|
|
EnableSpeed: v1Settings.EnableSpeed,
|
|
DefaultLaneWidth: v1Settings.DefaultLaneWidth,
|
|
SubscriberSettings: SubscriberSettings{
|
|
ShadowCarState: true,
|
|
ShadowModelV2: false,
|
|
ShadowGpsLocation: false,
|
|
ShadowGpsLocationExternal: false,
|
|
ShadowSelfdriveState: false,
|
|
},
|
|
LogSettings: LogSettings{
|
|
LogLevel: v1Settings.LogLevel,
|
|
LogJson: v1Settings.LogJson,
|
|
LogSource: v1Settings.LogSource,
|
|
},
|
|
Personalities: Personalities{
|
|
Standard: personalitySettings,
|
|
Relaxed: personalitySettings,
|
|
Aggressive: personalitySettings,
|
|
},
|
|
SpeedLimitSettings: SpeedLimitSettings{
|
|
PressGasToAcceptSpeedLimit: v1Settings.PressGasToAcceptSpeedLimit,
|
|
PressGasToOverrideSpeedLimit: v1Settings.PressGasToOverrideSpeedLimit,
|
|
AdjustSetSpeedToAcceptSpeedLimit: v1Settings.AdjustSetSpeedToAcceptSpeedLimit,
|
|
AcceptSpeedLimitTimeout: v1Settings.AcceptSpeedLimitTimeout,
|
|
SpeedLimitPriority: v1Settings.SpeedLimitPriority,
|
|
SpeedLimitChangeRequiresAccept: v1Settings.SpeedLimitChangeRequiresAccept,
|
|
SpeedLimitOffset: v1Settings.SpeedLimitOffset,
|
|
HoldLastSeenSpeedLimit: v1Settings.HoldLastSeenSpeedLimit,
|
|
HoldSpeedLimitWhileChangingSetSpeed: v1Settings.HoldSpeedLimitWhileChangingSetSpeed,
|
|
},
|
|
}
|
|
return v2Settings
|
|
}
|
|
|
|
type V1Settings struct {
|
|
SettingsVersion float32 `json:"settings_version"`
|
|
PressGasToAcceptSpeedLimit bool `json:"press_gas_to_accept_speed_limit"`
|
|
PressGasToOverrideSpeedLimit bool `json:"press_gas_to_override_speed_limit"`
|
|
AdjustSetSpeedToAcceptSpeedLimit bool `json:"adjust_set_speed_to_accept_speed_limit"`
|
|
AcceptSpeedLimitTimeout float32 `json:"accept_speed_limit_timeout"`
|
|
VisionCurveSpeedControlEnabled bool `json:"vision_curve_speed_control_enabled"`
|
|
MapCurveSpeedControlEnabled bool `json:"map_curve_speed_control_enabled"`
|
|
SpeedLimitControlEnabled bool `json:"speed_limit_control_enabled"`
|
|
ExternalSpeedLimitControlEnabled bool `json:"external_speed_limit_control_enabled"`
|
|
SpeedLimitPriority string `json:"speed_limit_priority"`
|
|
VisionCurveUseEnableSpeed bool `json:"vision_curve_use_enable_speed"`
|
|
SpeedLimitUseEnableSpeed bool `json:"speed_limit_use_enable_speed"`
|
|
SpeedLimitChangeRequiresAccept bool `json:"speed_limit_change_requires_accept"`
|
|
MapCurveUseEnableSpeed bool `json:"map_curve_use_enable_speed"`
|
|
LogLevel string `json:"log_level"`
|
|
LogJson bool `json:"log_json"`
|
|
LogSource bool `json:"log_source"`
|
|
VisionCurveTargetLatA float32 `json:"vision_curve_target_lat_a"`
|
|
VisionCurveMinTargetV float32 `json:"vision_curve_min_target_v"`
|
|
SpeedLimitOffset float32 `json:"speed_limit_offset"`
|
|
EnableSpeed float32 `json:"enable_speed"`
|
|
HoldLastSeenSpeedLimit bool `json:"hold_last_seen_speed_limit"`
|
|
TargetSpeedJerk float32 `json:"target_speed_jerk"`
|
|
TargetSpeedAccel float32 `json:"target_speed_accel"`
|
|
TargetSpeedTimeOffset float32 `json:"target_speed_time_offset"`
|
|
DefaultLaneWidth float32 `json:"default_lane_width"`
|
|
MapCurveTargetLatA float32 `json:"map_curve_target_lat_a"`
|
|
SlowDownForNextSpeedLimit bool `json:"slow_down_for_next_speed_limit"`
|
|
SpeedUpForNextSpeedLimit bool `json:"speed_up_for_next_speed_limit"`
|
|
HoldSpeedLimitWhileChangingSetSpeed bool `json:"hold_speed_limit_while_changing_set_speed"`
|
|
}
|