diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt index 4645d6312e..405daabc9e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt @@ -136,6 +136,12 @@ class ProfileFunctionImplementation @Inject constructor( override fun getRequestedProfile(): ProfileSwitch? = repository.getActiveProfileSwitch(dateUtil.now()) + override fun isProfileChangePending(): Boolean { + val requested = getRequestedProfile() ?: return false + val running = getProfile() ?: return true + return !ProfileSealed.PS(requested).isEqual(running) + } + override fun getUnits(): GlucoseUnit = if (sp.getString(R.string.key_units, Constants.MGDL) == Constants.MGDL) GlucoseUnit.MGDL else GlucoseUnit.MMOL diff --git a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercent.kt b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercent.kt index 909b2c13bc..0c852a2af2 100644 --- a/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercent.kt +++ b/automation/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercent.kt @@ -41,6 +41,10 @@ class TriggerProfilePercent(injector: HasAndroidInjector) : Trigger(injector) { override fun shouldRun(): Boolean { val profile = profileFunction.getProfile() + if (profileFunction.isProfileChangePending()) { + aapsLogger.debug(LTag.AUTOMATION, "NOT ready for execution: " + "Profile change is already pending: " + friendlyDescription()) + return false + } if (profile == null && comparator.value == Comparator.Compare.IS_NOT_AVAILABLE) { aapsLogger.debug(LTag.AUTOMATION, "Ready for execution: " + friendlyDescription()) return true diff --git a/core/src/main/java/info/nightscout/androidaps/interfaces/ProfileFunction.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/ProfileFunction.kt index 73d20102b4..b28dd06f3d 100644 --- a/core/src/main/java/info/nightscout/androidaps/interfaces/ProfileFunction.kt +++ b/core/src/main/java/info/nightscout/androidaps/interfaces/ProfileFunction.kt @@ -46,6 +46,13 @@ interface ProfileFunction { */ fun getRequestedProfile(): ProfileSwitch? + /** + * Get requested profile by user (profile must not be active yet) + * + * @return true if ProfileSwitch != EffectiveProfileSwitch + */ + fun isProfileChangePending(): Boolean + /** * Build a new circadian profile switch request based on provided profile *