Files
StarPilot/mapd_repo/settings/migrations.go
T
firestar5683 ab81464bd1 Maps
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>
2026-10-14 19:56:17 -05:00

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"`
}