This commit is contained in:
Milos Kozak 2023-11-07 10:37:07 +01:00
commit 22bf7120d5
2 changed files with 36 additions and 5 deletions

View file

@ -14,6 +14,7 @@ import app.aaps.core.interfaces.plugin.PluginDescription
import app.aaps.core.interfaces.plugin.PluginType
import app.aaps.core.interfaces.pump.VirtualPump
import app.aaps.core.interfaces.resources.ResourceHelper
import app.aaps.core.interfaces.sharedPreferences.SP
import app.aaps.core.interfaces.source.BgSource
import app.aaps.core.interfaces.utils.T
import app.aaps.core.utils.isRunningTest
@ -40,13 +41,14 @@ class RandomBgPlugin @Inject constructor(
aapsLogger: AAPSLogger,
private val repository: AppRepository,
private val virtualPump: VirtualPump,
private val sp: SP,
private val config: Config
) : PluginBase(
PluginDescription()
.mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name)
.pluginIcon(R.drawable.ic_dice)
.preferencesId(R.xml.pref_bgsource)
.preferencesId(R.xml.pref_randombg)
.pluginName(R.string.random_bg)
.shortName(R.string.random_bg_short)
.description(R.string.description_source_random_bg),
@ -56,10 +58,10 @@ class RandomBgPlugin @Inject constructor(
private val handler = Handler(HandlerThread(this::class.simpleName + "Handler").also { it.start() }.looper)
private lateinit var refreshLoop: Runnable
private var wakeLock: PowerManager.WakeLock? = null
private var interval = 5L // minutes
companion object {
const val interval = 5L // minutes
const val min = 70 // mgdl
const val max = 190 // mgdl
const val period = 120.0 // minutes
@ -67,11 +69,16 @@ class RandomBgPlugin @Inject constructor(
init {
refreshLoop = Runnable {
updateInterval()
handler.postDelayed(refreshLoop, T.mins(interval).msecs())
handleNewData()
}
}
private fun updateInterval() {
interval = sp.getInt("randombg_interval_min", 5).toLong()
}
private val disposable = CompositeDisposable()
override fun advancedFilteringSupported(): Boolean = true
@ -79,11 +86,12 @@ class RandomBgPlugin @Inject constructor(
@SuppressLint("WakelockTimeout")
override fun onStart() {
super.onStart()
updateInterval()
val cal = GregorianCalendar()
cal[Calendar.MILLISECOND] = 0
cal[Calendar.SECOND] = 0
cal[Calendar.MINUTE] -= cal[Calendar.MINUTE] % 5
handler.postAtTime(refreshLoop, SystemClock.uptimeMillis() + cal.timeInMillis + T.mins(5).msecs() + 1000 - System.currentTimeMillis())
cal[Calendar.MINUTE] -= cal[Calendar.MINUTE] % interval.toInt()
handler.postAtTime(refreshLoop, SystemClock.uptimeMillis() + cal.timeInMillis + T.mins(interval).msecs() + 1000 - System.currentTimeMillis())
disposable.clear()
wakeLock = (context.getSystemService(Context.POWER_SERVICE) as PowerManager).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "AAPS:RandomBgPlugin")
wakeLock?.acquire()
@ -108,7 +116,7 @@ class RandomBgPlugin @Inject constructor(
cal[Calendar.MILLISECOND] = 0
cal[Calendar.SECOND] = 0
cal[Calendar.MINUTE] -= cal[Calendar.MINUTE] % 5
cal[Calendar.MINUTE] -= cal[Calendar.MINUTE] % interval.toInt()
val glucoseValues = mutableListOf<TransactionGlucoseValue>()
glucoseValues += TransactionGlucoseValue(
timestamp = cal.timeInMillis,

View file

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
android:key="randombg_settings"
app:initialExpandedChildrenCount="0"
android:title="Random BG">
<SwitchPreference
android:defaultValue="false"
android:key="@string/key_do_ns_upload"
android:title="@string/do_ns_upload_title" />
<EditTextPreference
android:defaultValue="5"
android:digits="0123456789"
android:inputType="numberDecimal"
android:key="randombg_interval_min"
android:title="BG generation interval minutes" />
</PreferenceCategory>
</PreferenceScreen>