diff --git a/app/src/main/java/com/cooper/wheellog/AppConfig.kt b/app/src/main/java/com/cooper/wheellog/AppConfig.kt index 375112880..ce711046a 100644 --- a/app/src/main/java/com/cooper/wheellog/AppConfig.kt +++ b/app/src/main/java/com/cooper/wheellog/AppConfig.kt @@ -756,6 +756,10 @@ class AppConfig(var context: Context): KoinComponent { get() = getSpecific(R.string.profile_name, "") set(value) = setSpecific(R.string.profile_name, value) + var speedScaling: Float + get() = getSpecific(R.string.speed_scaling, 1f) + set(value) = setSpecific(R.string.speed_scaling, value) + var batteryCapacity: Int get() = getSpecific(R.string.battery_capacity, 0) set(value) = setSpecific(R.string.battery_capacity, value) diff --git a/app/src/main/java/com/cooper/wheellog/WheelData.java b/app/src/main/java/com/cooper/wheellog/WheelData.java index f1ac38c17..931d14109 100644 --- a/app/src/main/java/com/cooper/wheellog/WheelData.java +++ b/app/src/main/java/com/cooper/wheellog/WheelData.java @@ -224,7 +224,7 @@ public boolean isWheelIsReady() { } public int getSpeed() { - return (int) Math.round(mSpeed / 10.0); + return (int) Math.round(mSpeed / 10.0 * appConfig.getSpeedScaling()); } public void setSpeed(int speed) { @@ -765,7 +765,7 @@ String getRidingTimeString() { } public double getSpeedDouble() { - return mSpeed / 100.0; + return mSpeed / 100.0 * appConfig.getSpeedScaling(); } public double getVoltageDouble() { @@ -865,11 +865,11 @@ public double getMaxPwm() { } public int getTopSpeed() { - return mTopSpeed; + return Math.round(mTopSpeed * appConfig.getSpeedScaling()); } public double getTopSpeedDouble() { - return mTopSpeed / 100.0; + return mTopSpeed / 100.0 * appConfig.getSpeedScaling(); } int getDistance() { diff --git a/app/src/main/java/com/cooper/wheellog/settings/WheelScreen.kt b/app/src/main/java/com/cooper/wheellog/settings/WheelScreen.kt index afb357293..ffe48bb38 100644 --- a/app/src/main/java/com/cooper/wheellog/settings/WheelScreen.kt +++ b/app/src/main/java/com/cooper/wheellog/settings/WheelScreen.kt @@ -1342,6 +1342,16 @@ private fun veteran(appConfig: AppConfig = koinInject()) { @Composable private fun forAllWheel(appConfig: AppConfig = koinInject()) { + sliderPref( + name = stringResource(R.string.speed_scaling_title), + desc = stringResource(R.string.speed_scaling_description), + position = appConfig.speedScaling.toFloat(), + min = 0.8f, + max = 1.20f, + format = "%.3f", + ) { + appConfig.speedScaling = it.toFloat() + } sliderPref( name = stringResource(R.string.battery_capacity_title), desc = stringResource(R.string.battery_capacity_description), diff --git a/app/src/main/res/values/constants.xml b/app/src/main/res/values/constants.xml index f49ed0fbd..ed3dad774 100644 --- a/app/src/main/res/values/constants.xml +++ b/app/src/main/res/values/constants.xml @@ -148,6 +148,7 @@ connection_sound no_connection_sound use_stop_music + speed_scaling battery_capacity charging_power show_unknown_devices diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 09b188c4e..d786326c2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -218,6 +218,8 @@ Period of beeps when connection lost, 0sec - no beeps Auto mute Auto mute at speeds below 3.5 km/h + Speed scaling + Scale the speed output from the wheel Battery capacity Battery Capacity in Wh Charging power