Avoid AutotuneRun from automation if Run detected

This commit is contained in:
Philoul 2022-07-10 00:35:54 +02:00
parent 96ed234020
commit 10d92b89fd
6 changed files with 21 additions and 10 deletions

View file

@ -105,7 +105,7 @@ android {
defaultConfig { defaultConfig {
multiDexEnabled true multiDexEnabled true
versionCode 1500 versionCode 1500
version "3.0.0.2-dev-n" version "3.0.0.2-autotune-dev-n0"
buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "VERSION", '"' + version + '"'
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"' buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"' buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'

View file

@ -100,7 +100,6 @@ class AutotuneFragment : DaggerFragment() {
) )
binding.autotuneRun.setOnClickListener { binding.autotuneRun.setOnClickListener {
val daysBack = SafeParse.stringToInt(binding.tuneDays.text) val daysBack = SafeParse.stringToInt(binding.tuneDays.text)
autotunePlugin.calculationRunning = true
autotunePlugin.lastNbDays = daysBack.toString() autotunePlugin.lastNbDays = daysBack.toString()
log("Run Autotune $profileName, $daysBack days") log("Run Autotune $profileName, $daysBack days")
Thread { Thread {

View file

@ -22,6 +22,7 @@ import info.nightscout.androidaps.utils.MidnightTime
import info.nightscout.androidaps.utils.T import info.nightscout.androidaps.utils.T
import info.nightscout.androidaps.interfaces.BuildHelper import info.nightscout.androidaps.interfaces.BuildHelper
import info.nightscout.shared.logging.AAPSLogger import info.nightscout.shared.logging.AAPSLogger
import info.nightscout.shared.logging.LTag
import info.nightscout.shared.sharedPreferences.SP import info.nightscout.shared.sharedPreferences.SP
import org.json.JSONException import org.json.JSONException
import org.json.JSONObject import org.json.JSONObject
@ -65,7 +66,7 @@ class AutotunePlugin @Inject constructor(
), Autotune { ), Autotune {
@Volatile override var lastRunSuccess: Boolean = false @Volatile override var lastRunSuccess: Boolean = false
@Volatile var result: String = "" @Volatile var result: String = ""
@Volatile var calculationRunning: Boolean = false @Volatile override var calculationRunning: Boolean = false
@Volatile var lastRun: Long = 0 @Volatile var lastRun: Long = 0
@Volatile var selectedProfile = "" @Volatile var selectedProfile = ""
@Volatile var lastNbDays: String = "" @Volatile var lastNbDays: String = ""
@ -76,9 +77,12 @@ class AutotunePlugin @Inject constructor(
private lateinit var profile: Profile private lateinit var profile: Profile
val autotuneStartHour: Int = 4 val autotuneStartHour: Int = 4
@Synchronized
override fun aapsAutotune(daysBack: Int, autoSwitch: Boolean, profileToTune: String) { override fun aapsAutotune(daysBack: Int, autoSwitch: Boolean, profileToTune: String) {
lastRunSuccess = false lastRunSuccess = false
if (calculationRunning) {
aapsLogger.debug(LTag.AUTOMATION, "Autotune run detected, Autotune Run Cancelled")
return
}
calculationRunning = true calculationRunning = true
tunedProfile = null tunedProfile = null
updateButtonVisibility = View.GONE updateButtonVisibility = View.GONE

View file

@ -42,13 +42,19 @@ class ActionRunAutotune(injector: HasAndroidInjector) : Action(injector) {
val profileName = if (inputProfileName.value == rh.gs(R.string.active)) "" else inputProfileName.value val profileName = if (inputProfileName.value == rh.gs(R.string.active)) "" else inputProfileName.value
var message = if (autoSwitch) R.string.autotune_run_with_autoswitch else R.string.autotune_run_without_autoswitch var message = if (autoSwitch) R.string.autotune_run_with_autoswitch else R.string.autotune_run_without_autoswitch
Thread { Thread {
autotunePlugin.atLog("[Automation] Run Autotune $profileName, ${daysBack.value} days, Autoswitch $autoSwitch") if (!autotunePlugin.calculationRunning) {
autotunePlugin.aapsAutotune(daysBack.value, autoSwitch, profileName) autotunePlugin.atLog("[Automation] Run Autotune $profileName, ${daysBack.value} days, Autoswitch $autoSwitch")
if (!autotunePlugin.lastRunSuccess) { autotunePlugin.aapsAutotune(daysBack.value, autoSwitch, profileName)
message = R.string.autotune_run_with_error if (!autotunePlugin.lastRunSuccess) {
aapsLogger.error(LTag.AUTOMATION, "Error during Autotune Run") message = R.string.autotune_run_with_error
aapsLogger.error(LTag.AUTOMATION, "Error during Autotune Run")
}
callback.result(PumpEnactResult(injector).success(autotunePlugin.lastRunSuccess).comment(message)).run()
} else {
message = R.string.autotune_run_cancelled
aapsLogger.debug(LTag.AUTOMATION, "Autotune run detected, Autotune Run Cancelled")
callback.result(PumpEnactResult(injector).success(false).comment(message)).run()
} }
callback.result(PumpEnactResult(injector).success(autotunePlugin.lastRunSuccess).comment(message)).run()
}.start() }.start()
return return
} }

View file

@ -6,4 +6,5 @@ interface Autotune {
fun atLog(message: String) fun atLog(message: String)
var lastRunSuccess: Boolean var lastRunSuccess: Boolean
var calculationRunning: Boolean
} }

View file

@ -600,6 +600,7 @@
<string name="autotune_run_without_autoswitch">Autotune runned without profile switch</string> <string name="autotune_run_without_autoswitch">Autotune runned without profile switch</string>
<string name="autotune_run_with_autoswitch">Autotune runned and profile automatically switched</string> <string name="autotune_run_with_autoswitch">Autotune runned and profile automatically switched</string>
<string name="autotune_run_with_error">Error during last Autotune run</string> <string name="autotune_run_with_error">Error during last Autotune run</string>
<string name="autotune_run_cancelled">Another run of Autotune is detected, run cancelled</string>
<plurals name="days"> <plurals name="days">
<item quantity="one">%1$d day</item> <item quantity="one">%1$d day</item>