From 71af958fca584ab498db67b0099b5378d89d3e87 Mon Sep 17 00:00:00 2001 From: Philoul Date: Sat, 30 Jan 2021 21:27:22 +0100 Subject: [PATCH 01/83] Replace Activity by -BGI in secondary graphs Align scales (IOB / Absolute) and (deviation / -BGI) if selected in the same graph --- .../historyBrowser/HistoryBrowseActivity.kt | 17 +++-- .../general/overview/OverviewFragment.kt | 14 ++-- .../plugins/general/overview/OverviewMenus.kt | 3 +- .../general/overview/graphData/GraphData.kt | 66 +++++++++++++++++-- app/src/main/res/values/strings.xml | 2 + 5 files changed, 83 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/historyBrowser/HistoryBrowseActivity.kt b/app/src/main/java/info/nightscout/androidaps/historyBrowser/HistoryBrowseActivity.kt index e4b37130e4..9daf4d6e52 100644 --- a/app/src/main/java/info/nightscout/androidaps/historyBrowser/HistoryBrowseActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/historyBrowser/HistoryBrowseActivity.kt @@ -334,24 +334,27 @@ class HistoryBrowseActivity : NoSplashAppCompatActivity() { var useDevForScale = false var useRatioForScale = false var useDSForScale = false - var useIAForScale = false + var useBGIForScale = false var useABSForScale = false when { menuChartSettings[g + 1][OverviewMenus.CharType.IOB.ordinal] -> useIobForScale = true menuChartSettings[g + 1][OverviewMenus.CharType.COB.ordinal] -> useCobForScale = true menuChartSettings[g + 1][OverviewMenus.CharType.DEV.ordinal] -> useDevForScale = true menuChartSettings[g + 1][OverviewMenus.CharType.SEN.ordinal] -> useRatioForScale = true - menuChartSettings[g + 1][OverviewMenus.CharType.ACT.ordinal] -> useIAForScale = true + menuChartSettings[g + 1][OverviewMenus.CharType.BGI.ordinal] -> useBGIForScale = true menuChartSettings[g + 1][OverviewMenus.CharType.ABS.ordinal] -> useABSForScale = true menuChartSettings[g + 1][OverviewMenus.CharType.DEVSLOPE.ordinal] -> useDSForScale = true } - if (menuChartSettings[g + 1][OverviewMenus.CharType.IOB.ordinal]) secondGraphData.addIob(fromTime, toTime, useIobForScale, 1.0, menuChartSettings[g + 1][OverviewMenus.CharType.PRE.ordinal]) - if (menuChartSettings[g + 1][OverviewMenus.CharType.COB.ordinal]) secondGraphData.addCob(fromTime, toTime, useCobForScale, if (useCobForScale) 1.0 else 0.5) - if (menuChartSettings[g + 1][OverviewMenus.CharType.DEV.ordinal]) secondGraphData.addDeviations(fromTime, toTime, useDevForScale, 1.0) - if (menuChartSettings[g + 1][OverviewMenus.CharType.SEN.ordinal]) secondGraphData.addRatio(fromTime, toTime, useRatioForScale, 1.0) - if (menuChartSettings[g + 1][OverviewMenus.CharType.ACT.ordinal]) secondGraphData.addActivity(fromTime, toTime, useIAForScale, 0.8) + var alignIobScale = menuChartSettings[g + 1][OverviewMenus.CharType.ABS.ordinal] && menuChartSettings[g + 1][OverviewMenus.CharType.IOB.ordinal] + var alignDevBgiScale = menuChartSettings[g + 1][OverviewMenus.CharType.DEV.ordinal] && menuChartSettings[g + 1][OverviewMenus.CharType.BGI.ordinal] + if (menuChartSettings[g + 1][OverviewMenus.CharType.ABS.ordinal]) secondGraphData.addAbsIob(fromTime, toTime, useABSForScale, 1.0) + if (menuChartSettings[g + 1][OverviewMenus.CharType.IOB.ordinal]) secondGraphData.addIob(fromTime, toTime, useIobForScale, 1.0, menuChartSettings[g + 1][OverviewMenus.CharType.PRE.ordinal], alignIobScale) + if (menuChartSettings[g + 1][OverviewMenus.CharType.COB.ordinal]) secondGraphData.addCob(fromTime, toTime, useCobForScale, if (useCobForScale) 1.0 else 0.5) + if (menuChartSettings[g + 1][OverviewMenus.CharType.DEV.ordinal]) secondGraphData.addDeviations(fromTime, toTime, useDevForScale, 1.0, alignDevBgiScale) + if (menuChartSettings[g + 1][OverviewMenus.CharType.SEN.ordinal]) secondGraphData.addRatio(fromTime, toTime, useRatioForScale, 1.0) + if (menuChartSettings[g + 1][OverviewMenus.CharType.BGI.ordinal]) secondGraphData.addMinusBGI(fromTime, toTime, useBGIForScale, if (alignDevBgiScale) 1.0 else 0.8, alignDevBgiScale) if (menuChartSettings[g + 1][OverviewMenus.CharType.DEVSLOPE.ordinal] && buildHelper.isDev()) secondGraphData.addDeviationSlope(fromTime, toTime, useDSForScale, 1.0) // set manual x bounds to have nice steps diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt index a8c0b10866..57f8280ba0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt @@ -877,23 +877,25 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList var useDevForScale = false var useRatioForScale = false var useDSForScale = false - var useIAForScale = false + var useBGIForScale = false when { menuChartSettings[g + 1][OverviewMenus.CharType.ABS.ordinal] -> useABSForScale = true menuChartSettings[g + 1][OverviewMenus.CharType.IOB.ordinal] -> useIobForScale = true menuChartSettings[g + 1][OverviewMenus.CharType.COB.ordinal] -> useCobForScale = true menuChartSettings[g + 1][OverviewMenus.CharType.DEV.ordinal] -> useDevForScale = true menuChartSettings[g + 1][OverviewMenus.CharType.SEN.ordinal] -> useRatioForScale = true - menuChartSettings[g + 1][OverviewMenus.CharType.ACT.ordinal] -> useIAForScale = true + menuChartSettings[g + 1][OverviewMenus.CharType.BGI.ordinal] -> useBGIForScale = true menuChartSettings[g + 1][OverviewMenus.CharType.DEVSLOPE.ordinal] -> useDSForScale = true } + var alignIobScale = menuChartSettings[g + 1][OverviewMenus.CharType.ABS.ordinal] && menuChartSettings[g + 1][OverviewMenus.CharType.IOB.ordinal] + var alignDevBgiScale = menuChartSettings[g + 1][OverviewMenus.CharType.DEV.ordinal] && menuChartSettings[g + 1][OverviewMenus.CharType.BGI.ordinal] if (menuChartSettings[g + 1][OverviewMenus.CharType.ABS.ordinal]) secondGraphData.addAbsIob(fromTime, now, useABSForScale, 1.0) - if (menuChartSettings[g + 1][OverviewMenus.CharType.IOB.ordinal]) secondGraphData.addIob(fromTime, now, useIobForScale, 1.0, menuChartSettings[g + 1][OverviewMenus.CharType.PRE.ordinal]) + if (menuChartSettings[g + 1][OverviewMenus.CharType.IOB.ordinal]) secondGraphData.addIob(fromTime, now, useIobForScale, 1.0, menuChartSettings[g + 1][OverviewMenus.CharType.PRE.ordinal], alignIobScale) if (menuChartSettings[g + 1][OverviewMenus.CharType.COB.ordinal]) secondGraphData.addCob(fromTime, now, useCobForScale, if (useCobForScale) 1.0 else 0.5) - if (menuChartSettings[g + 1][OverviewMenus.CharType.DEV.ordinal]) secondGraphData.addDeviations(fromTime, now, useDevForScale, 1.0) + if (menuChartSettings[g + 1][OverviewMenus.CharType.DEV.ordinal]) secondGraphData.addDeviations(fromTime, now, useDevForScale, 1.0, alignDevBgiScale) if (menuChartSettings[g + 1][OverviewMenus.CharType.SEN.ordinal]) secondGraphData.addRatio(fromTime, now, useRatioForScale, 1.0) - if (menuChartSettings[g + 1][OverviewMenus.CharType.ACT.ordinal]) secondGraphData.addActivity(fromTime, endTime, useIAForScale, 0.8) + if (menuChartSettings[g + 1][OverviewMenus.CharType.BGI.ordinal]) secondGraphData.addMinusBGI(fromTime, endTime, useBGIForScale, if(alignDevBgiScale) 1.0 else 0.8, alignDevBgiScale) if (menuChartSettings[g + 1][OverviewMenus.CharType.DEVSLOPE.ordinal] && buildHelper.isDev()) secondGraphData.addDeviationSlope(fromTime, now, useDSForScale, 1.0) // set manual x bounds to have nice steps @@ -914,7 +916,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList menuChartSettings[g + 1][OverviewMenus.CharType.COB.ordinal] || menuChartSettings[g + 1][OverviewMenus.CharType.DEV.ordinal] || menuChartSettings[g + 1][OverviewMenus.CharType.SEN.ordinal] || - menuChartSettings[g + 1][OverviewMenus.CharType.ACT.ordinal] || + menuChartSettings[g + 1][OverviewMenus.CharType.BGI.ordinal] || menuChartSettings[g + 1][OverviewMenus.CharType.DEVSLOPE.ordinal] ).toVisibility() secondaryGraphsData[g].performUpdate() diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt index af10d60f85..b2662f876b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt @@ -40,7 +40,8 @@ class OverviewMenus @Inject constructor( COB(R.string.overview_show_cob, R.color.cob, primary = false, secondary = true,shortnameId = R.string.cob), DEV(R.string.overview_show_deviations, R.color.deviations, primary = false, secondary = true,shortnameId = R.string.deviation_shortname), SEN(R.string.overview_show_sensitivity, R.color.ratio, primary = false, secondary = true,shortnameId = R.string.sensitivity_shortname), - ACT(R.string.overview_show_activity, R.color.activity, primary = true, secondary = true,shortnameId = R.string.activity_shortname), + ACT(R.string.overview_show_activity, R.color.activity, primary = true, secondary = false,shortnameId = R.string.activity_shortname), + BGI(R.string.overview_show_bgi, R.color.activity, primary = false, secondary = true,shortnameId = R.string.bgi_shortname), DEVSLOPE(R.string.overview_show_deviationslope, R.color.devslopepos, primary = false, secondary = true,shortnameId = R.string.devslope_shortname) } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt index e5d0ff4fab..f8f066eb13 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt @@ -329,8 +329,51 @@ class GraphData( actScale.setMultiplier(maxY * scale / maxIAValue) } + //Function below show -BGI to be able to compare curves with deviations + fun addMinusBGI(fromTime: Long, toTime: Long, useForScale: Boolean, scale: Double, devBgiScale: Boolean) { + val bgiArrayHist: MutableList = ArrayList() + val bgiArrayPred: MutableList = ArrayList() + val now = System.currentTimeMillis().toDouble() + val bgiScale = Scale() + var total: IobTotal + var maxBGIValue = 0.0 + var time = fromTime + while (time <= toTime) { + val profile = profileFunction.getProfile(time) + if (profile == null) { + time += 5 * 60 * 1000L + continue + } + val deviation = if (devBgiScale) iobCobCalculatorPlugin.getAutosensData(time)?.deviation ?:0.0 else 0.0 + + total = iobCobCalculatorPlugin.calculateFromTreatmentsAndTempsSynchronized(time, profile) + val bgi: Double = total.activity * profile.getIsfMgdl(time) * 5.0 + if (time <= now) bgiArrayHist.add(ScaledDataPoint(time, bgi, bgiScale)) else bgiArrayPred.add(ScaledDataPoint(time, bgi, bgiScale)) + maxBGIValue = max(maxBGIValue, max(abs(bgi), deviation)) + time += 5 * 60 * 1000L + } + addSeries(FixedLineGraphSeries(Array(bgiArrayHist.size) { i -> bgiArrayHist[i] }).also { + it.isDrawBackground = false + it.color = resourceHelper.gc(R.color.activity) + it.thickness = 3 + }) + addSeries(FixedLineGraphSeries(Array(bgiArrayPred.size) { i -> bgiArrayPred[i] }).also { + it.setCustomPaint(Paint().also { paint -> + paint.style = Paint.Style.STROKE + paint.strokeWidth = 3f + paint.pathEffect = DashPathEffect(floatArrayOf(4f, 4f), 0f) + paint.color = resourceHelper.gc(R.color.activity) + }) + }) + if (useForScale) { + maxY = maxBGIValue + minY = -maxBGIValue + } + bgiScale.setMultiplier(maxY * scale / maxBGIValue) + } + // scale in % of vertical size (like 0.3) - fun addIob(fromTime: Long, toTime: Long, useForScale: Boolean, scale: Double, showPrediction: Boolean) { + fun addIob(fromTime: Long, toTime: Long, useForScale: Boolean, scale: Double, showPrediction: Boolean, absScale: Boolean) { val iobSeries: FixedLineGraphSeries val iobArray: MutableList = ArrayList() var maxIobValueFound = Double.MIN_VALUE @@ -340,11 +383,15 @@ class GraphData( while (time <= toTime) { val profile = profileFunction.getProfile(time) var iob = 0.0 - if (profile != null) iob = iobCobCalculatorPlugin.calculateFromTreatmentsAndTempsSynchronized(time, profile).iob + var absIob = 0.0 + if (profile != null) { + iob = iobCobCalculatorPlugin.calculateFromTreatmentsAndTempsSynchronized(time, profile).iob + if (absScale) absIob = iobCobCalculatorPlugin.calculateAbsInsulinFromTreatmentsAndTempsSynchronized(time, profile).iob + } if (abs(lastIob - iob) > 0.02) { if (abs(lastIob - iob) > 0.2) iobArray.add(ScaledDataPoint(time, lastIob, iobScale)) iobArray.add(ScaledDataPoint(time, iob, iobScale)) - maxIobValueFound = max(maxIobValueFound, abs(iob)) + maxIobValueFound = if (absScale) max(maxIobValueFound, abs(absIob)) else max(maxIobValueFound, abs(iob)) lastIob = iob } time += 5 * 60 * 1000L @@ -460,14 +507,23 @@ class GraphData( } // scale in % of vertical size (like 0.3) - fun addDeviations(fromTime: Long, toTime: Long, useForScale: Boolean, scale: Double) { + fun addDeviations(fromTime: Long, toTime: Long, useForScale: Boolean, scale: Double, devBgiScale: Boolean) { class DeviationDataPoint(x: Double, y: Double, var color: Int, scale: Scale) : ScaledDataPoint(x, y, scale) val devArray: MutableList = ArrayList() var maxDevValueFound = 0.0 val devScale = Scale() var time = fromTime + var total: IobTotal + while (time <= toTime) { + // if align Dev Scale with BGI scale, then calculate BGI value, else bgi = 0.0 + val bgi: Double = if (devBgiScale) { + val profile = profileFunction.getProfile(time) + total = iobCobCalculatorPlugin.calculateFromTreatmentsAndTempsSynchronized(time, profile) + total.activity * (profile?.getIsfMgdl(time) ?: 0.0) * 5.0 + } else 0.0 + iobCobCalculatorPlugin.getAutosensData(time)?.let { autosensData -> var color = resourceHelper.gc(R.color.deviationblack) // "=" if (autosensData.type == "" || autosensData.type == "non-meal") { @@ -480,7 +536,7 @@ class GraphData( color = resourceHelper.gc(R.color.deviationgrey) } devArray.add(DeviationDataPoint(time.toDouble(), autosensData.deviation, color, devScale)) - maxDevValueFound = max(maxDevValueFound, abs(autosensData.deviation)) + maxDevValueFound = max(maxDevValueFound, max(abs(autosensData.deviation), abs(bgi))) } time += 5 * 60 * 1000L } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eb8278a83c..7a2920919e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -495,6 +495,7 @@ BAS DEV ACT + -BGI ABS DEVSLOPE About @@ -751,6 +752,7 @@ ns_autobackfill SMB set by pump Activity + Blood Glucose Impact Sensitivity Deviations Carbs On Board From 4f52358516eb6efae2e20ded01eff1215781b0fe Mon Sep 17 00:00:00 2001 From: Philoul Date: Sat, 6 Feb 2021 14:51:38 +0100 Subject: [PATCH 02/83] Change color for BGI curve I choose light blue because calculated from insulin but it could be anything else... --- .../androidaps/plugins/general/overview/OverviewMenus.kt | 2 +- .../plugins/general/overview/graphData/GraphData.kt | 4 ++-- app/src/main/res/values/colors.xml | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt index b2662f876b..fe9f14bb81 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt @@ -41,7 +41,7 @@ class OverviewMenus @Inject constructor( DEV(R.string.overview_show_deviations, R.color.deviations, primary = false, secondary = true,shortnameId = R.string.deviation_shortname), SEN(R.string.overview_show_sensitivity, R.color.ratio, primary = false, secondary = true,shortnameId = R.string.sensitivity_shortname), ACT(R.string.overview_show_activity, R.color.activity, primary = true, secondary = false,shortnameId = R.string.activity_shortname), - BGI(R.string.overview_show_bgi, R.color.activity, primary = false, secondary = true,shortnameId = R.string.bgi_shortname), + BGI(R.string.overview_show_bgi, R.color.bgi, primary = false, secondary = true,shortnameId = R.string.bgi_shortname), DEVSLOPE(R.string.overview_show_deviationslope, R.color.devslopepos, primary = false, secondary = true,shortnameId = R.string.devslope_shortname) } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt index f8f066eb13..4110c6d108 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt @@ -354,7 +354,7 @@ class GraphData( } addSeries(FixedLineGraphSeries(Array(bgiArrayHist.size) { i -> bgiArrayHist[i] }).also { it.isDrawBackground = false - it.color = resourceHelper.gc(R.color.activity) + it.color = resourceHelper.gc(R.color.bgi) it.thickness = 3 }) addSeries(FixedLineGraphSeries(Array(bgiArrayPred.size) { i -> bgiArrayPred[i] }).also { @@ -362,7 +362,7 @@ class GraphData( paint.style = Paint.Style.STROKE paint.strokeWidth = 3f paint.pathEffect = DashPathEffect(floatArrayOf(4f, 4f), 0f) - paint.color = resourceHelper.gc(R.color.activity) + paint.color = resourceHelper.gc(R.color.bgi) }) }) if (useForScale) { diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 40c97ed6eb..c45b97d50c 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -6,6 +6,7 @@ #1ea3e5 #FFFFFF #d3f166 + #00EEEE #FFFFFF00 #FFFF00FF #FFFF00 From 6b9f62fbd53132f8b4ea27c07d740346a7ca4b03 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Mon, 8 Feb 2021 18:30:11 +0100 Subject: [PATCH 03/83] plusAssign unify --- .../androidaps/plugins/aps/loop/LoopFragment.kt | 2 +- .../plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt | 2 +- .../plugins/aps/openAPSSMB/OpenAPSSMBFragment.kt | 2 +- .../plugins/configBuilder/ConfigBuilderFragment.kt | 2 +- .../plugins/constraints/objectives/ObjectivesFragment.kt | 2 +- .../plugins/general/actions/ActionsFragment.kt | 2 +- .../plugins/general/automation/AutomationFragment.kt | 2 +- .../plugins/general/automation/AutomationPlugin.kt | 2 +- .../general/automation/dialogs/EditEventDialog.kt | 2 +- .../general/automation/dialogs/EditTriggerDialog.kt | 2 +- .../plugins/general/openhumans/OpenHumansFragment.kt | 2 +- .../plugins/general/openhumans/OpenHumansUploader.kt | 2 +- .../plugins/general/overview/OverviewPlugin.kt | 1 + .../overview/activities/QuickWizardListActivity.kt | 2 +- .../general/smsCommunicator/SmsCommunicatorFragment.kt | 2 +- .../general/smsCommunicator/SmsCommunicatorPlugin.kt | 2 +- .../plugins/general/tidepool/TidepoolFragment.kt | 2 +- .../plugins/general/tidepool/TidepoolPlugin.kt | 2 +- .../plugins/general/xdripStatusline/StatusLinePlugin.kt | 2 +- .../plugins/profile/local/LocalProfileFragment.kt | 2 +- .../androidaps/plugins/profile/ns/NSProfileFragment.kt | 2 +- .../plugins/pump/virtual/VirtualPumpFragment.kt | 2 +- .../androidaps/plugins/pump/virtual/VirtualPumpPlugin.kt | 2 +- .../androidaps/plugins/treatments/TreatmentsFragment.kt | 2 +- .../nightscout/androidaps/dialogs/NtpProgressDialog.kt | 3 +-- .../utils/extensions/CompositeDisposablePlusAssign.kt | 9 --------- .../java/info/nightscout/androidaps/dana/DanaFragment.kt | 6 ++++-- .../androidaps/dana/activities/DanaHistoryActivity.kt | 2 +- .../plugins/pump/medtronic/MedtronicFragment.kt | 2 +- .../plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt | 3 +-- .../plugins/pump/omnipod/ui/PodManagementActivity.kt | 3 +-- 31 files changed, 33 insertions(+), 42 deletions(-) delete mode 100644 core/src/main/java/info/nightscout/androidaps/utils/extensions/CompositeDisposablePlusAssign.kt diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopFragment.kt index 864f56a1d3..74f581b298 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopFragment.kt @@ -15,11 +15,11 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.HtmlHelper -import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign import javax.inject.Inject class LoopFragment : DaggerFragment() { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt index a9a171b46a..abe789c79c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt @@ -16,10 +16,10 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.JSONFormatter -import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign import org.json.JSONArray import org.json.JSONException import javax.inject.Inject diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBFragment.kt index b27c9fd1c4..9cb068f0d6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBFragment.kt @@ -17,10 +17,10 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.JSONFormatter -import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign import org.json.JSONArray import org.json.JSONException import javax.inject.Inject diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderFragment.kt index 5bd7e72a60..8a19808833 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderFragment.kt @@ -18,7 +18,7 @@ import info.nightscout.androidaps.interfaces.* import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.configBuilder.events.EventConfigBuilderUpdateGui import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.extensions.toVisibility import info.nightscout.androidaps.utils.protection.ProtectionCheck import info.nightscout.androidaps.utils.resources.ResourceHelper diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt index f12c4b5b93..752b3b3b6d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt @@ -33,7 +33,7 @@ import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.HtmlHelper import info.nightscout.androidaps.utils.SntpClient import info.nightscout.androidaps.utils.alertDialogs.OKDialog -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt index 8eeb10429a..56b40e8d85 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt @@ -32,7 +32,7 @@ import info.nightscout.androidaps.skins.SkinProvider import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.buildHelper.BuildHelper -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.extensions.toVisibility import info.nightscout.androidaps.utils.protection.ProtectionCheck import info.nightscout.androidaps.utils.resources.ResourceHelper diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt index e599fe8797..22dbf0a92e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt @@ -32,7 +32,7 @@ import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerCon import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.HtmlHelper import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.extensions.toVisibility import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationPlugin.kt index e67906b101..480ef913cf 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationPlugin.kt @@ -30,7 +30,7 @@ import info.nightscout.androidaps.services.LocationServiceHelper import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.T -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt index 2ce260102f..68f56a8f98 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt @@ -25,7 +25,7 @@ import info.nightscout.androidaps.plugins.general.automation.events.EventAutomat import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.ToastUtils -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.extensions.toVisibility import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditTriggerDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditTriggerDialog.kt index 2a73b4bc24..bb2dc1e2e0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditTriggerDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditTriggerDialog.kt @@ -16,7 +16,7 @@ import info.nightscout.androidaps.plugins.general.automation.triggers.Trigger import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDummy import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable import org.json.JSONObject diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansFragment.kt index fb8faa1bcb..07bbea6753 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansFragment.kt @@ -16,7 +16,7 @@ import info.nightscout.androidaps.R import info.nightscout.androidaps.events.Event import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.utils.alertDialogs.OKDialog -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.BackpressureStrategy diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansUploader.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansUploader.kt index 81c8c9c23e..ecd151e426 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansUploader.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansUploader.kt @@ -27,7 +27,7 @@ import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt index d010dea773..d8308f346e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt @@ -21,6 +21,7 @@ import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign import org.json.JSONObject import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt index 0256647221..d79d3f51f4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt @@ -17,7 +17,7 @@ import info.nightscout.androidaps.plugins.general.overview.dialogs.EditQuickWiza import info.nightscout.androidaps.plugins.general.overview.events.EventQuickWizardChange import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.wizard.QuickWizard import io.reactivex.disposables.CompositeDisposable diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorFragment.kt index 0f61f217f2..b1bee8dca8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorFragment.kt @@ -11,7 +11,7 @@ import info.nightscout.androidaps.plugins.general.smsCommunicator.events.EventSm import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.HtmlHelper -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable import java.util.* diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt index b752c7ceab..9a5f2b6dec 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt @@ -36,7 +36,7 @@ import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.receivers.BundleStore import info.nightscout.androidaps.utils.* -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolFragment.kt index 3da7ec902b..a1126eafcb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolFragment.kt @@ -14,7 +14,7 @@ import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolD import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolResetData import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolUpdateGUI import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP import io.reactivex.disposables.CompositeDisposable diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolPlugin.kt index c3b6573060..24efde91d7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolPlugin.kt @@ -30,7 +30,7 @@ import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.HtmlHelper import info.nightscout.androidaps.utils.T import info.nightscout.androidaps.utils.ToastUtils -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/xdripStatusline/StatusLinePlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/xdripStatusline/StatusLinePlugin.kt index 63ada549fb..7dd387b89a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/xdripStatusline/StatusLinePlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/xdripStatusline/StatusLinePlugin.kt @@ -19,7 +19,7 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorP import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventAutosensCalculationFinished import info.nightscout.androidaps.utils.DecimalFormatter import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt index 88a623a091..e617f7fe52 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt @@ -20,7 +20,7 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged import info.nightscout.androidaps.utils.* import info.nightscout.androidaps.utils.alertDialogs.OKDialog -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt index b3c8a98dd8..7e514ee650 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt @@ -17,7 +17,7 @@ import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DecimalFormatter import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.alertDialogs.OKDialog -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpFragment.kt index b6f92b6c79..bdbc298ff5 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpFragment.kt @@ -15,7 +15,7 @@ import info.nightscout.androidaps.plugins.pump.virtual.events.EventVirtualPumpUp import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.T -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.kt index b9af60afcf..cdb27f376a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.kt @@ -31,7 +31,7 @@ import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.InstanceId.instanceId import info.nightscout.androidaps.utils.TimeChangeType -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt index b3e48679cb..da33e05672 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt @@ -14,7 +14,7 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.treatments.fragments.* import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.extensions.plusAssign +import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.extensions.toVisibility import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers diff --git a/core/src/main/java/info/nightscout/androidaps/dialogs/NtpProgressDialog.kt b/core/src/main/java/info/nightscout/androidaps/dialogs/NtpProgressDialog.kt index 7f01141dc1..4e6dbe7247 100644 --- a/core/src/main/java/info/nightscout/androidaps/dialogs/NtpProgressDialog.kt +++ b/core/src/main/java/info/nightscout/androidaps/dialogs/NtpProgressDialog.kt @@ -13,11 +13,10 @@ import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers -import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign import javax.inject.Inject class NtpProgressDialog : DaggerDialogFragment() { diff --git a/core/src/main/java/info/nightscout/androidaps/utils/extensions/CompositeDisposablePlusAssign.kt b/core/src/main/java/info/nightscout/androidaps/utils/extensions/CompositeDisposablePlusAssign.kt deleted file mode 100644 index 8a485896ca..0000000000 --- a/core/src/main/java/info/nightscout/androidaps/utils/extensions/CompositeDisposablePlusAssign.kt +++ /dev/null @@ -1,9 +0,0 @@ -package info.nightscout.androidaps.utils.extensions - -import io.reactivex.disposables.CompositeDisposable -import io.reactivex.disposables.Disposable - -operator fun CompositeDisposable.plusAssign(disposable: Disposable) { - add(disposable) -} - diff --git a/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt b/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt index 7bd63eab06..a5d1083fbe 100644 --- a/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt +++ b/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt @@ -28,12 +28,12 @@ import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.T import info.nightscout.androidaps.utils.WarnColors import info.nightscout.androidaps.utils.alertDialogs.OKDialog -import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.extensions.toVisibility import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign import javax.inject.Inject class DanaFragment : DaggerFragment() { @@ -152,7 +152,9 @@ class DanaFragment : DaggerFragment() { EventPumpStatusChanged.Status.DISCONNECTED -> @Suppress("SetTextI18n") binding.btconnection.text = "{fa-bluetooth-b}" - else -> {} + + else -> { + } } if (it.getStatus(resourceHelper) != "") { binding.danaPumpstatus.text = it.getStatus(resourceHelper) diff --git a/dana/src/main/java/info/nightscout/androidaps/dana/activities/DanaHistoryActivity.kt b/dana/src/main/java/info/nightscout/androidaps/dana/activities/DanaHistoryActivity.kt index 770f468536..29bb7789ca 100644 --- a/dana/src/main/java/info/nightscout/androidaps/dana/activities/DanaHistoryActivity.kt +++ b/dana/src/main/java/info/nightscout/androidaps/dana/activities/DanaHistoryActivity.kt @@ -30,9 +30,9 @@ import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DecimalFormatter import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign import java.util.* import javax.inject.Inject diff --git a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt index 888af39085..1e9976fa74 100644 --- a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt +++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt @@ -40,10 +40,10 @@ import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.T import info.nightscout.androidaps.utils.WarnColors import info.nightscout.androidaps.utils.alertDialogs.OKDialog -import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign import javax.inject.Inject class MedtronicFragment : DaggerFragment() { diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt index 0c074e3fd9..3b569cd86f 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt @@ -44,14 +44,13 @@ import info.nightscout.androidaps.queue.events.EventQueueChanged import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.alertDialogs.OKDialog -import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.protection.ProtectionCheck import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP import info.nightscout.androidaps.utils.ui.UIRunnable -import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign import org.apache.commons.lang3.StringUtils import org.joda.time.DateTime import org.joda.time.Duration diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt index bf87dd8e59..75c3b32a2e 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt @@ -29,12 +29,11 @@ import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.queue.events.EventQueueChanged import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.alertDialogs.OKDialog -import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.extensions.toVisibility import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.ui.UIRunnable -import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign import javax.inject.Inject /** From 7b4a30865a7e125095ff8aab7060ba2c9c19c224 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 9 Feb 2021 17:57:28 +0100 Subject: [PATCH 04/83] UserEntry logging --- .../androidaps/activities/StatsActivity.kt | 3 + .../dependencyInjection/FragmentsModule.kt | 19 +- .../androidaps/dialogs/CalibrationDialog.kt | 4 +- .../androidaps/dialogs/CarbsDialog.kt | 12 +- .../androidaps/dialogs/CareDialog.kt | 4 +- .../androidaps/dialogs/ExtendedBolusDialog.kt | 4 +- .../androidaps/dialogs/FillDialog.kt | 8 +- .../androidaps/dialogs/InsulinDialog.kt | 10 +- .../androidaps/dialogs/LoopDialog.kt | 32 +- .../androidaps/dialogs/ProfileSwitchDialog.kt | 4 +- .../androidaps/dialogs/TempBasalDialog.kt | 6 +- .../androidaps/dialogs/TempTargetDialog.kt | 6 +- .../androidaps/dialogs/TreatmentDialog.kt | 4 +- .../configBuilder/ConfigBuilderPlugin.kt | 9 +- .../objectives/ObjectivesFragment.kt | 3 + .../objectives/ObjectivesPlugin.kt | 6 +- .../general/actions/ActionsFragment.kt | 6 +- .../general/automation/AutomationEvent.kt | 2 +- .../general/automation/AutomationFragment.kt | 14 +- .../plugins/general/food/FoodFragment.kt | 7 +- .../general/maintenance/ImportExportPrefs.kt | 8 +- .../maintenance/MaintenanceFragment.kt | 10 +- .../general/nsclient/NSClientFragment.java | 4 + .../general/nsclient/data/NSSettingsStatus.kt | 5 +- .../general/overview/OverviewFragment.kt | 4 +- .../PersistentNotificationPlugin.kt | 2 +- .../smsCommunicator/SmsCommunicatorPlugin.kt | 40 +- .../activities/SmsCommunicatorOtpActivity.kt | 4 + .../profile/local/LocalProfileFragment.kt | 5 + .../profile/local/LocalProfilePlugin.kt | 5 +- .../plugins/profile/ns/NSProfileFragment.kt | 3 + .../plugins/source/BGSourceFragment.kt | 3 + .../plugins/treatments/TreatmentsFragment.kt | 5 + .../fragments/TreatmentsBolusFragment.kt | 5 + .../fragments/TreatmentsCareportalFragment.kt | 5 + .../TreatmentsExtendedBolusesFragment.kt | 17 +- .../TreatmentsProfileSwitchFragment.kt | 5 + .../fragments/TreatmentsTempTargetFragment.kt | 10 +- .../TreatmentsTemporaryBasalsFragment.kt | 9 +- .../fragments/TreatmentsUserEntryFragment.kt | 82 + .../setupwizard/SetupWizardActivity.kt | 8 +- .../androidaps/utils/AndroidPermission.kt | 4 +- .../androidaps/utils/wizard/BolusWizard.kt | 8 +- .../main/res/layout/treatments_fragment.xml | 36 +- .../layout/treatments_user_entry_fragment.xml | 13 + .../res/layout/treatments_user_entry_item.xml | 70 + app/src/main/res/values/strings.xml | 1 + build.gradle | 2 +- core/core_dependencies.gradle | 2 +- .../androidaps/dialogs/ErrorDialog.kt | 8 +- .../androidaps/logging/UserEntryLogger.kt | 37 + .../androidaps/dana/DanaFragment.kt | 4 +- .../2.json | 2757 +++++++++++++++++ .../androidaps/database/AppDatabase.kt | 14 +- .../androidaps/database/AppRepository.kt | 11 + .../androidaps/database/DatabaseModule.kt | 13 +- .../database/DelegatedAppDatabase.kt | 1 + .../androidaps/database/TableNames.kt | 3 +- .../androidaps/database/daos/UserEntryDao.kt | 19 + .../daos/delegated/DelegatedUserEntryDao.kt | 14 + .../androidaps/database/entities/UserEntry.kt | 22 + .../transactions/UserEntryTransaction.kt | 26 + 62 files changed, 3328 insertions(+), 139 deletions(-) create mode 100644 app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsUserEntryFragment.kt create mode 100644 app/src/main/res/layout/treatments_user_entry_fragment.xml create mode 100644 app/src/main/res/layout/treatments_user_entry_item.xml create mode 100644 core/src/main/java/info/nightscout/androidaps/logging/UserEntryLogger.kt create mode 100644 database/schemas/info.nightscout.androidaps.database.AppDatabase/2.json create mode 100644 database/src/main/java/info/nightscout/androidaps/database/daos/UserEntryDao.kt create mode 100644 database/src/main/java/info/nightscout/androidaps/database/daos/delegated/DelegatedUserEntryDao.kt create mode 100644 database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt create mode 100644 database/src/main/java/info/nightscout/androidaps/database/transactions/UserEntryTransaction.kt diff --git a/app/src/main/java/info/nightscout/androidaps/activities/StatsActivity.kt b/app/src/main/java/info/nightscout/androidaps/activities/StatsActivity.kt index d18f9c5c82..233c293f12 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/StatsActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/activities/StatsActivity.kt @@ -3,6 +3,7 @@ package info.nightscout.androidaps.activities import android.os.Bundle import info.nightscout.androidaps.R import info.nightscout.androidaps.databinding.ActivityStatsBinding +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.utils.ActivityMonitor import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.stats.TddCalculator @@ -14,6 +15,7 @@ class StatsActivity : NoSplashAppCompatActivity() { @Inject lateinit var tddCalculator: TddCalculator @Inject lateinit var tirCalculator: TirCalculator @Inject lateinit var activityMonitor: ActivityMonitor + @Inject lateinit var uel: UserEntryLogger private lateinit var binding: ActivityStatsBinding @@ -29,6 +31,7 @@ class StatsActivity : NoSplashAppCompatActivity() { binding.ok.setOnClickListener { finish() } binding.reset.setOnClickListener { OKDialog.showConfirmation(this, resourceHelper.gs(R.string.doyouwantresetstats)) { + uel.log("STATS RESET") activityMonitor.reset() recreate() } diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt index c7cfec45eb..631a372e00 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt @@ -77,18 +77,13 @@ abstract class FragmentsModule { @ContributesAndroidInjector abstract fun contributesTidepoolFragment(): TidepoolFragment @ContributesAndroidInjector abstract fun contributesTreatmentsFragment(): TreatmentsFragment - @ContributesAndroidInjector - abstract fun contributesTreatmentsBolusFragment(): TreatmentsBolusFragment - @ContributesAndroidInjector - abstract fun contributesTreatmentsTemporaryBasalsFragment(): TreatmentsTemporaryBasalsFragment - @ContributesAndroidInjector - abstract fun contributesTreatmentsTempTargetFragment(): TreatmentsTempTargetFragment - @ContributesAndroidInjector - abstract fun contributesTreatmentsExtendedBolusesFragment(): TreatmentsExtendedBolusesFragment - @ContributesAndroidInjector - abstract fun contributesTreatmentsCareportalFragment(): TreatmentsCareportalFragment - @ContributesAndroidInjector - abstract fun contributesTreatmentsProfileSwitchFragment(): TreatmentsProfileSwitchFragment + @ContributesAndroidInjector abstract fun contributesTreatmentsBolusFragment(): TreatmentsBolusFragment + @ContributesAndroidInjector abstract fun contributesTreatmentsTemporaryBasalsFragment(): TreatmentsTemporaryBasalsFragment + @ContributesAndroidInjector abstract fun contributesTreatmentsTempTargetFragment(): TreatmentsTempTargetFragment + @ContributesAndroidInjector abstract fun contributesTreatmentsExtendedBolusesFragment(): TreatmentsExtendedBolusesFragment + @ContributesAndroidInjector abstract fun contributesTreatmentsCareportalFragment(): TreatmentsCareportalFragment + @ContributesAndroidInjector abstract fun contributesTreatmentsProfileSwitchFragment(): TreatmentsProfileSwitchFragment + @ContributesAndroidInjector abstract fun contributesTreatmentsUserEntryFragment(): TreatmentsUserEntryFragment @ContributesAndroidInjector abstract fun contributesVirtualPumpFragment(): VirtualPumpFragment diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt index d2e9b11a4e..63acaef52c 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt @@ -11,6 +11,7 @@ import info.nightscout.androidaps.R import info.nightscout.androidaps.data.Profile import info.nightscout.androidaps.databinding.DialogCalibrationBinding import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus import info.nightscout.androidaps.utils.HtmlHelper import info.nightscout.androidaps.utils.XdripCalibrations @@ -26,6 +27,7 @@ class CalibrationDialog : DialogFragmentWithDate() { @Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var xdripCalibrations: XdripCalibrations + @Inject lateinit var uel: UserEntryLogger private var _binding: DialogCalibrationBinding? = null @@ -75,7 +77,7 @@ class CalibrationDialog : DialogFragmentWithDate() { if (bg > 0) { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.overview_calibration), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { - aapsLogger.debug("USER ENTRY: CALIBRATION $bg") + uel.log("CALIBRATION", d1 = bg) xdripCalibrations.sendIntent(bg) }) } diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt index 2f252f2594..59de46fc32 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt @@ -17,6 +17,7 @@ import info.nightscout.androidaps.db.Source import info.nightscout.androidaps.db.TempTarget import info.nightscout.androidaps.interfaces.Constraint import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin @@ -46,6 +47,7 @@ class CarbsDialog : DialogFragmentWithDate() { @Inject lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin @Inject lateinit var nsUpload: NSUpload @Inject lateinit var carbsGenerator: CarbsGenerator + @Inject lateinit var uel: UserEntryLogger companion object { @@ -210,7 +212,7 @@ class CarbsDialog : DialogFragmentWithDate() { OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.carbs), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { when { activitySelected -> { - aapsLogger.debug("USER ENTRY: TEMPTARGET ACTIVITY $activityTT duration: $activityTTDuration") + uel.log("TT ACTIVITY", d1 = activityTT, i1 = activityTTDuration) val tempTarget = TempTarget() .date(System.currentTimeMillis()) .duration(activityTTDuration) @@ -222,7 +224,7 @@ class CarbsDialog : DialogFragmentWithDate() { } eatingSoonSelected -> { - aapsLogger.debug("USER ENTRY: TEMPTARGET EATING SOON $eatingSoonTT duration: $eatingSoonTTDuration") + uel.log("TT EATING SOON", d1 = eatingSoonTT, i1 = eatingSoonTTDuration) val tempTarget = TempTarget() .date(System.currentTimeMillis()) .duration(eatingSoonTTDuration) @@ -234,7 +236,7 @@ class CarbsDialog : DialogFragmentWithDate() { } hypoSelected -> { - aapsLogger.debug("USER ENTRY: TEMPTARGET HYPO $hypoTT duration: $hypoTTDuration") + uel.log("TT HYPO", d1 = hypoTT, i1 = hypoTTDuration) val tempTarget = TempTarget() .date(System.currentTimeMillis()) .duration(hypoTTDuration) @@ -247,10 +249,10 @@ class CarbsDialog : DialogFragmentWithDate() { } if (carbsAfterConstraints > 0) { if (duration == 0) { - aapsLogger.debug("USER ENTRY: CARBS $carbsAfterConstraints time: $time") + uel.log("CARBS", d1 = carbsAfterConstraints.toDouble(), i1 = timeOffset) carbsGenerator.createCarb(carbsAfterConstraints, time, CareportalEvent.CARBCORRECTION, notes) } else { - aapsLogger.debug("USER ENTRY: CARBS $carbsAfterConstraints time: $time duration: $duration") + uel.log("CARBS", d1 = carbsAfterConstraints.toDouble(), i1 = timeOffset, i2 = duration) carbsGenerator.generateCarbs(carbsAfterConstraints, time, duration, notes) nsUpload.uploadEvent(CareportalEvent.NOTE, DateUtil.now() - 2000, resourceHelper.gs(R.string.generated_ecarbs_note, carbsAfterConstraints, duration, timeOffset)) } diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/CareDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/CareDialog.kt index 3a68ab8b56..4f34ffe8d4 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/CareDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/CareDialog.kt @@ -17,6 +17,7 @@ import info.nightscout.androidaps.databinding.DialogCareBinding import info.nightscout.androidaps.db.CareportalEvent import info.nightscout.androidaps.db.Source import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus import info.nightscout.androidaps.utils.DateUtil @@ -37,6 +38,7 @@ class CareDialog : DialogFragmentWithDate() { @Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var nsUpload: NSUpload @Inject lateinit var translator: Translator + @Inject lateinit var uel: UserEntryLogger enum class EventType { BGCHECK, @@ -220,7 +222,7 @@ class CareDialog : DialogFragmentWithDate() { EventType.ANNOUNCEMENT -> CareportalEvent.ANNOUNCEMENT } careportalEvent.json = json.toString() - aapsLogger.debug("USER ENTRY: CAREPORTAL ${careportalEvent.eventType} json: ${careportalEvent.json}") + uel.log("CAREPORTAL", careportalEvent.eventType) MainApp.getDbHelper().createOrUpdate(careportalEvent) nsUpload.uploadCareportalEntryToNS(json) }, null) diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt index 0c38dacf75..03f53421f8 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt @@ -13,6 +13,7 @@ import info.nightscout.androidaps.databinding.DialogExtendedbolusBinding import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.Constraint +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.utils.HtmlHelper @@ -32,6 +33,7 @@ class ExtendedBolusDialog : DialogFragmentWithDate() { @Inject lateinit var constraintChecker: ConstraintChecker @Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var activePlugin: ActivePluginProvider + @Inject lateinit var uel: UserEntryLogger private var _binding: DialogExtendedbolusBinding? = null @@ -86,7 +88,7 @@ class ExtendedBolusDialog : DialogFragmentWithDate() { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.extended_bolus), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { - aapsLogger.debug("USER ENTRY: EXTENDED BOLUS $insulinAfterConstraint duration: $durationInMinutes") + uel.log("EXTENDED BOLUS", d1 = insulinAfterConstraint, i1 = durationInMinutes) commandQueue.extendedBolus(insulinAfterConstraint, durationInMinutes, object : Callback() { override fun run() { if (!result.success) { diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/FillDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/FillDialog.kt index ab44442bfe..1d215a3b46 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/FillDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/FillDialog.kt @@ -16,6 +16,7 @@ import info.nightscout.androidaps.db.Source import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.Constraint +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.queue.Callback @@ -37,6 +38,7 @@ class FillDialog : DialogFragmentWithDate() { @Inject lateinit var nsUpload: NSUpload @Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var activePlugin: ActivePluginProvider + @Inject lateinit var uel: UserEntryLogger private var _binding: DialogFillBinding? = null @@ -126,16 +128,16 @@ class FillDialog : DialogFragmentWithDate() { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.primefill), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { if (insulinAfterConstraints > 0) { - aapsLogger.debug("USER ENTRY: PRIME BOLUS $insulinAfterConstraints") + uel.log("PRIME BOLUS", d1 = insulinAfterConstraints) requestPrimeBolus(insulinAfterConstraints, notes) } if (siteChange) { - aapsLogger.debug("USER ENTRY: SITE CHANGE") + uel.log("SITE CHANGE") nsUpload.generateCareportalEvent(CareportalEvent.SITECHANGE, eventTime, notes) } if (insulinChange) { // add a second for case of both checked - aapsLogger.debug("USER ENTRY: INSULIN CHANGE") + uel.log("INSULIN CHANGE") nsUpload.generateCareportalEvent(CareportalEvent.INSULINCHANGE, eventTime + 1000, notes) } }, null) diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt index a549824c3d..cfb84df81a 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt @@ -15,6 +15,7 @@ import info.nightscout.androidaps.R import info.nightscout.androidaps.activities.ErrorHelperActivity import info.nightscout.androidaps.data.DetailedBolusInfo import info.nightscout.androidaps.data.Profile +import info.nightscout.androidaps.database.AppRepository import info.nightscout.androidaps.databinding.DialogInsulinBinding import info.nightscout.androidaps.db.CareportalEvent import info.nightscout.androidaps.db.Source @@ -23,6 +24,7 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.Constraint import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.utils.* @@ -46,7 +48,9 @@ class InsulinDialog : DialogFragmentWithDate() { @Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var activePlugin: ActivePluginProvider @Inject lateinit var ctx: Context + @Inject lateinit var repository: AppRepository @Inject lateinit var config: Config + @Inject lateinit var uel: UserEntryLogger companion object { @@ -175,7 +179,7 @@ class InsulinDialog : DialogFragmentWithDate() { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.bolus), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { if (eatingSoonChecked) { - aapsLogger.debug("USER ENTRY: TEMPTARGET EATING SOON $eatingSoonTT duration: $eatingSoonTTDuration") + uel.log("TT EATING SOON", d1 = eatingSoonTT, i1 = eatingSoonTTDuration) val tempTarget = TempTarget() .date(System.currentTimeMillis()) .duration(eatingSoonTTDuration) @@ -193,11 +197,11 @@ class InsulinDialog : DialogFragmentWithDate() { detailedBolusInfo.source = Source.USER detailedBolusInfo.notes = notes if (recordOnlyChecked) { - aapsLogger.debug("USER ENTRY: BOLUS RECORD ONLY $insulinAfterConstraints") + uel.log("BOLUS RECORD", d1 = insulinAfterConstraints, i1 = timeOffset) detailedBolusInfo.date = time activePlugin.activeTreatments.addToHistoryTreatment(detailedBolusInfo, false) } else { - aapsLogger.debug("USER ENTRY: BOLUS $insulinAfterConstraints") + uel.log("BOLUS", d1 = insulinAfterConstraints) detailedBolusInfo.date = DateUtil.now() commandQueue.bolus(detailedBolusInfo, object : Callback() { override fun run() { diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt index cda4b6e0be..4d4378655b 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt @@ -17,6 +17,7 @@ import info.nightscout.androidaps.databinding.DialogLoopBinding import info.nightscout.androidaps.events.* import info.nightscout.androidaps.interfaces.* import info.nightscout.androidaps.logging.AAPSLogger +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin @@ -46,6 +47,7 @@ class LoopDialog : DaggerDialogFragment() { @Inject lateinit var constraintChecker: ConstraintChecker @Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin + @Inject lateinit var uel: UserEntryLogger private var showOkCancel: Boolean = true private var _binding: DialogLoopBinding? = null @@ -237,28 +239,28 @@ class LoopDialog : DaggerDialogFragment() { val profile = profileFunction.getProfile() ?: return true when (v.id) { R.id.overview_closeloop -> { - aapsLogger.debug("USER ENTRY: CLOSED LOOP MODE") + uel.log("CLOSED LOOP MODE") sp.putString(R.string.key_aps_mode, "closed") rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.closedloop))) return true } R.id.overview_lgsloop -> { - aapsLogger.debug("USER ENTRY: LGS LOOP MODE") + uel.log("LGS LOOP MODE") sp.putString(R.string.key_aps_mode, "lgs") rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend))) return true } R.id.overview_openloop -> { - aapsLogger.debug("USER ENTRY: OPEN LOOP MODE") + uel.log("OPEN LOOP MODE") sp.putString(R.string.key_aps_mode, "open") rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend))) return true } R.id.overview_disable -> { - aapsLogger.debug("USER ENTRY: LOOP DISABLED") + uel.log("LOOP DISABLED") loopPlugin.setPluginEnabled(PluginType.LOOP, false) loopPlugin.setFragmentVisible(PluginType.LOOP, false) configBuilderPlugin.storeSettings("DisablingLoop") @@ -275,7 +277,7 @@ class LoopDialog : DaggerDialogFragment() { } R.id.overview_enable -> { - aapsLogger.debug("USER ENTRY: LOOP ENABLED") + uel.log("LOOP ENABLED") loopPlugin.setPluginEnabled(PluginType.LOOP, true) loopPlugin.setFragmentVisible(PluginType.LOOP, true) configBuilderPlugin.storeSettings("EnablingLoop") @@ -285,7 +287,7 @@ class LoopDialog : DaggerDialogFragment() { } R.id.overview_resume, R.id.overview_reconnect -> { - aapsLogger.debug("USER ENTRY: RESUME") + uel.log("RESUME") loopPlugin.suspendTo(0L) rxBus.send(EventRefreshOverview("suspendmenu")) commandQueue.cancelTempBasal(true, object : Callback() { @@ -306,49 +308,49 @@ class LoopDialog : DaggerDialogFragment() { } R.id.overview_suspend_1h -> { - aapsLogger.debug("USER ENTRY: SUSPEND 1h") + uel.log("SUSPEND 1h") loopPlugin.suspendLoop(60) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_suspend_2h -> { - aapsLogger.debug("USER ENTRY: SUSPEND 2h") + uel.log("SUSPEND 2h") loopPlugin.suspendLoop(120) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_suspend_3h -> { - aapsLogger.debug("USER ENTRY: SUSPEND 3h") + uel.log("SUSPEND 3h") loopPlugin.suspendLoop(180) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_suspend_10h -> { - aapsLogger.debug("USER ENTRY: SUSPEND 10h") + uel.log("SUSPEND 10h") loopPlugin.suspendLoop(600) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_disconnect_15m -> { - aapsLogger.debug("USER ENTRY: DISCONNECT 15m") + uel.log("DISCONNECT 15m") loopPlugin.disconnectPump(15, profile) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_disconnect_30m -> { - aapsLogger.debug("USER ENTRY: DISCONNECT 30m") + uel.log("DISCONNECT 30m") loopPlugin.disconnectPump(30, profile) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_disconnect_1h -> { - aapsLogger.debug("USER ENTRY: DISCONNECT 1h") + uel.log("DISCONNECT 1h") loopPlugin.disconnectPump(60, profile) sp.putBoolean(R.string.key_objectiveusedisconnect, true) rxBus.send(EventRefreshOverview("suspendmenu")) @@ -356,14 +358,14 @@ class LoopDialog : DaggerDialogFragment() { } R.id.overview_disconnect_2h -> { - aapsLogger.debug("USER ENTRY: DISCONNECT 2h") + uel.log("DISCONNECT 2h") loopPlugin.disconnectPump(120, profile) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_disconnect_3h -> { - aapsLogger.debug("USER ENTRY: DISCONNECT 3h") + uel.log("DISCONNECT 3h") loopPlugin.disconnectPump(180, profile) rxBus.send(EventRefreshOverview("suspendmenu")) return true diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt index d61ee9fd8c..c4ed84ba45 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt @@ -11,6 +11,7 @@ import info.nightscout.androidaps.R import info.nightscout.androidaps.databinding.DialogProfileswitchBinding import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.HtmlHelper @@ -26,6 +27,7 @@ class ProfileSwitchDialog : DialogFragmentWithDate() { @Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var treatmentsPlugin: TreatmentsPlugin @Inject lateinit var activePlugin: ActivePluginProvider + @Inject lateinit var uel: UserEntryLogger private var profileIndex: Int? = null @@ -122,7 +124,7 @@ class ProfileSwitchDialog : DialogFragmentWithDate() { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_profileswitch), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { - aapsLogger.debug("USER ENTRY: PROFILE SWITCH $profile percent: $percent timeshift: $timeShift duration: $duration") + uel.log("PROFILE SWITCH", d1 = percent.toDouble(), i1 = timeShift, i2 = duration) treatmentsPlugin.doProfileSwitch(profileStore, profile, duration, percent, timeShift, eventTime) }) } diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt index c5fc54adfb..098253b035 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt @@ -15,6 +15,7 @@ import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.Constraint import info.nightscout.androidaps.interfaces.ProfileFunction import info.nightscout.androidaps.interfaces.PumpDescription +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.utils.HtmlHelper @@ -35,6 +36,7 @@ class TempBasalDialog : DialogFragmentWithDate() { @Inject lateinit var activePlugin: ActivePluginProvider @Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var ctx: Context + @Inject lateinit var uel: UserEntryLogger private var isPercentPump = true @@ -129,10 +131,10 @@ class TempBasalDialog : DialogFragmentWithDate() { } } if (isPercentPump) { - aapsLogger.debug("USER ENTRY: TEMP BASAL $percent% duration: $durationInMinutes") + uel.log("TEMP BASAL", d1 = percent.toDouble(), i1 = durationInMinutes) commandQueue.tempBasalPercent(percent, durationInMinutes, true, profile, callback) } else { - aapsLogger.debug("USER ENTRY: TEMP BASAL $absolute duration: $durationInMinutes") + uel.log("TEMP BASAL", d1 = absolute, i1 = durationInMinutes) commandQueue.tempBasalAbsolute(absolute, durationInMinutes, true, profile, callback) } }) diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt index 54657373b3..fbe5123035 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt @@ -15,6 +15,7 @@ import info.nightscout.androidaps.db.Source import info.nightscout.androidaps.db.TempTarget import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin import info.nightscout.androidaps.utils.DefaultValueHelper @@ -33,8 +34,9 @@ class TempTargetDialog : DialogFragmentWithDate() { @Inject lateinit var defaultValueHelper: DefaultValueHelper @Inject lateinit var treatmentsPlugin: TreatmentsPlugin @Inject lateinit var activePlugin: ActivePluginProvider + @Inject lateinit var uel: UserEntryLogger - lateinit var reasonList: List + private lateinit var reasonList: List private var _binding: DialogTemptargetBinding? = null @@ -162,7 +164,7 @@ class TempTargetDialog : DialogFragmentWithDate() { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_temporarytarget), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { - aapsLogger.debug("USER ENTRY: TEMP TARGET $target duration: $duration") + uel.log("TT", d1 = target, i1 = duration) if (target == 0.0 || duration == 0) { val tempTarget = TempTarget() .date(eventTime) diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt index 1c0c6082f4..4ebaf3b7d2 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt @@ -19,6 +19,7 @@ import info.nightscout.androidaps.db.Source import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.Constraint +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.utils.DecimalFormatter @@ -41,6 +42,7 @@ class TreatmentDialog : DialogFragmentWithDate() { @Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var ctx: Context @Inject lateinit var config: Config + @Inject lateinit var uel: UserEntryLogger private val textWatcher: TextWatcher = object : TextWatcher { override fun afterTextChanged(s: Editable) {} @@ -128,7 +130,7 @@ class TreatmentDialog : DialogFragmentWithDate() { if (insulinAfterConstraints > 0 || carbsAfterConstraints > 0) { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.overview_treatment_label), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { - aapsLogger.debug("USER ENTRY: BOLUS insulin $insulin carbs: $carbs") + uel.log("TREATMENT", d1 = insulin, i1 = carbs) val detailedBolusInfo = DetailedBolusInfo() if (insulinAfterConstraints == 0.0) detailedBolusInfo.eventType = CareportalEvent.CARBCORRECTION if (carbsAfterConstraints == 0) detailedBolusInfo.eventType = CareportalEvent.CORRECTIONBOLUS diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt index 4fb140d55a..3f54b6e616 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt @@ -9,9 +9,10 @@ import info.nightscout.androidaps.events.EventRebuildTabs import info.nightscout.androidaps.interfaces.* import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.configBuilder.events.EventConfigBuilderUpdateGui -import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation +import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.sharedPreferences.SP import java.util.* @@ -25,7 +26,8 @@ class ConfigBuilderPlugin @Inject constructor( resourceHelper: ResourceHelper, private val sp: SP, private val rxBus: RxBusWrapper, - private val activePlugin: ActivePluginProvider + private val activePlugin: ActivePluginProvider, + private val uel: UserEntryLogger ) : PluginBase(PluginDescription() .mainType(PluginType.GENERAL) .fragmentClass(ConfigBuilderFragment::class.java.name) @@ -137,9 +139,10 @@ class ConfigBuilderPlugin @Inject constructor( if (allowHardwarePump || activity == null) { performPluginSwitch(changedPlugin, newState, type) } else { - showConfirmation(activity, resourceHelper.gs(R.string.allow_hardware_pump_text), Runnable { + OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.allow_hardware_pump_text), Runnable { performPluginSwitch(changedPlugin, newState, type) sp.putBoolean("allow_hardware_pump", true) + uel.log("HW PUMP ALLOWED") aapsLogger.debug(LTag.PUMP, "First time HW pump allowed!") }, Runnable { rxBus.send(EventConfigBuilderUpdateGui()) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt index 752b3b3b6d..507e2cd1eb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt @@ -22,6 +22,7 @@ import info.nightscout.androidaps.databinding.ObjectivesItemBinding import info.nightscout.androidaps.dialogs.NtpProgressDialog import info.nightscout.androidaps.events.EventNtpStatus import info.nightscout.androidaps.logging.AAPSLogger +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.constraints.objectives.activities.ObjectivesExamDialog import info.nightscout.androidaps.plugins.constraints.objectives.events.EventObjectivesUpdateGui @@ -52,6 +53,7 @@ class ObjectivesFragment : DaggerFragment() { @Inject lateinit var receiverStatusStore: ReceiverStatusStore @Inject lateinit var dateUtil: DateUtil @Inject lateinit var sntpClient: SntpClient + @Inject lateinit var uel: UserEntryLogger private val objectivesAdapter = ObjectivesAdapter() private val handler = Handler(Looper.getMainLooper()) @@ -305,6 +307,7 @@ class ObjectivesFragment : DaggerFragment() { holder.binding.unstart.setOnClickListener { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.objectives), resourceHelper.gs(R.string.doyouwantresetstart), Runnable { + uel.log("OBJECTVE UNSTARTED", i1 = position + 1) objective.startedOn = 0 scrollToCurrentObjective() rxBus.send(EventObjectivesUpdateGui()) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPlugin.kt index 009812a1f2..c5b836ac71 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPlugin.kt @@ -9,6 +9,7 @@ import info.nightscout.androidaps.Config import info.nightscout.androidaps.R import info.nightscout.androidaps.interfaces.* import info.nightscout.androidaps.logging.AAPSLogger +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.constraints.objectives.objectives.* import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.alertDialogs.OKDialog @@ -25,8 +26,8 @@ class ObjectivesPlugin @Inject constructor( resourceHelper: ResourceHelper, private val activePlugin: ActivePluginProvider, private val sp: SP, - private val config: Config - + config: Config, + private val uel: UserEntryLogger ) : PluginBase(PluginDescription() .mainType(PluginType.CONSTRAINTS) .fragmentClass(ObjectivesFragment::class.qualifiedName) @@ -141,6 +142,7 @@ class ObjectivesPlugin @Inject constructor( sp.putLong("Objectives_" + "auto" + "_accomplished", DateUtil.now()) setupObjectives() OKDialog.show(activity, resourceHelper.gs(R.string.objectives), resourceHelper.gs(R.string.codeaccepted)) + uel.log("OBJECTIVES SKIPPED") } else { OKDialog.show(activity, resourceHelper.gs(R.string.objectives), resourceHelper.gs(R.string.codeinvalid)) } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt index 56b40e8d85..af65cc9c6b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt @@ -23,6 +23,7 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.ProfileFunction import info.nightscout.androidaps.logging.AAPSLogger +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction import info.nightscout.androidaps.plugins.general.overview.StatusLightHandler @@ -61,6 +62,7 @@ class ActionsFragment : DaggerFragment() { @Inject lateinit var protectionCheck: ProtectionCheck @Inject lateinit var skinProvider: SkinProvider @Inject lateinit var config: Config + @Inject lateinit var uel: UserEntryLogger private var disposable: CompositeDisposable = CompositeDisposable() @@ -152,7 +154,7 @@ class ActionsFragment : DaggerFragment() { } extendedBolusCancel?.setOnClickListener { if (activePlugin.activeTreatments.isInHistoryExtendedBoluslInProgress) { - aapsLogger.debug("USER ENTRY: CANCEL EXTENDED BOLUS") + uel.log("CANCEL EXTENDED BOLUS") commandQueue.cancelExtended(object : Callback() { override fun run() { if (!result.success) { @@ -172,7 +174,7 @@ class ActionsFragment : DaggerFragment() { } cancelTempBasal?.setOnClickListener { if (activePlugin.activeTreatments.isTempBasalInProgress) { - aapsLogger.debug("USER ENTRY: CANCEL TEMP BASAL") + uel.log("CANCEL TEMP BASAL") commandQueue.cancelTempBasal(true, object : Callback() { override fun run() { if (!result.success) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationEvent.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationEvent.kt index ca70fd8046..4c4b43ba18 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationEvent.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationEvent.kt @@ -18,7 +18,7 @@ class AutomationEvent(private val injector: HasAndroidInjector) { @Inject lateinit var aapsLogger: AAPSLogger - var title: String? = null + var title: String = "" var isEnabled = true var systemAction: Boolean = false // true = generated by AAPS, false = entered by user var readOnly: Boolean = false // removing, editing disabled diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt index 22dbf0a92e..31819ac0bb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt @@ -20,6 +20,7 @@ import dagger.android.support.DaggerFragment import info.nightscout.androidaps.R import info.nightscout.androidaps.databinding.AutomationEventItemBinding import info.nightscout.androidaps.databinding.AutomationFragmentBinding +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.automation.dialogs.EditEventDialog import info.nightscout.androidaps.plugins.general.automation.dragHelpers.ItemTouchHelperAdapter @@ -31,7 +32,7 @@ import info.nightscout.androidaps.plugins.general.automation.events.EventAutomat import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.HtmlHelper -import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation +import info.nightscout.androidaps.utils.alertDialogs.OKDialog import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.extensions.toVisibility import info.nightscout.androidaps.utils.resources.ResourceHelper @@ -48,6 +49,7 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener { @Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var automationPlugin: AutomationPlugin @Inject lateinit var injector: HasAndroidInjector + @Inject lateinit var uel: UserEntryLogger private var disposable: CompositeDisposable = CompositeDisposable() private lateinit var eventListAdapter: EventListAdapter @@ -212,11 +214,12 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener { } // remove event holder.binding.iconTrash.setOnClickListener { - showConfirmation(requireContext(), resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.at(position).title, - Runnable { + OKDialog.showConfirmation(requireContext(), resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.at(position).title, + { + uel.log("AUTOM REMOVED", automationPlugin.at(position).title) automationPlugin.removeAt(position) notifyItemRemoved(position) - }, Runnable { + }, { rxBus.send(EventAutomationUpdateGui()) }) } @@ -234,8 +237,9 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener { override fun onItemDismiss(position: Int) { activity?.let { activity -> - showConfirmation(activity, resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.at(position).title, + OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.at(position).title, Runnable { + uel.log("AUTOM REMOVED", automationPlugin.at(position).title) automationPlugin.removeAt(position) notifyItemRemoved(position) rxBus.send(EventAutomationDataChanged()) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.kt index b9acd8aaf2..fe08c9a3ab 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.kt @@ -18,11 +18,12 @@ import info.nightscout.androidaps.R import info.nightscout.androidaps.databinding.FoodFragmentBinding import info.nightscout.androidaps.databinding.FoodItemBinding import info.nightscout.androidaps.events.EventFoodDatabaseChanged +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.food.FoodFragment.RecyclerViewAdapter.FoodsViewHolder import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation +import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable @@ -38,6 +39,7 @@ class FoodFragment : DaggerFragment() { @Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var foodPlugin: FoodPlugin @Inject lateinit var nsUpload: NSUpload + @Inject lateinit var uel: UserEntryLogger private val disposable = CompositeDisposable() private lateinit var unfiltered: List @@ -213,7 +215,8 @@ class FoodFragment : DaggerFragment() { binding.remove.setOnClickListener { v: View -> val food = v.tag as Food activity?.let { activity -> - showConfirmation(activity, resourceHelper.gs(R.string.confirmation), resourceHelper.gs(R.string.removerecord) + "\n" + food.name, DialogInterface.OnClickListener { _: DialogInterface?, _: Int -> + OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.confirmation), resourceHelper.gs(R.string.removerecord) + "\n" + food.name, DialogInterface.OnClickListener { _: DialogInterface?, _: Int -> + uel.log("FOOD REMOVED", food.name) if (food._id != null && food._id != "") { nsUpload.removeFoodFromNS(food._id) } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/ImportExportPrefs.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/ImportExportPrefs.kt index d1edbbca20..98fc711d25 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/ImportExportPrefs.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/ImportExportPrefs.kt @@ -20,13 +20,13 @@ import info.nightscout.androidaps.interfaces.ConfigInterface import info.nightscout.androidaps.interfaces.ImportExportPrefsInterface import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.maintenance.formats.* import info.nightscout.androidaps.utils.AndroidPermission import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.ToastUtils import info.nightscout.androidaps.utils.alertDialogs.OKDialog -import info.nightscout.androidaps.utils.alertDialogs.OKDialog.show import info.nightscout.androidaps.utils.alertDialogs.PrefImportSummaryDialog import info.nightscout.androidaps.utils.alertDialogs.TwoMessagesAlertDialog import info.nightscout.androidaps.utils.alertDialogs.WarningDialog @@ -58,7 +58,8 @@ class ImportExportPrefs @Inject constructor( private val androidPermission: AndroidPermission, private val classicPrefsFormat: ClassicPrefsFormat, private val encryptedPrefsFormat: EncryptedPrefsFormat, - private val prefFileList: PrefFileListProvider + private val prefFileList: PrefFileListProvider, + private val uel: UserEntryLogger ) : ImportExportPrefsInterface { override fun prefsFileExists(): Boolean { @@ -342,7 +343,8 @@ class ImportExportPrefs @Inject constructor( private fun restartAppAfterImport(context: Context) { sp.putBoolean(R.string.key_setupwizard_processed, true) - show(context, resourceHelper.gs(R.string.setting_imported), resourceHelper.gs(R.string.restartingapp), Runnable { + OKDialog.show(context, resourceHelper.gs(R.string.setting_imported), resourceHelper.gs(R.string.restartingapp), Runnable { + uel.log("IMPORT") log.debug(LTag.CORE, "Exiting") rxBus.send(EventAppExit()) if (context is AppCompatActivity) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.kt index e2c20aa0e6..7f44689ebc 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.kt @@ -13,6 +13,7 @@ import info.nightscout.androidaps.databinding.MaintenanceFragmentBinding import info.nightscout.androidaps.events.EventNewBG import info.nightscout.androidaps.interfaces.ImportExportPrefsInterface import info.nightscout.androidaps.logging.AAPSLogger +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.food.FoodPlugin import info.nightscout.androidaps.plugins.general.maintenance.activities.LogSettingActivity @@ -36,6 +37,7 @@ class MaintenanceFragment : DaggerFragment() { @Inject lateinit var importExportPrefs: ImportExportPrefsInterface @Inject lateinit var aapsSchedulers: AapsSchedulers @Inject lateinit var repository: AppRepository + @Inject lateinit var uel: UserEntryLogger private val compositeDisposable = CompositeDisposable() @@ -54,13 +56,13 @@ class MaintenanceFragment : DaggerFragment() { super.onViewCreated(view, savedInstanceState) binding.logSend.setOnClickListener { maintenancePlugin.sendLogs() } binding.logDelete.setOnClickListener { - aapsLogger.debug("USER ENTRY: DELETE LOGS") + uel.log("DELETE LOGS") maintenancePlugin.deleteLogs() } binding.navResetdb.setOnClickListener { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.maintenance), resourceHelper.gs(R.string.reset_db_confirm), Runnable { - aapsLogger.debug("USER ENTRY: RESET DATABASES") + uel.log("RESET DATABASES") compositeDisposable.add( fromAction { MainApp.getDbHelper().resetDatabases() @@ -81,14 +83,14 @@ class MaintenanceFragment : DaggerFragment() { } } binding.navExport.setOnClickListener { - aapsLogger.debug("USER ENTRY: EXPORT SETTINGS") + uel.log("EXPORT SETTINGS") // start activity for checking permissions... importExportPrefs.verifyStoragePermissions(this) { importExportPrefs.exportSharedPreferences(this) } } binding.navImport.setOnClickListener { - aapsLogger.debug("USER ENTRY: IMPORT SETTINGS") + uel.log("IMPORT SETTINGS") // start activity for checking permissions... importExportPrefs.verifyStoragePermissions(this) { importExportPrefs.importSharedPreferences(this) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientFragment.java index 37de04a623..58bacbbf4c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientFragment.java @@ -16,6 +16,7 @@ import javax.inject.Inject; import dagger.android.support.DaggerFragment; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.logging.UserEntryLogger; import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientNewLog; import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientRestart; @@ -36,6 +37,7 @@ public class NSClientFragment extends DaggerFragment implements View.OnClickList @Inject UploadQueue uploadQueue; @Inject FabricPrivacy fabricPrivacy; @Inject AapsSchedulers aapsSchedulers; + @Inject UserEntryLogger uel; private final CompositeDisposable disposable = new CompositeDisposable(); @@ -121,6 +123,7 @@ public class NSClientFragment extends DaggerFragment implements View.OnClickList break; case R.id.nsclientinternal_clearqueue: OKDialog.showConfirmation(getContext(), resourceHelper.gs(R.string.nsclientinternal), resourceHelper.gs(R.string.clearqueueconfirm), () -> { + uel.log("NS QUEUE CLEARED", "", 0.0, 0.0, 0, 0); uploadQueue.clearQueue(); updateGui(); fabricPrivacy.logCustom("NSClientClearQueue"); @@ -136,6 +139,7 @@ public class NSClientFragment extends DaggerFragment implements View.OnClickList public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { switch (buttonView.getId()) { case R.id.nsclientinternal_paused: + uel.log("NS PAUSED", "", 0.0, 0.0, isChecked ? 1 : 0, 0); nsClientPlugin.pause(isChecked); updateGui(); fabricPrivacy.logCustom("NSClientPause"); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.kt index 06c853185a..0625114f4d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.kt @@ -5,6 +5,7 @@ import info.nightscout.androidaps.Config import info.nightscout.androidaps.R import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification @@ -116,7 +117,8 @@ class NSSettingsStatus @Inject constructor( private val rxBus: RxBusWrapper, private val defaultValueHelper: DefaultValueHelper, private val sp: SP, - private val config: Config + private val config: Config, + private val uel: UserEntryLogger ) { var nightscoutVersionName = "" @@ -233,6 +235,7 @@ class NSSettingsStatus @Inject constructor( getExtendedWarnValue("sage", "urgent")?.let { sp.putDouble(R.string.key_statuslights_sage_critical, it) } getExtendedWarnValue("bage", "warn")?.let { sp.putDouble(R.string.key_statuslights_bage_warning, it) } getExtendedWarnValue("bage", "urgent")?.let { sp.putDouble(R.string.key_statuslights_bage_critical, it) } + uel.log("NS SETTINGS COPIED") } if (context != null) OKDialog.showConfirmation(context, resourceHelper.gs(R.string.statuslights), resourceHelper.gs(R.string.copyexistingvalues), action) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt index 1c6a8e088a..6050c344b2 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt @@ -33,6 +33,7 @@ import info.nightscout.androidaps.dialogs.* import info.nightscout.androidaps.events.* import info.nightscout.androidaps.interfaces.* import info.nightscout.androidaps.logging.AAPSLogger +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin import info.nightscout.androidaps.plugins.aps.loop.events.EventNewOpenLoopNotification import info.nightscout.androidaps.plugins.bus.RxBusWrapper @@ -109,6 +110,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList @Inject lateinit var config: Config @Inject lateinit var dateUtil: DateUtil @Inject lateinit var databaseHelper: DatabaseHelperInterface + @Inject lateinit var uel: UserEntryLogger private val disposable = CompositeDisposable() @@ -341,7 +343,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.tempbasal_label), lastRun.constraintsProcessed?.toSpanned() ?: "".toSpanned(), { - aapsLogger.debug("USER ENTRY: ACCEPT TEMP BASAL") + uel.log("ACCEPT TEMP BASAL") binding.buttonsLayout.acceptTempButton.visibility = View.GONE (context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).cancel(Constants.notificationID) actionStringHandler.handleInitiate("cancelChangeRequest") diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.kt index af7813dba8..669ae5c890 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.kt @@ -207,7 +207,7 @@ class PersistentNotificationPlugin @Inject constructor( builder.setCategory(NotificationCompat.CATEGORY_STATUS) builder.setSmallIcon(iconsProvider.getNotificationIcon()) builder.setLargeIcon(resourceHelper.decodeResource(iconsProvider.getIcon())) - if (line1 != null) builder.setContentTitle(line1) + builder.setContentTitle(line1) if (line2 != null) builder.setContentText(line2) if (line3 != null) builder.setSubText(line3) /// Android Auto diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt index 9a5f2b6dec..748f8fe59d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt @@ -22,6 +22,7 @@ import info.nightscout.androidaps.events.EventRefreshOverview import info.nightscout.androidaps.interfaces.* import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker @@ -68,7 +69,8 @@ class SmsCommunicatorPlugin @Inject constructor( private val xdripCalibrations: XdripCalibrations, private var otp: OneTimePassword, private val config: Config, - private val dateUtil: DateUtil + private val dateUtil: DateUtil, + private val uel: UserEntryLogger ) : PluginBase(PluginDescription() .mainType(PluginType.GENERAL) .fragmentClass(SmsCommunicatorFragment::class.java.name) @@ -335,7 +337,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() { override fun run() { - aapsLogger.debug("USER ENTRY: SMS LOOP DISABLE") + uel.log("SMS LOOP DISABLE") loopPlugin.setPluginEnabled(PluginType.LOOP, false) commandQueue.cancelTempBasal(true, object : Callback() { override fun run() { @@ -359,7 +361,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() { override fun run() { - aapsLogger.debug("USER ENTRY: SMS LOOP ENABLE") + uel.log("SMS LOOP ENABLE") loopPlugin.setPluginEnabled(PluginType.LOOP, true) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.smscommunicator_loophasbeenenabled))) rxBus.send(EventRefreshOverview("SMS_LOOP_START")) @@ -386,7 +388,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() { override fun run() { - aapsLogger.debug("USER ENTRY: SMS LOOP RESUME") + uel.log("SMS LOOP RESUME") loopPlugin.suspendTo(0L) rxBus.send(EventRefreshOverview("SMS_LOOP_RESUME")) commandQueue.cancelTempBasal(true, object : Callback() { @@ -419,7 +421,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction(duration) { override fun run() { - aapsLogger.debug("USER ENTRY: SMS LOOP SUSPEND") + uel.log("SMS LOOP SUSPEND") commandQueue.cancelTempBasal(true, object : Callback() { override fun run() { if (result.success) { @@ -503,7 +505,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() { override fun run() { - aapsLogger.debug("USER ENTRY: SMS PUMP CONNECT") + uel.log("SMS PUMP CONNECT") commandQueue.cancelTempBasal(true, object : Callback() { override fun run() { if (!result.success) { @@ -532,7 +534,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() { override fun run() { - aapsLogger.debug("USER ENTRY: SMS PUMP DISCONNECT") + uel.log("SMS PUMP DISCONNECT") val profile = profileFunction.getProfile() loopPlugin.disconnectPump(duration, profile) rxBus.send(EventRefreshOverview("SMS_PUMP_DISCONNECT")) @@ -586,7 +588,7 @@ class SmsCommunicatorPlugin @Inject constructor( val finalPercentage = percentage messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction(list[pindex - 1] as String, finalPercentage) { override fun run() { - aapsLogger.debug("USER ENTRY: SMS PROFILE $reply") + uel.log("SMS PROFILE", reply) activePlugin.activeTreatments.doProfileSwitch(store, list[pindex - 1] as String, 0, finalPercentage, 0, DateUtil.now()) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.profileswitchcreated))) } @@ -604,7 +606,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() { override fun run() { - aapsLogger.debug("USER ENTRY: SMS BASAL $reply") + uel.log("SMS BASAL", reply) commandQueue.cancelTempBasal(true, object : Callback() { override fun run() { if (result.success) { @@ -636,7 +638,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction(tempBasalPct, duration) { override fun run() { - aapsLogger.debug("USER ENTRY: SMS BASAL $reply") + uel.log("SMS BASAL", reply) commandQueue.tempBasalPercent(anInteger(), secondInteger(), true, profile, object : Callback() { override fun run() { if (result.success) { @@ -669,7 +671,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction(tempBasal, duration) { override fun run() { - aapsLogger.debug("USER ENTRY: SMS BASAL $reply") + uel.log("SMS BASAL", reply) commandQueue.tempBasalAbsolute(aDouble(), secondInteger(), true, profile, object : Callback() { override fun run() { if (result.success) { @@ -697,7 +699,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() { override fun run() { - aapsLogger.debug("USER ENTRY: SMS EXTENDED $reply") + uel.log("SMS EXTENDED", reply) commandQueue.cancelExtended(object : Callback() { override fun run() { if (result.success) { @@ -726,7 +728,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction(extended, duration) { override fun run() { - aapsLogger.debug("USER ENTRY: SMS EXTENDED $reply") + uel.log("SMS EXTENDED", reply) commandQueue.extendedBolus(aDouble(), secondInteger(), object : Callback() { override fun run() { if (result.success) { @@ -762,7 +764,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction(bolus) { override fun run() { - aapsLogger.debug("USER ENTRY: SMS BOLUS $reply") + uel.log("SMS BOLUS", reply) val detailedBolusInfo = DetailedBolusInfo() detailedBolusInfo.insulin = aDouble() detailedBolusInfo.source = Source.USER @@ -839,7 +841,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction(grams, time) { override fun run() { - aapsLogger.debug("USER ENTRY: SMS CARBS $reply") + uel.log("SMS CARBS", reply) val detailedBolusInfo = DetailedBolusInfo() detailedBolusInfo.carbs = anInteger().toDouble() detailedBolusInfo.source = Source.USER @@ -880,7 +882,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() { override fun run() { - aapsLogger.debug("USER ENTRY: SMS TARGET $reply") + uel.log("SMS TARGET", reply) val units = profileFunction.getUnits() var keyDuration = 0 var defaultTargetDuration = 0 @@ -936,7 +938,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() { override fun run() { - aapsLogger.debug("USER ENTRY: SMS TARGET $reply") + uel.log("SMS TARGET", reply) val tempTarget = TempTarget() .source(Source.USER) .date(DateUtil.now()) @@ -961,7 +963,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() { override fun run() { - aapsLogger.debug("USER ENTRY: SMS SMS $reply") + uel.log("SMS SMS", reply) sp.putBoolean(R.string.key_smscommunicator_remotecommandsallowed, false) val replyText = String.format(resourceHelper.gs(R.string.smscommunicator_stoppedsms)) sendSMSToAllNumbers(Sms(receivedSms.phoneNumber, replyText)) @@ -978,7 +980,7 @@ class SmsCommunicatorPlugin @Inject constructor( receivedSms.processed = true messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction(cal) { override fun run() { - aapsLogger.debug("USER ENTRY: SMS CAL $reply") + uel.log("SMS CAL", reply) val result = xdripCalibrations.sendIntent(aDouble!!) if (result) sendSMSToAllNumbers(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.smscommunicator_calibrationsent))) else sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.smscommunicator_calibrationfailed))) } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/activities/SmsCommunicatorOtpActivity.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/activities/SmsCommunicatorOtpActivity.kt index d11ee90f70..162c128c58 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/activities/SmsCommunicatorOtpActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/activities/SmsCommunicatorOtpActivity.kt @@ -15,6 +15,7 @@ import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel import info.nightscout.androidaps.R import info.nightscout.androidaps.activities.NoSplashAppCompatActivity import info.nightscout.androidaps.databinding.ActivitySmscommunicatorOtpBinding +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin import info.nightscout.androidaps.plugins.general.smsCommunicator.otp.OneTimePassword @@ -31,6 +32,7 @@ class SmsCommunicatorOtpActivity : NoSplashAppCompatActivity() { @Inject lateinit var rxBus: RxBusWrapper @Inject lateinit var smsCommunicatorPlugin: SmsCommunicatorPlugin @Inject lateinit var otp: OneTimePassword + @Inject lateinit var uel: UserEntryLogger private lateinit var binding: ActivitySmscommunicatorOtpBinding @@ -70,6 +72,7 @@ class SmsCommunicatorOtpActivity : NoSplashAppCompatActivity() { resourceHelper.gs(R.string.smscommunicator_otp_reset_title), resourceHelper.gs(R.string.smscommunicator_otp_reset_prompt), Runnable { + uel.log("OTP RESET") otp.ensureKey(true) updateGui() ToastUtils.Long.infoToast(this, resourceHelper.gs(R.string.smscommunicator_otp_reset_successful)) @@ -85,6 +88,7 @@ class SmsCommunicatorOtpActivity : NoSplashAppCompatActivity() { val clip = ClipData.newPlainText("OTP Secret", otp.provisioningSecret()) clipboard.primaryClip = clip ToastUtils.Long.infoToast(this, resourceHelper.gs(R.string.smscommunicator_otp_export_successful)) + uel.log("OTP EXPORT") }) true diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt index e617f7fe52..063c4e65c4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt @@ -16,6 +16,7 @@ import info.nightscout.androidaps.databinding.LocalprofileFragmentBinding import info.nightscout.androidaps.dialogs.ProfileSwitchDialog import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.logging.AAPSLogger +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged import info.nightscout.androidaps.utils.* @@ -38,6 +39,7 @@ class LocalProfileFragment : DaggerFragment() { @Inject lateinit var hardLimits: HardLimits @Inject lateinit var dateUtil: DateUtil @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var uel: UserEntryLogger private var disposable: CompositeDisposable = CompositeDisposable() @@ -159,6 +161,7 @@ class LocalProfileFragment : DaggerFragment() { if (localProfilePlugin.isEdited) { activity?.let { OKDialog.show(it, "", resourceHelper.gs(R.string.saveorresetchangesfirst)) } } else { + uel.log("NEW PROFILE") localProfilePlugin.addNewProfile() build() } @@ -168,6 +171,7 @@ class LocalProfileFragment : DaggerFragment() { if (localProfilePlugin.isEdited) { activity?.let { OKDialog.show(it, "", resourceHelper.gs(R.string.saveorresetchangesfirst)) } } else { + uel.log("CLONE PROFILE", localProfilePlugin.currentProfile()?.name ?: "") localProfilePlugin.cloneProfile() build() } @@ -176,6 +180,7 @@ class LocalProfileFragment : DaggerFragment() { binding.profileRemove.setOnClickListener { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.deletecurrentprofile), { + uel.log("REMOVE PROFILE", localProfilePlugin.currentProfile()?.name ?: "") localProfilePlugin.removeCurrentProfile() build() }, null) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfilePlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfilePlugin.kt index 07be4da165..e8d5dba65d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfilePlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfilePlugin.kt @@ -9,6 +9,7 @@ import info.nightscout.androidaps.events.EventProfileStoreChanged import info.nightscout.androidaps.interfaces.* import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.utils.DateUtil @@ -32,7 +33,8 @@ class LocalProfilePlugin @Inject constructor( resourceHelper: ResourceHelper, private val sp: SP, private val profileFunction: ProfileFunction, - private val nsUpload: NSUpload + private val nsUpload: NSUpload, + private val uel: UserEntryLogger ) : PluginBase(PluginDescription() .mainType(PluginType.PROFILE) .fragmentClass(LocalProfileFragment::class.java.name) @@ -113,6 +115,7 @@ class LocalProfilePlugin @Inject constructor( createAndStoreConvertedProfile() isEdited = false aapsLogger.debug(LTag.PROFILE, "Storing settings: " + rawProfile?.data.toString()) + uel.log("STORE PROFILE") rxBus.send(EventProfileStoreChanged()) var namesOK = true profiles.forEach { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt index 7e514ee650..f8c8c0ed25 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt @@ -10,6 +10,7 @@ import dagger.android.support.DaggerFragment import info.nightscout.androidaps.R import info.nightscout.androidaps.databinding.NsprofileFragmentBinding import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.profile.ns.events.EventNSProfileUpdateGUI import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin @@ -32,6 +33,7 @@ class NSProfileFragment : DaggerFragment() { @Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var nsProfilePlugin: NSProfilePlugin @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var uel: UserEntryLogger private var disposable: CompositeDisposable = CompositeDisposable() @@ -59,6 +61,7 @@ class NSProfileFragment : DaggerFragment() { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.nsprofile), resourceHelper.gs(R.string.activate_profile) + ": " + name + " ?", Runnable { + uel.log("PROFILE SWITCH", name, i1 = 100) treatmentsPlugin.doProfileSwitch(store, name, 0, 100, 0, DateUtil.now()) }) } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/source/BGSourceFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/source/BGSourceFragment.kt index 84999eb388..07038a50e5 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/source/BGSourceFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/source/BGSourceFragment.kt @@ -17,6 +17,7 @@ import info.nightscout.androidaps.databinding.BgsourceItemBinding import info.nightscout.androidaps.events.EventNewBG import info.nightscout.androidaps.interfaces.DatabaseHelperInterface import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy @@ -42,6 +43,7 @@ class BGSourceFragment : DaggerFragment() { @Inject lateinit var databaseHelper: DatabaseHelperInterface @Inject lateinit var repository: AppRepository @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var uel: UserEntryLogger private val disposable = CompositeDisposable() private val millsToThePast = T.hours(12).msecs() @@ -126,6 +128,7 @@ class BGSourceFragment : DaggerFragment() { activity?.let { activity -> val text = dateUtil.dateAndTimeString(glucoseValue.timestamp) + "\n" + glucoseValue.valueToUnitsString(profileFunction.getUnits()) OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.removerecord), text, Runnable { + uel.log("BG REMOVED", dateUtil.dateAndTimeString(glucoseValue.timestamp)) disposable += repository.runTransaction(InvalidateGlucoseValueTransaction(glucoseValue.id)).subscribe() }) } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt index da33e05672..3855202408 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt @@ -68,6 +68,10 @@ class TreatmentsFragment : DaggerFragment() { setFragment(TreatmentsCareportalFragment()) setBackgroundColorOnSelected(it) } + binding.userentry.setOnClickListener { + setFragment(TreatmentsUserEntryFragment()) + setBackgroundColorOnSelected(it) + } setFragment(TreatmentsBolusFragment()) setBackgroundColorOnSelected(binding.treatments) } @@ -109,6 +113,7 @@ class TreatmentsFragment : DaggerFragment() { binding.tempTargets.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground)) binding.profileSwitches.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground)) binding.careportal.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground)) + binding.userentry.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground)) selected.setBackgroundColor(resourceHelper.gc(R.color.tabBgColorSelected)) } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsBolusFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsBolusFragment.kt index 7c7c6dd579..d830ca5414 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsBolusFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsBolusFragment.kt @@ -16,6 +16,7 @@ import info.nightscout.androidaps.db.Treatment import info.nightscout.androidaps.dialogs.WizardInfoDialog import info.nightscout.androidaps.events.EventTreatmentChange import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue @@ -48,6 +49,7 @@ class TreatmentsBolusFragment : DaggerFragment() { @Inject lateinit var dateUtil: DateUtil @Inject lateinit var buildHelper: BuildHelper @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var uel: UserEntryLogger private var _binding: TreatmentsBolusFragmentBinding? = null @@ -66,6 +68,7 @@ class TreatmentsBolusFragment : DaggerFragment() { binding.refreshFromNightscout.setOnClickListener { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.refresheventsfromnightscout) + "?") { + uel.log("TREAT NS REFRESH") treatmentsPlugin.service.resetTreatments() rxBus.send(EventNSClientRestart()) } @@ -74,6 +77,7 @@ class TreatmentsBolusFragment : DaggerFragment() { binding.deleteFutureTreatments.setOnClickListener { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.overview_treatment_label), resourceHelper.gs(R.string.deletefuturetreatments) + "?", Runnable { + uel.log("DELETE FUTURE TREATMENTS") val futureTreatments = treatmentsPlugin.service.getTreatmentDataFromTime(DateUtil.now() + 1000, true) for (treatment in futureTreatments) { if (NSUpload.isIdValid(treatment._id)) @@ -170,6 +174,7 @@ class TreatmentsBolusFragment : DaggerFragment() { resourceHelper.gs(R.string.carbs) + ": " + resourceHelper.gs(R.string.format_carbs, treatment.carbs.toInt()) + "\n" + resourceHelper.gs(R.string.date) + ": " + dateUtil.dateAndTimeString(treatment.date) OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.removerecord), text, Runnable { + uel.log("REMOVED TREATMENT", text) if (treatment.source == Source.PUMP) { treatment.isValid = false treatmentsPlugin.service.update(treatment) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsCareportalFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsCareportalFragment.kt index 54fc2f592d..58269316be 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsCareportalFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsCareportalFragment.kt @@ -14,6 +14,7 @@ import info.nightscout.androidaps.databinding.TreatmentsCareportalFragmentBindin import info.nightscout.androidaps.databinding.TreatmentsCareportalItemBinding import info.nightscout.androidaps.db.CareportalEvent import info.nightscout.androidaps.events.EventCareportalEventChange +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue @@ -44,6 +45,7 @@ class TreatmentsCareportalFragment : DaggerFragment() { @Inject lateinit var dateUtil: DateUtil @Inject lateinit var buildHelper: BuildHelper @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var uel: UserEntryLogger private var _binding: TreatmentsCareportalFragmentBinding? = null @@ -62,6 +64,7 @@ class TreatmentsCareportalFragment : DaggerFragment() { binding.refreshFromNightscout.setOnClickListener { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal), resourceHelper.gs(R.string.refresheventsfromnightscout) + " ?", Runnable { + uel.log("CAREPORTAL NS REFRESH") MainApp.getDbHelper().resetCareportalEvents() rxBus.send(EventNSClientRestart()) }) @@ -70,6 +73,7 @@ class TreatmentsCareportalFragment : DaggerFragment() { binding.removeAndroidapsStartedEvents.setOnClickListener { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal), resourceHelper.gs(R.string.careportal_removestartedevents), Runnable { + uel.log("REMOVED RESTART EVENTS") val events = MainApp.getDbHelper().getCareportalEvents(false) for (i in events.indices) { val careportalEvent = events[i] @@ -150,6 +154,7 @@ class TreatmentsCareportalFragment : DaggerFragment() { resourceHelper.gs(R.string.careportal_newnstreatment_notes_label) + ": " + careportalEvent.notes + "\n" + resourceHelper.gs(R.string.date) + ": " + dateUtil.dateAndTimeString(careportalEvent.date) OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.removerecord), text, Runnable { + uel.log("REMOVED CAREP", text) if (NSUpload.isIdValid(careportalEvent._id)) nsUpload.removeCareportalEntryFromNS(careportalEvent._id) else diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsExtendedBolusesFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsExtendedBolusesFragment.kt index f3a47b88ce..e223fd150a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsExtendedBolusesFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsExtendedBolusesFragment.kt @@ -20,6 +20,7 @@ import info.nightscout.androidaps.db.Source import info.nightscout.androidaps.events.EventExtendedBolusChange import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue @@ -27,7 +28,7 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventAutos import info.nightscout.androidaps.plugins.treatments.fragments.TreatmentsExtendedBolusesFragment.RecyclerViewAdapter.ExtendedBolusesViewHolder import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation +import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable @@ -46,6 +47,7 @@ class TreatmentsExtendedBolusesFragment : DaggerFragment() { @Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var dateUtil: DateUtil @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var uel: UserEntryLogger private var _binding: TreatmentsExtendedbolusFragmentBinding? = null @@ -114,16 +116,17 @@ class TreatmentsExtendedBolusesFragment : DaggerFragment() { binding.remove.setOnClickListener { v: View -> val extendedBolus = v.tag as ExtendedBolus context?.let { - showConfirmation(it, resourceHelper.gs(R.string.removerecord), + OKDialog.showConfirmation(it, resourceHelper.gs(R.string.removerecord), """ ${resourceHelper.gs(R.string.extended_bolus)} ${resourceHelper.gs(R.string.date)}: ${dateUtil.dateAndTimeString(extendedBolus.date)} - """.trimIndent(), DialogInterface.OnClickListener { _: DialogInterface, _: Int -> + """.trimIndent(), { _: DialogInterface, _: Int -> + uel.log("REMOVED EB") val id = extendedBolus._id - if (NSUpload.isIdValid(id)) nsUpload.removeCareportalEntryFromNS(id) - else uploadQueue.removeID("dbAdd", id) - MainApp.getDbHelper().delete(extendedBolus) - }, null) + if (NSUpload.isIdValid(id)) nsUpload.removeCareportalEntryFromNS(id) + else uploadQueue.removeID("dbAdd", id) + MainApp.getDbHelper().delete(extendedBolus) + }, null) } } binding.remove.paintFlags = binding.remove.paintFlags or Paint.UNDERLINE_TEXT_FLAG diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsProfileSwitchFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsProfileSwitchFragment.kt index 2ab82a8a36..1d7ba6041d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsProfileSwitchFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsProfileSwitchFragment.kt @@ -16,6 +16,7 @@ import info.nightscout.androidaps.db.ProfileSwitch import info.nightscout.androidaps.db.Source import info.nightscout.androidaps.dialogs.ProfileViewerDialog import info.nightscout.androidaps.events.EventProfileNeedsUpdate +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue @@ -49,6 +50,7 @@ class TreatmentsProfileSwitchFragment : DaggerFragment() { @Inject lateinit var dateUtil: DateUtil @Inject lateinit var buildHelper: BuildHelper @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var uel: UserEntryLogger private var _binding: TreatmentsProfileswitchFragmentBinding? = null @@ -67,6 +69,7 @@ class TreatmentsProfileSwitchFragment : DaggerFragment() { binding.refreshFromNightscout.setOnClickListener { activity?.let { activity -> + uel.log("PROFILE SWITCH NS REFRESH") OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.refresheventsfromnightscout) + "?") { MainApp.getDbHelper().resetProfileSwitch() rxBus.send(EventNSClientRestart()) @@ -143,6 +146,7 @@ class TreatmentsProfileSwitchFragment : DaggerFragment() { OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.removerecord), resourceHelper.gs(R.string.careportal_profileswitch) + ": " + profileSwitch.profileName + "\n" + resourceHelper.gs(R.string.date) + ": " + dateUtil.dateAndTimeString(profileSwitch.date), Runnable { + uel.log("REMOVED PROFILE SWITCH", profileSwitch.profileName + " " + dateUtil.dateAndTimeString(profileSwitch.date)) val id = profileSwitch._id if (NSUpload.isIdValid(id)) nsUpload.removeCareportalEntryFromNS(id) else uploadQueue.removeID("dbAdd", id) @@ -155,6 +159,7 @@ class TreatmentsProfileSwitchFragment : DaggerFragment() { val profileSwitch = it.tag as ProfileSwitch OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_profileswitch), resourceHelper.gs(R.string.copytolocalprofile) + "\n" + profileSwitch.customizedName + "\n" + dateUtil.dateAndTimeString(profileSwitch.date), Runnable { profileSwitch.profileObject?.let { + uel.log("PROFILE SWITCH CLONE", profileSwitch.profileName + " " + dateUtil.dateAndTimeString(profileSwitch.date)) val nonCustomized = it.convertToNonCustomizedProfile() if (nonCustomized.isValid(resourceHelper.gs(R.string.careportal_profileswitch, false))) { localProfilePlugin.addProfile(localProfilePlugin.copyFrom(nonCustomized, profileSwitch.customizedName + " " + dateUtil.dateAndTimeString(profileSwitch.date).replace(".", "_"))) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTempTargetFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTempTargetFragment.kt index 9b41d72243..3265275e36 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTempTargetFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTempTargetFragment.kt @@ -20,6 +20,7 @@ import info.nightscout.androidaps.db.TempTarget import info.nightscout.androidaps.events.EventTempTargetChange import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue @@ -27,7 +28,7 @@ import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientR import info.nightscout.androidaps.plugins.treatments.fragments.TreatmentsTempTargetFragment.RecyclerViewAdapter.TempTargetsViewHolder import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation +import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.buildHelper.BuildHelper import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers @@ -48,6 +49,7 @@ class TreatmentsTempTargetFragment : DaggerFragment() { @Inject lateinit var dateUtil: DateUtil @Inject lateinit var buildHelper: BuildHelper @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var uel: UserEntryLogger private val disposable = CompositeDisposable() @@ -66,7 +68,8 @@ class TreatmentsTempTargetFragment : DaggerFragment() { binding.recyclerview.adapter = RecyclerViewAdapter(activePlugin.activeTreatments.tempTargetsFromHistory) binding.refreshFromNightscout.setOnClickListener { context?.let { context -> - showConfirmation(context, resourceHelper.gs(R.string.refresheventsfromnightscout) + " ?", { + OKDialog.showConfirmation(context, resourceHelper.gs(R.string.refresheventsfromnightscout) + " ?", { + uel.log("TT NS REFRESH") MainApp.getDbHelper().resetTempTargets() rxBus.send(EventNSClientRestart()) }) @@ -152,12 +155,13 @@ class TreatmentsTempTargetFragment : DaggerFragment() { binding.remove.setOnClickListener { v: View -> val tempTarget = v.tag as TempTarget context?.let { context -> - showConfirmation(context, resourceHelper.gs(R.string.removerecord), + OKDialog.showConfirmation(context, resourceHelper.gs(R.string.removerecord), """ ${resourceHelper.gs(R.string.careportal_temporarytarget)}: ${tempTarget.friendlyDescription(profileFunction.getUnits(), resourceHelper)} ${dateUtil.dateAndTimeString(tempTarget.date)} """.trimIndent(), { _: DialogInterface?, _: Int -> + uel.log("TT REMOVE", tempTarget.friendlyDescription(profileFunction.getUnits(), resourceHelper)) val id = tempTarget._id if (NSUpload.isIdValid(id)) nsUpload.removeCareportalEntryFromNS(id) else uploadQueue.removeID("dbAdd", id) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTemporaryBasalsFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTemporaryBasalsFragment.kt index 82c500db21..b17933471c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTemporaryBasalsFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTemporaryBasalsFragment.kt @@ -19,13 +19,14 @@ import info.nightscout.androidaps.db.TemporaryBasal import info.nightscout.androidaps.events.EventTempBasalChange import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventAutosensCalculationFinished import info.nightscout.androidaps.plugins.treatments.fragments.TreatmentsTemporaryBasalsFragment.RecyclerViewAdapter.TempBasalsViewHolder import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation +import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import io.reactivex.disposables.CompositeDisposable @@ -42,6 +43,7 @@ class TreatmentsTemporaryBasalsFragment : DaggerFragment() { @Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var dateUtil: DateUtil @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var uel: UserEntryLogger private var _binding: TreatmentsTempbasalsFragmentBinding? = null @@ -155,12 +157,13 @@ class TreatmentsTemporaryBasalsFragment : DaggerFragment() { binding.remove.setOnClickListener { v: View -> val tempBasal = v.tag as TemporaryBasal context?.let { - showConfirmation(it, resourceHelper.gs(R.string.removerecord), + OKDialog.showConfirmation(it, resourceHelper.gs(R.string.removerecord), """ ${resourceHelper.gs(R.string.tempbasal_label)}: ${tempBasal.toStringFull()} ${resourceHelper.gs(R.string.date)}: ${dateUtil.dateAndTimeString(tempBasal.date)} """.trimIndent(), - DialogInterface.OnClickListener { _: DialogInterface?, _: Int -> + { _: DialogInterface?, _: Int -> + uel.log("REMOVED TT", dateUtil.dateAndTimeString(tempBasal.date)) activePlugin.activeTreatments.removeTempBasal(tempBasal) }, null) } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsUserEntryFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsUserEntryFragment.kt new file mode 100644 index 0000000000..3a46793e02 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsUserEntryFragment.kt @@ -0,0 +1,82 @@ +package info.nightscout.androidaps.plugins.treatments.fragments + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import dagger.android.support.DaggerFragment +import info.nightscout.androidaps.R +import info.nightscout.androidaps.database.AppRepository +import info.nightscout.androidaps.database.entities.UserEntry +import info.nightscout.androidaps.databinding.TreatmentsUserEntryFragmentBinding +import info.nightscout.androidaps.databinding.TreatmentsUserEntryItemBinding +import info.nightscout.androidaps.utils.DateUtil +import info.nightscout.androidaps.utils.rx.AapsSchedulers +import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign +import javax.inject.Inject + +class TreatmentsUserEntryFragment : DaggerFragment() { + + @Inject lateinit var repository: AppRepository + @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var dateUtil: DateUtil + + private val disposable = CompositeDisposable() + + private var _binding: TreatmentsUserEntryFragmentBinding? = null + + // This property is only valid between onCreateView and + // onDestroyView. + private val binding get() = _binding!! + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View = + TreatmentsUserEntryFragmentBinding.inflate(inflater, container, false).also { _binding = it }.root + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + binding.recyclerview.setHasFixedSize(true) + binding.recyclerview.layoutManager = LinearLayoutManager(view.context) + + disposable += repository + .getAllUserEntries() + .observeOn(aapsSchedulers.main) + .subscribe { list -> binding.recyclerview.swapAdapter(UserEntryAdapter(list), true) } + } + + @Synchronized + override fun onDestroyView() { + super.onDestroyView() + disposable.clear() + _binding = null + } + + inner class UserEntryAdapter internal constructor(var entries: List) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserEntryViewHolder { + val view: View = LayoutInflater.from(parent.context).inflate(R.layout.treatments_user_entry_item, parent, false) + return UserEntryViewHolder(view) + } + + override fun onBindViewHolder(holder: UserEntryViewHolder, position: Int) { + val current = entries[position] + holder.binding.date.text = dateUtil.dateAndTimeAndSecondsString(current.timestamp) + holder.binding.action.text = current.action + holder.binding.s.text = current.s + holder.binding.d1.text = if (current.d1 != 0.0) current.d1.toString() else "" + holder.binding.d2.text = if (current.d2 != 0.0) current.d2.toString() else "" + holder.binding.i1.text = if (current.i1 != 0) current.i1.toString() else "" + holder.binding.i1.text = if (current.i2 != 0) current.i2.toString() else "" + } + + inner class UserEntryViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + + val binding = TreatmentsUserEntryItemBinding.bind(itemView) + } + + override fun getItemCount(): Int = entries.size + + } +} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.kt b/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.kt index 0313207d37..78b21df59d 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.kt @@ -12,6 +12,7 @@ import info.nightscout.androidaps.databinding.ActivitySetupwizardBinding import info.nightscout.androidaps.events.EventProfileNeedsUpdate import info.nightscout.androidaps.events.EventProfileStoreChanged import info.nightscout.androidaps.events.EventPumpStatusChanged +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientStatus import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin @@ -19,7 +20,7 @@ import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDevic import info.nightscout.androidaps.setupwizard.elements.SWItem import info.nightscout.androidaps.setupwizard.events.EventSWUpdate import info.nightscout.androidaps.utils.FabricPrivacy -import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation +import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.locale.LocaleHelper.update import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP @@ -37,6 +38,7 @@ class SetupWizardActivity : NoSplashAppCompatActivity() { @Inject lateinit var sp: SP @Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var uel: UserEntryLogger private val disposable = CompositeDisposable() private lateinit var screens: List @@ -143,13 +145,13 @@ class SetupWizardActivity : NoSplashAppCompatActivity() { } override fun onBackPressed() { - if (currentWizardPage == 0) showConfirmation(this, resourceHelper.gs(R.string.exitwizard), Runnable { finish() }) else showPreviousPage(null) + if (currentWizardPage == 0) OKDialog.showConfirmation(this, resourceHelper.gs(R.string.exitwizard)) { finish() } else showPreviousPage(null) } @Suppress("UNUSED_PARAMETER") fun exitPressed(view: View?) { sp.putBoolean(R.string.key_setupwizard_processed, true) - showConfirmation(this, resourceHelper.gs(R.string.exitwizard), Runnable { finish() }) + OKDialog.showConfirmation(this, resourceHelper.gs(R.string.exitwizard)) { finish() } } @Suppress("UNUSED_PARAMETER") diff --git a/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.kt b/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.kt index 4ac9b7885f..323f52f05b 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.kt @@ -22,7 +22,7 @@ import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotifi import info.nightscout.androidaps.plugins.general.overview.notifications.Notification import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationWithAction import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin -import info.nightscout.androidaps.utils.alertDialogs.OKDialog.show +import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.resources.ResourceHelper import javax.inject.Inject import javax.inject.Singleton @@ -58,7 +58,7 @@ class AndroidPermission @Inject constructor( activity.callForBatteryOptimization.launch(null) } catch (e: ActivityNotFoundException) { permissionBatteryOptimizationFailed = true - show(activity, resourceHelper.gs(R.string.permission), resourceHelper.gs(R.string.alert_dialog_permission_battery_optimization_failed), Runnable { activity.recreate() }) + OKDialog.show(activity, resourceHelper.gs(R.string.permission), resourceHelper.gs(R.string.alert_dialog_permission_battery_optimization_failed), Runnable { activity.recreate() }) } } } diff --git a/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt b/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt index ce53f3d670..e32f62e61b 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt @@ -18,6 +18,7 @@ import info.nightscout.androidaps.events.EventRefreshOverview import info.nightscout.androidaps.interfaces.* import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker @@ -65,6 +66,7 @@ class BolusWizard @Inject constructor( @Inject lateinit var automationPlugin: AutomationPlugin @Inject lateinit var dateUtil: DateUtil @Inject lateinit var config: Config + @Inject lateinit var uel: UserEntryLogger init { injector.androidInjector().inject(this) @@ -354,7 +356,7 @@ class BolusWizard @Inject constructor( boluscalc = nsJSON() source = Source.USER notes = this@BolusWizard.notes - aapsLogger.debug("USER ENTRY: BOLUS ADVISOR insulin $insulinAfterConstraints") + uel.log("BOLUS ADVISOR", d1 = insulinAfterConstraints) if (insulin > 0) { commandQueue.bolus(this, object : Callback() { override fun run() { @@ -382,7 +384,7 @@ class BolusWizard @Inject constructor( OKDialog.showConfirmation(ctx, resourceHelper.gs(R.string.boluswizard), confirmMessage, { if (insulinAfterConstraints > 0 || carbs > 0) { if (useSuperBolus) { - aapsLogger.debug("USER ENTRY: SUPERBOLUS TBR") + uel.log("SUPERBOLUS TBR") if (loopPlugin.isEnabled(PluginType.LOOP)) { loopPlugin.superBolusTo(System.currentTimeMillis() + 2 * 60L * 60 * 1000) rxBus.send(EventRefreshOverview("WizardDialog")) @@ -428,7 +430,7 @@ class BolusWizard @Inject constructor( boluscalc = nsJSON() source = Source.USER notes = this@BolusWizard.notes - aapsLogger.debug("USER ENTRY: BOLUS WIZARD insulin $insulinAfterConstraints carbs: $carbs") + uel.log("BOLUS WIZARD", "", insulinAfterConstraints, carbs) if (insulin > 0 || pump.pumpDescription.storesCarbInfo) { commandQueue.bolus(this, object : Callback() { override fun run() { diff --git a/app/src/main/res/layout/treatments_fragment.xml b/app/src/main/res/layout/treatments_fragment.xml index 28a9bf7a02..06b6f93145 100644 --- a/app/src/main/res/layout/treatments_fragment.xml +++ b/app/src/main/res/layout/treatments_fragment.xml @@ -21,8 +21,8 @@ android:id="@+id/treatments" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingStart="6dp" - android:paddingEnd="6dp" + android:paddingStart="1dp" + android:paddingEnd="1dp" android:layout_weight="1" android:contentDescription="@string/bolus" android:scaleX="0.8" @@ -35,8 +35,8 @@ android:layout_height="wrap_content" android:layout_weight="1" android:contentDescription="@string/extended_bolus" - android:paddingStart="6dp" - android:paddingEnd="6dp" + android:paddingStart="1dp" + android:paddingEnd="1dp" android:scaleX="0.7" android:scaleY="0.7" app:srcCompat="@drawable/ic_actions_startextbolus" /> @@ -45,8 +45,8 @@ android:id="@+id/temp_basals" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingStart="6dp" - android:paddingEnd="6dp" + android:paddingStart="1dp" + android:paddingEnd="1dp" android:layout_weight="1" android:contentDescription="@string/tempbasal_label" android:scaleX="0.7" @@ -57,8 +57,8 @@ android:id="@+id/temp_targets" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingStart="6dp" - android:paddingEnd="6dp" + android:paddingStart="1dp" + android:paddingEnd="1dp" android:layout_weight="1" android:contentDescription="@string/careportal_temporarytarget" android:scaleX="0.7" @@ -69,8 +69,8 @@ android:id="@+id/profile_switches" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingStart="6dp" - android:paddingEnd="6dp" + android:paddingStart="1dp" + android:paddingEnd="1dp" android:layout_weight="1" android:contentDescription="@string/careportal_profileswitch" android:scaleX="0.7" @@ -81,14 +81,26 @@ android:id="@+id/careportal" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingStart="6dp" - android:paddingEnd="6dp" + android:paddingStart="1dp" + android:paddingEnd="1dp" android:layout_weight="1" android:contentDescription="@string/careportal" android:scaleX="0.7" android:scaleY="0.7" app:srcCompat="@drawable/ic_cp_note" /> + + + + + + diff --git a/app/src/main/res/layout/treatments_user_entry_item.xml b/app/src/main/res/layout/treatments_user_entry_item.xml new file mode 100644 index 0000000000..a3c3870c9a --- /dev/null +++ b/app/src/main/res/layout/treatments_user_entry_item.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9b0e5ef503..272bb8e7c0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1378,5 +1378,6 @@ Clear filter Trend arrow Cannula + User entry diff --git a/build.gradle b/build.gradle index 6f9baba6ee..2872ee3169 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { room_version = '2.2.6' lifecycle_version = '2.2.0' dagger_version = '2.31.2' - coroutinesVersion = '1.3.7' + coroutinesVersion = '1.4.1' activityVersion = '1.2.0-rc01' fragmentktx_version = '1.3.0-rc01' ormLiteVersion = '4.46' diff --git a/core/core_dependencies.gradle b/core/core_dependencies.gradle index e2a48f1d88..2e91e42d6b 100644 --- a/core/core_dependencies.gradle +++ b/core/core_dependencies.gradle @@ -12,7 +12,7 @@ dependencies { api "androidx.preference:preference-ktx:$preferencektx_version" api 'androidx.biometric:biometric:1.0.1' api "androidx.activity:activity-ktx:${activityVersion}" - api "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0" + api "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" api 'androidx.cardview:cardview:1.0.0' api 'androidx.recyclerview:recyclerview:1.1.0' api 'androidx.gridlayout:gridlayout:1.0.0' diff --git a/core/src/main/java/info/nightscout/androidaps/dialogs/ErrorDialog.kt b/core/src/main/java/info/nightscout/androidaps/dialogs/ErrorDialog.kt index edaff653ba..110096c0bd 100644 --- a/core/src/main/java/info/nightscout/androidaps/dialogs/ErrorDialog.kt +++ b/core/src/main/java/info/nightscout/androidaps/dialogs/ErrorDialog.kt @@ -12,6 +12,7 @@ import info.nightscout.androidaps.activities.ErrorHelperActivity import info.nightscout.androidaps.core.R import info.nightscout.androidaps.core.databinding.DialogErrorBinding import info.nightscout.androidaps.logging.AAPSLogger +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.services.AlarmSoundServiceHelper import info.nightscout.androidaps.utils.T import javax.inject.Inject @@ -20,6 +21,7 @@ class ErrorDialog : DaggerDialogFragment() { @Inject lateinit var alarmSoundServiceHelper: AlarmSoundServiceHelper @Inject lateinit var aapsLogger: AAPSLogger + @Inject lateinit var uel: UserEntryLogger var helperActivity: ErrorHelperActivity? = null var status: String = "" @@ -56,15 +58,15 @@ class ErrorDialog : DaggerDialogFragment() { binding.title.text = title binding.ok.setOnClickListener { - aapsLogger.debug("USER ENTRY: Error dialog ok button pressed") + uel.log("Error dialog ok button pressed") dismiss() } binding.mute.setOnClickListener { - aapsLogger.debug("USER ENTRY: Error dialog mute button pressed") + uel.log("Error dialog mute button pressed") stopAlarm() } binding.mute5min.setOnClickListener { - aapsLogger.debug("USER ENTRY: Error dialog mute 5 min button pressed") + uel.log("Error dialog mute 5 min button pressed") stopAlarm() loopHandler.postDelayed(this::startAlarm, T.mins(5).msecs()) } diff --git a/core/src/main/java/info/nightscout/androidaps/logging/UserEntryLogger.kt b/core/src/main/java/info/nightscout/androidaps/logging/UserEntryLogger.kt new file mode 100644 index 0000000000..1692be20fc --- /dev/null +++ b/core/src/main/java/info/nightscout/androidaps/logging/UserEntryLogger.kt @@ -0,0 +1,37 @@ +package info.nightscout.androidaps.logging + +import info.nightscout.androidaps.database.AppRepository +import info.nightscout.androidaps.database.transactions.UserEntryTransaction +import info.nightscout.androidaps.utils.rx.AapsSchedulers +import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign +import io.reactivex.rxkotlin.subscribeBy +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class UserEntryLogger @Inject constructor( + private val aapsLogger: AAPSLogger, + private val repository: AppRepository, + private val aapsSchedulers: AapsSchedulers +) { + + private val compositeDisposable = CompositeDisposable() + + fun log(action: String, s: String = "", d1: Double = 0.0, d2: Double = 0.0, i1: Int = 0, i2: Int = 0) { + compositeDisposable += repository.runTransaction(UserEntryTransaction( + action = action, + s = s, + d1 = d1, + d2 = d2, + i1 = i1, + i2 = i2 + )) + .subscribeOn(aapsSchedulers.io) + .observeOn(aapsSchedulers.io) + .subscribeBy( + onError = { aapsLogger.debug("ERRORED USER ENTRY: $action $s ${if (d1 == 0.0) d1 else ""} ${if (d2 == 0.0) d2 else ""} ${if (i1 == 0) i1 else ""} ${if (i2 == 0) i2 else ""}") }, + onComplete = { aapsLogger.debug("USER ENTRY: $action $s ${if (d1 == 0.0) d1 else ""} ${if (d2 == 0.0) d2 else ""} ${if (i1 == 0) i1 else ""} ${if (i2 == 0) i2 else ""}") } + ) + } +} \ No newline at end of file diff --git a/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt b/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt index a5d1083fbe..1fca6ed5ef 100644 --- a/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt +++ b/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt @@ -20,6 +20,7 @@ import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.PumpInterface import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.pump.common.defs.PumpType import info.nightscout.androidaps.queue.events.EventQueueChanged @@ -49,6 +50,7 @@ class DanaFragment : DaggerFragment() { @Inject lateinit var warnColors: WarnColors @Inject lateinit var dateUtil: DateUtil @Inject lateinit var aapsSchedulers: AapsSchedulers + @Inject lateinit var uel: UserEntryLogger private var disposable: CompositeDisposable = CompositeDisposable() @@ -106,7 +108,7 @@ class DanaFragment : DaggerFragment() { binding.btconnection.setOnLongClickListener { activity?.let { OKDialog.showConfirmation(it, resourceHelper.gs(R.string.resetpairing)) { - aapsLogger.error("USER ENTRY: Clearing pairing keys !!!") + uel.log("CLEAR PAIRING KEYS") (activePlugin.activePump as DanaPumpInterface).clearPairing() } } diff --git a/database/schemas/info.nightscout.androidaps.database.AppDatabase/2.json b/database/schemas/info.nightscout.androidaps.database.AppDatabase/2.json new file mode 100644 index 0000000000..e3e7705d83 --- /dev/null +++ b/database/schemas/info.nightscout.androidaps.database.AppDatabase/2.json @@ -0,0 +1,2757 @@ +{ + "formatVersion": 1, + "database": { + "version": 2, + "identityHash": "a1db89121451334b6eb389e8c702dd2c", + "entities": [ + { + "tableName": "apsResults", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `algorithm` TEXT NOT NULL, `glucoseStatusJson` TEXT NOT NULL, `currentTempJson` TEXT NOT NULL, `iobDataJson` TEXT NOT NULL, `profileJson` TEXT NOT NULL, `autosensDataJson` TEXT, `mealDataJson` TEXT NOT NULL, `isMicroBolusAllowed` INTEGER, `resultJson` TEXT NOT NULL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`referenceId`) REFERENCES `apsResults`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "algorithm", + "columnName": "algorithm", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "glucoseStatusJson", + "columnName": "glucoseStatusJson", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "currentTempJson", + "columnName": "currentTempJson", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "iobDataJson", + "columnName": "iobDataJson", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "profileJson", + "columnName": "profileJson", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "autosensDataJson", + "columnName": "autosensDataJson", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "mealDataJson", + "columnName": "mealDataJson", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "isMicroBolusAllowed", + "columnName": "isMicroBolusAllowed", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "resultJson", + "columnName": "resultJson", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_apsResults_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_apsResults_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_apsResults_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_apsResults_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "apsResults", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "boluses", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `amount` REAL NOT NULL, `type` TEXT NOT NULL, `isBasalInsulin` INTEGER NOT NULL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, `insulinLabel` TEXT, `insulinEndTime` INTEGER, `peak` INTEGER, FOREIGN KEY(`referenceId`) REFERENCES `boluses`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "amount", + "columnName": "amount", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "isBasalInsulin", + "columnName": "isBasalInsulin", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "insulinConfiguration.insulinLabel", + "columnName": "insulinLabel", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "insulinConfiguration.insulinEndTime", + "columnName": "insulinEndTime", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "insulinConfiguration.peak", + "columnName": "peak", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_boluses_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_boluses_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_boluses_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_boluses_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "boluses", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "bolusCalculatorResults", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `targetBGLow` REAL NOT NULL, `targetBGHigh` REAL NOT NULL, `isf` REAL NOT NULL, `ic` REAL NOT NULL, `bolusIOB` REAL NOT NULL, `wasBolusIOBUsed` INTEGER NOT NULL, `basalIOB` REAL NOT NULL, `wasBasalIOBUsed` INTEGER NOT NULL, `glucoseValue` REAL NOT NULL, `wasGlucoseUsed` INTEGER NOT NULL, `glucoseDifference` REAL NOT NULL, `glucoseInsulin` REAL NOT NULL, `glucoseTrend` REAL NOT NULL, `wasTrendUsed` INTEGER NOT NULL, `trendInsulin` REAL NOT NULL, `cob` REAL NOT NULL, `wasCOBUsed` INTEGER NOT NULL, `cobInsulin` REAL NOT NULL, `carbs` REAL NOT NULL, `wereCarbsUsed` INTEGER NOT NULL, `carbsInsulin` REAL NOT NULL, `otherCorrection` REAL NOT NULL, `wasSuperbolusUsed` INTEGER NOT NULL, `superbolusInsulin` REAL NOT NULL, `wasTempTargetUsed` INTEGER NOT NULL, `totalInsulin` REAL NOT NULL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`referenceId`) REFERENCES `bolusCalculatorResults`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "targetBGLow", + "columnName": "targetBGLow", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "targetBGHigh", + "columnName": "targetBGHigh", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "isf", + "columnName": "isf", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "ic", + "columnName": "ic", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "bolusIOB", + "columnName": "bolusIOB", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "wasBolusIOBUsed", + "columnName": "wasBolusIOBUsed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "basalIOB", + "columnName": "basalIOB", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "wasBasalIOBUsed", + "columnName": "wasBasalIOBUsed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "glucoseValue", + "columnName": "glucoseValue", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "wasGlucoseUsed", + "columnName": "wasGlucoseUsed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "glucoseDifference", + "columnName": "glucoseDifference", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "glucoseInsulin", + "columnName": "glucoseInsulin", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "glucoseTrend", + "columnName": "glucoseTrend", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "wasTrendUsed", + "columnName": "wasTrendUsed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "trendInsulin", + "columnName": "trendInsulin", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "cob", + "columnName": "cob", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "wasCOBUsed", + "columnName": "wasCOBUsed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "cobInsulin", + "columnName": "cobInsulin", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "carbs", + "columnName": "carbs", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "wereCarbsUsed", + "columnName": "wereCarbsUsed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "carbsInsulin", + "columnName": "carbsInsulin", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "otherCorrection", + "columnName": "otherCorrection", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "wasSuperbolusUsed", + "columnName": "wasSuperbolusUsed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "superbolusInsulin", + "columnName": "superbolusInsulin", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "wasTempTargetUsed", + "columnName": "wasTempTargetUsed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "totalInsulin", + "columnName": "totalInsulin", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_bolusCalculatorResults_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_bolusCalculatorResults_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_bolusCalculatorResults_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_bolusCalculatorResults_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "bolusCalculatorResults", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "carbs", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `duration` INTEGER NOT NULL, `amount` REAL NOT NULL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`referenceId`) REFERENCES `carbs`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "amount", + "columnName": "amount", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_carbs_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_carbs_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_carbs_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_carbs_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "carbs", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "effectiveProfileSwitches", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `duration` INTEGER NOT NULL, `basalBlocks` TEXT NOT NULL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`referenceId`) REFERENCES `effectiveProfileSwitches`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "basalBlocks", + "columnName": "basalBlocks", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_effectiveProfileSwitches_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_effectiveProfileSwitches_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_effectiveProfileSwitches_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_effectiveProfileSwitches_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "effectiveProfileSwitches", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "extendedBoluses", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `duration` INTEGER NOT NULL, `amount` REAL NOT NULL, `isEmulatingTempBasal` INTEGER NOT NULL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`referenceId`) REFERENCES `extendedBoluses`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "amount", + "columnName": "amount", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "isEmulatingTempBasal", + "columnName": "isEmulatingTempBasal", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_extendedBoluses_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_extendedBoluses_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_extendedBoluses_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_extendedBoluses_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "extendedBoluses", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "glucoseValues", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `raw` REAL, `value` REAL NOT NULL, `trendArrow` TEXT NOT NULL, `noise` REAL, `sourceSensor` TEXT NOT NULL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`referenceId`) REFERENCES `glucoseValues`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "raw", + "columnName": "raw", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "value", + "columnName": "value", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "trendArrow", + "columnName": "trendArrow", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "noise", + "columnName": "noise", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "sourceSensor", + "columnName": "sourceSensor", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_glucoseValues_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_glucoseValues_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_glucoseValues_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_glucoseValues_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "glucoseValues", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "profileSwitches", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `profileName` TEXT NOT NULL, `glucoseUnit` TEXT NOT NULL, `basalBlocks` TEXT NOT NULL, `isfBlocks` TEXT NOT NULL, `icBlocks` TEXT NOT NULL, `targetBlocks` TEXT NOT NULL, `timeshift` INTEGER NOT NULL, `percentage` INTEGER NOT NULL, `duration` INTEGER NOT NULL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, `insulinLabel` TEXT NOT NULL, `insulinEndTime` INTEGER NOT NULL, `peak` INTEGER NOT NULL, FOREIGN KEY(`referenceId`) REFERENCES `profileSwitches`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "profileName", + "columnName": "profileName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "glucoseUnit", + "columnName": "glucoseUnit", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "basalBlocks", + "columnName": "basalBlocks", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "isfBlocks", + "columnName": "isfBlocks", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "icBlocks", + "columnName": "icBlocks", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "targetBlocks", + "columnName": "targetBlocks", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timeshift", + "columnName": "timeshift", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "percentage", + "columnName": "percentage", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "insulinConfiguration.insulinLabel", + "columnName": "insulinLabel", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "insulinConfiguration.insulinEndTime", + "columnName": "insulinEndTime", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "insulinConfiguration.peak", + "columnName": "peak", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_profileSwitches_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_profileSwitches_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_profileSwitches_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_profileSwitches_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "profileSwitches", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "temporaryBasals", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `type` TEXT NOT NULL, `isAbsolute` INTEGER NOT NULL, `rate` REAL NOT NULL, `duration` INTEGER NOT NULL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`referenceId`) REFERENCES `temporaryBasals`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "isAbsolute", + "columnName": "isAbsolute", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "rate", + "columnName": "rate", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_temporaryBasals_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_temporaryBasals_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_temporaryBasals_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_temporaryBasals_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "temporaryBasals", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "temporaryTargets", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `reason` TEXT NOT NULL, `highTarget` REAL NOT NULL, `lowTarget` REAL NOT NULL, `duration` INTEGER NOT NULL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`referenceId`) REFERENCES `temporaryTargets`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "reason", + "columnName": "reason", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "highTarget", + "columnName": "highTarget", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "lowTarget", + "columnName": "lowTarget", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_temporaryTargets_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_temporaryTargets_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_temporaryTargets_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_temporaryTargets_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "temporaryTargets", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "therapyEvents", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `duration` INTEGER NOT NULL, `type` TEXT NOT NULL, `note` TEXT, `amount` REAL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`referenceId`) REFERENCES `therapyEvents`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "note", + "columnName": "note", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "amount", + "columnName": "amount", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_therapyEvents_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_therapyEvents_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_therapyEvents_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_therapyEvents_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "therapyEvents", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "totalDailyDoses", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `basalAmount` REAL, `bolusAmount` REAL, `totalAmount` REAL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`referenceId`) REFERENCES `totalDailyDoses`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "basalAmount", + "columnName": "basalAmount", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "bolusAmount", + "columnName": "bolusAmount", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "totalAmount", + "columnName": "totalAmount", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_totalDailyDoses_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_totalDailyDoses_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_totalDailyDoses_timestamp", + "unique": false, + "columnNames": [ + "timestamp" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_totalDailyDoses_timestamp` ON `${TABLE_NAME}` (`timestamp`)" + } + ], + "foreignKeys": [ + { + "table": "totalDailyDoses", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "apsResultLinks", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `apsResultId` INTEGER NOT NULL, `smbId` INTEGER, `tbrId` INTEGER, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`apsResultId`) REFERENCES `apsResults`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`smbId`) REFERENCES `boluses`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`tbrId`) REFERENCES `temporaryBasals`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`referenceId`) REFERENCES `apsResultLinks`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "apsResultId", + "columnName": "apsResultId", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "smbId", + "columnName": "smbId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "tbrId", + "columnName": "tbrId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_apsResultLinks_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_apsResultLinks_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_apsResultLinks_apsResultId", + "unique": false, + "columnNames": [ + "apsResultId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_apsResultLinks_apsResultId` ON `${TABLE_NAME}` (`apsResultId`)" + }, + { + "name": "index_apsResultLinks_smbId", + "unique": false, + "columnNames": [ + "smbId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_apsResultLinks_smbId` ON `${TABLE_NAME}` (`smbId`)" + }, + { + "name": "index_apsResultLinks_tbrId", + "unique": false, + "columnNames": [ + "tbrId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_apsResultLinks_tbrId` ON `${TABLE_NAME}` (`tbrId`)" + } + ], + "foreignKeys": [ + { + "table": "apsResults", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "apsResultId" + ], + "referencedColumns": [ + "id" + ] + }, + { + "table": "boluses", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "smbId" + ], + "referencedColumns": [ + "id" + ] + }, + { + "table": "temporaryBasals", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "tbrId" + ], + "referencedColumns": [ + "id" + ] + }, + { + "table": "apsResultLinks", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "mealLinks", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `bolusId` INTEGER, `carbsId` INTEGER, `bolusCalcResultId` INTEGER, `superbolusTempBasalId` INTEGER, `noteId` INTEGER, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`bolusId`) REFERENCES `boluses`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`carbsId`) REFERENCES `carbs`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`bolusCalcResultId`) REFERENCES `bolusCalculatorResults`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`superbolusTempBasalId`) REFERENCES `temporaryBasals`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`noteId`) REFERENCES `therapyEvents`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`referenceId`) REFERENCES `mealLinks`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bolusId", + "columnName": "bolusId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "carbsId", + "columnName": "carbsId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bolusCalcResultId", + "columnName": "bolusCalcResultId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "superbolusTempBasalId", + "columnName": "superbolusTempBasalId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "noteId", + "columnName": "noteId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_mealLinks_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_mealLinks_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_mealLinks_bolusId", + "unique": false, + "columnNames": [ + "bolusId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_mealLinks_bolusId` ON `${TABLE_NAME}` (`bolusId`)" + }, + { + "name": "index_mealLinks_carbsId", + "unique": false, + "columnNames": [ + "carbsId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_mealLinks_carbsId` ON `${TABLE_NAME}` (`carbsId`)" + }, + { + "name": "index_mealLinks_bolusCalcResultId", + "unique": false, + "columnNames": [ + "bolusCalcResultId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_mealLinks_bolusCalcResultId` ON `${TABLE_NAME}` (`bolusCalcResultId`)" + }, + { + "name": "index_mealLinks_superbolusTempBasalId", + "unique": false, + "columnNames": [ + "superbolusTempBasalId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_mealLinks_superbolusTempBasalId` ON `${TABLE_NAME}` (`superbolusTempBasalId`)" + }, + { + "name": "index_mealLinks_noteId", + "unique": false, + "columnNames": [ + "noteId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_mealLinks_noteId` ON `${TABLE_NAME}` (`noteId`)" + } + ], + "foreignKeys": [ + { + "table": "boluses", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "bolusId" + ], + "referencedColumns": [ + "id" + ] + }, + { + "table": "carbs", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "carbsId" + ], + "referencedColumns": [ + "id" + ] + }, + { + "table": "bolusCalculatorResults", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "bolusCalcResultId" + ], + "referencedColumns": [ + "id" + ] + }, + { + "table": "temporaryBasals", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "superbolusTempBasalId" + ], + "referencedColumns": [ + "id" + ] + }, + { + "table": "therapyEvents", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "noteId" + ], + "referencedColumns": [ + "id" + ] + }, + { + "table": "mealLinks", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "multiwaveBolusLinks", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `version` INTEGER NOT NULL, `dateCreated` INTEGER NOT NULL, `isValid` INTEGER NOT NULL, `referenceId` INTEGER, `bolusId` INTEGER NOT NULL, `extendedBolusId` INTEGER NOT NULL, `nightscoutSystemId` TEXT, `nightscoutId` TEXT, `pumpType` TEXT, `pumpSerial` TEXT, `pumpId` INTEGER, `startId` INTEGER, `endId` INTEGER, FOREIGN KEY(`bolusId`) REFERENCES `boluses`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`extendedBolusId`) REFERENCES `extendedBoluses`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`referenceId`) REFERENCES `multiwaveBolusLinks`(`id`) ON UPDATE NO ACTION ON DELETE NO ACTION )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "version", + "columnName": "version", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "dateCreated", + "columnName": "dateCreated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isValid", + "columnName": "isValid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "referenceId", + "columnName": "referenceId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bolusId", + "columnName": "bolusId", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "extendedBolusId", + "columnName": "extendedBolusId", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutSystemId", + "columnName": "nightscoutSystemId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.nightscoutId", + "columnName": "nightscoutId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpType", + "columnName": "pumpType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpSerial", + "columnName": "pumpSerial", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.pumpId", + "columnName": "pumpId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.startId", + "columnName": "startId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "interfaceIDs_backing.endId", + "columnName": "endId", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_multiwaveBolusLinks_referenceId", + "unique": false, + "columnNames": [ + "referenceId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_multiwaveBolusLinks_referenceId` ON `${TABLE_NAME}` (`referenceId`)" + }, + { + "name": "index_multiwaveBolusLinks_bolusId", + "unique": false, + "columnNames": [ + "bolusId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_multiwaveBolusLinks_bolusId` ON `${TABLE_NAME}` (`bolusId`)" + }, + { + "name": "index_multiwaveBolusLinks_extendedBolusId", + "unique": false, + "columnNames": [ + "extendedBolusId" + ], + "createSql": "CREATE INDEX IF NOT EXISTS `index_multiwaveBolusLinks_extendedBolusId` ON `${TABLE_NAME}` (`extendedBolusId`)" + } + ], + "foreignKeys": [ + { + "table": "boluses", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "bolusId" + ], + "referencedColumns": [ + "id" + ] + }, + { + "table": "extendedBoluses", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "extendedBolusId" + ], + "referencedColumns": [ + "id" + ] + }, + { + "table": "multiwaveBolusLinks", + "onDelete": "NO ACTION", + "onUpdate": "NO ACTION", + "columns": [ + "referenceId" + ], + "referencedColumns": [ + "id" + ] + } + ] + }, + { + "tableName": "preferenceChanges", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `key` TEXT NOT NULL, `value` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "key", + "columnName": "key", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "value", + "columnName": "value", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "versionChanges", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `versionCode` INTEGER NOT NULL, `versionName` TEXT NOT NULL, `gitRemote` TEXT, `commitHash` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "versionCode", + "columnName": "versionCode", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "versionName", + "columnName": "versionName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "gitRemote", + "columnName": "gitRemote", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "commitHash", + "columnName": "commitHash", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "userEntry", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `action` TEXT NOT NULL, `s` TEXT NOT NULL, `d1` REAL NOT NULL, `d2` REAL NOT NULL, `i1` INTEGER NOT NULL, `i2` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "utcOffset", + "columnName": "utcOffset", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "action", + "columnName": "action", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "s", + "columnName": "s", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "d1", + "columnName": "d1", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "d2", + "columnName": "d2", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "i1", + "columnName": "i1", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "i2", + "columnName": "i2", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'a1db89121451334b6eb389e8c702dd2c')" + ] + } +} \ No newline at end of file diff --git a/database/src/main/java/info/nightscout/androidaps/database/AppDatabase.kt b/database/src/main/java/info/nightscout/androidaps/database/AppDatabase.kt index 6c474ec4da..5a943b6310 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/AppDatabase.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/AppDatabase.kt @@ -5,16 +5,16 @@ import androidx.room.RoomDatabase import androidx.room.TypeConverters import info.nightscout.androidaps.database.daos.* import info.nightscout.androidaps.database.entities.* -import info.nightscout.androidaps.database.entities.APSResultLink -import info.nightscout.androidaps.database.entities.MealLink -import info.nightscout.androidaps.database.entities.MultiwaveBolusLink -const val DATABASE_VERSION = 1 +const val DATABASE_VERSION = 2 -@Database(version = DATABASE_VERSION, entities = arrayOf(APSResult::class, Bolus::class, BolusCalculatorResult::class, Carbs::class, +@Database(version = DATABASE_VERSION, + entities = arrayOf(APSResult::class, Bolus::class, BolusCalculatorResult::class, Carbs::class, EffectiveProfileSwitch::class, ExtendedBolus::class, GlucoseValue::class, ProfileSwitch::class, TemporaryBasal::class, TemporaryTarget::class, TherapyEvent::class, TotalDailyDose::class, - APSResultLink::class, MealLink::class, MultiwaveBolusLink::class, PreferenceChange::class, VersionChange::class), exportSchema = true) + APSResultLink::class, MealLink::class, MultiwaveBolusLink::class, PreferenceChange::class, + VersionChange::class, UserEntry::class), + exportSchema = true) @TypeConverters(Converters::class) internal abstract class AppDatabase : RoomDatabase() { @@ -50,6 +50,8 @@ internal abstract class AppDatabase : RoomDatabase() { abstract val versionChangeDao: VersionChangeDao + abstract val userEntryDao: UserEntryDao + abstract val preferenceChangeDao: PreferenceChangeDao } \ No newline at end of file diff --git a/database/src/main/java/info/nightscout/androidaps/database/AppRepository.kt b/database/src/main/java/info/nightscout/androidaps/database/AppRepository.kt index c074386d30..d9a7c2d37d 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/AppRepository.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/AppRepository.kt @@ -2,6 +2,7 @@ package info.nightscout.androidaps.database import info.nightscout.androidaps.database.entities.GlucoseValue import info.nightscout.androidaps.database.entities.TemporaryTarget +import info.nightscout.androidaps.database.entities.UserEntry import info.nightscout.androidaps.database.interfaces.DBEntry import info.nightscout.androidaps.database.transactions.Transaction import io.reactivex.Completable @@ -105,7 +106,17 @@ class AppRepository @Inject internal constructor( fun getTemporaryTargetsCorrespondingLastHistoryRecord(lastId: Long): TemporaryTarget? = database.temporaryTargetDao.getLastHistoryRecord(lastId) + // USER ENTRY + fun getAllUserEntries(): Single> = + database.userEntryDao.getAll() + .subscribeOn(Schedulers.io()) + + fun insert(word: UserEntry) { + database.userEntryDao.insert(word) + } + } + @Suppress("USELESS_CAST") inline fun Maybe.toWrappedSingle(): Single> = this.map { ValueWrapper.Existing(it) as ValueWrapper } diff --git a/database/src/main/java/info/nightscout/androidaps/database/DatabaseModule.kt b/database/src/main/java/info/nightscout/androidaps/database/DatabaseModule.kt index dda8cf3917..9ef0b9e0ab 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/DatabaseModule.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/DatabaseModule.kt @@ -2,6 +2,8 @@ package info.nightscout.androidaps.database import android.content.Context import androidx.room.Room +import androidx.room.migration.Migration +import androidx.sqlite.db.SupportSQLiteDatabase import dagger.Module import dagger.Provides import javax.inject.Qualifier @@ -17,8 +19,17 @@ open class DatabaseModule { @Provides @Singleton internal fun provideAppDatabase(context: Context, @DbFileName fileName: String) = - Room.databaseBuilder(context, AppDatabase::class.java, fileName).build() + Room + .databaseBuilder(context, AppDatabase::class.java, fileName) + .addMigrations(migration1to2) + .build() @Qualifier annotation class DbFileName + + private val migration1to2 = object : Migration(1, 2) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL("CREATE TABLE IF NOT EXISTS userEntry (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `timestamp` INTEGER NOT NULL, `utcOffset` INTEGER NOT NULL, `action` TEXT NOT NULL, `s` TEXT NOT NULL, `d1` REAL NOT NULL, `d2` REAL NOT NULL, `i1` INTEGER NOT NULL, `i2` INTEGER NOT NULL)") + } + } } \ No newline at end of file diff --git a/database/src/main/java/info/nightscout/androidaps/database/DelegatedAppDatabase.kt b/database/src/main/java/info/nightscout/androidaps/database/DelegatedAppDatabase.kt index 1a6e3206b0..b82cc6f379 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/DelegatedAppDatabase.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/DelegatedAppDatabase.kt @@ -22,6 +22,7 @@ internal class DelegatedAppDatabase(val changes: MutableList, val datab val profileSwitchDao: ProfileSwitchDao = DelegatedProfileSwitchDao(changes, database.profileSwitchDao) val apsResultDao: APSResultDao = DelegatedAPSResultDao(changes, database.apsResultDao) val versionChangeDao: VersionChangeDao = DelegatedVersionChangeDao(changes, database.versionChangeDao) + val userEntryDao: UserEntryDao = DelegatedUserEntryDao(changes, database.userEntryDao) val preferenceChangeDao: PreferenceChangeDao = DelegatedPreferenceChangeDao(changes, database.preferenceChangeDao) fun clearAllTables() = database.clearAllTables() } \ No newline at end of file diff --git a/database/src/main/java/info/nightscout/androidaps/database/TableNames.kt b/database/src/main/java/info/nightscout/androidaps/database/TableNames.kt index 8ecb6beeff..fe7e6c3337 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/TableNames.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/TableNames.kt @@ -16,4 +16,5 @@ const val TABLE_TEMPORARY_TARGETS = "temporaryTargets" const val TABLE_TOTAL_DAILY_DOSES = "totalDailyDoses" const val TABLE_THERAPY_EVENTS = "therapyEvents" const val TABLE_PREFERENCE_CHANGES = "preferenceChanges" -const val TABLE_VERSION_CHANGES = "versionChanges" \ No newline at end of file +const val TABLE_VERSION_CHANGES = "versionChanges" +const val TABLE_USER_ENTRY = "userEntry" \ No newline at end of file diff --git a/database/src/main/java/info/nightscout/androidaps/database/daos/UserEntryDao.kt b/database/src/main/java/info/nightscout/androidaps/database/daos/UserEntryDao.kt new file mode 100644 index 0000000000..adb712f0e4 --- /dev/null +++ b/database/src/main/java/info/nightscout/androidaps/database/daos/UserEntryDao.kt @@ -0,0 +1,19 @@ +package info.nightscout.androidaps.database.daos + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.Query +import info.nightscout.androidaps.database.TABLE_USER_ENTRY +import info.nightscout.androidaps.database.entities.UserEntry +import io.reactivex.Single + +@Dao +interface UserEntryDao { + + @Insert + fun insert(userEntry: UserEntry) + + @Query("SELECT * FROM $TABLE_USER_ENTRY ORDER BY id DESC") + fun getAll(): Single> + +} \ No newline at end of file diff --git a/database/src/main/java/info/nightscout/androidaps/database/daos/delegated/DelegatedUserEntryDao.kt b/database/src/main/java/info/nightscout/androidaps/database/daos/delegated/DelegatedUserEntryDao.kt new file mode 100644 index 0000000000..b0b8eb4c19 --- /dev/null +++ b/database/src/main/java/info/nightscout/androidaps/database/daos/delegated/DelegatedUserEntryDao.kt @@ -0,0 +1,14 @@ +package info.nightscout.androidaps.database.daos.delegated + +import info.nightscout.androidaps.database.daos.UserEntryDao +import info.nightscout.androidaps.database.entities.UserEntry +import info.nightscout.androidaps.database.interfaces.DBEntry + +internal class DelegatedUserEntryDao(changes: MutableList, private val dao: UserEntryDao) : DelegatedDao(changes), UserEntryDao by dao { + + override fun insert(userEntry: UserEntry) { + changes.add(userEntry) + return dao.insert(userEntry) + } + +} \ No newline at end of file diff --git a/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt b/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt new file mode 100644 index 0000000000..8bd711a82c --- /dev/null +++ b/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt @@ -0,0 +1,22 @@ +package info.nightscout.androidaps.database.entities + +import androidx.room.Entity +import androidx.room.PrimaryKey +import info.nightscout.androidaps.database.TABLE_USER_ENTRY +import info.nightscout.androidaps.database.interfaces.DBEntry +import info.nightscout.androidaps.database.interfaces.DBEntryWithTime +import java.util.* + +@Entity(tableName = TABLE_USER_ENTRY) +data class UserEntry( + @PrimaryKey(autoGenerate = true) + override var id: Long = 0L, + override var timestamp: Long, + override var utcOffset: Long = TimeZone.getDefault().getOffset(timestamp).toLong(), + var action: String, + var s: String, + var d1: Double, + var d2: Double, + var i1: Int, + var i2: Int +) : DBEntry, DBEntryWithTime \ No newline at end of file diff --git a/database/src/main/java/info/nightscout/androidaps/database/transactions/UserEntryTransaction.kt b/database/src/main/java/info/nightscout/androidaps/database/transactions/UserEntryTransaction.kt new file mode 100644 index 0000000000..dc3b138848 --- /dev/null +++ b/database/src/main/java/info/nightscout/androidaps/database/transactions/UserEntryTransaction.kt @@ -0,0 +1,26 @@ +package info.nightscout.androidaps.database.transactions + +import info.nightscout.androidaps.database.entities.UserEntry + +class UserEntryTransaction( + val action: String, + val s: String = "", + val d1: Double = 0.0, + val d2: Double = 0.0, + val i1: Int = 0, + val i2: Int = 0, +) : Transaction() { + + override fun run() { + + database.userEntryDao.insert(UserEntry( + timestamp = System.currentTimeMillis(), + action = action, + s = s, + d1 = d1, + d2 = d2, + i1 = i1, + i2 = i2 + )) + } +} \ No newline at end of file From 8224f141badb2d01fb4536fec4e1e1a09e81be03 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Tue, 9 Feb 2021 19:37:27 +0100 Subject: [PATCH 05/83] Rename module omnipod to omnipod-eros --- app/build.gradle | 2 +- {omnipod => omnipod-eros}/.gitignore | 0 {omnipod => omnipod-eros}/build.gradle | 0 {omnipod => omnipod-eros}/consumer-rules.pro | 0 {omnipod => omnipod-eros}/proguard-rules.pro | 0 {omnipod => omnipod-eros}/src/main/AndroidManifest.xml | 0 .../androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java | 0 .../plugins/pump/omnipod/dagger/OmnipodInjectHelpers.kt | 0 .../androidaps/plugins/pump/omnipod/dagger/OmnipodModule.kt | 0 .../plugins/pump/omnipod/dagger/OmnipodWizardModule.kt | 0 .../androidaps/plugins/pump/omnipod/data/ActiveBolus.java | 0 .../plugins/pump/omnipod/data/RLHistoryItemOmnipod.java | 0 .../plugins/pump/omnipod/definition/OmnipodCommandType.java | 0 .../plugins/pump/omnipod/definition/OmnipodStorageKeys.java | 0 .../plugins/pump/omnipod/definition/PodHistoryEntryType.java | 0 .../driver/communication/action/AcknowledgeAlertsAction.java | 0 .../driver/communication/action/AssignAddressAction.java | 0 .../pump/omnipod/driver/communication/action/BolusAction.java | 0 .../driver/communication/action/CancelDeliveryAction.java | 0 .../driver/communication/action/ConfigureAlertsAction.java | 0 .../driver/communication/action/ConfigureBeepAction.java | 0 .../driver/communication/action/DeactivatePodAction.java | 0 .../omnipod/driver/communication/action/GetPodInfoAction.java | 0 .../omnipod/driver/communication/action/GetStatusAction.java | 0 .../driver/communication/action/InsertCannulaAction.java | 0 .../pump/omnipod/driver/communication/action/OmnipodAction.java | 0 .../pump/omnipod/driver/communication/action/PrimeAction.java | 0 .../driver/communication/action/SetBasalScheduleAction.java | 0 .../omnipod/driver/communication/action/SetTempBasalAction.java | 0 .../omnipod/driver/communication/action/SetupPodAction.java | 0 .../communication/action/service/ExpirationReminderBuilder.java | 0 .../driver/communication/action/service/PrimeService.java | 0 .../omnipod/driver/communication/message/IRawRepresentable.java | 0 .../pump/omnipod/driver/communication/message/MessageBlock.java | 0 .../communication/message/NonceResyncableMessageBlock.java | 0 .../omnipod/driver/communication/message/OmnipodMessage.java | 0 .../omnipod/driver/communication/message/OmnipodPacket.java | 0 .../communication/message/command/AcknowledgeAlertsCommand.java | 0 .../communication/message/command/AssignAddressCommand.java | 0 .../message/command/BasalScheduleExtraCommand.java | 0 .../driver/communication/message/command/BeepConfigCommand.java | 0 .../driver/communication/message/command/BolusExtraCommand.java | 0 .../communication/message/command/CancelDeliveryCommand.java | 0 .../communication/message/command/ConfigureAlertsCommand.java | 0 .../communication/message/command/DeactivatePodCommand.java | 0 .../communication/message/command/FaultConfigCommand.java | 0 .../driver/communication/message/command/GetStatusCommand.java | 0 .../message/command/SetInsulinScheduleCommand.java | 0 .../driver/communication/message/command/SetupPodCommand.java | 0 .../communication/message/command/TempBasalExtraCommand.java | 0 .../driver/communication/message/response/ErrorResponse.java | 0 .../driver/communication/message/response/StatusResponse.java | 0 .../communication/message/response/StatusUpdatableResponse.java | 0 .../driver/communication/message/response/VersionResponse.java | 0 .../driver/communication/message/response/podinfo/PodInfo.java | 0 .../message/response/podinfo/PodInfoActiveAlerts.java | 0 .../communication/message/response/podinfo/PodInfoDataLog.java | 0 .../message/response/podinfo/PodInfoDetailedStatus.java | 0 .../response/podinfo/PodInfoFaultAndInitializationTime.java | 0 .../message/response/podinfo/PodInfoOlderPulseLog.java | 0 .../message/response/podinfo/PodInfoRecentPulseLog.java | 0 .../communication/message/response/podinfo/PodInfoResponse.java | 0 .../pump/omnipod/driver/definition/ActivationProgress.java | 0 .../pump/omnipod/driver/definition/AlertConfiguration.java | 0 .../plugins/pump/omnipod/driver/definition/AlertSet.java | 0 .../plugins/pump/omnipod/driver/definition/AlertSlot.java | 0 .../plugins/pump/omnipod/driver/definition/AlertTrigger.java | 0 .../plugins/pump/omnipod/driver/definition/AlertType.java | 0 .../plugins/pump/omnipod/driver/definition/BeepConfigType.java | 0 .../plugins/pump/omnipod/driver/definition/BeepRepeat.java | 0 .../plugins/pump/omnipod/driver/definition/BeepType.java | 0 .../plugins/pump/omnipod/driver/definition/DeliveryStatus.java | 0 .../plugins/pump/omnipod/driver/definition/DeliveryType.java | 0 .../plugins/pump/omnipod/driver/definition/ErrorEventInfo.java | 0 .../plugins/pump/omnipod/driver/definition/FaultEventCode.java | 0 .../plugins/pump/omnipod/driver/definition/FirmwareVersion.java | 0 .../pump/omnipod/driver/definition/MessageBlockType.java | 0 .../pump/omnipod/driver/definition/OmnipodConstants.java | 0 .../plugins/pump/omnipod/driver/definition/OmnipodCrc.java | 0 .../plugins/pump/omnipod/driver/definition/PacketType.java | 0 .../plugins/pump/omnipod/driver/definition/PodInfoType.java | 0 .../pump/omnipod/driver/definition/PodProgressStatus.java | 0 .../pump/omnipod/driver/definition/TimerAlertTrigger.java | 0 .../omnipod/driver/definition/UnitsRemainingAlertTrigger.java | 0 .../driver/definition/schedule/BasalDeliverySchedule.java | 0 .../omnipod/driver/definition/schedule/BasalDeliveryTable.java | 0 .../pump/omnipod/driver/definition/schedule/BasalSchedule.java | 0 .../omnipod/driver/definition/schedule/BasalScheduleEntry.java | 0 .../omnipod/driver/definition/schedule/BasalTableEntry.java | 0 .../driver/definition/schedule/BolusDeliverySchedule.java | 0 .../omnipod/driver/definition/schedule/DeliverySchedule.java | 0 .../omnipod/driver/definition/schedule/InsulinScheduleType.java | 0 .../pump/omnipod/driver/definition/schedule/RateEntry.java | 0 .../driver/definition/schedule/TempBasalDeliverySchedule.java | 0 .../driver/exception/ActivationTimeExceededException.java | 0 .../CommandFailedAfterChangingDeliveryStatusException.java | 0 .../pump/omnipod/driver/exception/CrcMismatchException.java | 0 .../driver/exception/IllegalActivationProgressException.java | 0 .../driver/exception/IllegalDeliveryStatusException.java | 0 .../driver/exception/IllegalMessageAddressException.java | 0 .../driver/exception/IllegalMessageSequenceNumberException.java | 0 .../omnipod/driver/exception/IllegalPacketTypeException.java | 0 .../omnipod/driver/exception/IllegalPodProgressException.java | 0 .../pump/omnipod/driver/exception/IllegalResponseException.java | 0 .../driver/exception/IllegalVersionResponseTypeException.java | 0 .../pump/omnipod/driver/exception/MessageDecodingException.java | 0 .../pump/omnipod/driver/exception/NonceOutOfSyncException.java | 0 .../pump/omnipod/driver/exception/NonceResyncException.java | 0 .../pump/omnipod/driver/exception/NotEnoughDataException.java | 0 .../plugins/pump/omnipod/driver/exception/OmnipodException.java | 0 .../pump/omnipod/driver/exception/PodFaultException.java | 0 .../exception/PodProgressStatusVerificationFailedException.java | 0 .../driver/exception/PodReturnedErrorResponseException.java | 0 .../exception/PrecedingCommandFailedUncertainlyException.java | 0 .../omnipod/driver/exception/RileyLinkInterruptedException.java | 0 .../omnipod/driver/exception/RileyLinkTimeoutException.java | 0 .../omnipod/driver/exception/RileyLinkUnexpectedException.java | 0 .../omnipod/driver/exception/RileyLinkUnreachableException.java | 0 .../plugins/pump/omnipod/driver/manager/OmnipodManager.java | 0 .../plugins/pump/omnipod/driver/manager/PodStateManager.java | 0 .../pump/omnipod/driver/util/AlertConfigurationUtil.java | 0 .../androidaps/plugins/pump/omnipod/driver/util/TimeUtil.java | 0 .../pump/omnipod/event/EventOmnipodActiveAlertsChanged.kt | 0 .../plugins/pump/omnipod/event/EventOmnipodFaultEventChanged.kt | 0 .../plugins/pump/omnipod/event/EventOmnipodPumpValuesChanged.kt | 0 .../plugins/pump/omnipod/event/EventOmnipodTbrChanged.kt | 0 .../pump/omnipod/event/EventOmnipodUncertainTbrRecovered.kt | 0 .../plugins/pump/omnipod/manager/AapsOmnipodManager.java | 0 .../plugins/pump/omnipod/manager/AapsPodStateManager.java | 0 .../pump/omnipod/queue/command/CommandAcknowledgeAlerts.java | 0 .../pump/omnipod/queue/command/CommandDeactivatePod.java | 0 .../plugins/pump/omnipod/queue/command/CommandGetPodStatus.java | 0 .../pump/omnipod/queue/command/CommandHandleTimeChange.java | 0 .../plugins/pump/omnipod/queue/command/CommandPlayTestBeep.java | 0 .../plugins/pump/omnipod/queue/command/CommandReadPulseLog.java | 0 .../pump/omnipod/queue/command/CommandResumeDelivery.java | 0 .../pump/omnipod/queue/command/CommandSuspendDelivery.java | 0 .../omnipod/queue/command/CommandUpdateAlertConfiguration.java | 0 .../pump/omnipod/queue/command/OmnipodCustomCommand.java | 0 .../pump/omnipod/queue/command/OmnipodCustomCommandType.java | 0 .../rileylink/manager/OmnipodRileyLinkCommunicationManager.java | 0 .../pump/omnipod/rileylink/service/RileyLinkOmnipodService.java | 0 .../plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt | 0 .../androidaps/plugins/pump/omnipod/ui/PodHistoryActivity.java | 0 .../androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt | 0 .../omnipod/ui/wizard/activation/PodActivationWizardActivity.kt | 0 .../ui/wizard/activation/fragment/AttachPodInfoFragment.kt | 0 .../ui/wizard/activation/fragment/FillPodInfoFragment.kt | 0 .../wizard/activation/fragment/InitializePodActionFragment.kt | 0 .../wizard/activation/fragment/InsertCannulaActionFragment.kt | 0 .../ui/wizard/activation/fragment/PodActivatedInfoFragment.kt | 0 .../activation/fragment/PodActivationActionFragmentBase.kt | 0 .../wizard/activation/viewmodel/InitializePodActionViewModel.kt | 0 .../wizard/activation/viewmodel/InsertCannulaActionViewModel.kt | 0 .../ui/wizard/common/activity/OmnipodWizardActivityBase.kt | 0 .../omnipod/ui/wizard/common/fragment/ActionFragmentBase.kt | 0 .../pump/omnipod/ui/wizard/common/fragment/InfoFragmentBase.kt | 0 .../omnipod/ui/wizard/common/fragment/WizardFragmentBase.kt | 0 .../omnipod/ui/wizard/common/viewmodel/ActionViewModelBase.kt | 0 .../ui/wizard/deactivation/PodDeactivationWizardActivity.kt | 0 .../wizard/deactivation/fragment/DeactivatePodActionFragment.kt | 0 .../wizard/deactivation/fragment/DeactivatePodInfoFragment.kt | 0 .../wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt | 0 .../ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt | 0 .../deactivation/viewmodel/DeactivatePodActionViewModel.kt | 0 .../androidaps/plugins/pump/omnipod/util/AapsOmnipodUtil.java | 0 .../androidaps/plugins/pump/omnipod/util/OmnipodAlertUtil.java | 0 .../res/drawable/ic_omnipod_overview_acknowledge_alerts.xml | 0 .../main/res/drawable/ic_omnipod_overview_pod_management.xml | 0 .../res/drawable/ic_omnipod_overview_refresh_pod_status.xml | 0 .../main/res/drawable/ic_omnipod_overview_resume_delivery.xml | 0 .../src/main/res/drawable/ic_omnipod_overview_set_time.xml | 0 .../main/res/drawable/ic_omnipod_overview_suspend_delivery.xml | 0 .../src/main/res/drawable/ic_omnipod_wizard_success.xml | 0 {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod.xml | 0 {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod_128.xml | 0 .../res/drawable/ic_pod_activity_reset_rileylink_config.xml | 0 .../src/main/res/drawable/ic_pod_management_activate_pod.xml | 0 .../src/main/res/drawable/ic_pod_management_deactivate_pod.xml | 0 .../src/main/res/drawable/ic_pod_management_discard_pod.xml | 0 .../src/main/res/drawable/ic_pod_management_play_test_beep.xml | 0 .../src/main/res/drawable/ic_pod_management_pod_history.xml | 0 .../src/main/res/drawable/ic_pod_management_pulse_log.xml | 0 .../src/main/res/drawable/ic_pod_management_rl_stats.xml | 0 .../src/main/res/layout/omnipod_overview.xml | 0 .../main/res/layout/omnipod_pod_activation_wizard_activity.xml | 0 .../res/layout/omnipod_pod_deactivation_wizard_activity.xml | 0 .../src/main/res/layout/omnipod_pod_history_activity.xml | 0 .../src/main/res/layout/omnipod_pod_history_item.xml | 0 .../src/main/res/layout/omnipod_pod_management.xml | 0 .../src/main/res/layout/omnipod_wizard_action_page_fragment.xml | 0 .../src/main/res/layout/omnipod_wizard_base_fragment.xml | 0 .../src/main/res/layout/omnipod_wizard_info_page_fragment.xml | 0 .../src/main/res/layout/omnipod_wizard_nav_buttons.xml | 0 .../src/main/res/layout/omnipod_wizard_progress_indication.xml | 0 .../omnipod_pod_activation_wizard_navigation_graph.xml | 0 .../omnipod_pod_deactivation_wizard_navigation_graph.xml | 0 .../src/main/res/values-af-rZA/strings.xml | 0 .../src/main/res/values-bg-rBG/strings.xml | 0 .../src/main/res/values-ca-rES/strings.xml | 0 .../src/main/res/values-cs-rCZ/strings.xml | 0 .../src/main/res/values-da-rDK/strings.xml | 0 .../src/main/res/values-de-rDE/strings.xml | 0 .../src/main/res/values-el-rGR/strings.xml | 0 .../src/main/res/values-es-rES/strings.xml | 0 .../src/main/res/values-fr-rFR/strings.xml | 0 .../src/main/res/values-ga-rIE/strings.xml | 0 .../src/main/res/values-hr-rHR/strings.xml | 0 .../src/main/res/values-it-rIT/strings.xml | 0 .../src/main/res/values-iw-rIL/strings.xml | 0 .../src/main/res/values-ko-rKR/strings.xml | 0 .../src/main/res/values-lt-rLT/strings.xml | 0 .../src/main/res/values-nl-rNL/strings.xml | 0 .../src/main/res/values-no-rNO/strings.xml | 0 .../src/main/res/values-pl-rPL/strings.xml | 0 .../src/main/res/values-pt-rBR/strings.xml | 0 .../src/main/res/values-pt-rPT/strings.xml | 0 .../src/main/res/values-ro-rRO/strings.xml | 0 .../src/main/res/values-ru-rRU/strings.xml | 0 .../src/main/res/values-sk-rSK/strings.xml | 0 .../src/main/res/values-sl-rSI/strings.xml | 0 .../src/main/res/values-sv-rSE/strings.xml | 0 .../src/main/res/values-tr-rTR/strings.xml | 0 .../src/main/res/values-zh-rCN/strings.xml | 0 {omnipod => omnipod-eros}/src/main/res/values/colors.xml | 0 {omnipod => omnipod-eros}/src/main/res/values/dimens.xml | 0 {omnipod => omnipod-eros}/src/main/res/values/strings.xml | 0 {omnipod => omnipod-eros}/src/main/res/values/styles.xml | 0 {omnipod => omnipod-eros}/src/main/res/xml/pref_omnipod.xml | 0 .../androidaps/plugins/pump/omnipod/OmnipodPumpPluginTest.java | 0 .../omnipod/driver/communication/AapsOmnipodManagerTest.java | 0 .../message/command/AcknowledgeAlertsCommandTest.java | 0 .../communication/message/command/AssignAddressCommandTest.java | 0 .../message/command/BasalScheduleExtraCommandTest.java | 0 .../communication/message/command/BeepConfigCommandTest.java | 0 .../communication/message/command/BolusExtraCommandTest.java | 0 .../message/command/CancelDeliveryCommandTest.java | 0 .../message/command/ConfigureAlertsCommandTest.java | 0 .../communication/message/command/DeactivatePodCommandTest.java | 0 .../communication/message/command/FaultConfigCommandTest.java | 0 .../communication/message/command/GetStatusCommandTest.java | 0 .../message/command/SetInsulinScheduleCommandTest.java | 0 .../communication/message/command/SetupPodCommandTest.java | 0 .../message/command/TempBasalExtraCommandTest.java | 0 .../message/defs/schedule/BasalTableEntryTest.java | 0 .../communication/message/response/ErrorResponseTest.java | 0 .../communication/message/response/StatusResponseTest.java | 0 .../communication/message/response/VersionResponseTest.java | 0 .../message/response/podinfo/PodInfoActiveAlertsTest.java | 0 .../message/response/podinfo/PodInfoDataLogTest.java | 0 .../message/response/podinfo/PodInfoDetailedStatusTest.java | 0 .../response/podinfo/PodInfoFaultAndInitializationTimeTest.java | 0 .../message/response/podinfo/PodInfoOlderPulseLogTest.java | 0 .../message/response/podinfo/PodInfoRecentPulseLogTest.java | 0 .../message/response/podinfo/PodInfoResponseTest.java | 0 .../plugins/pump/omnipod/driver/definition/AlertSetTest.java | 0 .../omnipod/driver/definition/schedule/BasalScheduleTest.java | 0 .../plugins/pump/omnipod/driver/util/TimeUtilTest.java | 0 .../plugins/pump/omnipod/manager/AapsPodStateManagerTest.java | 0 settings.gradle | 2 +- 260 files changed, 2 insertions(+), 2 deletions(-) rename {omnipod => omnipod-eros}/.gitignore (100%) rename {omnipod => omnipod-eros}/build.gradle (100%) rename {omnipod => omnipod-eros}/consumer-rules.pro (100%) rename {omnipod => omnipod-eros}/proguard-rules.pro (100%) rename {omnipod => omnipod-eros}/src/main/AndroidManifest.xml (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodInjectHelpers.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodModule.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodWizardModule.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/ActiveBolus.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/RLHistoryItemOmnipod.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodCommandType.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodStorageKeys.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/PodHistoryEntryType.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AcknowledgeAlertsAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AssignAddressAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/BolusAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureAlertsAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureBeepAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/DeactivatePodAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetPodInfoAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetStatusAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/InsertCannulaAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/OmnipodAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/PrimeAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetBasalScheduleAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetTempBasalAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetupPodAction.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/ExpirationReminderBuilder.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/PrimeService.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/IRawRepresentable.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/MessageBlock.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/NonceResyncableMessageBlock.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodPacket.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponse.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponse.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusUpdatableResponse.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponse.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfo.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLog.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponse.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ActivationProgress.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertConfiguration.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSet.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSlot.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertTrigger.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertType.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepConfigType.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepRepeat.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepType.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryStatus.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryType.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ErrorEventInfo.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FaultEventCode.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FirmwareVersion.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/MessageBlockType.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodCrc.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PacketType.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodInfoType.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodProgressStatus.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/TimerAlertTrigger.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/UnitsRemainingAlertTrigger.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliverySchedule.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliveryTable.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalSchedule.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleEntry.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalTableEntry.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BolusDeliverySchedule.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/DeliverySchedule.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/InsulinScheduleType.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/RateEntry.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/TempBasalDeliverySchedule.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/ActivationTimeExceededException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CrcMismatchException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalActivationProgressException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalDeliveryStatusException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageAddressException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageSequenceNumberException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPacketTypeException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPodProgressException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalResponseException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalVersionResponseTypeException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/MessageDecodingException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceOutOfSyncException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceResyncException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NotEnoughDataException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/OmnipodException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodFaultException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodProgressStatusVerificationFailedException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodReturnedErrorResponseException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PrecedingCommandFailedUncertainlyException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkInterruptedException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkTimeoutException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnexpectedException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnreachableException.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/AlertConfigurationUtil.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtil.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodActiveAlertsChanged.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodFaultEventChanged.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodPumpValuesChanged.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodTbrChanged.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodUncertainTbrRecovered.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManager.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandAcknowledgeAlerts.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandDeactivatePod.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandGetPodStatus.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandHandleTimeChange.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandPlayTestBeep.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandReadPulseLog.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandResumeDelivery.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandSuspendDelivery.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandUpdateAlertConfiguration.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommand.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommandType.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodHistoryActivity.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/PodActivationWizardActivity.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/AttachPodInfoFragment.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/FillPodInfoFragment.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InitializePodActionFragment.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/activity/OmnipodWizardActivityBase.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/ActionFragmentBase.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/InfoFragmentBase.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/WizardFragmentBase.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/viewmodel/ActionViewModelBase.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/PodDeactivationWizardActivity.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/AapsOmnipodUtil.java (100%) rename {omnipod => omnipod-eros}/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodAlertUtil.java (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_omnipod_overview_acknowledge_alerts.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_omnipod_overview_pod_management.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_omnipod_overview_refresh_pod_status.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_omnipod_overview_resume_delivery.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_omnipod_overview_set_time.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_omnipod_overview_suspend_delivery.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_omnipod_wizard_success.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod_128.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod_activity_reset_rileylink_config.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod_management_activate_pod.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod_management_deactivate_pod.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod_management_discard_pod.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod_management_play_test_beep.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod_management_pod_history.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod_management_pulse_log.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/drawable/ic_pod_management_rl_stats.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/layout/omnipod_overview.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/layout/omnipod_pod_activation_wizard_activity.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/layout/omnipod_pod_deactivation_wizard_activity.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/layout/omnipod_pod_history_activity.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/layout/omnipod_pod_history_item.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/layout/omnipod_pod_management.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/layout/omnipod_wizard_action_page_fragment.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/layout/omnipod_wizard_base_fragment.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/layout/omnipod_wizard_info_page_fragment.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/layout/omnipod_wizard_nav_buttons.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/layout/omnipod_wizard_progress_indication.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/navigation/omnipod_pod_activation_wizard_navigation_graph.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/navigation/omnipod_pod_deactivation_wizard_navigation_graph.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-af-rZA/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-bg-rBG/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-ca-rES/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-cs-rCZ/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-da-rDK/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-de-rDE/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-el-rGR/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-es-rES/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-fr-rFR/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-ga-rIE/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-hr-rHR/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-it-rIT/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-iw-rIL/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-ko-rKR/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-lt-rLT/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-nl-rNL/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-no-rNO/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-pl-rPL/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-pt-rBR/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-pt-rPT/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-ro-rRO/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-ru-rRU/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-sk-rSK/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-sl-rSI/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-sv-rSE/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-tr-rTR/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values-zh-rCN/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values/colors.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values/dimens.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values/strings.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/values/styles.xml (100%) rename {omnipod => omnipod-eros}/src/main/res/xml/pref_omnipod.xml (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPluginTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/AapsOmnipodManagerTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommandTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/defs/schedule/BasalTableEntryTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponseTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponseTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponseTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLogTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponseTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSetTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtilTest.java (100%) rename {omnipod => omnipod-eros}/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManagerTest.java (100%) diff --git a/app/build.gradle b/app/build.gradle index 8d71d287b1..c9c7c5fa18 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -241,7 +241,7 @@ dependencies { implementation project(':danar') implementation project(':rileylink') implementation project(':medtronic') - implementation project(':omnipod') + implementation project(':omnipod-eros') implementation fileTree(include: ['*.jar'], dir: 'libs') diff --git a/omnipod/.gitignore b/omnipod-eros/.gitignore similarity index 100% rename from omnipod/.gitignore rename to omnipod-eros/.gitignore diff --git a/omnipod/build.gradle b/omnipod-eros/build.gradle similarity index 100% rename from omnipod/build.gradle rename to omnipod-eros/build.gradle diff --git a/omnipod/consumer-rules.pro b/omnipod-eros/consumer-rules.pro similarity index 100% rename from omnipod/consumer-rules.pro rename to omnipod-eros/consumer-rules.pro diff --git a/omnipod/proguard-rules.pro b/omnipod-eros/proguard-rules.pro similarity index 100% rename from omnipod/proguard-rules.pro rename to omnipod-eros/proguard-rules.pro diff --git a/omnipod/src/main/AndroidManifest.xml b/omnipod-eros/src/main/AndroidManifest.xml similarity index 100% rename from omnipod/src/main/AndroidManifest.xml rename to omnipod-eros/src/main/AndroidManifest.xml diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodInjectHelpers.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodInjectHelpers.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodInjectHelpers.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodInjectHelpers.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodModule.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodModule.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodModule.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodModule.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodWizardModule.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodWizardModule.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodWizardModule.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodWizardModule.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/ActiveBolus.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/ActiveBolus.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/ActiveBolus.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/ActiveBolus.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/RLHistoryItemOmnipod.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/RLHistoryItemOmnipod.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/RLHistoryItemOmnipod.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/RLHistoryItemOmnipod.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodCommandType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodCommandType.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodCommandType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodCommandType.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodStorageKeys.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodStorageKeys.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodStorageKeys.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodStorageKeys.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/PodHistoryEntryType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/PodHistoryEntryType.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/PodHistoryEntryType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/PodHistoryEntryType.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AcknowledgeAlertsAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AcknowledgeAlertsAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AcknowledgeAlertsAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AcknowledgeAlertsAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AssignAddressAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AssignAddressAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AssignAddressAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AssignAddressAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/BolusAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/BolusAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/BolusAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/BolusAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureAlertsAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureAlertsAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureAlertsAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureAlertsAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureBeepAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureBeepAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureBeepAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureBeepAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/DeactivatePodAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/DeactivatePodAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/DeactivatePodAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/DeactivatePodAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetPodInfoAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetPodInfoAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetPodInfoAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetPodInfoAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetStatusAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetStatusAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetStatusAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetStatusAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/InsertCannulaAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/InsertCannulaAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/InsertCannulaAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/InsertCannulaAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/OmnipodAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/OmnipodAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/OmnipodAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/OmnipodAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/PrimeAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/PrimeAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/PrimeAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/PrimeAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetBasalScheduleAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetBasalScheduleAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetBasalScheduleAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetBasalScheduleAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetTempBasalAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetTempBasalAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetTempBasalAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetTempBasalAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetupPodAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetupPodAction.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetupPodAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetupPodAction.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/ExpirationReminderBuilder.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/ExpirationReminderBuilder.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/ExpirationReminderBuilder.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/ExpirationReminderBuilder.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/PrimeService.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/PrimeService.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/PrimeService.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/PrimeService.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/IRawRepresentable.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/IRawRepresentable.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/IRawRepresentable.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/IRawRepresentable.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/MessageBlock.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/MessageBlock.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/MessageBlock.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/MessageBlock.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/NonceResyncableMessageBlock.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/NonceResyncableMessageBlock.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/NonceResyncableMessageBlock.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/NonceResyncableMessageBlock.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodPacket.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodPacket.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodPacket.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodPacket.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponse.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponse.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponse.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponse.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponse.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponse.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponse.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponse.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusUpdatableResponse.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusUpdatableResponse.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusUpdatableResponse.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusUpdatableResponse.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponse.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponse.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponse.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponse.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfo.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfo.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfo.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfo.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLog.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLog.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLog.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLog.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponse.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponse.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponse.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponse.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ActivationProgress.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ActivationProgress.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ActivationProgress.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ActivationProgress.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertConfiguration.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertConfiguration.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertConfiguration.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertConfiguration.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSet.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSet.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSet.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSet.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSlot.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSlot.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSlot.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSlot.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertTrigger.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertTrigger.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertTrigger.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertTrigger.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertType.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertType.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepConfigType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepConfigType.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepConfigType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepConfigType.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepRepeat.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepRepeat.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepRepeat.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepRepeat.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepType.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepType.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryStatus.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryStatus.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryStatus.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryStatus.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryType.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryType.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ErrorEventInfo.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ErrorEventInfo.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ErrorEventInfo.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ErrorEventInfo.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FaultEventCode.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FaultEventCode.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FaultEventCode.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FaultEventCode.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FirmwareVersion.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FirmwareVersion.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FirmwareVersion.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FirmwareVersion.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/MessageBlockType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/MessageBlockType.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/MessageBlockType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/MessageBlockType.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodCrc.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodCrc.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodCrc.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodCrc.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PacketType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PacketType.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PacketType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PacketType.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodInfoType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodInfoType.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodInfoType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodInfoType.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodProgressStatus.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodProgressStatus.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodProgressStatus.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodProgressStatus.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/TimerAlertTrigger.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/TimerAlertTrigger.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/TimerAlertTrigger.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/TimerAlertTrigger.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/UnitsRemainingAlertTrigger.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/UnitsRemainingAlertTrigger.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/UnitsRemainingAlertTrigger.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/UnitsRemainingAlertTrigger.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliverySchedule.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliverySchedule.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliverySchedule.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliverySchedule.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliveryTable.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliveryTable.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliveryTable.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliveryTable.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalSchedule.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalSchedule.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalSchedule.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalSchedule.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleEntry.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleEntry.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleEntry.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleEntry.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalTableEntry.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalTableEntry.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalTableEntry.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalTableEntry.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BolusDeliverySchedule.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BolusDeliverySchedule.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BolusDeliverySchedule.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BolusDeliverySchedule.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/DeliverySchedule.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/DeliverySchedule.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/DeliverySchedule.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/DeliverySchedule.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/InsulinScheduleType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/InsulinScheduleType.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/InsulinScheduleType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/InsulinScheduleType.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/RateEntry.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/RateEntry.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/RateEntry.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/RateEntry.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/TempBasalDeliverySchedule.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/TempBasalDeliverySchedule.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/TempBasalDeliverySchedule.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/TempBasalDeliverySchedule.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/ActivationTimeExceededException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/ActivationTimeExceededException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/ActivationTimeExceededException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/ActivationTimeExceededException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CrcMismatchException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CrcMismatchException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CrcMismatchException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CrcMismatchException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalActivationProgressException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalActivationProgressException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalActivationProgressException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalActivationProgressException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalDeliveryStatusException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalDeliveryStatusException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalDeliveryStatusException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalDeliveryStatusException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageAddressException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageAddressException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageAddressException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageAddressException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageSequenceNumberException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageSequenceNumberException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageSequenceNumberException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageSequenceNumberException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPacketTypeException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPacketTypeException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPacketTypeException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPacketTypeException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPodProgressException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPodProgressException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPodProgressException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPodProgressException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalResponseException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalResponseException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalResponseException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalResponseException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalVersionResponseTypeException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalVersionResponseTypeException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalVersionResponseTypeException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalVersionResponseTypeException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/MessageDecodingException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/MessageDecodingException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/MessageDecodingException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/MessageDecodingException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceOutOfSyncException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceOutOfSyncException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceOutOfSyncException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceOutOfSyncException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceResyncException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceResyncException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceResyncException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceResyncException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NotEnoughDataException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NotEnoughDataException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NotEnoughDataException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NotEnoughDataException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/OmnipodException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/OmnipodException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/OmnipodException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/OmnipodException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodFaultException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodFaultException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodFaultException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodFaultException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodProgressStatusVerificationFailedException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodProgressStatusVerificationFailedException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodProgressStatusVerificationFailedException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodProgressStatusVerificationFailedException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodReturnedErrorResponseException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodReturnedErrorResponseException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodReturnedErrorResponseException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodReturnedErrorResponseException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PrecedingCommandFailedUncertainlyException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PrecedingCommandFailedUncertainlyException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PrecedingCommandFailedUncertainlyException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PrecedingCommandFailedUncertainlyException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkInterruptedException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkInterruptedException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkInterruptedException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkInterruptedException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkTimeoutException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkTimeoutException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkTimeoutException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkTimeoutException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnexpectedException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnexpectedException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnexpectedException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnexpectedException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnreachableException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnreachableException.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnreachableException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnreachableException.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/AlertConfigurationUtil.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/AlertConfigurationUtil.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/AlertConfigurationUtil.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/AlertConfigurationUtil.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtil.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtil.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtil.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtil.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodActiveAlertsChanged.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodActiveAlertsChanged.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodActiveAlertsChanged.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodActiveAlertsChanged.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodFaultEventChanged.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodFaultEventChanged.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodFaultEventChanged.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodFaultEventChanged.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodPumpValuesChanged.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodPumpValuesChanged.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodPumpValuesChanged.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodPumpValuesChanged.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodTbrChanged.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodTbrChanged.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodTbrChanged.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodTbrChanged.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodUncertainTbrRecovered.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodUncertainTbrRecovered.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodUncertainTbrRecovered.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodUncertainTbrRecovered.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManager.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManager.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManager.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManager.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandAcknowledgeAlerts.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandAcknowledgeAlerts.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandAcknowledgeAlerts.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandAcknowledgeAlerts.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandDeactivatePod.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandDeactivatePod.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandDeactivatePod.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandDeactivatePod.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandGetPodStatus.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandGetPodStatus.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandGetPodStatus.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandGetPodStatus.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandHandleTimeChange.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandHandleTimeChange.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandHandleTimeChange.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandHandleTimeChange.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandPlayTestBeep.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandPlayTestBeep.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandPlayTestBeep.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandPlayTestBeep.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandReadPulseLog.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandReadPulseLog.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandReadPulseLog.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandReadPulseLog.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandResumeDelivery.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandResumeDelivery.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandResumeDelivery.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandResumeDelivery.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandSuspendDelivery.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandSuspendDelivery.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandSuspendDelivery.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandSuspendDelivery.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandUpdateAlertConfiguration.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandUpdateAlertConfiguration.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandUpdateAlertConfiguration.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandUpdateAlertConfiguration.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommand.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommand.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommandType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommandType.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommandType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommandType.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodHistoryActivity.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodHistoryActivity.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodHistoryActivity.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodHistoryActivity.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/PodActivationWizardActivity.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/PodActivationWizardActivity.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/PodActivationWizardActivity.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/PodActivationWizardActivity.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/AttachPodInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/AttachPodInfoFragment.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/AttachPodInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/AttachPodInfoFragment.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/FillPodInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/FillPodInfoFragment.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/FillPodInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/FillPodInfoFragment.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InitializePodActionFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InitializePodActionFragment.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InitializePodActionFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InitializePodActionFragment.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/activity/OmnipodWizardActivityBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/activity/OmnipodWizardActivityBase.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/activity/OmnipodWizardActivityBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/activity/OmnipodWizardActivityBase.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/ActionFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/ActionFragmentBase.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/ActionFragmentBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/ActionFragmentBase.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/InfoFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/InfoFragmentBase.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/InfoFragmentBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/InfoFragmentBase.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/WizardFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/WizardFragmentBase.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/WizardFragmentBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/WizardFragmentBase.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/viewmodel/ActionViewModelBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/viewmodel/ActionViewModelBase.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/viewmodel/ActionViewModelBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/viewmodel/ActionViewModelBase.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/PodDeactivationWizardActivity.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/PodDeactivationWizardActivity.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/PodDeactivationWizardActivity.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/PodDeactivationWizardActivity.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/AapsOmnipodUtil.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/AapsOmnipodUtil.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/AapsOmnipodUtil.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/AapsOmnipodUtil.java diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodAlertUtil.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodAlertUtil.java similarity index 100% rename from omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodAlertUtil.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodAlertUtil.java diff --git a/omnipod/src/main/res/drawable/ic_omnipod_overview_acknowledge_alerts.xml b/omnipod-eros/src/main/res/drawable/ic_omnipod_overview_acknowledge_alerts.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_omnipod_overview_acknowledge_alerts.xml rename to omnipod-eros/src/main/res/drawable/ic_omnipod_overview_acknowledge_alerts.xml diff --git a/omnipod/src/main/res/drawable/ic_omnipod_overview_pod_management.xml b/omnipod-eros/src/main/res/drawable/ic_omnipod_overview_pod_management.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_omnipod_overview_pod_management.xml rename to omnipod-eros/src/main/res/drawable/ic_omnipod_overview_pod_management.xml diff --git a/omnipod/src/main/res/drawable/ic_omnipod_overview_refresh_pod_status.xml b/omnipod-eros/src/main/res/drawable/ic_omnipod_overview_refresh_pod_status.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_omnipod_overview_refresh_pod_status.xml rename to omnipod-eros/src/main/res/drawable/ic_omnipod_overview_refresh_pod_status.xml diff --git a/omnipod/src/main/res/drawable/ic_omnipod_overview_resume_delivery.xml b/omnipod-eros/src/main/res/drawable/ic_omnipod_overview_resume_delivery.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_omnipod_overview_resume_delivery.xml rename to omnipod-eros/src/main/res/drawable/ic_omnipod_overview_resume_delivery.xml diff --git a/omnipod/src/main/res/drawable/ic_omnipod_overview_set_time.xml b/omnipod-eros/src/main/res/drawable/ic_omnipod_overview_set_time.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_omnipod_overview_set_time.xml rename to omnipod-eros/src/main/res/drawable/ic_omnipod_overview_set_time.xml diff --git a/omnipod/src/main/res/drawable/ic_omnipod_overview_suspend_delivery.xml b/omnipod-eros/src/main/res/drawable/ic_omnipod_overview_suspend_delivery.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_omnipod_overview_suspend_delivery.xml rename to omnipod-eros/src/main/res/drawable/ic_omnipod_overview_suspend_delivery.xml diff --git a/omnipod/src/main/res/drawable/ic_omnipod_wizard_success.xml b/omnipod-eros/src/main/res/drawable/ic_omnipod_wizard_success.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_omnipod_wizard_success.xml rename to omnipod-eros/src/main/res/drawable/ic_omnipod_wizard_success.xml diff --git a/omnipod/src/main/res/drawable/ic_pod.xml b/omnipod-eros/src/main/res/drawable/ic_pod.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_pod.xml rename to omnipod-eros/src/main/res/drawable/ic_pod.xml diff --git a/omnipod/src/main/res/drawable/ic_pod_128.xml b/omnipod-eros/src/main/res/drawable/ic_pod_128.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_pod_128.xml rename to omnipod-eros/src/main/res/drawable/ic_pod_128.xml diff --git a/omnipod/src/main/res/drawable/ic_pod_activity_reset_rileylink_config.xml b/omnipod-eros/src/main/res/drawable/ic_pod_activity_reset_rileylink_config.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_pod_activity_reset_rileylink_config.xml rename to omnipod-eros/src/main/res/drawable/ic_pod_activity_reset_rileylink_config.xml diff --git a/omnipod/src/main/res/drawable/ic_pod_management_activate_pod.xml b/omnipod-eros/src/main/res/drawable/ic_pod_management_activate_pod.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_pod_management_activate_pod.xml rename to omnipod-eros/src/main/res/drawable/ic_pod_management_activate_pod.xml diff --git a/omnipod/src/main/res/drawable/ic_pod_management_deactivate_pod.xml b/omnipod-eros/src/main/res/drawable/ic_pod_management_deactivate_pod.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_pod_management_deactivate_pod.xml rename to omnipod-eros/src/main/res/drawable/ic_pod_management_deactivate_pod.xml diff --git a/omnipod/src/main/res/drawable/ic_pod_management_discard_pod.xml b/omnipod-eros/src/main/res/drawable/ic_pod_management_discard_pod.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_pod_management_discard_pod.xml rename to omnipod-eros/src/main/res/drawable/ic_pod_management_discard_pod.xml diff --git a/omnipod/src/main/res/drawable/ic_pod_management_play_test_beep.xml b/omnipod-eros/src/main/res/drawable/ic_pod_management_play_test_beep.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_pod_management_play_test_beep.xml rename to omnipod-eros/src/main/res/drawable/ic_pod_management_play_test_beep.xml diff --git a/omnipod/src/main/res/drawable/ic_pod_management_pod_history.xml b/omnipod-eros/src/main/res/drawable/ic_pod_management_pod_history.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_pod_management_pod_history.xml rename to omnipod-eros/src/main/res/drawable/ic_pod_management_pod_history.xml diff --git a/omnipod/src/main/res/drawable/ic_pod_management_pulse_log.xml b/omnipod-eros/src/main/res/drawable/ic_pod_management_pulse_log.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_pod_management_pulse_log.xml rename to omnipod-eros/src/main/res/drawable/ic_pod_management_pulse_log.xml diff --git a/omnipod/src/main/res/drawable/ic_pod_management_rl_stats.xml b/omnipod-eros/src/main/res/drawable/ic_pod_management_rl_stats.xml similarity index 100% rename from omnipod/src/main/res/drawable/ic_pod_management_rl_stats.xml rename to omnipod-eros/src/main/res/drawable/ic_pod_management_rl_stats.xml diff --git a/omnipod/src/main/res/layout/omnipod_overview.xml b/omnipod-eros/src/main/res/layout/omnipod_overview.xml similarity index 100% rename from omnipod/src/main/res/layout/omnipod_overview.xml rename to omnipod-eros/src/main/res/layout/omnipod_overview.xml diff --git a/omnipod/src/main/res/layout/omnipod_pod_activation_wizard_activity.xml b/omnipod-eros/src/main/res/layout/omnipod_pod_activation_wizard_activity.xml similarity index 100% rename from omnipod/src/main/res/layout/omnipod_pod_activation_wizard_activity.xml rename to omnipod-eros/src/main/res/layout/omnipod_pod_activation_wizard_activity.xml diff --git a/omnipod/src/main/res/layout/omnipod_pod_deactivation_wizard_activity.xml b/omnipod-eros/src/main/res/layout/omnipod_pod_deactivation_wizard_activity.xml similarity index 100% rename from omnipod/src/main/res/layout/omnipod_pod_deactivation_wizard_activity.xml rename to omnipod-eros/src/main/res/layout/omnipod_pod_deactivation_wizard_activity.xml diff --git a/omnipod/src/main/res/layout/omnipod_pod_history_activity.xml b/omnipod-eros/src/main/res/layout/omnipod_pod_history_activity.xml similarity index 100% rename from omnipod/src/main/res/layout/omnipod_pod_history_activity.xml rename to omnipod-eros/src/main/res/layout/omnipod_pod_history_activity.xml diff --git a/omnipod/src/main/res/layout/omnipod_pod_history_item.xml b/omnipod-eros/src/main/res/layout/omnipod_pod_history_item.xml similarity index 100% rename from omnipod/src/main/res/layout/omnipod_pod_history_item.xml rename to omnipod-eros/src/main/res/layout/omnipod_pod_history_item.xml diff --git a/omnipod/src/main/res/layout/omnipod_pod_management.xml b/omnipod-eros/src/main/res/layout/omnipod_pod_management.xml similarity index 100% rename from omnipod/src/main/res/layout/omnipod_pod_management.xml rename to omnipod-eros/src/main/res/layout/omnipod_pod_management.xml diff --git a/omnipod/src/main/res/layout/omnipod_wizard_action_page_fragment.xml b/omnipod-eros/src/main/res/layout/omnipod_wizard_action_page_fragment.xml similarity index 100% rename from omnipod/src/main/res/layout/omnipod_wizard_action_page_fragment.xml rename to omnipod-eros/src/main/res/layout/omnipod_wizard_action_page_fragment.xml diff --git a/omnipod/src/main/res/layout/omnipod_wizard_base_fragment.xml b/omnipod-eros/src/main/res/layout/omnipod_wizard_base_fragment.xml similarity index 100% rename from omnipod/src/main/res/layout/omnipod_wizard_base_fragment.xml rename to omnipod-eros/src/main/res/layout/omnipod_wizard_base_fragment.xml diff --git a/omnipod/src/main/res/layout/omnipod_wizard_info_page_fragment.xml b/omnipod-eros/src/main/res/layout/omnipod_wizard_info_page_fragment.xml similarity index 100% rename from omnipod/src/main/res/layout/omnipod_wizard_info_page_fragment.xml rename to omnipod-eros/src/main/res/layout/omnipod_wizard_info_page_fragment.xml diff --git a/omnipod/src/main/res/layout/omnipod_wizard_nav_buttons.xml b/omnipod-eros/src/main/res/layout/omnipod_wizard_nav_buttons.xml similarity index 100% rename from omnipod/src/main/res/layout/omnipod_wizard_nav_buttons.xml rename to omnipod-eros/src/main/res/layout/omnipod_wizard_nav_buttons.xml diff --git a/omnipod/src/main/res/layout/omnipod_wizard_progress_indication.xml b/omnipod-eros/src/main/res/layout/omnipod_wizard_progress_indication.xml similarity index 100% rename from omnipod/src/main/res/layout/omnipod_wizard_progress_indication.xml rename to omnipod-eros/src/main/res/layout/omnipod_wizard_progress_indication.xml diff --git a/omnipod/src/main/res/navigation/omnipod_pod_activation_wizard_navigation_graph.xml b/omnipod-eros/src/main/res/navigation/omnipod_pod_activation_wizard_navigation_graph.xml similarity index 100% rename from omnipod/src/main/res/navigation/omnipod_pod_activation_wizard_navigation_graph.xml rename to omnipod-eros/src/main/res/navigation/omnipod_pod_activation_wizard_navigation_graph.xml diff --git a/omnipod/src/main/res/navigation/omnipod_pod_deactivation_wizard_navigation_graph.xml b/omnipod-eros/src/main/res/navigation/omnipod_pod_deactivation_wizard_navigation_graph.xml similarity index 100% rename from omnipod/src/main/res/navigation/omnipod_pod_deactivation_wizard_navigation_graph.xml rename to omnipod-eros/src/main/res/navigation/omnipod_pod_deactivation_wizard_navigation_graph.xml diff --git a/omnipod/src/main/res/values-af-rZA/strings.xml b/omnipod-eros/src/main/res/values-af-rZA/strings.xml similarity index 100% rename from omnipod/src/main/res/values-af-rZA/strings.xml rename to omnipod-eros/src/main/res/values-af-rZA/strings.xml diff --git a/omnipod/src/main/res/values-bg-rBG/strings.xml b/omnipod-eros/src/main/res/values-bg-rBG/strings.xml similarity index 100% rename from omnipod/src/main/res/values-bg-rBG/strings.xml rename to omnipod-eros/src/main/res/values-bg-rBG/strings.xml diff --git a/omnipod/src/main/res/values-ca-rES/strings.xml b/omnipod-eros/src/main/res/values-ca-rES/strings.xml similarity index 100% rename from omnipod/src/main/res/values-ca-rES/strings.xml rename to omnipod-eros/src/main/res/values-ca-rES/strings.xml diff --git a/omnipod/src/main/res/values-cs-rCZ/strings.xml b/omnipod-eros/src/main/res/values-cs-rCZ/strings.xml similarity index 100% rename from omnipod/src/main/res/values-cs-rCZ/strings.xml rename to omnipod-eros/src/main/res/values-cs-rCZ/strings.xml diff --git a/omnipod/src/main/res/values-da-rDK/strings.xml b/omnipod-eros/src/main/res/values-da-rDK/strings.xml similarity index 100% rename from omnipod/src/main/res/values-da-rDK/strings.xml rename to omnipod-eros/src/main/res/values-da-rDK/strings.xml diff --git a/omnipod/src/main/res/values-de-rDE/strings.xml b/omnipod-eros/src/main/res/values-de-rDE/strings.xml similarity index 100% rename from omnipod/src/main/res/values-de-rDE/strings.xml rename to omnipod-eros/src/main/res/values-de-rDE/strings.xml diff --git a/omnipod/src/main/res/values-el-rGR/strings.xml b/omnipod-eros/src/main/res/values-el-rGR/strings.xml similarity index 100% rename from omnipod/src/main/res/values-el-rGR/strings.xml rename to omnipod-eros/src/main/res/values-el-rGR/strings.xml diff --git a/omnipod/src/main/res/values-es-rES/strings.xml b/omnipod-eros/src/main/res/values-es-rES/strings.xml similarity index 100% rename from omnipod/src/main/res/values-es-rES/strings.xml rename to omnipod-eros/src/main/res/values-es-rES/strings.xml diff --git a/omnipod/src/main/res/values-fr-rFR/strings.xml b/omnipod-eros/src/main/res/values-fr-rFR/strings.xml similarity index 100% rename from omnipod/src/main/res/values-fr-rFR/strings.xml rename to omnipod-eros/src/main/res/values-fr-rFR/strings.xml diff --git a/omnipod/src/main/res/values-ga-rIE/strings.xml b/omnipod-eros/src/main/res/values-ga-rIE/strings.xml similarity index 100% rename from omnipod/src/main/res/values-ga-rIE/strings.xml rename to omnipod-eros/src/main/res/values-ga-rIE/strings.xml diff --git a/omnipod/src/main/res/values-hr-rHR/strings.xml b/omnipod-eros/src/main/res/values-hr-rHR/strings.xml similarity index 100% rename from omnipod/src/main/res/values-hr-rHR/strings.xml rename to omnipod-eros/src/main/res/values-hr-rHR/strings.xml diff --git a/omnipod/src/main/res/values-it-rIT/strings.xml b/omnipod-eros/src/main/res/values-it-rIT/strings.xml similarity index 100% rename from omnipod/src/main/res/values-it-rIT/strings.xml rename to omnipod-eros/src/main/res/values-it-rIT/strings.xml diff --git a/omnipod/src/main/res/values-iw-rIL/strings.xml b/omnipod-eros/src/main/res/values-iw-rIL/strings.xml similarity index 100% rename from omnipod/src/main/res/values-iw-rIL/strings.xml rename to omnipod-eros/src/main/res/values-iw-rIL/strings.xml diff --git a/omnipod/src/main/res/values-ko-rKR/strings.xml b/omnipod-eros/src/main/res/values-ko-rKR/strings.xml similarity index 100% rename from omnipod/src/main/res/values-ko-rKR/strings.xml rename to omnipod-eros/src/main/res/values-ko-rKR/strings.xml diff --git a/omnipod/src/main/res/values-lt-rLT/strings.xml b/omnipod-eros/src/main/res/values-lt-rLT/strings.xml similarity index 100% rename from omnipod/src/main/res/values-lt-rLT/strings.xml rename to omnipod-eros/src/main/res/values-lt-rLT/strings.xml diff --git a/omnipod/src/main/res/values-nl-rNL/strings.xml b/omnipod-eros/src/main/res/values-nl-rNL/strings.xml similarity index 100% rename from omnipod/src/main/res/values-nl-rNL/strings.xml rename to omnipod-eros/src/main/res/values-nl-rNL/strings.xml diff --git a/omnipod/src/main/res/values-no-rNO/strings.xml b/omnipod-eros/src/main/res/values-no-rNO/strings.xml similarity index 100% rename from omnipod/src/main/res/values-no-rNO/strings.xml rename to omnipod-eros/src/main/res/values-no-rNO/strings.xml diff --git a/omnipod/src/main/res/values-pl-rPL/strings.xml b/omnipod-eros/src/main/res/values-pl-rPL/strings.xml similarity index 100% rename from omnipod/src/main/res/values-pl-rPL/strings.xml rename to omnipod-eros/src/main/res/values-pl-rPL/strings.xml diff --git a/omnipod/src/main/res/values-pt-rBR/strings.xml b/omnipod-eros/src/main/res/values-pt-rBR/strings.xml similarity index 100% rename from omnipod/src/main/res/values-pt-rBR/strings.xml rename to omnipod-eros/src/main/res/values-pt-rBR/strings.xml diff --git a/omnipod/src/main/res/values-pt-rPT/strings.xml b/omnipod-eros/src/main/res/values-pt-rPT/strings.xml similarity index 100% rename from omnipod/src/main/res/values-pt-rPT/strings.xml rename to omnipod-eros/src/main/res/values-pt-rPT/strings.xml diff --git a/omnipod/src/main/res/values-ro-rRO/strings.xml b/omnipod-eros/src/main/res/values-ro-rRO/strings.xml similarity index 100% rename from omnipod/src/main/res/values-ro-rRO/strings.xml rename to omnipod-eros/src/main/res/values-ro-rRO/strings.xml diff --git a/omnipod/src/main/res/values-ru-rRU/strings.xml b/omnipod-eros/src/main/res/values-ru-rRU/strings.xml similarity index 100% rename from omnipod/src/main/res/values-ru-rRU/strings.xml rename to omnipod-eros/src/main/res/values-ru-rRU/strings.xml diff --git a/omnipod/src/main/res/values-sk-rSK/strings.xml b/omnipod-eros/src/main/res/values-sk-rSK/strings.xml similarity index 100% rename from omnipod/src/main/res/values-sk-rSK/strings.xml rename to omnipod-eros/src/main/res/values-sk-rSK/strings.xml diff --git a/omnipod/src/main/res/values-sl-rSI/strings.xml b/omnipod-eros/src/main/res/values-sl-rSI/strings.xml similarity index 100% rename from omnipod/src/main/res/values-sl-rSI/strings.xml rename to omnipod-eros/src/main/res/values-sl-rSI/strings.xml diff --git a/omnipod/src/main/res/values-sv-rSE/strings.xml b/omnipod-eros/src/main/res/values-sv-rSE/strings.xml similarity index 100% rename from omnipod/src/main/res/values-sv-rSE/strings.xml rename to omnipod-eros/src/main/res/values-sv-rSE/strings.xml diff --git a/omnipod/src/main/res/values-tr-rTR/strings.xml b/omnipod-eros/src/main/res/values-tr-rTR/strings.xml similarity index 100% rename from omnipod/src/main/res/values-tr-rTR/strings.xml rename to omnipod-eros/src/main/res/values-tr-rTR/strings.xml diff --git a/omnipod/src/main/res/values-zh-rCN/strings.xml b/omnipod-eros/src/main/res/values-zh-rCN/strings.xml similarity index 100% rename from omnipod/src/main/res/values-zh-rCN/strings.xml rename to omnipod-eros/src/main/res/values-zh-rCN/strings.xml diff --git a/omnipod/src/main/res/values/colors.xml b/omnipod-eros/src/main/res/values/colors.xml similarity index 100% rename from omnipod/src/main/res/values/colors.xml rename to omnipod-eros/src/main/res/values/colors.xml diff --git a/omnipod/src/main/res/values/dimens.xml b/omnipod-eros/src/main/res/values/dimens.xml similarity index 100% rename from omnipod/src/main/res/values/dimens.xml rename to omnipod-eros/src/main/res/values/dimens.xml diff --git a/omnipod/src/main/res/values/strings.xml b/omnipod-eros/src/main/res/values/strings.xml similarity index 100% rename from omnipod/src/main/res/values/strings.xml rename to omnipod-eros/src/main/res/values/strings.xml diff --git a/omnipod/src/main/res/values/styles.xml b/omnipod-eros/src/main/res/values/styles.xml similarity index 100% rename from omnipod/src/main/res/values/styles.xml rename to omnipod-eros/src/main/res/values/styles.xml diff --git a/omnipod/src/main/res/xml/pref_omnipod.xml b/omnipod-eros/src/main/res/xml/pref_omnipod.xml similarity index 100% rename from omnipod/src/main/res/xml/pref_omnipod.xml rename to omnipod-eros/src/main/res/xml/pref_omnipod.xml diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPluginTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPluginTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPluginTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPluginTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/AapsOmnipodManagerTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/AapsOmnipodManagerTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/AapsOmnipodManagerTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/AapsOmnipodManagerTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommandTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommandTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/defs/schedule/BasalTableEntryTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/defs/schedule/BasalTableEntryTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/defs/schedule/BasalTableEntryTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/defs/schedule/BasalTableEntryTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponseTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponseTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponseTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponseTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponseTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponseTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponseTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponseTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponseTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponseTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponseTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponseTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLogTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLogTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLogTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLogTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponseTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponseTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponseTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponseTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSetTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSetTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSetTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSetTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtilTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtilTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtilTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtilTest.java diff --git a/omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManagerTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManagerTest.java similarity index 100% rename from omnipod/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManagerTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManagerTest.java diff --git a/settings.gradle b/settings.gradle index 163be2365a..32af4b9e30 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,3 @@ include ':database' -include ':app', ':wear', ':core', ':dana', ':danar', ':danars', ':rileylink', ':medtronic', ':omnipod' +include ':app', ':wear', ':core', ':dana', ':danar', ':danars', ':rileylink', ':medtronic', ':omnipod-eros' From 4456aaa0159195b1eb10a31b97a8b674b5a304e1 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Tue, 9 Feb 2021 19:44:26 +0100 Subject: [PATCH 06/83] Move omnipod package to omnipod.eros and fix some tests --- .../dependencyInjection/AppComponent.kt | 2 +- .../dependencyInjection/FragmentsModule.kt | 2 +- .../dependencyInjection/PluginsModule.kt | 2 +- .../dependencyInjection/ServicesModule.kt | 2 +- .../general/actions/ActionsFragment.kt | 2 +- .../general/overview/StatusLightHandler.kt | 4 +- .../androidaps/setupwizard/SWDefinition.kt | 2 +- omnipod-eros/src/main/AndroidManifest.xml | 10 +-- .../communication/action/GetStatusAction.java | 23 ----- .../communication/action/OmnipodAction.java | 7 -- .../message/IRawRepresentable.java | 5 -- .../definition/schedule/DeliverySchedule.java | 10 --- .../omnipod/{ => eros}/OmnipodPumpPlugin.java | 63 ++++++------- .../{ => eros}/dagger/OmnipodInjectHelpers.kt | 2 +- .../{ => eros}/dagger/OmnipodModule.kt | 18 ++-- .../{ => eros}/dagger/OmnipodWizardModule.kt | 26 +++--- .../omnipod/{ => eros}/data/ActiveBolus.java | 2 +- .../{ => eros}/data/RLHistoryItemOmnipod.java | 4 +- .../definition/OmnipodCommandType.java | 2 +- .../definition/OmnipodStorageKeys.java | 2 +- .../definition/PodHistoryEntryType.java | 2 +- .../action/AcknowledgeAlertsAction.java | 14 +-- .../action/AssignAddressAction.java | 22 ++--- .../communication/action/BolusAction.java | 16 ++-- .../action/CancelDeliveryAction.java | 22 ++--- .../action/ConfigureAlertsAction.java | 12 +-- .../action/ConfigureBeepAction.java | 12 +-- .../action/DeactivatePodAction.java | 14 +-- .../action/GetPodInfoAction.java | 12 +-- .../communication/action/GetStatusAction.java | 23 +++++ .../action/InsertCannulaAction.java | 18 ++-- .../communication/action/OmnipodAction.java | 7 ++ .../communication/action/PrimeAction.java | 12 +-- .../action/SetBasalScheduleAction.java | 16 ++-- .../action/SetTempBasalAction.java | 16 ++-- .../communication/action/SetupPodAction.java | 28 +++--- .../service/ExpirationReminderBuilder.java | 12 +-- .../action/service/PrimeService.java | 22 ++--- .../message/IRawRepresentable.java | 5 ++ .../communication/message/MessageBlock.java | 4 +- .../message/NonceResyncableMessageBlock.java | 2 +- .../communication/message/OmnipodMessage.java | 22 ++--- .../communication/message/OmnipodPacket.java | 10 +-- .../command/AcknowledgeAlertsCommand.java | 10 +-- .../message/command/AssignAddressCommand.java | 6 +- .../command/BasalScheduleExtraCommand.java | 12 +-- .../message/command/BeepConfigCommand.java | 8 +- .../message/command/BolusExtraCommand.java | 8 +- .../command/CancelDeliveryCommand.java | 10 +-- .../command/ConfigureAlertsCommand.java | 8 +- .../message/command/DeactivatePodCommand.java | 6 +- .../message/command/FaultConfigCommand.java | 6 +- .../message/command/GetStatusCommand.java | 8 +- .../command/SetInsulinScheduleCommand.java | 20 ++--- .../message/command/SetupPodCommand.java | 6 +- .../command/TempBasalExtraCommand.java | 10 +-- .../message/response/ErrorResponse.java | 10 +-- .../message/response/StatusResponse.java | 14 +-- .../response/StatusUpdatableResponse.java | 8 +- .../message/response/VersionResponse.java | 10 +-- .../message/response/podinfo/PodInfo.java | 4 +- .../response/podinfo/PodInfoActiveAlerts.java | 8 +- .../response/podinfo/PodInfoDataLog.java | 6 +- .../podinfo/PodInfoDetailedStatus.java | 18 ++-- .../PodInfoFaultAndInitializationTime.java | 6 +- .../podinfo/PodInfoOlderPulseLog.java | 4 +- .../podinfo/PodInfoRecentPulseLog.java | 4 +- .../response/podinfo/PodInfoResponse.java | 8 +- .../driver/definition/ActivationProgress.java | 2 +- .../driver/definition/AlertConfiguration.java | 2 +- .../driver/definition/AlertSet.java | 2 +- .../driver/definition/AlertSlot.java | 2 +- .../driver/definition/AlertTrigger.java | 2 +- .../driver/definition/AlertType.java | 2 +- .../driver/definition/BeepConfigType.java | 2 +- .../driver/definition/BeepRepeat.java | 2 +- .../driver/definition/BeepType.java | 2 +- .../driver/definition/DeliveryStatus.java | 2 +- .../driver/definition/DeliveryType.java | 2 +- .../driver/definition/ErrorEventInfo.java | 2 +- .../driver/definition/FaultEventCode.java | 2 +- .../driver/definition/FirmwareVersion.java | 2 +- .../driver/definition/MessageBlockType.java | 12 +-- .../driver/definition/OmnipodConstants.java | 2 +- .../driver/definition/OmnipodCrc.java | 2 +- .../driver/definition/PacketType.java | 2 +- .../driver/definition/PodInfoType.java | 16 ++-- .../driver/definition/PodProgressStatus.java | 2 +- .../driver/definition/TimerAlertTrigger.java | 2 +- .../UnitsRemainingAlertTrigger.java | 2 +- .../schedule/BasalDeliverySchedule.java | 4 +- .../schedule/BasalDeliveryTable.java | 4 +- .../definition/schedule/BasalSchedule.java | 2 +- .../schedule/BasalScheduleEntry.java | 4 +- .../definition/schedule/BasalTableEntry.java | 4 +- .../schedule/BolusDeliverySchedule.java | 6 +- .../definition/schedule/DeliverySchedule.java | 10 +++ .../schedule/InsulinScheduleType.java | 2 +- .../driver/definition/schedule/RateEntry.java | 8 +- .../schedule/TempBasalDeliverySchedule.java | 4 +- .../ActivationTimeExceededException.java | 2 +- ...dAfterChangingDeliveryStatusException.java | 2 +- .../exception/CrcMismatchException.java | 2 +- .../IllegalActivationProgressException.java | 4 +- .../IllegalDeliveryStatusException.java | 4 +- .../IllegalMessageAddressException.java | 2 +- ...IllegalMessageSequenceNumberException.java | 2 +- .../exception/IllegalPacketTypeException.java | 4 +- .../IllegalPodProgressException.java | 4 +- .../exception/IllegalResponseException.java | 4 +- .../IllegalVersionResponseTypeException.java | 2 +- .../exception/MessageDecodingException.java | 2 +- .../exception/NonceOutOfSyncException.java | 2 +- .../exception/NonceResyncException.java | 2 +- .../exception/NotEnoughDataException.java | 2 +- .../driver/exception/OmnipodException.java | 2 +- .../driver/exception/PodFaultException.java | 4 +- ...ressStatusVerificationFailedException.java | 4 +- .../PodReturnedErrorResponseException.java | 4 +- ...dingCommandFailedUncertainlyException.java | 2 +- .../RileyLinkInterruptedException.java | 2 +- .../exception/RileyLinkTimeoutException.java | 2 +- .../RileyLinkUnexpectedException.java | 2 +- .../RileyLinkUnreachableException.java | 2 +- .../driver/manager/OmnipodManager.java | 80 ++++++++--------- .../driver/manager/PodStateManager.java | 32 +++---- .../driver/util/AlertConfigurationUtil.java | 16 ++-- .../{ => eros}/driver/util/TimeUtil.java | 2 +- .../event/EventOmnipodActiveAlertsChanged.kt | 2 +- .../event/EventOmnipodFaultEventChanged.kt | 2 +- .../event/EventOmnipodPumpValuesChanged.kt | 2 +- .../event/EventOmnipodTbrChanged.kt | 2 +- .../EventOmnipodUncertainTbrRecovered.kt | 2 +- .../manager/AapsOmnipodManager.java | 90 +++++++++---------- .../manager/AapsPodStateManager.java | 14 +-- .../command/CommandAcknowledgeAlerts.java | 2 +- .../queue/command/CommandDeactivatePod.java | 2 +- .../queue/command/CommandGetPodStatus.java | 2 +- .../command/CommandHandleTimeChange.java | 2 +- .../queue/command/CommandPlayTestBeep.java | 4 +- .../queue/command/CommandReadPulseLog.java | 2 +- .../queue/command/CommandResumeDelivery.java | 2 +- .../queue/command/CommandSuspendDelivery.java | 2 +- .../CommandUpdateAlertConfiguration.java | 2 +- .../queue/command/OmnipodCustomCommand.java | 2 +- .../command/OmnipodCustomCommandType.java | 2 +- .../OmnipodRileyLinkCommunicationManager.java | 60 ++++++------- .../service/RileyLinkOmnipodService.java | 12 +-- .../{ => eros}/ui/OmnipodOverviewFragment.kt | 33 ++++--- .../{ => eros}/ui/PodHistoryActivity.java | 6 +- .../{ => eros}/ui/PodManagementActivity.kt | 23 +++-- .../activation/PodActivationWizardActivity.kt | 8 +- .../fragment/AttachPodInfoFragment.kt | 4 +- .../fragment/FillPodInfoFragment.kt | 4 +- .../fragment/InitializePodActionFragment.kt | 6 +- .../fragment/InsertCannulaActionFragment.kt | 6 +- .../fragment/PodActivatedInfoFragment.kt | 4 +- .../PodActivationActionFragmentBase.kt | 10 +-- .../viewmodel/InitializePodActionViewModel.kt | 6 +- .../viewmodel/InsertCannulaActionViewModel.kt | 6 +- .../activity/OmnipodWizardActivityBase.kt | 2 +- .../common/fragment/ActionFragmentBase.kt | 4 +- .../common/fragment/InfoFragmentBase.kt | 2 +- .../common/fragment/WizardFragmentBase.kt | 4 +- .../common/viewmodel/ActionViewModelBase.kt | 2 +- .../PodDeactivationWizardActivity.kt | 4 +- .../fragment/DeactivatePodActionFragment.kt | 10 +-- .../fragment/DeactivatePodInfoFragment.kt | 4 +- .../fragment/PodDeactivatedInfoFragment.kt | 4 +- .../fragment/PodDiscardedInfoFragment.kt | 4 +- .../viewmodel/DeactivatePodActionViewModel.kt | 8 +- .../{ => eros}/util/AapsOmnipodUtil.java | 10 +-- .../{ => eros}/util/OmnipodAlertUtil.java | 6 +- .../src/main/res/layout/omnipod_overview.xml | 2 +- ...pod_activation_wizard_navigation_graph.xml | 10 +-- ...d_deactivation_wizard_navigation_graph.xml | 8 +- .../command/FaultConfigCommandTest.java | 5 -- .../podinfo/PodInfoOlderPulseLogTest.java | 5 -- .../{ => eros}/OmnipodPumpPluginTest.java | 9 +- .../communication/AapsOmnipodManagerTest.java | 8 +- .../command/AcknowledgeAlertsCommandTest.java | 8 +- .../command/AssignAddressCommandTest.java | 2 +- .../BasalScheduleExtraCommandTest.java | 8 +- .../command/BeepConfigCommandTest.java | 4 +- .../command/BolusExtraCommandTest.java | 2 +- .../command/CancelDeliveryCommandTest.java | 6 +- .../command/ConfigureAlertsCommandTest.java | 16 ++-- .../command/DeactivatePodCommandTest.java | 4 +- .../command/FaultConfigCommandTest.java | 5 ++ .../message/command/GetStatusCommandTest.java | 4 +- .../SetInsulinScheduleCommandTest.java | 8 +- .../message/command/SetupPodCommandTest.java | 2 +- .../command/TempBasalExtraCommandTest.java | 2 +- .../defs/schedule/BasalTableEntryTest.java | 4 +- .../message/response/ErrorResponseTest.java | 6 +- .../message/response/StatusResponseTest.java | 10 +-- .../message/response/VersionResponseTest.java | 4 +- .../podinfo/PodInfoActiveAlertsTest.java | 2 +- .../response/podinfo/PodInfoDataLogTest.java | 4 +- .../podinfo/PodInfoDetailedStatusTest.java | 10 +-- ...PodInfoFaultAndInitializationTimeTest.java | 4 +- .../podinfo/PodInfoOlderPulseLogTest.java | 5 ++ .../podinfo/PodInfoRecentPulseLogTest.java | 2 +- .../response/podinfo/PodInfoResponseTest.java | 4 +- .../driver/definition/AlertSetTest.java | 2 +- .../schedule/BasalScheduleTest.java | 2 +- .../{ => eros}/driver/util/TimeUtilTest.java | 2 +- .../manager/AapsPodStateManagerTest.java | 9 +- 208 files changed, 810 insertions(+), 809 deletions(-) delete mode 100644 omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetStatusAction.java delete mode 100644 omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/OmnipodAction.java delete mode 100644 omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/IRawRepresentable.java delete mode 100644 omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/DeliverySchedule.java rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/OmnipodPumpPlugin.java (94%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/dagger/OmnipodInjectHelpers.kt (94%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/dagger/OmnipodModule.kt (57%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/dagger/OmnipodWizardModule.kt (65%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/data/ActiveBolus.java (98%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/data/RLHistoryItemOmnipod.java (87%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/definition/OmnipodCommandType.java (95%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/definition/OmnipodStorageKeys.java (97%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/definition/PodHistoryEntryType.java (98%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/AcknowledgeAlertsAction.java (63%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/AssignAddressAction.java (72%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/BolusAction.java (70%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/CancelDeliveryAction.java (60%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/ConfigureAlertsAction.java (73%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/ConfigureBeepAction.java (75%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/DeactivatePodAction.java (62%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/GetPodInfoAction.java (57%) create mode 100644 omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/GetStatusAction.java rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/InsertCannulaAction.java (78%) create mode 100644 omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/OmnipodAction.java rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/PrimeAction.java (75%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/SetBasalScheduleAction.java (69%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/SetTempBasalAction.java (65%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/SetupPodAction.java (65%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/service/ExpirationReminderBuilder.java (82%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/action/service/PrimeService.java (57%) create mode 100644 omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/IRawRepresentable.java rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/MessageBlock.java (82%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/NonceResyncableMessageBlock.java (63%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/OmnipodMessage.java (84%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/OmnipodPacket.java (86%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/AcknowledgeAlertsCommand.java (70%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/AssignAddressCommand.java (66%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/BasalScheduleExtraCommand.java (89%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/BeepConfigCommand.java (85%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/BolusExtraCommand.java (89%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/CancelDeliveryCommand.java (79%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/ConfigureAlertsCommand.java (74%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/DeactivatePodCommand.java (71%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/FaultConfigCommand.java (78%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/GetStatusCommand.java (59%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/SetInsulinScheduleCommand.java (75%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/SetupPodCommand.java (84%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/TempBasalExtraCommand.java (88%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/ErrorResponse.java (80%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/StatusResponse.java (86%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/StatusUpdatableResponse.java (51%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/VersionResponse.java (88%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfo.java (57%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java (86%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoDataLog.java (89%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java (87%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java (85%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java (87%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java (89%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoResponse.java (71%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/ActivationProgress.java (94%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/AlertConfiguration.java (97%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/AlertSet.java (95%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/AlertSlot.java (89%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/AlertTrigger.java (80%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/AlertType.java (72%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/BeepConfigType.java (93%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/BeepRepeat.java (87%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/BeepType.java (91%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/DeliveryStatus.java (91%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/DeliveryType.java (87%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/ErrorEventInfo.java (96%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/FaultEventCode.java (98%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/FirmwareVersion.java (88%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/MessageBlockType.java (70%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/OmnipodConstants.java (95%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/OmnipodCrc.java (98%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/PacketType.java (91%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/PodInfoType.java (66%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/PodProgressStatus.java (96%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/TimerAlertTrigger.java (68%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/UnitsRemainingAlertTrigger.java (65%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/schedule/BasalDeliverySchedule.java (91%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/schedule/BasalDeliveryTable.java (95%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/schedule/BasalSchedule.java (98%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/schedule/BasalScheduleEntry.java (90%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/schedule/BasalTableEntry.java (88%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/schedule/BolusDeliverySchedule.java (86%) create mode 100644 omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/DeliverySchedule.java rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/schedule/InsulinScheduleType.java (84%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/schedule/RateEntry.java (88%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/schedule/TempBasalDeliverySchedule.java (91%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/ActivationTimeExceededException.java (71%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java (74%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/CrcMismatchException.java (86%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/IllegalActivationProgressException.java (78%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/IllegalDeliveryStatusException.java (77%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/IllegalMessageAddressException.java (86%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/IllegalMessageSequenceNumberException.java (86%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/IllegalPacketTypeException.java (77%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/IllegalPodProgressException.java (77%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/IllegalResponseException.java (79%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/IllegalVersionResponseTypeException.java (77%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/MessageDecodingException.java (77%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/NonceOutOfSyncException.java (66%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/NonceResyncException.java (65%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/NotEnoughDataException.java (82%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/OmnipodException.java (88%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/PodFaultException.java (65%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/PodProgressStatusVerificationFailedException.java (73%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/PodReturnedErrorResponseException.java (67%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/PrecedingCommandFailedUncertainlyException.java (73%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/RileyLinkInterruptedException.java (68%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/RileyLinkTimeoutException.java (78%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/RileyLinkUnexpectedException.java (73%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/exception/RileyLinkUnreachableException.java (76%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/manager/OmnipodManager.java (87%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/manager/PodStateManager.java (96%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/util/AlertConfigurationUtil.java (73%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/util/TimeUtil.java (89%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/event/EventOmnipodActiveAlertsChanged.kt (67%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/event/EventOmnipodFaultEventChanged.kt (66%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/event/EventOmnipodPumpValuesChanged.kt (66%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/event/EventOmnipodTbrChanged.kt (65%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/event/EventOmnipodUncertainTbrRecovered.kt (67%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/manager/AapsOmnipodManager.java (91%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/manager/AapsPodStateManager.java (71%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/queue/command/CommandAcknowledgeAlerts.java (70%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/queue/command/CommandDeactivatePod.java (69%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/queue/command/CommandGetPodStatus.java (69%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/queue/command/CommandHandleTimeChange.java (83%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/queue/command/CommandPlayTestBeep.java (66%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/queue/command/CommandReadPulseLog.java (69%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/queue/command/CommandResumeDelivery.java (69%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/queue/command/CommandSuspendDelivery.java (70%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/queue/command/CommandUpdateAlertConfiguration.java (73%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/queue/command/OmnipodCustomCommand.java (87%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/queue/command/OmnipodCustomCommandType.java (89%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/rileylink/manager/OmnipodRileyLinkCommunicationManager.java (85%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/rileylink/service/RileyLinkOmnipodService.java (91%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/OmnipodOverviewFragment.kt (95%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/PodHistoryActivity.java (98%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/PodManagementActivity.kt (91%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/activation/PodActivationWizardActivity.kt (82%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/activation/fragment/AttachPodInfoFragment.kt (88%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/activation/fragment/FillPodInfoFragment.kt (73%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/activation/fragment/InitializePodActionFragment.kt (77%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt (77%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt (72%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt (72%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt (51%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt (60%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/common/activity/OmnipodWizardActivityBase.kt (93%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/common/fragment/ActionFragmentBase.kt (94%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/common/fragment/InfoFragmentBase.kt (88%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/common/fragment/WizardFragmentBase.kt (93%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/common/viewmodel/ActionViewModelBase.kt (92%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/deactivation/PodDeactivationWizardActivity.kt (69%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt (83%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt (74%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt (72%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt (72%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt (67%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/util/AapsOmnipodUtil.java (88%) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/util/OmnipodAlertUtil.java (79%) delete mode 100644 omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommandTest.java delete mode 100644 omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/OmnipodPumpPluginTest.java (94%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/AapsOmnipodManagerTest.java (93%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/AcknowledgeAlertsCommandTest.java (77%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/AssignAddressCommandTest.java (83%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/BasalScheduleExtraCommandTest.java (95%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/BeepConfigCommandTest.java (83%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/BolusExtraCommandTest.java (96%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/CancelDeliveryCommandTest.java (84%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/ConfigureAlertsCommandTest.java (82%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/DeactivatePodCommandTest.java (74%) create mode 100644 omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/FaultConfigCommandTest.java rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/GetStatusCommandTest.java (83%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/SetInsulinScheduleCommandTest.java (96%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/SetupPodCommandTest.java (88%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/command/TempBasalExtraCommandTest.java (97%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/defs/schedule/BasalTableEntryTest.java (70%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/ErrorResponseTest.java (86%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/StatusResponseTest.java (91%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/VersionResponseTest.java (94%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java (93%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoDataLogTest.java (81%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java (95%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java (86%) create mode 100644 omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java (87%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/communication/message/response/podinfo/PodInfoResponseTest.java (91%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/AlertSetTest.java (88%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/definition/schedule/BasalScheduleTest.java (98%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/driver/util/TimeUtilTest.java (95%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => eros}/manager/AapsPodStateManagerTest.java (90%) diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppComponent.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppComponent.kt index 1ec7d8b22a..e45e5ae42d 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppComponent.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppComponent.kt @@ -11,7 +11,7 @@ import info.nightscout.androidaps.danar.di.DanaRModule import info.nightscout.androidaps.danars.di.DanaRSModule import info.nightscout.androidaps.database.DatabaseModule import info.nightscout.androidaps.plugins.pump.common.dagger.RileyLinkModule -import info.nightscout.androidaps.plugins.pump.omnipod.dagger.OmnipodModule +import info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger.OmnipodModule import javax.inject.Singleton @Singleton diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt index c7cfec45eb..3424fc9872 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt @@ -36,7 +36,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyL import info.nightscout.androidaps.plugins.pump.insight.LocalInsightFragment import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicFragment import info.nightscout.androidaps.plugins.pump.medtronic.dialog.RileyLinkStatusDeviceMedtronic -import info.nightscout.androidaps.plugins.pump.omnipod.ui.OmnipodOverviewFragment +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.OmnipodOverviewFragment import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpFragment import info.nightscout.androidaps.plugins.source.BGSourceFragment import info.nightscout.androidaps.plugins.treatments.TreatmentsFragment diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/PluginsModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/PluginsModule.kt index 64b6353413..287ac11e99 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/PluginsModule.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/PluginsModule.kt @@ -42,7 +42,7 @@ import info.nightscout.androidaps.plugins.pump.combo.ComboPlugin import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin import info.nightscout.androidaps.plugins.pump.mdi.MDIPlugin import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin -import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ServicesModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ServicesModule.kt index 856ae3c106..50f8695bf9 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ServicesModule.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ServicesModule.kt @@ -10,7 +10,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.Riley import info.nightscout.androidaps.plugins.pump.insight.InsightAlertService import info.nightscout.androidaps.plugins.pump.insight.connection_service.InsightConnectionService import info.nightscout.androidaps.plugins.pump.medtronic.service.RileyLinkMedtronicService -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.service.RileyLinkOmnipodService +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.service.RileyLinkOmnipodService import info.nightscout.androidaps.services.AlarmSoundService import info.nightscout.androidaps.services.LocationService diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt index 8eeb10429a..84a34e1ccd 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt @@ -26,7 +26,7 @@ import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction import info.nightscout.androidaps.plugins.general.overview.StatusLightHandler -import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.skins.SkinProvider import info.nightscout.androidaps.utils.FabricPrivacy diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt index 38cf5c815b..b3a5fe952f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt @@ -9,8 +9,8 @@ import info.nightscout.androidaps.R import info.nightscout.androidaps.db.CareportalEvent import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.plugins.pump.common.defs.PumpType -import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants import info.nightscout.androidaps.utils.DecimalFormatter import info.nightscout.androidaps.utils.WarnColors import info.nightscout.androidaps.utils.resources.ResourceHelper diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.kt b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.kt index f2604264c5..fa8fc38b79 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.kt +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.kt @@ -27,7 +27,7 @@ import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin import info.nightscout.androidaps.plugins.profile.ns.NSProfileFragment import info.nightscout.androidaps.plugins.profile.ns.NSProfilePlugin import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange -import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin import info.nightscout.androidaps.setupwizard.elements.* import info.nightscout.androidaps.setupwizard.events.EventSWUpdate import info.nightscout.androidaps.utils.AndroidPermission diff --git a/omnipod-eros/src/main/AndroidManifest.xml b/omnipod-eros/src/main/AndroidManifest.xml index 4c8d3b5305..011cd8a01f 100644 --- a/omnipod-eros/src/main/AndroidManifest.xml +++ b/omnipod-eros/src/main/AndroidManifest.xml @@ -3,13 +3,13 @@ - - - - + + + + \ No newline at end of file diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetStatusAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetStatusAction.java deleted file mode 100644 index 27d1f3a129..0000000000 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetStatusAction.java +++ /dev/null @@ -1,23 +0,0 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; - -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.GetStatusCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; - -public class GetStatusAction implements OmnipodAction { - private final PodStateManager podStateManager; - - public GetStatusAction(PodStateManager podState) { - if (podState == null) { - throw new IllegalArgumentException("Pod state manager cannot be null"); - } - this.podStateManager = podState; - } - - @Override - public StatusResponse execute(OmnipodRileyLinkCommunicationManager communicationService) { - return communicationService.sendCommand(StatusResponse.class, podStateManager, new GetStatusCommand(PodInfoType.NORMAL)); - } -} diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/OmnipodAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/OmnipodAction.java deleted file mode 100644 index e979297a15..0000000000 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/OmnipodAction.java +++ /dev/null @@ -1,7 +0,0 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; - -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; - -public interface OmnipodAction { - T execute(OmnipodRileyLinkCommunicationManager communicationService); -} diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/IRawRepresentable.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/IRawRepresentable.java deleted file mode 100644 index 5d706e5087..0000000000 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/IRawRepresentable.java +++ /dev/null @@ -1,5 +0,0 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message; - -public interface IRawRepresentable { - byte[] getRawData(); -} diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/DeliverySchedule.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/DeliverySchedule.java deleted file mode 100644 index c5cc98ccad..0000000000 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/DeliverySchedule.java +++ /dev/null @@ -1,10 +0,0 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule; - -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.IRawRepresentable; - -public abstract class DeliverySchedule implements IRawRepresentable { - - public abstract InsulinScheduleType getType(); - - public abstract int getChecksum(); -} diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPlugin.java similarity index 94% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPlugin.java index bd91e28573..835dd527b0 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPlugin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod; +package info.nightscout.androidaps.plugins.pump.omnipod.eros; import android.content.ComponentName; import android.content.Context; @@ -66,35 +66,36 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpInfo; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData; import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.data.ActiveBolus; -import info.nightscout.androidaps.plugins.pump.omnipod.data.RLHistoryItemOmnipod; -import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodCommandType; -import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodStorageKeys; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.service.ExpirationReminderBuilder; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoRecentPulseLog; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ActivationProgress; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertConfiguration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSet; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.util.TimeUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodActiveAlertsChanged; -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodFaultEventChanged; -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodPumpValuesChanged; -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodTbrChanged; -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodUncertainTbrRecovered; -import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager; -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandAcknowledgeAlerts; -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandHandleTimeChange; -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandPlayTestBeep; -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandUpdateAlertConfiguration; -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.OmnipodCustomCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.OmnipodCustomCommandType; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.service.RileyLinkOmnipodService; -import info.nightscout.androidaps.plugins.pump.omnipod.ui.OmnipodOverviewFragment; -import info.nightscout.androidaps.plugins.pump.omnipod.util.AapsOmnipodUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodAlertUtil; +import info.nightscout.androidaps.plugins.pump.omnipod.R; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.data.ActiveBolus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.data.RLHistoryItemOmnipod; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.OmnipodCommandType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.OmnipodStorageKeys; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.service.ExpirationReminderBuilder; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoRecentPulseLog; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSet; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.util.TimeUtil; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodActiveAlertsChanged; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodFaultEventChanged; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodPumpValuesChanged; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodTbrChanged; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodUncertainTbrRecovered; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandAcknowledgeAlerts; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandHandleTimeChange; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandPlayTestBeep; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandUpdateAlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.OmnipodCustomCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.OmnipodCustomCommandType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.service.RileyLinkOmnipodService; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.OmnipodOverviewFragment; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.util.AapsOmnipodUtil; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.util.OmnipodAlertUtil; import info.nightscout.androidaps.queue.Callback; import info.nightscout.androidaps.queue.commands.CustomCommand; import info.nightscout.androidaps.utils.DateUtil; @@ -107,7 +108,7 @@ import info.nightscout.androidaps.utils.rx.AapsSchedulers; import info.nightscout.androidaps.utils.sharedPreferences.SP; import io.reactivex.disposables.CompositeDisposable; -import static info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants.BASAL_STEP_DURATION; +import static info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants.BASAL_STEP_DURATION; /** * Created by andy on 23.04.18. diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodInjectHelpers.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodInjectHelpers.kt similarity index 94% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodInjectHelpers.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodInjectHelpers.kt index cd932bad82..5228907c01 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodInjectHelpers.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodInjectHelpers.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.dagger +package info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodModule.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodModule.kt similarity index 57% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodModule.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodModule.kt index fd2b49ae1c..fd9c3def50 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodModule.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodModule.kt @@ -1,16 +1,16 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.dagger +package info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger import dagger.Module import dagger.Provides import dagger.android.ContributesAndroidInjector -import info.nightscout.androidaps.plugins.pump.omnipod.data.RLHistoryItemOmnipod -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager -import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsPodStateManager -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager -import info.nightscout.androidaps.plugins.pump.omnipod.ui.PodHistoryActivity -import info.nightscout.androidaps.plugins.pump.omnipod.ui.PodManagementActivity -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.PodActivationWizardActivity -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.PodDeactivationWizardActivity +import info.nightscout.androidaps.plugins.pump.omnipod.eros.data.RLHistoryItemOmnipod +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsPodStateManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.PodHistoryActivity +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.PodManagementActivity +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.PodActivationWizardActivity +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.PodDeactivationWizardActivity @Module @Suppress("unused") diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodWizardModule.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodWizardModule.kt similarity index 65% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodWizardModule.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodWizardModule.kt index 338534da78..c69c769a7a 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dagger/OmnipodWizardModule.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodWizardModule.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.dagger +package info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider @@ -7,18 +7,18 @@ import dagger.Module import dagger.Provides import dagger.android.ContributesAndroidInjector import dagger.multibindings.IntoMap -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.fragment.AttachPodInfoFragment -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.fragment.FillPodInfoFragment -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.fragment.InitializePodActionFragment -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.fragment.InsertCannulaActionFragment -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.fragment.PodActivatedInfoFragment -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.viewmodel.InitializePodActionViewModel -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.viewmodel.InsertCannulaActionViewModel -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.fragment.DeactivatePodActionFragment -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.fragment.DeactivatePodInfoFragment -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.fragment.PodDeactivatedInfoFragment -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.fragment.PodDiscardedInfoFragment -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.viewmodel.DeactivatePodActionViewModel +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.fragment.AttachPodInfoFragment +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.fragment.FillPodInfoFragment +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.fragment.InitializePodActionFragment +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.fragment.InsertCannulaActionFragment +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.fragment.PodActivatedInfoFragment +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.InitializePodActionViewModel +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.InsertCannulaActionViewModel +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.fragment.DeactivatePodActionFragment +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.fragment.DeactivatePodInfoFragment +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.fragment.PodDeactivatedInfoFragment +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.fragment.PodDiscardedInfoFragment +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.viewmodel.DeactivatePodActionViewModel import javax.inject.Provider @Module diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/ActiveBolus.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/data/ActiveBolus.java similarity index 98% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/ActiveBolus.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/data/ActiveBolus.java index 481c78157b..171685878b 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/ActiveBolus.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/data/ActiveBolus.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.data; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.data; import org.apache.commons.lang3.StringUtils; import org.json.JSONException; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/RLHistoryItemOmnipod.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/data/RLHistoryItemOmnipod.java similarity index 87% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/RLHistoryItemOmnipod.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/data/RLHistoryItemOmnipod.java index fee331d4ac..cf1df3e683 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/data/RLHistoryItemOmnipod.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/data/RLHistoryItemOmnipod.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.data; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.data; import org.joda.time.LocalDateTime; @@ -7,7 +7,7 @@ import javax.inject.Inject; import dagger.android.HasAndroidInjector; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.RLHistoryItem; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice; -import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodCommandType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.OmnipodCommandType; import info.nightscout.androidaps.utils.resources.ResourceHelper; public class RLHistoryItemOmnipod extends RLHistoryItem { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodCommandType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodCommandType.java similarity index 95% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodCommandType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodCommandType.java index c6a20bb874..c1a5ff660a 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodCommandType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodCommandType.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.definition; import info.nightscout.androidaps.plugins.pump.omnipod.R; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodStorageKeys.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodStorageKeys.java similarity index 97% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodStorageKeys.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodStorageKeys.java index 31070835d2..f1aeebcbcc 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/OmnipodStorageKeys.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodStorageKeys.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.definition; import info.nightscout.androidaps.plugins.pump.omnipod.R; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/PodHistoryEntryType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/PodHistoryEntryType.java similarity index 98% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/PodHistoryEntryType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/PodHistoryEntryType.java index b367b7476c..d89e287fdd 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/definition/PodHistoryEntryType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/PodHistoryEntryType.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.definition; import androidx.annotation.StringRes; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AcknowledgeAlertsAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/AcknowledgeAlertsAction.java similarity index 63% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AcknowledgeAlertsAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/AcknowledgeAlertsAction.java index 5b6da7d781..6252d6db56 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AcknowledgeAlertsAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/AcknowledgeAlertsAction.java @@ -1,13 +1,13 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; import java.util.Collections; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.AcknowledgeAlertsCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSet; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSlot; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.AcknowledgeAlertsCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSet; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSlot; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class AcknowledgeAlertsAction implements OmnipodAction { private final PodStateManager podStateManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AssignAddressAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/AssignAddressAction.java similarity index 72% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AssignAddressAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/AssignAddressAction.java index fb1127cecc..2d615177de 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/AssignAddressAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/AssignAddressAction.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; import org.joda.time.DateTimeZone; @@ -6,16 +6,16 @@ import java.util.Collections; import java.util.Random; import info.nightscout.androidaps.logging.AAPSLogger; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.AssignAddressCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.VersionResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PacketType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageAddressException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPacketTypeException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalVersionResponseTypeException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.OmnipodMessage; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.AssignAddressCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.VersionResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PacketType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalMessageAddressException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalPacketTypeException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalVersionResponseTypeException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class AssignAddressAction implements OmnipodAction { private final PodStateManager podStateManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/BolusAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/BolusAction.java similarity index 70% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/BolusAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/BolusAction.java index b58935eeb5..465a68a9ca 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/BolusAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/BolusAction.java @@ -1,16 +1,16 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; import org.joda.time.Duration; import java.util.Arrays; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.BolusExtraCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.SetInsulinScheduleCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BolusDeliverySchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.OmnipodMessage; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.BolusExtraCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.SetInsulinScheduleCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BolusDeliverySchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class BolusAction implements OmnipodAction { private final PodStateManager podStateManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/CancelDeliveryAction.java similarity index 60% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/CancelDeliveryAction.java index ffce09d903..5140edf673 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/CancelDeliveryAction.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; import org.joda.time.Duration; @@ -6,16 +6,16 @@ import java.util.ArrayList; import java.util.EnumSet; import java.util.List; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.BeepConfigCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.CancelDeliveryCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepConfigType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.OmnipodMessage; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.BeepConfigCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.CancelDeliveryCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepConfigType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class CancelDeliveryAction implements OmnipodAction { private final PodStateManager podStateManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureAlertsAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/ConfigureAlertsAction.java similarity index 73% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureAlertsAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/ConfigureAlertsAction.java index 345127e91e..39265c03a7 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureAlertsAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/ConfigureAlertsAction.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; import java.util.List; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.ConfigureAlertsCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertConfiguration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.ConfigureAlertsCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class ConfigureAlertsAction implements OmnipodAction { private final PodStateManager podStateManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureBeepAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/ConfigureBeepAction.java similarity index 75% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureBeepAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/ConfigureBeepAction.java index e5c0e0dbb4..b8b8914256 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/ConfigureBeepAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/ConfigureBeepAction.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; import org.joda.time.Duration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.BeepConfigCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepConfigType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.BeepConfigCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepConfigType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class ConfigureBeepAction implements OmnipodAction { private final PodStateManager podStateManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/DeactivatePodAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/DeactivatePodAction.java similarity index 62% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/DeactivatePodAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/DeactivatePodAction.java index 266396d6e4..2170a43e20 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/DeactivatePodAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/DeactivatePodAction.java @@ -1,13 +1,13 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; import java.util.EnumSet; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.DeactivatePodCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodFaultException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.DeactivatePodCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.PodFaultException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class DeactivatePodAction implements OmnipodAction { private final PodStateManager podStateManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetPodInfoAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/GetPodInfoAction.java similarity index 57% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetPodInfoAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/GetPodInfoAction.java index 217c768a78..399309b4f7 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/GetPodInfoAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/GetPodInfoAction.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.GetStatusCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.GetStatusCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class GetPodInfoAction implements OmnipodAction { private final PodStateManager podStateManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/GetStatusAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/GetStatusAction.java new file mode 100644 index 0000000000..9cb087e328 --- /dev/null +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/GetStatusAction.java @@ -0,0 +1,23 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; + +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.GetStatusCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; + +public class GetStatusAction implements OmnipodAction { + private final PodStateManager podStateManager; + + public GetStatusAction(PodStateManager podState) { + if (podState == null) { + throw new IllegalArgumentException("Pod state manager cannot be null"); + } + this.podStateManager = podState; + } + + @Override + public StatusResponse execute(OmnipodRileyLinkCommunicationManager communicationService) { + return communicationService.sendCommand(StatusResponse.class, podStateManager, new GetStatusCommand(PodInfoType.NORMAL)); + } +} diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/InsertCannulaAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/InsertCannulaAction.java similarity index 78% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/InsertCannulaAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/InsertCannulaAction.java index a6fdd139d9..994d3a8d07 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/InsertCannulaAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/InsertCannulaAction.java @@ -1,18 +1,18 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; import org.joda.time.Duration; import java.util.List; import java.util.Optional; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.service.ExpirationReminderBuilder; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ActivationProgress; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertConfiguration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalActivationProgressException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.service.ExpirationReminderBuilder; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalSchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalActivationProgressException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class InsertCannulaAction implements OmnipodAction { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/OmnipodAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/OmnipodAction.java new file mode 100644 index 0000000000..8d717585b2 --- /dev/null +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/OmnipodAction.java @@ -0,0 +1,7 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; + +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; + +public interface OmnipodAction { + T execute(OmnipodRileyLinkCommunicationManager communicationService); +} diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/PrimeAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/PrimeAction.java similarity index 75% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/PrimeAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/PrimeAction.java index c1269e3e39..582df47447 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/PrimeAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/PrimeAction.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.service.PrimeService; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ActivationProgress; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalActivationProgressException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.service.PrimeService; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalActivationProgressException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class PrimeAction implements OmnipodAction { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetBasalScheduleAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/SetBasalScheduleAction.java similarity index 69% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetBasalScheduleAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/SetBasalScheduleAction.java index 4b35bb781c..a96d2c0853 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetBasalScheduleAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/SetBasalScheduleAction.java @@ -1,16 +1,16 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; import org.joda.time.Duration; import java.util.Arrays; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.BasalScheduleExtraCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.SetInsulinScheduleCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.OmnipodMessage; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.BasalScheduleExtraCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.SetInsulinScheduleCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalSchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class SetBasalScheduleAction implements OmnipodAction { private final PodStateManager podStateManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetTempBasalAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/SetTempBasalAction.java similarity index 65% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetTempBasalAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/SetTempBasalAction.java index e33de1f8c5..e26a2d803b 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetTempBasalAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/SetTempBasalAction.java @@ -1,17 +1,17 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; import org.joda.time.Duration; import java.util.Arrays; import java.util.List; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.SetInsulinScheduleCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.TempBasalExtraCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.OmnipodMessage; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.SetInsulinScheduleCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.TempBasalExtraCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class SetTempBasalAction implements OmnipodAction { private final PodStateManager podStateManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetupPodAction.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/SetupPodAction.java similarity index 65% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetupPodAction.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/SetupPodAction.java index 8cb2a1ddde..5188210bca 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/SetupPodAction.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/SetupPodAction.java @@ -1,23 +1,23 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action; import org.joda.time.DateTime; import java.util.Collections; import info.nightscout.androidaps.logging.AAPSLogger; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.SetupPodCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.VersionResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ActivationProgress; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PacketType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageAddressException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPacketTypeException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPodProgressException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalVersionResponseTypeException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.OmnipodMessage; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.SetupPodCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.VersionResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PacketType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalMessageAddressException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalPacketTypeException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalPodProgressException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalVersionResponseTypeException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class SetupPodAction implements OmnipodAction { private final PodStateManager podStateManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/ExpirationReminderBuilder.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/service/ExpirationReminderBuilder.java similarity index 82% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/ExpirationReminderBuilder.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/service/ExpirationReminderBuilder.java index 0c39fefd99..3e208d87ba 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/ExpirationReminderBuilder.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/service/ExpirationReminderBuilder.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.service; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.service; import org.joda.time.DateTime; import org.joda.time.Duration; @@ -8,11 +8,11 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertConfiguration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSlot; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.util.AlertConfigurationUtil; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSlot; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.util.AlertConfigurationUtil; public final class ExpirationReminderBuilder { private final Map alerts = new HashMap<>(); diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/PrimeService.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/service/PrimeService.java similarity index 57% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/PrimeService.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/service/PrimeService.java index ed75d439be..e5973ca1e9 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/service/PrimeService.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/action/service/PrimeService.java @@ -1,19 +1,19 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.service; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.service; import org.joda.time.Duration; import java.util.Collections; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.BolusAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.ConfigureAlertsAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.FaultConfigCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertConfiguration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.util.AlertConfigurationUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.BolusAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.ConfigureAlertsAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.OmnipodMessage; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.FaultConfigCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.util.AlertConfigurationUtil; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; public class PrimeService { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/IRawRepresentable.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/IRawRepresentable.java new file mode 100644 index 0000000000..6bab6350f5 --- /dev/null +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/IRawRepresentable.java @@ -0,0 +1,5 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message; + +public interface IRawRepresentable { + byte[] getRawData(); +} diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/MessageBlock.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/MessageBlock.java similarity index 82% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/MessageBlock.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/MessageBlock.java index 8cfb0277f2..1853570ae0 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/MessageBlock.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/MessageBlock.java @@ -1,9 +1,9 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message; import java.io.ByteArrayOutputStream; import java.io.IOException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; public abstract class MessageBlock { protected byte[] encodedData = new byte[0]; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/NonceResyncableMessageBlock.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/NonceResyncableMessageBlock.java similarity index 63% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/NonceResyncableMessageBlock.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/NonceResyncableMessageBlock.java index 7aad28e522..69248e06c8 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/NonceResyncableMessageBlock.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/NonceResyncableMessageBlock.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message; public abstract class NonceResyncableMessageBlock extends MessageBlock { public abstract int getNonce(); diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/OmnipodMessage.java similarity index 84% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/OmnipodMessage.java index bd30bf82a6..e289d9b76b 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/OmnipodMessage.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message; import java.util.ArrayList; import java.util.EnumSet; @@ -7,16 +7,16 @@ import java.util.List; import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.CancelDeliveryCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.GetStatusCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodCrc; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PacketType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CrcMismatchException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.MessageDecodingException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NotEnoughDataException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.CancelDeliveryCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.GetStatusCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodCrc; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PacketType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.CrcMismatchException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.MessageDecodingException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.NotEnoughDataException; public class OmnipodMessage { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodPacket.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/OmnipodPacket.java similarity index 86% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodPacket.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/OmnipodPacket.java index 34f28c0d3b..4d4d6d7d77 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodPacket.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/OmnipodPacket.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RLMessage; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodCrc; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PacketType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CrcMismatchException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPacketTypeException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodCrc; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PacketType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.CrcMismatchException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalPacketTypeException; /** * Created by andy on 6/1/18. diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AcknowledgeAlertsCommand.java similarity index 70% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AcknowledgeAlertsCommand.java index b46ee8cc73..1f11a10f92 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AcknowledgeAlertsCommand.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import java.util.Collections; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.NonceResyncableMessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSet; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSlot; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.NonceResyncableMessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSet; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSlot; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; public class AcknowledgeAlertsCommand extends NonceResyncableMessageBlock { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AssignAddressCommand.java similarity index 66% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AssignAddressCommand.java index 4c0951e1b7..72ac2f4f89 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AssignAddressCommand.java @@ -1,9 +1,9 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import java.nio.ByteBuffer; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; public class AssignAddressCommand extends MessageBlock { private final int address; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BasalScheduleExtraCommand.java similarity index 89% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BasalScheduleExtraCommand.java index 8021fbfd8f..e9ca5f916e 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BasalScheduleExtraCommand.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.Duration; @@ -6,11 +6,11 @@ import java.util.ArrayList; import java.util.List; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.RateEntry; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalSchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.RateEntry; public class BasalScheduleExtraCommand extends MessageBlock { private final boolean acknowledgementBeep; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BeepConfigCommand.java similarity index 85% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BeepConfigCommand.java index 47cf4533ba..a05a7563f0 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BeepConfigCommand.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.Duration; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepConfigType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepConfigType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; public class BeepConfigCommand extends MessageBlock { private final BeepConfigType beepType; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BolusExtraCommand.java similarity index 89% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BolusExtraCommand.java index 6ec315aa16..18fcd7b740 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BolusExtraCommand.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.Duration; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; public class BolusExtraCommand extends MessageBlock { private final boolean acknowledgementBeep; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/CancelDeliveryCommand.java similarity index 79% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/CancelDeliveryCommand.java index be8f09230f..82066bf4b7 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/CancelDeliveryCommand.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import java.util.EnumSet; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.NonceResyncableMessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.NonceResyncableMessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; public class CancelDeliveryCommand extends NonceResyncableMessageBlock { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/ConfigureAlertsCommand.java similarity index 74% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/ConfigureAlertsCommand.java index f247174a45..86fdc6c062 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/ConfigureAlertsCommand.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import java.util.List; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.NonceResyncableMessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertConfiguration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.NonceResyncableMessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; public class ConfigureAlertsCommand extends NonceResyncableMessageBlock { private final List configurations; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/DeactivatePodCommand.java similarity index 71% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/DeactivatePodCommand.java index 67f50d0587..853e0520a0 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/DeactivatePodCommand.java @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.NonceResyncableMessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.NonceResyncableMessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; public class DeactivatePodCommand extends NonceResyncableMessageBlock { private int nonce; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/FaultConfigCommand.java similarity index 78% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/FaultConfigCommand.java index d09ce97702..0c4ae4cfd0 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/FaultConfigCommand.java @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.NonceResyncableMessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.NonceResyncableMessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; public class FaultConfigCommand extends NonceResyncableMessageBlock { private final byte tab5sub16; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/GetStatusCommand.java similarity index 59% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/GetStatusCommand.java index d8664e4145..e8694f83d3 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/GetStatusCommand.java @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; public class GetStatusCommand extends MessageBlock { private final PodInfoType podInfoType; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetInsulinScheduleCommand.java similarity index 75% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetInsulinScheduleCommand.java index c9089559cb..68195c839e 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetInsulinScheduleCommand.java @@ -1,17 +1,17 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.Duration; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.NonceResyncableMessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalDeliverySchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalDeliveryTable; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BolusDeliverySchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.DeliverySchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.TempBasalDeliverySchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.NonceResyncableMessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalDeliverySchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalDeliveryTable; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalSchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BolusDeliverySchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.DeliverySchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.TempBasalDeliverySchedule; public class SetInsulinScheduleCommand extends NonceResyncableMessageBlock { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetupPodCommand.java similarity index 84% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetupPodCommand.java index da383db564..689e7be301 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetupPodCommand.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.DateTime; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; public class SetupPodCommand extends MessageBlock { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/TempBasalExtraCommand.java similarity index 88% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/TempBasalExtraCommand.java index 8f5cf5053b..0a25712e56 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/TempBasalExtraCommand.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.Duration; @@ -6,10 +6,10 @@ import java.util.ArrayList; import java.util.List; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.RateEntry; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.RateEntry; public class TempBasalExtraCommand extends MessageBlock { private final boolean acknowledgementBeep; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponse.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/ErrorResponse.java similarity index 80% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponse.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/ErrorResponse.java index 58f68ca6fd..dc70160bed 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponse.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/ErrorResponse.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FaultEventCode; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FaultEventCode; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; public class ErrorResponse extends MessageBlock { public static final byte ERROR_RESPONSE_CODE_BAD_NONCE = (byte) 0x14; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponse.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/StatusResponse.java similarity index 86% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponse.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/StatusResponse.java index 5976d80a97..a844b52862 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponse.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/StatusResponse.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response; import org.joda.time.Duration; @@ -6,12 +6,12 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSet; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSet; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; public class StatusResponse extends MessageBlock implements StatusUpdatableResponse { private static final int MESSAGE_LENGTH = 10; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusUpdatableResponse.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/StatusUpdatableResponse.java similarity index 51% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusUpdatableResponse.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/StatusUpdatableResponse.java index 4dee2127fc..799a484296 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusUpdatableResponse.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/StatusUpdatableResponse.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response; import org.joda.time.Duration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSet; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSet; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; public interface StatusUpdatableResponse { DeliveryStatus getDeliveryStatus(); diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponse.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/VersionResponse.java similarity index 88% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponse.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/VersionResponse.java index e406715d2d..374f69d0cb 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponse.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/VersionResponse.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FirmwareVersion; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FirmwareVersion; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; public class VersionResponse extends MessageBlock { private static final int ASSIGN_ADDRESS_VERSION_RESPONSE_LENGTH = 0x15; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfo.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfo.java similarity index 57% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfo.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfo.java index 4a65b678cb..df05f5663c 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfo.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfo.java @@ -1,6 +1,6 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; public abstract class PodInfo { private final byte[] encodedData; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java similarity index 86% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java index 36e1b1a213..8ac03aa1a9 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoActiveAlerts.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import org.joda.time.Duration; @@ -6,9 +6,9 @@ import java.util.ArrayList; import java.util.List; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSlot; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSlot; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; public class PodInfoActiveAlerts extends PodInfo { private static final int MINIMUM_MESSAGE_LENGTH = 11; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLog.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDataLog.java similarity index 89% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLog.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDataLog.java index 0151a761af..aa2353df6f 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLog.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDataLog.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import org.joda.time.Duration; @@ -7,8 +7,8 @@ import java.util.Collections; import java.util.List; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FaultEventCode; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FaultEventCode; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; public class PodInfoDataLog extends PodInfo { private static final int MINIMUM_MESSAGE_LENGTH = 8; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java similarity index 87% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java index 0db5ed2b53..3a9dea9178 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDetailedStatus.java @@ -1,16 +1,16 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import org.joda.time.Duration; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusUpdatableResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSet; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ErrorEventInfo; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FaultEventCode; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusUpdatableResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSet; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ErrorEventInfo; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FaultEventCode; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; public class PodInfoDetailedStatus extends PodInfo implements StatusUpdatableResponse { private static final int MINIMUM_MESSAGE_LENGTH = 21; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java similarity index 85% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java index f96b00b909..ede5541db5 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTime.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import org.joda.time.DateTime; import org.joda.time.Duration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FaultEventCode; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FaultEventCode; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; public class PodInfoFaultAndInitializationTime extends PodInfo { private static final int MINIMUM_MESSAGE_LENGTH = 17; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java similarity index 87% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java index ae10eca820..b104fbc69d 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoOlderPulseLog.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import android.text.TextUtils; @@ -7,7 +7,7 @@ import java.util.Collections; import java.util.List; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; public class PodInfoOlderPulseLog extends PodInfo { private static final int MINIMUM_MESSAGE_LENGTH = 3; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java similarity index 89% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java index 00527a74f1..8ca80ffe22 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoRecentPulseLog.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import android.text.TextUtils; @@ -7,7 +7,7 @@ import java.util.Collections; import java.util.List; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; public class PodInfoRecentPulseLog extends PodInfo { private static final int MINIMUM_MESSAGE_LENGTH = 3; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponse.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoResponse.java similarity index 71% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponse.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoResponse.java index cee243c45f..20c2155477 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponse.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoResponse.java @@ -1,9 +1,9 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; public class PodInfoResponse extends MessageBlock { private final PodInfoType subType; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ActivationProgress.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/ActivationProgress.java similarity index 94% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ActivationProgress.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/ActivationProgress.java index 9db21f5e59..cf0f695740 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ActivationProgress.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/ActivationProgress.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; public enum ActivationProgress { NONE, diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertConfiguration.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertConfiguration.java similarity index 97% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertConfiguration.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertConfiguration.java index ab72fe323f..2432429f6a 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertConfiguration.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertConfiguration.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; import org.joda.time.Duration; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSet.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertSet.java similarity index 95% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSet.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertSet.java index 28c2268212..05ae2b34f5 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSet.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertSet.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; import java.util.ArrayList; import java.util.List; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSlot.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertSlot.java similarity index 89% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSlot.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertSlot.java index 194f5f940b..749a8652cf 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSlot.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertSlot.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; public enum AlertSlot { SLOT0((byte) 0x00), diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertTrigger.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertTrigger.java similarity index 80% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertTrigger.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertTrigger.java index 533c465919..26146f179e 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertTrigger.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertTrigger.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; public abstract class AlertTrigger { private final T value; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertType.java similarity index 72% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertType.java index e6cd161eb1..1161e2d6e3 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertType.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; public enum AlertType { FINISH_PAIRING_REMINDER, diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepConfigType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/BeepConfigType.java similarity index 93% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepConfigType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/BeepConfigType.java index 00f91a0af7..5a36bcbd21 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepConfigType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/BeepConfigType.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; // BeepConfigType is used only for the $1E Beep Config Command. diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepRepeat.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/BeepRepeat.java similarity index 87% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepRepeat.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/BeepRepeat.java index 3cf34bc247..a158c02988 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepRepeat.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/BeepRepeat.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; public enum BeepRepeat { ONCE((byte) 0x00), diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/BeepType.java similarity index 91% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/BeepType.java index 17bbc855b2..28751ed7cd 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/BeepType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/BeepType.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; // BeepType is used for the $19 Configure Alerts and $1F Cancel Commands public enum BeepType { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryStatus.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/DeliveryStatus.java similarity index 91% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryStatus.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/DeliveryStatus.java index 5987cb69a0..d99e41f989 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryStatus.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/DeliveryStatus.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; public enum DeliveryStatus { SUSPENDED((byte) 0x00), diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/DeliveryType.java similarity index 87% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/DeliveryType.java index b0e80105f4..4f93aa1b97 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/DeliveryType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/DeliveryType.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; public enum DeliveryType { NONE((byte) 0x00), diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ErrorEventInfo.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/ErrorEventInfo.java similarity index 96% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ErrorEventInfo.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/ErrorEventInfo.java index 2f3e064d36..2e4c4f9957 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/ErrorEventInfo.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/ErrorEventInfo.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FaultEventCode.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/FaultEventCode.java similarity index 98% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FaultEventCode.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/FaultEventCode.java index 0a42811848..bb55be0d51 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FaultEventCode.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/FaultEventCode.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; import java.util.Locale; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FirmwareVersion.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/FirmwareVersion.java similarity index 88% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FirmwareVersion.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/FirmwareVersion.java index a4ed7e2eea..6ea7cb332e 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/FirmwareVersion.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/FirmwareVersion.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; import java.util.Locale; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/MessageBlockType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/MessageBlockType.java similarity index 70% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/MessageBlockType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/MessageBlockType.java index 16002aa343..99285900a2 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/MessageBlockType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/MessageBlockType.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; import org.apache.commons.lang3.NotImplementedException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.ErrorResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.VersionResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.ErrorResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.VersionResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoResponse; public enum MessageBlockType { VERSION_RESPONSE(0x01), diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/OmnipodConstants.java similarity index 95% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/OmnipodConstants.java index 7dac90a207..e240a408cc 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/OmnipodConstants.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; import org.joda.time.Duration; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodCrc.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/OmnipodCrc.java similarity index 98% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodCrc.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/OmnipodCrc.java index ebc461ee9a..f38fbc4e00 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodCrc.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/OmnipodCrc.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; public class OmnipodCrc { public static final int[] crc16lookup = new int[]{ diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PacketType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/PacketType.java similarity index 91% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PacketType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/PacketType.java index cfc3bff947..cf10e67f09 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PacketType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/PacketType.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; public enum PacketType { INVALID((byte) 0), diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodInfoType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/PodInfoType.java similarity index 66% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodInfoType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/PodInfoType.java index 4198810aa1..4f5b2c70d3 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodInfoType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/PodInfoType.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfo; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoActiveAlerts; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoDataLog; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoDetailedStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoFaultAndInitializationTime; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoOlderPulseLog; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoRecentPulseLog; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfo; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoActiveAlerts; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoDataLog; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoDetailedStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoFaultAndInitializationTime; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoOlderPulseLog; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoRecentPulseLog; public enum PodInfoType { NORMAL((byte) 0x00), diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodProgressStatus.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/PodProgressStatus.java similarity index 96% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodProgressStatus.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/PodProgressStatus.java index 9da2916997..1ebdd4af44 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/PodProgressStatus.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/PodProgressStatus.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; public enum PodProgressStatus { INITIALIZED((byte) 0x00), diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/TimerAlertTrigger.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/TimerAlertTrigger.java similarity index 68% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/TimerAlertTrigger.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/TimerAlertTrigger.java index 5344d736b2..2f86fc6b2e 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/TimerAlertTrigger.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/TimerAlertTrigger.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; import org.joda.time.Duration; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/UnitsRemainingAlertTrigger.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/UnitsRemainingAlertTrigger.java similarity index 65% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/UnitsRemainingAlertTrigger.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/UnitsRemainingAlertTrigger.java index fd0fb4bae4..f12989df08 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/UnitsRemainingAlertTrigger.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/UnitsRemainingAlertTrigger.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; public class UnitsRemainingAlertTrigger extends AlertTrigger { public UnitsRemainingAlertTrigger(Double value) { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliverySchedule.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalDeliverySchedule.java similarity index 91% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliverySchedule.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalDeliverySchedule.java index 497b41e1b6..e65cd4c40b 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliverySchedule.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalDeliverySchedule.java @@ -1,7 +1,7 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.IRawRepresentable; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.IRawRepresentable; public class BasalDeliverySchedule extends DeliverySchedule implements IRawRepresentable { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliveryTable.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalDeliveryTable.java similarity index 95% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliveryTable.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalDeliveryTable.java index df1c4161ec..20b54a4214 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalDeliveryTable.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalDeliveryTable.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule; import org.joda.time.Duration; import java.util.ArrayList; import java.util.List; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; public class BasalDeliveryTable { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalSchedule.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalSchedule.java similarity index 98% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalSchedule.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalSchedule.java index 24f2a72893..f960a6303f 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalSchedule.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalSchedule.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule; import org.joda.time.Duration; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleEntry.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalScheduleEntry.java similarity index 90% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleEntry.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalScheduleEntry.java index ac6527339c..1c75fde904 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleEntry.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalScheduleEntry.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule; import org.joda.time.Duration; import java.util.Objects; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; public class BasalScheduleEntry { private final double rate; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalTableEntry.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalTableEntry.java similarity index 88% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalTableEntry.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalTableEntry.java index bec2a8ae9d..1f0485bdfd 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalTableEntry.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalTableEntry.java @@ -1,7 +1,7 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.IRawRepresentable; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.IRawRepresentable; public class BasalTableEntry implements IRawRepresentable { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BolusDeliverySchedule.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BolusDeliverySchedule.java similarity index 86% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BolusDeliverySchedule.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BolusDeliverySchedule.java index bd2100edd3..1698bf98bf 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BolusDeliverySchedule.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BolusDeliverySchedule.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule; import org.joda.time.Duration; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.IRawRepresentable; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.IRawRepresentable; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; public class BolusDeliverySchedule extends DeliverySchedule implements IRawRepresentable { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/DeliverySchedule.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/DeliverySchedule.java new file mode 100644 index 0000000000..193fbd6e62 --- /dev/null +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/DeliverySchedule.java @@ -0,0 +1,10 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule; + +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.IRawRepresentable; + +public abstract class DeliverySchedule implements IRawRepresentable { + + public abstract InsulinScheduleType getType(); + + public abstract int getChecksum(); +} diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/InsulinScheduleType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/InsulinScheduleType.java similarity index 84% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/InsulinScheduleType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/InsulinScheduleType.java index 76872a98e1..10d2e8349b 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/InsulinScheduleType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/InsulinScheduleType.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule; public enum InsulinScheduleType { BASAL_SCHEDULE(0), diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/RateEntry.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/RateEntry.java similarity index 88% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/RateEntry.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/RateEntry.java index 51e6f297d0..150e32470d 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/RateEntry.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/RateEntry.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule; import org.joda.time.Duration; @@ -6,10 +6,10 @@ import java.util.ArrayList; import java.util.List; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.IRawRepresentable; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.IRawRepresentable; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; -import static info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants.BASAL_STEP_DURATION; +import static info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants.BASAL_STEP_DURATION; public class RateEntry implements IRawRepresentable { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/TempBasalDeliverySchedule.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/TempBasalDeliverySchedule.java similarity index 91% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/TempBasalDeliverySchedule.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/TempBasalDeliverySchedule.java index 8c08b21103..5fbf4b43b1 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/TempBasalDeliverySchedule.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/TempBasalDeliverySchedule.java @@ -1,7 +1,7 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.IRawRepresentable; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.IRawRepresentable; public class TempBasalDeliverySchedule extends DeliverySchedule implements IRawRepresentable { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/ActivationTimeExceededException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/ActivationTimeExceededException.java similarity index 71% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/ActivationTimeExceededException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/ActivationTimeExceededException.java index 91e4c4bab3..af9ef2fb4a 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/ActivationTimeExceededException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/ActivationTimeExceededException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public class ActivationTimeExceededException extends OmnipodException { public ActivationTimeExceededException() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java similarity index 74% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java index 225497853d..fb6c81f769 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/CommandFailedAfterChangingDeliveryStatusException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public class CommandFailedAfterChangingDeliveryStatusException extends OmnipodException { public CommandFailedAfterChangingDeliveryStatusException(String message, Throwable cause) { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CrcMismatchException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/CrcMismatchException.java similarity index 86% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CrcMismatchException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/CrcMismatchException.java index 5dcffa1e2e..cd9ed71fe7 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/CrcMismatchException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/CrcMismatchException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; import java.util.Locale; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalActivationProgressException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalActivationProgressException.java similarity index 78% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalActivationProgressException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalActivationProgressException.java index 0dffb93517..912e8b418f 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalActivationProgressException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalActivationProgressException.java @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; import java.util.Locale; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ActivationProgress; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress; public class IllegalActivationProgressException extends OmnipodException { private final ActivationProgress expected; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalDeliveryStatusException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalDeliveryStatusException.java similarity index 77% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalDeliveryStatusException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalDeliveryStatusException.java index a6f8d22714..6635b6248f 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalDeliveryStatusException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalDeliveryStatusException.java @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; import java.util.Locale; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryStatus; public class IllegalDeliveryStatusException extends OmnipodException { private final DeliveryStatus expected; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageAddressException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalMessageAddressException.java similarity index 86% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageAddressException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalMessageAddressException.java index 1e6a036e63..366a2ae9c7 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageAddressException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalMessageAddressException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public class IllegalMessageAddressException extends OmnipodException { private final int expected; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageSequenceNumberException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalMessageSequenceNumberException.java similarity index 86% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageSequenceNumberException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalMessageSequenceNumberException.java index 6d9c436145..07be852bb8 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalMessageSequenceNumberException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalMessageSequenceNumberException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public class IllegalMessageSequenceNumberException extends OmnipodException { private final int expected; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPacketTypeException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalPacketTypeException.java similarity index 77% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPacketTypeException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalPacketTypeException.java index 03d6a425e7..ffecf2d31f 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPacketTypeException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalPacketTypeException.java @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; import java.util.Locale; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PacketType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PacketType; public class IllegalPacketTypeException extends OmnipodException { private final PacketType expected; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPodProgressException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalPodProgressException.java similarity index 77% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPodProgressException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalPodProgressException.java index 18719fa1ce..5f081f65f3 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalPodProgressException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalPodProgressException.java @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; import java.util.Locale; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; public class IllegalPodProgressException extends OmnipodException { private final PodProgressStatus expected; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalResponseException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalResponseException.java similarity index 79% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalResponseException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalResponseException.java index d6226afe99..3a15286543 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalResponseException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalResponseException.java @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; import java.util.Locale; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; public class IllegalResponseException extends OmnipodException { private final String actualClass; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalVersionResponseTypeException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalVersionResponseTypeException.java similarity index 77% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalVersionResponseTypeException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalVersionResponseTypeException.java index 4cfbd76ce9..c9b8c68c18 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/IllegalVersionResponseTypeException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/IllegalVersionResponseTypeException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public class IllegalVersionResponseTypeException extends OmnipodException { public IllegalVersionResponseTypeException(String expected, String actual) { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/MessageDecodingException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/MessageDecodingException.java similarity index 77% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/MessageDecodingException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/MessageDecodingException.java index 05d61b19dd..93294bb869 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/MessageDecodingException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/MessageDecodingException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public class MessageDecodingException extends OmnipodException { public MessageDecodingException(String message) { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceOutOfSyncException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/NonceOutOfSyncException.java similarity index 66% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceOutOfSyncException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/NonceOutOfSyncException.java index 1b128b58fc..26b7b557dc 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceOutOfSyncException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/NonceOutOfSyncException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public class NonceOutOfSyncException extends OmnipodException { public NonceOutOfSyncException() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceResyncException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/NonceResyncException.java similarity index 65% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceResyncException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/NonceResyncException.java index 4e534c20b3..cee2f50767 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NonceResyncException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/NonceResyncException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public class NonceResyncException extends OmnipodException { public NonceResyncException() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NotEnoughDataException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/NotEnoughDataException.java similarity index 82% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NotEnoughDataException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/NotEnoughDataException.java index c54ed82384..f656c706bc 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/NotEnoughDataException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/NotEnoughDataException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/OmnipodException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/OmnipodException.java similarity index 88% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/OmnipodException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/OmnipodException.java index d4eb40ae94..3ac6a6d254 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/OmnipodException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/OmnipodException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public abstract class OmnipodException extends RuntimeException { private boolean certainFailure; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodFaultException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PodFaultException.java similarity index 65% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodFaultException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PodFaultException.java index 4786f241c7..d5e63d4f07 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodFaultException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PodFaultException.java @@ -1,6 +1,6 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoDetailedStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoDetailedStatus; public class PodFaultException extends OmnipodException { private final PodInfoDetailedStatus detailedStatus; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodProgressStatusVerificationFailedException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PodProgressStatusVerificationFailedException.java similarity index 73% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodProgressStatusVerificationFailedException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PodProgressStatusVerificationFailedException.java index d429e6a900..fbbfca2154 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodProgressStatusVerificationFailedException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PodProgressStatusVerificationFailedException.java @@ -1,6 +1,6 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; public class PodProgressStatusVerificationFailedException extends OmnipodException { private final PodProgressStatus expectedStatus; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodReturnedErrorResponseException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PodReturnedErrorResponseException.java similarity index 67% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodReturnedErrorResponseException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PodReturnedErrorResponseException.java index bc2bd92af9..a1e694f201 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PodReturnedErrorResponseException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PodReturnedErrorResponseException.java @@ -1,6 +1,6 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.ErrorResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.ErrorResponse; public class PodReturnedErrorResponseException extends OmnipodException { private final ErrorResponse errorResponse; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PrecedingCommandFailedUncertainlyException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PrecedingCommandFailedUncertainlyException.java similarity index 73% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PrecedingCommandFailedUncertainlyException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PrecedingCommandFailedUncertainlyException.java index a1bbd6c7ab..61f1dda600 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/PrecedingCommandFailedUncertainlyException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/PrecedingCommandFailedUncertainlyException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public class PrecedingCommandFailedUncertainlyException extends OmnipodException { public PrecedingCommandFailedUncertainlyException(Throwable cause) { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkInterruptedException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkInterruptedException.java similarity index 68% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkInterruptedException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkInterruptedException.java index 3cb5f18267..98131dc9b7 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkInterruptedException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkInterruptedException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public class RileyLinkInterruptedException extends OmnipodException { public RileyLinkInterruptedException() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkTimeoutException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkTimeoutException.java similarity index 78% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkTimeoutException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkTimeoutException.java index 7e4b48a226..bc56ea2ff6 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkTimeoutException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkTimeoutException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; // Response indicating that there was a timeout in communication between the RileyLink and the Pod public class RileyLinkTimeoutException extends OmnipodException { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnexpectedException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkUnexpectedException.java similarity index 73% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnexpectedException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkUnexpectedException.java index e844eca158..9930393cf5 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnexpectedException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkUnexpectedException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; public class RileyLinkUnexpectedException extends OmnipodException { public RileyLinkUnexpectedException(Throwable cause) { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnreachableException.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkUnreachableException.java similarity index 76% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnreachableException.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkUnreachableException.java index 05320c051d..173794abcb 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/exception/RileyLinkUnreachableException.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/exception/RileyLinkUnreachableException.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception; // Indicates that we didn't get any response from the RL public class RileyLinkUnreachableException extends OmnipodException { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/manager/OmnipodManager.java similarity index 87% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/manager/OmnipodManager.java index 9338668177..d76b183cf6 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/manager/OmnipodManager.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.manager; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; @@ -13,45 +13,45 @@ import java.util.function.Supplier; import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.logging.LTag; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.AcknowledgeAlertsAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.AssignAddressAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.BolusAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.CancelDeliveryAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.ConfigureAlertsAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.ConfigureBeepAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.DeactivatePodAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.GetPodInfoAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.GetStatusAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.InsertCannulaAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.PrimeAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.SetBasalScheduleAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.SetTempBasalAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.SetupPodAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.service.PrimeService; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.CancelDeliveryCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoRecentPulseLog; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ActivationProgress; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertConfiguration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepConfigType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommandFailedAfterChangingDeliveryStatusException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalActivationProgressException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalDeliveryStatusException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPodProgressException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NonceOutOfSyncException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.OmnipodException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodFaultException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodProgressStatusVerificationFailedException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PrecedingCommandFailedUncertainlyException; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.AcknowledgeAlertsAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.AssignAddressAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.BolusAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.CancelDeliveryAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.ConfigureAlertsAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.ConfigureBeepAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.DeactivatePodAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.GetPodInfoAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.GetStatusAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.InsertCannulaAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.PrimeAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.SetBasalScheduleAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.SetTempBasalAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.SetupPodAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.service.PrimeService; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.CancelDeliveryCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoRecentPulseLog; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepConfigType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalSchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.CommandFailedAfterChangingDeliveryStatusException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalActivationProgressException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalDeliveryStatusException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalPodProgressException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.NonceOutOfSyncException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.OmnipodException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.PodFaultException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.PodProgressStatusVerificationFailedException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.PrecedingCommandFailedUncertainlyException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; import info.nightscout.androidaps.utils.rx.AapsSchedulers; import io.reactivex.Completable; import io.reactivex.Flowable; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/manager/PodStateManager.java similarity index 96% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/manager/PodStateManager.java index f84e76b589..adc56510bb 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/manager/PodStateManager.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.manager; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -21,21 +21,21 @@ import java.util.function.Supplier; import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.logging.LTag; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusUpdatableResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoDetailedStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ActivationProgress; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSet; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSlot; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FaultEventCode; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FirmwareVersion; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodCrc; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.util.TimeUtil; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.OmnipodMessage; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusUpdatableResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoDetailedStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSet; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSlot; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FaultEventCode; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FirmwareVersion; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodCrc; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalSchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.util.TimeUtil; // TODO add nullchecks on some setters public abstract class PodStateManager { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/AlertConfigurationUtil.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/util/AlertConfigurationUtil.java similarity index 73% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/AlertConfigurationUtil.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/util/AlertConfigurationUtil.java index 92e2d2d74d..e380109b81 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/AlertConfigurationUtil.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/util/AlertConfigurationUtil.java @@ -1,14 +1,14 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.util; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.util; import org.joda.time.Duration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertConfiguration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSlot; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepRepeat; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.TimerAlertTrigger; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.UnitsRemainingAlertTrigger; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSlot; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepRepeat; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.TimerAlertTrigger; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.UnitsRemainingAlertTrigger; public class AlertConfigurationUtil { public static AlertConfiguration createLowReservoirAlertConfiguration(boolean active, Double units) { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtil.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/util/TimeUtil.java similarity index 89% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtil.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/util/TimeUtil.java index dc37e42b54..777306a12a 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtil.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/util/TimeUtil.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.util; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.util; import org.joda.time.DateTime; import org.joda.time.Duration; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodActiveAlertsChanged.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodActiveAlertsChanged.kt similarity index 67% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodActiveAlertsChanged.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodActiveAlertsChanged.kt index 743d321d69..ac4f97a103 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodActiveAlertsChanged.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodActiveAlertsChanged.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.event +package info.nightscout.androidaps.plugins.pump.omnipod.eros.event import info.nightscout.androidaps.events.Event diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodFaultEventChanged.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodFaultEventChanged.kt similarity index 66% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodFaultEventChanged.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodFaultEventChanged.kt index d9d2b1e11d..c3ba51ea77 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodFaultEventChanged.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodFaultEventChanged.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.event +package info.nightscout.androidaps.plugins.pump.omnipod.eros.event import info.nightscout.androidaps.events.Event diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodPumpValuesChanged.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodPumpValuesChanged.kt similarity index 66% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodPumpValuesChanged.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodPumpValuesChanged.kt index e54d7455dd..c81a800cd6 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodPumpValuesChanged.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodPumpValuesChanged.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.event +package info.nightscout.androidaps.plugins.pump.omnipod.eros.event import info.nightscout.androidaps.events.Event diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodTbrChanged.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodTbrChanged.kt similarity index 65% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodTbrChanged.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodTbrChanged.kt index 2b212506cd..6a819ee33e 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodTbrChanged.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodTbrChanged.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.event +package info.nightscout.androidaps.plugins.pump.omnipod.eros.event import info.nightscout.androidaps.events.Event diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodUncertainTbrRecovered.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodUncertainTbrRecovered.kt similarity index 67% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodUncertainTbrRecovered.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodUncertainTbrRecovered.kt index f2c4dc855a..5e4209b676 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/event/EventOmnipodUncertainTbrRecovered.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/event/EventOmnipodUncertainTbrRecovered.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.event +package info.nightscout.androidaps.plugins.pump.omnipod.eros.event import info.nightscout.androidaps.events.Event diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsOmnipodManager.java similarity index 91% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsOmnipodManager.java index db17adff1e..3cbc4d847f 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsOmnipodManager.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.manager; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.manager; import android.content.Context; import android.content.Intent; @@ -42,50 +42,50 @@ import info.nightscout.androidaps.plugins.pump.common.data.TempBasalPair; import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; import info.nightscout.androidaps.plugins.pump.omnipod.R; -import info.nightscout.androidaps.plugins.pump.omnipod.data.ActiveBolus; -import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodCommandType; -import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodStorageKeys; -import info.nightscout.androidaps.plugins.pump.omnipod.definition.PodHistoryEntryType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoRecentPulseLog; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertConfiguration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepConfigType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FaultEventCode; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalScheduleEntry; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActivationTimeExceededException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommandFailedAfterChangingDeliveryStatusException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CrcMismatchException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalActivationProgressException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalDeliveryStatusException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageAddressException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageSequenceNumberException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPacketTypeException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPodProgressException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalResponseException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalVersionResponseTypeException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.MessageDecodingException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NonceOutOfSyncException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NonceResyncException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NotEnoughDataException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.OmnipodException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodFaultException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodProgressStatusVerificationFailedException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodReturnedErrorResponseException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PrecedingCommandFailedUncertainlyException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkInterruptedException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkTimeoutException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkUnexpectedException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkUnreachableException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.OmnipodManager; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodPumpValuesChanged; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; -import info.nightscout.androidaps.plugins.pump.omnipod.util.AapsOmnipodUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodAlertUtil; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.data.ActiveBolus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.OmnipodCommandType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.OmnipodStorageKeys; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.PodHistoryEntryType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoRecentPulseLog; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepConfigType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FaultEventCode; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalSchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalScheduleEntry; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.ActivationTimeExceededException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.CommandFailedAfterChangingDeliveryStatusException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.CrcMismatchException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalActivationProgressException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalDeliveryStatusException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalMessageAddressException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalMessageSequenceNumberException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalPacketTypeException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalPodProgressException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalResponseException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalVersionResponseTypeException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.MessageDecodingException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.NonceOutOfSyncException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.NonceResyncException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.NotEnoughDataException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.OmnipodException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.PodFaultException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.PodProgressStatusVerificationFailedException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.PodReturnedErrorResponseException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.PrecedingCommandFailedUncertainlyException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.RileyLinkInterruptedException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.RileyLinkTimeoutException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.RileyLinkUnexpectedException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.RileyLinkUnreachableException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.OmnipodManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodPumpValuesChanged; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.util.AapsOmnipodUtil; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.util.OmnipodAlertUtil; import info.nightscout.androidaps.utils.DateUtil; import info.nightscout.androidaps.utils.resources.ResourceHelper; import info.nightscout.androidaps.utils.rx.AapsSchedulers; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManager.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsPodStateManager.java similarity index 71% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManager.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsPodStateManager.java index 085b16d9a9..ecbf9a8d42 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManager.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsPodStateManager.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.manager; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.manager; import javax.inject.Inject; import javax.inject.Singleton; @@ -7,12 +7,12 @@ import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.general.overview.notifications.Notification; -import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodStorageKeys; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodActiveAlertsChanged; -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodFaultEventChanged; -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodTbrChanged; -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodUncertainTbrRecovered; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.OmnipodStorageKeys; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodActiveAlertsChanged; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodFaultEventChanged; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodTbrChanged; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodUncertainTbrRecovered; import info.nightscout.androidaps.utils.sharedPreferences.SP; @Singleton diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandAcknowledgeAlerts.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandAcknowledgeAlerts.java similarity index 70% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandAcknowledgeAlerts.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandAcknowledgeAlerts.java index 649623e05e..ce181a7912 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandAcknowledgeAlerts.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandAcknowledgeAlerts.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.queue.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command; public final class CommandAcknowledgeAlerts extends OmnipodCustomCommand { public CommandAcknowledgeAlerts() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandDeactivatePod.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandDeactivatePod.java similarity index 69% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandDeactivatePod.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandDeactivatePod.java index 3921ec19d7..0d099c4481 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandDeactivatePod.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandDeactivatePod.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.queue.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command; public final class CommandDeactivatePod extends OmnipodCustomCommand { public CommandDeactivatePod() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandGetPodStatus.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandGetPodStatus.java similarity index 69% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandGetPodStatus.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandGetPodStatus.java index 0dfe7880f8..85ee7b6fd4 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandGetPodStatus.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandGetPodStatus.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.queue.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command; public final class CommandGetPodStatus extends OmnipodCustomCommand { public CommandGetPodStatus() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandHandleTimeChange.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandHandleTimeChange.java similarity index 83% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandHandleTimeChange.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandHandleTimeChange.java index c760b401b5..d55cb11249 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandHandleTimeChange.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandHandleTimeChange.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.queue.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command; public final class CommandHandleTimeChange extends OmnipodCustomCommand { private final boolean requestedByUser; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandPlayTestBeep.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandPlayTestBeep.java similarity index 66% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandPlayTestBeep.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandPlayTestBeep.java index 79b3d8a71f..f06dc0cda1 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandPlayTestBeep.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandPlayTestBeep.java @@ -1,6 +1,6 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.queue.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepConfigType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepConfigType; public class CommandPlayTestBeep extends OmnipodCustomCommand { private final BeepConfigType beepType; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandReadPulseLog.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandReadPulseLog.java similarity index 69% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandReadPulseLog.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandReadPulseLog.java index 5eb910c6db..d3317651ca 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandReadPulseLog.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandReadPulseLog.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.queue.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command; public final class CommandReadPulseLog extends OmnipodCustomCommand { public CommandReadPulseLog() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandResumeDelivery.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandResumeDelivery.java similarity index 69% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandResumeDelivery.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandResumeDelivery.java index fe3b07de9f..9398330ab2 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandResumeDelivery.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandResumeDelivery.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.queue.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command; public final class CommandResumeDelivery extends OmnipodCustomCommand { public CommandResumeDelivery() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandSuspendDelivery.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandSuspendDelivery.java similarity index 70% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandSuspendDelivery.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandSuspendDelivery.java index 12dc8e8d42..e3883b9105 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandSuspendDelivery.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandSuspendDelivery.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.queue.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command; public final class CommandSuspendDelivery extends OmnipodCustomCommand { public CommandSuspendDelivery() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandUpdateAlertConfiguration.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandUpdateAlertConfiguration.java similarity index 73% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandUpdateAlertConfiguration.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandUpdateAlertConfiguration.java index 4edc243845..5dc5d00f7f 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/CommandUpdateAlertConfiguration.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/CommandUpdateAlertConfiguration.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.queue.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command; public final class CommandUpdateAlertConfiguration extends OmnipodCustomCommand { public CommandUpdateAlertConfiguration() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommand.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/OmnipodCustomCommand.java similarity index 87% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommand.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/OmnipodCustomCommand.java index 06b2e2a051..9ddc4c1bd0 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommand.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/OmnipodCustomCommand.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.queue.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command; import androidx.annotation.NonNull; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommandType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/OmnipodCustomCommandType.java similarity index 89% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommandType.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/OmnipodCustomCommandType.java index f88777638e..6a20ea2580 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/queue/command/OmnipodCustomCommandType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/queue/command/OmnipodCustomCommandType.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.queue.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command; public enum OmnipodCustomCommandType { ACKNOWLEDGE_ALERTS("ACKNOWLEDGE ALERTS"), diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/manager/OmnipodRileyLinkCommunicationManager.java similarity index 85% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/manager/OmnipodRileyLinkCommunicationManager.java index 6ac15bc9b1..2e405af2ee 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/manager/OmnipodRileyLinkCommunicationManager.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager; import org.joda.time.DateTime; @@ -15,35 +15,35 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLink import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RLMessageType; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkBLEError; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.OmnipodAction; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodPacket; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.DeactivatePodCommand; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.ErrorResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusUpdatableResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfo; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoDetailedStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoResponse; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PacketType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActivationTimeExceededException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageAddressException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageSequenceNumberException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPacketTypeException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalResponseException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NonceOutOfSyncException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NonceResyncException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NotEnoughDataException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.OmnipodException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodFaultException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodReturnedErrorResponseException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkTimeoutException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkUnexpectedException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkUnreachableException; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.action.OmnipodAction; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.MessageBlock; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.OmnipodMessage; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.OmnipodPacket; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command.DeactivatePodCommand; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.ErrorResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.StatusUpdatableResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfo; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoDetailedStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo.PodInfoResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PacketType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.ActivationTimeExceededException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalMessageAddressException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalMessageSequenceNumberException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalPacketTypeException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.IllegalResponseException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.NonceOutOfSyncException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.NonceResyncException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.NotEnoughDataException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.OmnipodException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.PodFaultException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.PodReturnedErrorResponseException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.RileyLinkTimeoutException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.RileyLinkUnexpectedException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.exception.RileyLinkUnreachableException; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; /** * Created by andy on 6/29/18. diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/service/RileyLinkOmnipodService.java similarity index 91% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/service/RileyLinkOmnipodService.java index b51ab9012d..5f6ced399a 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/service/RileyLinkOmnipodService.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.rileylink.service; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.service; import android.content.Intent; import android.content.res.Configuration; @@ -18,12 +18,12 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.Rile import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkTargetFrequency; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkService; -import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin; import info.nightscout.androidaps.plugins.pump.omnipod.R; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; -import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager; -import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager; -import info.nightscout.androidaps.plugins.pump.omnipod.util.AapsOmnipodUtil; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.util.AapsOmnipodUtil; /** diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt similarity index 95% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt index 0c074e3fd9..f199a2dd8e 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui import android.content.Intent import android.graphics.Color @@ -22,23 +22,23 @@ import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDevic import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkServiceState import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData -import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin import info.nightscout.androidaps.plugins.pump.omnipod.R import info.nightscout.androidaps.plugins.pump.omnipod.databinding.OmnipodOverviewBinding -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ActivationProgress -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager -import info.nightscout.androidaps.plugins.pump.omnipod.driver.util.TimeUtil -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodPumpValuesChanged -import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandAcknowledgeAlerts -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandGetPodStatus -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandHandleTimeChange -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandResumeDelivery -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandSuspendDelivery -import info.nightscout.androidaps.plugins.pump.omnipod.util.AapsOmnipodUtil -import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodAlertUtil +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.util.TimeUtil +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodPumpValuesChanged +import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandAcknowledgeAlerts +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandGetPodStatus +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandHandleTimeChange +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandResumeDelivery +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandSuspendDelivery +import info.nightscout.androidaps.plugins.pump.omnipod.eros.util.AapsOmnipodUtil +import info.nightscout.androidaps.plugins.pump.omnipod.eros.util.OmnipodAlertUtil import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.queue.events.EventQueueChanged import info.nightscout.androidaps.utils.DateUtil @@ -50,7 +50,6 @@ import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP import info.nightscout.androidaps.utils.ui.UIRunnable -import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable import org.apache.commons.lang3.StringUtils import org.joda.time.DateTime diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodHistoryActivity.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodHistoryActivity.java similarity index 98% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodHistoryActivity.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodHistoryActivity.java index 9cc797b375..ed4c7db40a 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodHistoryActivity.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodHistoryActivity.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui; import android.os.Bundle; import android.os.SystemClock; @@ -34,8 +34,8 @@ import info.nightscout.androidaps.plugins.pump.common.defs.PumpHistoryEntryGroup import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; import info.nightscout.androidaps.plugins.pump.common.utils.ProfileUtil; import info.nightscout.androidaps.plugins.pump.omnipod.R; -import info.nightscout.androidaps.plugins.pump.omnipod.definition.PodHistoryEntryType; -import info.nightscout.androidaps.plugins.pump.omnipod.util.AapsOmnipodUtil; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.PodHistoryEntryType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.util.AapsOmnipodUtil; import info.nightscout.androidaps.utils.resources.ResourceHelper; public class PodHistoryActivity extends NoSplashAppCompatActivity { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodManagementActivity.kt similarity index 91% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodManagementActivity.kt index bf87dd8e59..1296bfa447 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/PodManagementActivity.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodManagementActivity.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui import android.content.Context import android.content.Intent @@ -13,18 +13,18 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyL import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ResetRileyLinkConfigurationTask import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor -import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin import info.nightscout.androidaps.plugins.pump.omnipod.R import info.nightscout.androidaps.plugins.pump.omnipod.databinding.OmnipodPodManagementBinding -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ActivationProgress -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepConfigType -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager -import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodPumpValuesChanged -import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandPlayTestBeep -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandReadPulseLog -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.PodActivationWizardActivity -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.PodDeactivationWizardActivity +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepConfigType +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodPumpValuesChanged +import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandPlayTestBeep +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandReadPulseLog +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.PodActivationWizardActivity +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.PodDeactivationWizardActivity import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.queue.events.EventQueueChanged import info.nightscout.androidaps.utils.FabricPrivacy @@ -33,7 +33,6 @@ import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.extensions.toVisibility import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.ui.UIRunnable -import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable import javax.inject.Inject diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/PodActivationWizardActivity.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/PodActivationWizardActivity.kt similarity index 82% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/PodActivationWizardActivity.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/PodActivationWizardActivity.kt index b5f4ee3114..bbbf41ab04 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/PodActivationWizardActivity.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/PodActivationWizardActivity.kt @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation import android.os.Bundle import androidx.annotation.IdRes import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ActivationProgress -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.activity.OmnipodWizardActivityBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.activity.OmnipodWizardActivityBase import javax.inject.Inject class PodActivationWizardActivity : OmnipodWizardActivityBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/AttachPodInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/AttachPodInfoFragment.kt similarity index 88% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/AttachPodInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/AttachPodInfoFragment.kt index a02462d5af..afade782d2 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/AttachPodInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/AttachPodInfoFragment.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.fragment import android.os.Bundle import android.view.View @@ -8,7 +8,7 @@ import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog import androidx.navigation.fragment.findNavController import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.fragment.InfoFragmentBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class AttachPodInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/FillPodInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/FillPodInfoFragment.kt similarity index 73% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/FillPodInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/FillPodInfoFragment.kt index f7a1053785..12dfb1e2f5 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/FillPodInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/FillPodInfoFragment.kt @@ -1,9 +1,9 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.fragment import androidx.annotation.IdRes import androidx.annotation.StringRes import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.fragment.InfoFragmentBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class FillPodInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InitializePodActionFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InitializePodActionFragment.kt similarity index 77% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InitializePodActionFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InitializePodActionFragment.kt index 82af74414f..0d3ed954c0 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InitializePodActionFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InitializePodActionFragment.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.fragment import android.os.Bundle import androidx.annotation.IdRes @@ -6,8 +6,8 @@ import androidx.annotation.StringRes import androidx.fragment.app.viewModels import androidx.lifecycle.ViewModelProvider import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.dagger.OmnipodPluginQualifier -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.viewmodel.InitializePodActionViewModel +import info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger.OmnipodPluginQualifier +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.InitializePodActionViewModel import javax.inject.Inject class InitializePodActionFragment : PodActivationActionFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt similarity index 77% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt index 76a470ee3a..0ab6eabdc8 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.fragment import android.os.Bundle import androidx.annotation.IdRes @@ -6,8 +6,8 @@ import androidx.annotation.StringRes import androidx.fragment.app.viewModels import androidx.lifecycle.ViewModelProvider import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.dagger.OmnipodPluginQualifier -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.viewmodel.InsertCannulaActionViewModel +import info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger.OmnipodPluginQualifier +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.InsertCannulaActionViewModel import javax.inject.Inject class InsertCannulaActionFragment : PodActivationActionFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt similarity index 72% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt index d0c807a4e3..d7d6cf9139 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt @@ -1,9 +1,9 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.fragment import androidx.annotation.IdRes import androidx.annotation.StringRes import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.fragment.InfoFragmentBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class PodActivatedInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt similarity index 72% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt index cea430f585..be3f3b6159 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt @@ -1,14 +1,14 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.fragment import android.content.Intent import android.os.Bundle import android.view.View import android.widget.Button import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ActivationProgress -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.fragment.ActionFragmentBase -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.PodDeactivationWizardActivity +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.ActionFragmentBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.PodDeactivationWizardActivity import javax.inject.Inject abstract class PodActivationActionFragmentBase : ActionFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt similarity index 51% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt index 674ca9f8a7..a1316b51d6 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/viewmodel/InitializePodActionViewModel.kt @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.viewmodel +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel import info.nightscout.androidaps.data.PumpEnactResult -import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.viewmodel.ActionViewModelBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.viewmodel.ActionViewModelBase import javax.inject.Inject class InitializePodActionViewModel @Inject constructor(private val aapsOmnipodManager: AapsOmnipodManager) : ActionViewModelBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt similarity index 60% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt index 1b1bd126dc..87e34c28f7 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/viewmodel/InsertCannulaActionViewModel.kt @@ -1,9 +1,9 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.activation.viewmodel +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel import info.nightscout.androidaps.data.PumpEnactResult import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.viewmodel.ActionViewModelBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.viewmodel.ActionViewModelBase import javax.inject.Inject class InsertCannulaActionViewModel @Inject constructor(private val aapsOmnipodManager: AapsOmnipodManager, private val profileFunction: ProfileFunction) : ActionViewModelBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/activity/OmnipodWizardActivityBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/activity/OmnipodWizardActivityBase.kt similarity index 93% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/activity/OmnipodWizardActivityBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/activity/OmnipodWizardActivityBase.kt index 0621cd02d5..fbfaf84f7b 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/activity/OmnipodWizardActivityBase.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/activity/OmnipodWizardActivityBase.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.activity +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.activity import androidx.appcompat.app.AlertDialog import androidx.navigation.NavController diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/ActionFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/ActionFragmentBase.kt similarity index 94% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/ActionFragmentBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/ActionFragmentBase.kt index d15462c2eb..7a2f4794b7 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/ActionFragmentBase.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/ActionFragmentBase.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment import android.annotation.SuppressLint import android.os.Bundle @@ -7,7 +7,7 @@ import android.widget.Button import androidx.annotation.LayoutRes import androidx.annotation.StringRes import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.viewmodel.ActionViewModelBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.viewmodel.ActionViewModelBase import info.nightscout.androidaps.utils.extensions.toVisibility abstract class ActionFragmentBase : WizardFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/InfoFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/InfoFragmentBase.kt similarity index 88% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/InfoFragmentBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/InfoFragmentBase.kt index 365d356246..73a52d8e9f 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/InfoFragmentBase.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/InfoFragmentBase.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment import android.os.Bundle import android.view.View diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/WizardFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/WizardFragmentBase.kt similarity index 93% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/WizardFragmentBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/WizardFragmentBase.kt index 280b785c72..587c8e988d 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/fragment/WizardFragmentBase.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/WizardFragmentBase.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment import android.content.res.ColorStateList import android.os.Bundle @@ -12,7 +12,7 @@ import androidx.navigation.fragment.findNavController import dagger.android.support.DaggerFragment import info.nightscout.androidaps.plugins.pump.omnipod.R import info.nightscout.androidaps.plugins.pump.omnipod.databinding.OmnipodWizardBaseFragmentBinding -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.activity.OmnipodWizardActivityBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.activity.OmnipodWizardActivityBase import kotlin.math.roundToInt abstract class WizardFragmentBase : DaggerFragment() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/viewmodel/ActionViewModelBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/viewmodel/ActionViewModelBase.kt similarity index 92% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/viewmodel/ActionViewModelBase.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/viewmodel/ActionViewModelBase.kt index dc47132515..65f29dd3f5 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/common/viewmodel/ActionViewModelBase.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/viewmodel/ActionViewModelBase.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.viewmodel +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.viewmodel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/PodDeactivationWizardActivity.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/PodDeactivationWizardActivity.kt similarity index 69% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/PodDeactivationWizardActivity.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/PodDeactivationWizardActivity.kt index dafba7fb4d..f39cdfa409 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/PodDeactivationWizardActivity.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/PodDeactivationWizardActivity.kt @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation import android.os.Bundle import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.activity.OmnipodWizardActivityBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.activity.OmnipodWizardActivityBase class PodDeactivationWizardActivity : OmnipodWizardActivityBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt similarity index 83% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt index ddcbec9bb1..3e10d7d9b6 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.fragment import android.os.Bundle import android.view.View @@ -10,10 +10,10 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.dagger.OmnipodPluginQualifier -import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.fragment.ActionFragmentBase -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.viewmodel.DeactivatePodActionViewModel +import info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger.OmnipodPluginQualifier +import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.ActionFragmentBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.viewmodel.DeactivatePodActionViewModel import info.nightscout.androidaps.utils.extensions.toVisibility import javax.inject.Inject diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt similarity index 74% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt index 8a24e2767b..c41e4db357 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt @@ -1,9 +1,9 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.fragment import androidx.annotation.IdRes import androidx.annotation.StringRes import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.fragment.InfoFragmentBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class DeactivatePodInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt similarity index 72% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt index 240efe4735..7c167f2c67 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt @@ -1,9 +1,9 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.fragment import androidx.annotation.IdRes import androidx.annotation.StringRes import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.fragment.InfoFragmentBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class PodDeactivatedInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt similarity index 72% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt index ebbfa0b3fd..b6dc74d7b2 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt @@ -1,9 +1,9 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.fragment +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.fragment import androidx.annotation.IdRes import androidx.annotation.StringRes import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.fragment.InfoFragmentBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class PodDiscardedInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt similarity index 67% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt index 9e0b75f2e3..24530b6c70 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/viewmodel/DeactivatePodActionViewModel.kt @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.deactivation.viewmodel +package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.viewmodel import info.nightscout.androidaps.data.PumpEnactResult import info.nightscout.androidaps.interfaces.CommandQueueProvider -import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager -import info.nightscout.androidaps.plugins.pump.omnipod.queue.command.CommandDeactivatePod -import info.nightscout.androidaps.plugins.pump.omnipod.ui.wizard.common.viewmodel.ActionViewModelBase +import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager +import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandDeactivatePod +import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.viewmodel.ActionViewModelBase import info.nightscout.androidaps.queue.Callback import io.reactivex.subjects.SingleSubject import javax.inject.Inject diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/AapsOmnipodUtil.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/util/AapsOmnipodUtil.java similarity index 88% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/AapsOmnipodUtil.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/util/AapsOmnipodUtil.java index 97c938825a..23fff2b0fb 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/AapsOmnipodUtil.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/util/AapsOmnipodUtil.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.util; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.util; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -17,10 +17,10 @@ import javax.inject.Inject; import javax.inject.Singleton; import info.nightscout.androidaps.plugins.pump.omnipod.R; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSet; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSlot; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSet; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSlot; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; import info.nightscout.androidaps.utils.resources.ResourceHelper; /** diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodAlertUtil.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/util/OmnipodAlertUtil.java similarity index 79% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodAlertUtil.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/util/OmnipodAlertUtil.java index 02cd645b16..0ad2b49c18 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodAlertUtil.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/util/OmnipodAlertUtil.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.util; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.util; import org.joda.time.Duration; import javax.inject.Inject; import javax.inject.Singleton; -import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodStorageKeys; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.OmnipodStorageKeys; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; import info.nightscout.androidaps.utils.sharedPreferences.SP; @Singleton diff --git a/omnipod-eros/src/main/res/layout/omnipod_overview.xml b/omnipod-eros/src/main/res/layout/omnipod_overview.xml index 3ac0f4427c..42c7a84ac9 100644 --- a/omnipod-eros/src/main/res/layout/omnipod_overview.xml +++ b/omnipod-eros/src/main/res/layout/omnipod_overview.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="info.nightscout.androidaps.plugins.pump.omnipod.ui.OmnipodOverviewFragment"> + tools:context=".eros.ui.OmnipodOverviewFragment"> \ No newline at end of file diff --git a/omnipod-eros/src/main/res/navigation/omnipod_pod_deactivation_wizard_navigation_graph.xml b/omnipod-eros/src/main/res/navigation/omnipod_pod_deactivation_wizard_navigation_graph.xml index d1c431652c..3257353f2b 100644 --- a/omnipod-eros/src/main/res/navigation/omnipod_pod_deactivation_wizard_navigation_graph.xml +++ b/omnipod-eros/src/main/res/navigation/omnipod_pod_deactivation_wizard_navigation_graph.xml @@ -4,7 +4,7 @@ app:startDestination="@id/deactivatePodInfoFragment"> \ No newline at end of file diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommandTest.java deleted file mode 100644 index cb27ca5023..0000000000 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/FaultConfigCommandTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; - -public class FaultConfigCommandTest { - // TODO add tests (obtain captures first) -} diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java deleted file mode 100644 index 388fc86c8f..0000000000 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; - -public class PodInfoOlderPulseLogTest { - // TODO -} diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPluginTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPluginTest.java similarity index 94% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPluginTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPluginTest.java index e6aeed9f79..82c2008017 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPluginTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPluginTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod; +package info.nightscout.androidaps.plugins.pump.omnipod.eros; import android.os.Looper; @@ -26,8 +26,9 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.pump.common.data.TempBasalPair; import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager; import info.nightscout.androidaps.utils.resources.ResourceHelper; +import info.nightscout.androidaps.utils.rx.TestAapsSchedulers; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; @@ -41,7 +42,7 @@ public class OmnipodPumpPluginTest { @Mock HasAndroidInjector injector; AAPSLogger aapsLogger = new AAPSLoggerTest(); - RxBusWrapper rxBusWrapper = new RxBusWrapper(); + RxBusWrapper rxBusWrapper = new RxBusWrapper(new TestAapsSchedulers()); @Mock ResourceHelper resourceHelper; @Mock(answer = Answers.RETURNS_DEEP_STUBS) ActivePluginProvider activePluginProvider; @Mock AapsOmnipodManager aapsOmnipodManager; @@ -57,7 +58,7 @@ public class OmnipodPumpPluginTest { // mock all the things PowerMockito.mockStatic(Looper.class); - OmnipodPumpPlugin plugin = new OmnipodPumpPlugin(injector, aapsLogger, rxBusWrapper, null, + OmnipodPumpPlugin plugin = new OmnipodPumpPlugin(injector, aapsLogger, new TestAapsSchedulers(), rxBusWrapper, null, resourceHelper, activePluginProvider, null, null, aapsOmnipodManager, commandQueueProvider, null, null, null, null, rileyLinkUtil, null, null, null, null diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/AapsOmnipodManagerTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/AapsOmnipodManagerTest.java similarity index 93% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/AapsOmnipodManagerTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/AapsOmnipodManagerTest.java index 7be6b20fa0..e376fd6d68 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/AapsOmnipodManagerTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/AapsOmnipodManagerTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication; import org.joda.time.Duration; import org.junit.Rule; @@ -9,9 +9,9 @@ import org.powermock.api.mockito.PowerMockito; import java.util.List; import info.nightscout.androidaps.data.Profile; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalScheduleEntry; -import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalSchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalScheduleEntry; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AcknowledgeAlertsCommandTest.java similarity index 77% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AcknowledgeAlertsCommandTest.java index 1dbceb85f0..04e589d4b2 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AcknowledgeAlertsCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AcknowledgeAlertsCommandTest.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.junit.Test; import java.util.Arrays; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSet; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSlot; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSet; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSlot; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; import static org.junit.Assert.assertArrayEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AssignAddressCommandTest.java similarity index 83% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AssignAddressCommandTest.java index 55dedcb887..8680127290 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/AssignAddressCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/AssignAddressCommandTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.junit.Test; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BasalScheduleExtraCommandTest.java similarity index 95% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BasalScheduleExtraCommandTest.java index e44009b0cf..947df39bde 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BasalScheduleExtraCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BasalScheduleExtraCommandTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.Duration; import org.junit.Test; @@ -8,9 +8,9 @@ import java.util.Collections; import java.util.List; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalScheduleEntry; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.RateEntry; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalSchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalScheduleEntry; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.RateEntry; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BeepConfigCommandTest.java similarity index 83% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BeepConfigCommandTest.java index 384c0d6ea3..a777c5d082 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BeepConfigCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BeepConfigCommandTest.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.Duration; import org.junit.Test; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepConfigType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepConfigType; import static org.junit.Assert.assertArrayEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BolusExtraCommandTest.java similarity index 96% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BolusExtraCommandTest.java index 2e65895465..f37f6f09c7 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/BolusExtraCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/BolusExtraCommandTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.Duration; import org.junit.Test; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/CancelDeliveryCommandTest.java similarity index 84% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/CancelDeliveryCommandTest.java index 96f91069b8..c97a199340 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/CancelDeliveryCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/CancelDeliveryCommandTest.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.junit.Test; import java.util.EnumSet; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryType; import static org.junit.Assert.assertArrayEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/ConfigureAlertsCommandTest.java similarity index 82% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/ConfigureAlertsCommandTest.java index 69f40a9d25..8937911a03 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/ConfigureAlertsCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/ConfigureAlertsCommandTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.Duration; import org.junit.Test; @@ -7,13 +7,13 @@ import java.util.Arrays; import java.util.Collections; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertConfiguration; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSlot; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepRepeat; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepType; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.TimerAlertTrigger; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.UnitsRemainingAlertTrigger; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSlot; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepRepeat; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.TimerAlertTrigger; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.UnitsRemainingAlertTrigger; import static org.junit.Assert.assertArrayEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/DeactivatePodCommandTest.java similarity index 74% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/DeactivatePodCommandTest.java index d5920ec5c1..397fc5a3f7 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/DeactivatePodCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/DeactivatePodCommandTest.java @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.junit.Test; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.MessageBlockType; import static org.junit.Assert.assertArrayEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/FaultConfigCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/FaultConfigCommandTest.java new file mode 100644 index 0000000000..da92c6d2b7 --- /dev/null +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/FaultConfigCommandTest.java @@ -0,0 +1,5 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; + +public class FaultConfigCommandTest { + // TODO add tests (obtain captures first) +} diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/GetStatusCommandTest.java similarity index 83% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/GetStatusCommandTest.java index 65d8e9d7c2..2a92300f1a 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/GetStatusCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/GetStatusCommandTest.java @@ -1,9 +1,9 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.junit.Test; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; import static org.junit.Assert.assertArrayEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetInsulinScheduleCommandTest.java similarity index 96% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetInsulinScheduleCommandTest.java index fdea1deefa..03a0e3175e 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetInsulinScheduleCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetInsulinScheduleCommandTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.Duration; import org.junit.Test; @@ -8,9 +8,9 @@ import java.util.Collections; import java.util.List; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalScheduleEntry; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BolusDeliverySchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalSchedule; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalScheduleEntry; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BolusDeliverySchedule; import static org.junit.Assert.assertArrayEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetupPodCommandTest.java similarity index 88% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetupPodCommandTest.java index e44aa01c88..07f91df881 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/SetupPodCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/SetupPodCommandTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.DateTime; import org.junit.Test; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommandTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/TempBasalExtraCommandTest.java similarity index 97% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommandTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/TempBasalExtraCommandTest.java index 3e2e164a8a..69da4a64fc 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/command/TempBasalExtraCommandTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/command/TempBasalExtraCommandTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.command; import org.joda.time.Duration; import org.junit.Test; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/defs/schedule/BasalTableEntryTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/defs/schedule/BasalTableEntryTest.java similarity index 70% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/defs/schedule/BasalTableEntryTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/defs/schedule/BasalTableEntryTest.java index a379e3e697..5fda76dbd8 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/defs/schedule/BasalTableEntryTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/defs/schedule/BasalTableEntryTest.java @@ -1,8 +1,8 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.defs.schedule; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.defs.schedule; import org.junit.Test; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalTableEntry; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule.BasalTableEntry; import static junit.framework.Assert.assertEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponseTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/ErrorResponseTest.java similarity index 86% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponseTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/ErrorResponseTest.java index c24f5dd827..c61e7fded3 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/ErrorResponseTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/ErrorResponseTest.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response; import org.junit.Test; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FaultEventCode; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FaultEventCode; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponseTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/StatusResponseTest.java similarity index 91% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponseTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/StatusResponseTest.java index e095a57953..bbbc4d0a12 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/StatusResponseTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/StatusResponseTest.java @@ -1,13 +1,13 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response; import org.joda.time.Duration; import org.junit.Test; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSlot; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSlot; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponseTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/VersionResponseTest.java similarity index 94% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponseTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/VersionResponseTest.java index ab15e57234..0114d14fd6 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/VersionResponseTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/VersionResponseTest.java @@ -1,9 +1,9 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response; import org.junit.Test; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java similarity index 93% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java index 97b19ab1b8..21468200e1 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoActiveAlertsTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import org.joda.time.Duration; import org.junit.Test; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLogTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDataLogTest.java similarity index 81% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLogTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDataLogTest.java index c167d1f006..b3b0dec638 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDataLogTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDataLogTest.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import org.joda.time.Duration; import org.junit.Test; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FaultEventCode; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FaultEventCode; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java similarity index 95% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java index 1b3d5ed816..fc451eda07 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoDetailedStatusTest.java @@ -1,13 +1,13 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import org.joda.time.Duration; import org.junit.Test; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.ErrorEventInfo; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FaultEventCode; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ErrorEventInfo; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FaultEventCode; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java similarity index 86% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java index 042f61bb03..3cd87634f7 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoFaultAndInitializationTimeTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import org.joda.time.DateTime; import org.joda.time.Duration; @@ -6,7 +6,7 @@ import org.junit.Assert; import org.junit.Test; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FaultEventCode; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FaultEventCode; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java new file mode 100644 index 0000000000..58813f4ffb --- /dev/null +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoOlderPulseLogTest.java @@ -0,0 +1,5 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; + +public class PodInfoOlderPulseLogTest { + // TODO +} diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java similarity index 87% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java index eafa838f0d..d499a4b4b0 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoRecentPulseLogTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import org.junit.Test; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponseTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoResponseTest.java similarity index 91% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponseTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoResponseTest.java index 99d05b7d03..388deb09a8 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/response/podinfo/PodInfoResponseTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/communication/message/response/podinfo/PodInfoResponseTest.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.communication.message.response.podinfo; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodInfoType; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSetTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertSetTest.java similarity index 88% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSetTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertSetTest.java index ab5c8cc304..9487978603 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/AlertSetTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/AlertSetTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition; import org.junit.Test; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalScheduleTest.java similarity index 98% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalScheduleTest.java index 6853e565a8..8e0f3e11fd 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/schedule/BasalScheduleTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/definition/schedule/BasalScheduleTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.schedule; import org.joda.time.Duration; import org.junit.Test; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtilTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/util/TimeUtilTest.java similarity index 95% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtilTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/util/TimeUtilTest.java index 6165de683d..2c0704da42 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/util/TimeUtilTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/driver/util/TimeUtilTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.driver.util; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.util; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManagerTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsPodStateManagerTest.java similarity index 90% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManagerTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsPodStateManagerTest.java index 66e2c0bf7a..c8f5ca44cd 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsPodStateManagerTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsPodStateManagerTest.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.manager; +package info.nightscout.androidaps.plugins.pump.omnipod.eros.manager; import org.joda.time.DateTime; import org.joda.time.DateTimeUtils; @@ -12,8 +12,9 @@ import org.powermock.modules.junit4.PowerMockRunner; import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.plugins.bus.RxBusWrapper; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FirmwareVersion; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.FirmwareVersion; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus; +import info.nightscout.androidaps.utils.rx.TestAapsSchedulers; import info.nightscout.androidaps.utils.sharedPreferences.SP; import static org.junit.Assert.assertEquals; @@ -23,7 +24,7 @@ public class AapsPodStateManagerTest { @Mock AAPSLogger aapsLogger; @Mock SP sp; - private RxBusWrapper rxBus = new RxBusWrapper(); + private RxBusWrapper rxBus = new RxBusWrapper(new TestAapsSchedulers()); @Test public void times() { From c4ef0dc997e8618687bf3fb3b45b163f5ad48470 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Tue, 9 Feb 2021 21:02:17 +0100 Subject: [PATCH 07/83] Fix base package for Omnipod Eros pump plugin --- crowdin.yml | 4 ++-- omnipod-eros/src/main/AndroidManifest.xml | 4 ++-- .../plugins/pump/omnipod/eros/OmnipodPumpPlugin.java | 2 +- .../pump/omnipod/eros/definition/OmnipodCommandType.java | 2 +- .../pump/omnipod/eros/definition/OmnipodStorageKeys.java | 2 +- .../pump/omnipod/eros/definition/PodHistoryEntryType.java | 2 +- .../plugins/pump/omnipod/eros/manager/AapsOmnipodManager.java | 2 +- .../eros/rileylink/service/RileyLinkOmnipodService.java | 2 +- .../plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt | 4 ++-- .../plugins/pump/omnipod/eros/ui/PodHistoryActivity.java | 2 +- .../plugins/pump/omnipod/eros/ui/PodManagementActivity.kt | 4 ++-- .../eros/ui/wizard/activation/PodActivationWizardActivity.kt | 2 +- .../ui/wizard/activation/fragment/AttachPodInfoFragment.kt | 2 +- .../eros/ui/wizard/activation/fragment/FillPodInfoFragment.kt | 2 +- .../wizard/activation/fragment/InitializePodActionFragment.kt | 2 +- .../wizard/activation/fragment/InsertCannulaActionFragment.kt | 2 +- .../ui/wizard/activation/fragment/PodActivatedInfoFragment.kt | 2 +- .../activation/fragment/PodActivationActionFragmentBase.kt | 2 +- .../ui/wizard/common/activity/OmnipodWizardActivityBase.kt | 2 +- .../eros/ui/wizard/common/fragment/ActionFragmentBase.kt | 2 +- .../eros/ui/wizard/common/fragment/InfoFragmentBase.kt | 2 +- .../eros/ui/wizard/common/fragment/WizardFragmentBase.kt | 4 ++-- .../ui/wizard/deactivation/PodDeactivationWizardActivity.kt | 2 +- .../deactivation/fragment/DeactivatePodActionFragment.kt | 2 +- .../wizard/deactivation/fragment/DeactivatePodInfoFragment.kt | 2 +- .../deactivation/fragment/PodDeactivatedInfoFragment.kt | 2 +- .../wizard/deactivation/fragment/PodDiscardedInfoFragment.kt | 2 +- .../plugins/pump/omnipod/eros/util/AapsOmnipodUtil.java | 2 +- 28 files changed, 33 insertions(+), 33 deletions(-) diff --git a/crowdin.yml b/crowdin.yml index d12e37292f..d1d40577c8 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -19,7 +19,7 @@ files: translation: /dana/src/main/res/values-%android_code%/strings.xml - source: /medtronic/src/main/res/values/strings.xml translation: /medtronic/src/main/res/values-%android_code%/strings.xml - - source: /omnipod/src/main/res/values/strings.xml - translation: /omnipod/src/main/res/values-%android_code%/strings.xml + - source: /omnipod-eros/src/main/res/values/strings.xml + translation: /omnipod-eros/src/main/res/values-%android_code%/strings.xml - source: /rileylink/src/main/res/values/strings.xml translation: /rileylink/src/main/res/values-%android_code%/strings.xml diff --git a/omnipod-eros/src/main/AndroidManifest.xml b/omnipod-eros/src/main/AndroidManifest.xml index 011cd8a01f..af03a825f1 100644 --- a/omnipod-eros/src/main/AndroidManifest.xml +++ b/omnipod-eros/src/main/AndroidManifest.xml @@ -1,9 +1,9 @@ + package="info.nightscout.androidaps.plugins.pump.omnipod.eros"> diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPlugin.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPlugin.java index 835dd527b0..3bcd724874 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPlugin.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPlugin.java @@ -66,7 +66,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpInfo; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData; import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.R; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R; import info.nightscout.androidaps.plugins.pump.omnipod.eros.data.ActiveBolus; import info.nightscout.androidaps.plugins.pump.omnipod.eros.data.RLHistoryItemOmnipod; import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.OmnipodCommandType; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodCommandType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodCommandType.java index c1a5ff660a..c47306d057 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodCommandType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodCommandType.java @@ -1,6 +1,6 @@ package info.nightscout.androidaps.plugins.pump.omnipod.eros.definition; -import info.nightscout.androidaps.plugins.pump.omnipod.R; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R; /** * Created by andy on 4.8.2019 diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodStorageKeys.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodStorageKeys.java index f1aeebcbcc..861acff0ff 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodStorageKeys.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/OmnipodStorageKeys.java @@ -1,6 +1,6 @@ package info.nightscout.androidaps.plugins.pump.omnipod.eros.definition; -import info.nightscout.androidaps.plugins.pump.omnipod.R; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R; public class OmnipodStorageKeys { public static class Preferences { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/PodHistoryEntryType.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/PodHistoryEntryType.java index d89e287fdd..e4a61ec8c1 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/PodHistoryEntryType.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/definition/PodHistoryEntryType.java @@ -6,7 +6,7 @@ import java.util.HashMap; import java.util.Map; import info.nightscout.androidaps.plugins.pump.common.defs.PumpHistoryEntryGroup; -import info.nightscout.androidaps.plugins.pump.omnipod.R; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R; /** * Created by andy on 24.11.2019 diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsOmnipodManager.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsOmnipodManager.java index 3cbc4d847f..d4a76b8bae 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsOmnipodManager.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/manager/AapsOmnipodManager.java @@ -41,7 +41,7 @@ import info.nightscout.androidaps.plugins.general.overview.notifications.Notific import info.nightscout.androidaps.plugins.pump.common.data.TempBasalPair; import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.R; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R; import info.nightscout.androidaps.plugins.pump.omnipod.eros.data.ActiveBolus; import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.OmnipodCommandType; import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.OmnipodStorageKeys; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/service/RileyLinkOmnipodService.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/service/RileyLinkOmnipodService.java index 5f6ced399a..128c465c03 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/service/RileyLinkOmnipodService.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/service/RileyLinkOmnipodService.java @@ -19,7 +19,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.Rile import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkService; import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin; -import info.nightscout.androidaps.plugins.pump.omnipod.R; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R; import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager; import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt index f199a2dd8e..6404185aff 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt @@ -23,8 +23,8 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin -import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.databinding.OmnipodOverviewBinding +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.databinding.OmnipodOverviewBinding import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodHistoryActivity.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodHistoryActivity.java index ed4c7db40a..0cd1cb817b 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodHistoryActivity.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodHistoryActivity.java @@ -33,7 +33,7 @@ import info.nightscout.androidaps.plugins.pump.common.data.TempBasalPair; import info.nightscout.androidaps.plugins.pump.common.defs.PumpHistoryEntryGroup; import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; import info.nightscout.androidaps.plugins.pump.common.utils.ProfileUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.R; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R; import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.PodHistoryEntryType; import info.nightscout.androidaps.plugins.pump.omnipod.eros.util.AapsOmnipodUtil; import info.nightscout.androidaps.utils.resources.ResourceHelper; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodManagementActivity.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodManagementActivity.kt index 1296bfa447..d542458d86 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodManagementActivity.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodManagementActivity.kt @@ -14,8 +14,8 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.Riley import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ResetRileyLinkConfigurationTask import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin -import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.databinding.OmnipodPodManagementBinding +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.databinding.OmnipodPodManagementBinding import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.BeepConfigType import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/PodActivationWizardActivity.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/PodActivationWizardActivity.kt index bbbf41ab04..723f990c60 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/PodActivationWizardActivity.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/PodActivationWizardActivity.kt @@ -2,7 +2,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activatio import android.os.Bundle import androidx.annotation.IdRes -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.activity.OmnipodWizardActivityBase diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/AttachPodInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/AttachPodInfoFragment.kt index afade782d2..13c091f04f 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/AttachPodInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/AttachPodInfoFragment.kt @@ -7,7 +7,7 @@ import androidx.annotation.IdRes import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog import androidx.navigation.fragment.findNavController -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class AttachPodInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/FillPodInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/FillPodInfoFragment.kt index 12dfb1e2f5..d6f3316deb 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/FillPodInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/FillPodInfoFragment.kt @@ -2,7 +2,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activatio import androidx.annotation.IdRes import androidx.annotation.StringRes -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class FillPodInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InitializePodActionFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InitializePodActionFragment.kt index 0d3ed954c0..23914c1e96 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InitializePodActionFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InitializePodActionFragment.kt @@ -5,7 +5,7 @@ import androidx.annotation.IdRes import androidx.annotation.StringRes import androidx.fragment.app.viewModels import androidx.lifecycle.ViewModelProvider -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger.OmnipodPluginQualifier import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.InitializePodActionViewModel import javax.inject.Inject diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt index 0ab6eabdc8..ec56cedab2 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/InsertCannulaActionFragment.kt @@ -5,7 +5,7 @@ import androidx.annotation.IdRes import androidx.annotation.StringRes import androidx.fragment.app.viewModels import androidx.lifecycle.ViewModelProvider -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger.OmnipodPluginQualifier import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.InsertCannulaActionViewModel import javax.inject.Inject diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt index d7d6cf9139..4b1227ffce 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivatedInfoFragment.kt @@ -2,7 +2,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activatio import androidx.annotation.IdRes import androidx.annotation.StringRes -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class PodActivatedInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt index be3f3b6159..f94ffd38a2 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/activation/fragment/PodActivationActionFragmentBase.kt @@ -4,7 +4,7 @@ import android.content.Intent import android.os.Bundle import android.view.View import android.widget.Button -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.ActionFragmentBase diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/activity/OmnipodWizardActivityBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/activity/OmnipodWizardActivityBase.kt index fbfaf84f7b..31ecd34464 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/activity/OmnipodWizardActivityBase.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/activity/OmnipodWizardActivityBase.kt @@ -4,7 +4,7 @@ import androidx.appcompat.app.AlertDialog import androidx.navigation.NavController import androidx.navigation.fragment.NavHostFragment import info.nightscout.androidaps.activities.NoSplashAppCompatActivity -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R abstract class OmnipodWizardActivityBase : NoSplashAppCompatActivity() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/ActionFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/ActionFragmentBase.kt index 7a2f4794b7..d1bd2f9f0b 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/ActionFragmentBase.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/ActionFragmentBase.kt @@ -6,7 +6,7 @@ import android.view.View import android.widget.Button import androidx.annotation.LayoutRes import androidx.annotation.StringRes -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.viewmodel.ActionViewModelBase import info.nightscout.androidaps.utils.extensions.toVisibility diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/InfoFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/InfoFragmentBase.kt index 73a52d8e9f..664e373539 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/InfoFragmentBase.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/InfoFragmentBase.kt @@ -5,7 +5,7 @@ import android.view.View import android.widget.TextView import androidx.annotation.LayoutRes import androidx.annotation.StringRes -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R abstract class InfoFragmentBase : WizardFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/WizardFragmentBase.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/WizardFragmentBase.kt index 587c8e988d..50b3519179 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/WizardFragmentBase.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/common/fragment/WizardFragmentBase.kt @@ -10,8 +10,8 @@ import androidx.annotation.LayoutRes import androidx.annotation.StringRes import androidx.navigation.fragment.findNavController import dagger.android.support.DaggerFragment -import info.nightscout.androidaps.plugins.pump.omnipod.R -import info.nightscout.androidaps.plugins.pump.omnipod.databinding.OmnipodWizardBaseFragmentBinding +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.databinding.OmnipodWizardBaseFragmentBinding import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.activity.OmnipodWizardActivityBase import kotlin.math.roundToInt diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/PodDeactivationWizardActivity.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/PodDeactivationWizardActivity.kt index f39cdfa409..895a7c4c8e 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/PodDeactivationWizardActivity.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/PodDeactivationWizardActivity.kt @@ -1,7 +1,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation import android.os.Bundle -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.activity.OmnipodWizardActivityBase class PodDeactivationWizardActivity : OmnipodWizardActivityBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt index 3e10d7d9b6..dab6389965 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodActionFragment.kt @@ -9,7 +9,7 @@ import androidx.appcompat.app.AlertDialog import androidx.fragment.app.viewModels import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger.OmnipodPluginQualifier import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.ActionFragmentBase diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt index c41e4db357..f90e682e25 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/DeactivatePodInfoFragment.kt @@ -2,7 +2,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivat import androidx.annotation.IdRes import androidx.annotation.StringRes -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class DeactivatePodInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt index 7c167f2c67..ebc8a16a8e 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDeactivatedInfoFragment.kt @@ -2,7 +2,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivat import androidx.annotation.IdRes import androidx.annotation.StringRes -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class PodDeactivatedInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt index b6dc74d7b2..e74bf8a528 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/wizard/deactivation/fragment/PodDiscardedInfoFragment.kt @@ -2,7 +2,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivat import androidx.annotation.IdRes import androidx.annotation.StringRes -import info.nightscout.androidaps.plugins.pump.omnipod.R +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.common.fragment.InfoFragmentBase class PodDiscardedInfoFragment : InfoFragmentBase() { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/util/AapsOmnipodUtil.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/util/AapsOmnipodUtil.java index 23fff2b0fb..51b9acb54c 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/util/AapsOmnipodUtil.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/util/AapsOmnipodUtil.java @@ -16,7 +16,7 @@ import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; -import info.nightscout.androidaps.plugins.pump.omnipod.R; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.R; import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSet; import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertSlot; import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.AlertType; From 9489cbf9a72872fca56840387f9398ee6e0ba1d0 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Tue, 9 Feb 2021 21:05:40 +0100 Subject: [PATCH 08/83] Rename OmnipodPumpPlugin to OmnipodErosPumpPlugin --- .../dependencyInjection/PluginsModule.kt | 4 ++-- .../plugins/general/actions/ActionsFragment.kt | 4 ++-- .../general/overview/StatusLightHandler.kt | 4 ++-- .../androidaps/setupwizard/SWDefinition.kt | 12 ++++++------ ...umpPlugin.java => OmnipodErosPumpPlugin.java} | 9 ++++----- .../service/RileyLinkOmnipodService.java | 4 ++-- .../omnipod/eros/ui/OmnipodOverviewFragment.kt | 16 ++++++++-------- .../omnipod/eros/ui/PodManagementActivity.kt | 6 +++--- ...nTest.java => OmnipodErosPumpPluginTest.java} | 4 ++-- 9 files changed, 31 insertions(+), 32 deletions(-) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/{OmnipodPumpPlugin.java => OmnipodErosPumpPlugin.java} (99%) rename omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/{OmnipodPumpPluginTest.java => OmnipodErosPumpPluginTest.java} (97%) diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/PluginsModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/PluginsModule.kt index 287ac11e99..02506911ec 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/PluginsModule.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/PluginsModule.kt @@ -42,7 +42,7 @@ import info.nightscout.androidaps.plugins.pump.combo.ComboPlugin import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin import info.nightscout.androidaps.plugins.pump.mdi.MDIPlugin import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin -import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodErosPumpPlugin import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin @@ -160,7 +160,7 @@ abstract class PluginsModule { @PumpDriver @IntoMap @IntKey(155) - abstract fun bindOmnipodPumpPlugin(plugin: OmnipodPumpPlugin): PluginBase + abstract fun bindOmnipodPumpPlugin(plugin: OmnipodErosPumpPlugin): PluginBase @Binds @NotNSClient diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt index 84a34e1ccd..13f7b5bd27 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt @@ -26,7 +26,7 @@ import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction import info.nightscout.androidaps.plugins.general.overview.StatusLightHandler -import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodErosPumpPlugin import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.skins.SkinProvider import info.nightscout.androidaps.utils.FabricPrivacy @@ -301,7 +301,7 @@ class ActionsFragment : DaggerFragment() { val activeBgSource = activePlugin.activeBgSource historyBrowser?.visibility = (profile != null).toVisibility() fill?.visibility = (pump.pumpDescription.isRefillingCapable && pump.isInitialized && !pump.isSuspended).toVisibility() - pumpBatteryChange?.visibility = (pump.pumpDescription.isBatteryReplaceable || (pump is OmnipodPumpPlugin && pump.isUseRileyLinkBatteryLevel && pump.isBatteryChangeLoggingEnabled)).toVisibility() + pumpBatteryChange?.visibility = (pump.pumpDescription.isBatteryReplaceable || (pump is OmnipodErosPumpPlugin && pump.isUseRileyLinkBatteryLevel && pump.isBatteryChangeLoggingEnabled)).toVisibility() tempTarget?.visibility = (profile != null && config.APS).toVisibility() tddStats?.visibility = pump.pumpDescription.supportsTDDs.toVisibility() diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt index b3a5fe952f..82362908b7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt @@ -9,7 +9,7 @@ import info.nightscout.androidaps.R import info.nightscout.androidaps.db.CareportalEvent import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.plugins.pump.common.defs.PumpType -import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodErosPumpPlugin import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants import info.nightscout.androidaps.utils.DecimalFormatter import info.nightscout.androidaps.utils.WarnColors @@ -52,7 +52,7 @@ class StatusLightHandler @Inject constructor( } if (!config.NSCLIENT) { - if (pump.model() == PumpType.Insulet_Omnipod && pump is OmnipodPumpPlugin) { // instance of check is needed because at startup, pump can still be VirtualPumpPlugin and that will cause a crash because of the class cast below + if (pump.model() == PumpType.Insulet_Omnipod && pump is OmnipodErosPumpPlugin) { // instance of check is needed because at startup, pump can still be VirtualPumpPlugin and that will cause a crash because of the class cast below handleOmnipodBatteryLevel(careportal_battery_level, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%", pump.isUseRileyLinkBatteryLevel) } else if (pump.model() != PumpType.AccuChekCombo) { handleLevel(careportal_battery_level, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%") diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.kt b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.kt index fa8fc38b79..0cc0a8c9e6 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.kt +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.kt @@ -27,7 +27,7 @@ import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin import info.nightscout.androidaps.plugins.profile.ns.NSProfileFragment import info.nightscout.androidaps.plugins.profile.ns.NSProfilePlugin import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange -import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodErosPumpPlugin import info.nightscout.androidaps.setupwizard.elements.* import info.nightscout.androidaps.setupwizard.events.EventSWUpdate import info.nightscout.androidaps.utils.AndroidPermission @@ -267,22 +267,22 @@ class SWDefinition @Inject constructor( .label(R.string.setupwizard_pump_waiting_for_riley_link_connection) .visibility { val activePump = activePlugin.activePump - activePump is OmnipodPumpPlugin && !activePump.isRileyLinkReady + activePump is OmnipodErosPumpPlugin && !activePump.isRileyLinkReady }) .add( // Omnipod only SWEventListener(injector, EventRileyLinkDeviceStatusChange::class.java) .label(R.string.setupwizard_pump_riley_link_status) - .visibility { activePlugin.activePump is OmnipodPumpPlugin }) + .visibility { activePlugin.activePump is OmnipodErosPumpPlugin }) .add(SWButton(injector) .text(R.string.readstatus) .action { commandQueue.readStatus("Clicked connect to pump", null) } .visibility { // Hide for Omnipod, because as we don't require a Pod to be paired in the setup wizard, // Getting the status might not be possible - activePlugin.activePump !is OmnipodPumpPlugin + activePlugin.activePump !is OmnipodErosPumpPlugin }) .add(SWEventListener(injector, EventPumpStatusChanged::class.java) - .visibility { activePlugin.activePump !is OmnipodPumpPlugin }) + .visibility { activePlugin.activePump !is OmnipodErosPumpPlugin }) .validator { isPumpInitialized() } private fun isPumpInitialized(): Boolean { @@ -290,7 +290,7 @@ class SWDefinition @Inject constructor( // For Omnipod, consider the pump initialized when a RL has been configured successfully // Users will be prompted to activate a Pod after completing the setup wizard. - return activePump.isInitialized || (activePump is OmnipodPumpPlugin && activePump.isRileyLinkReady) + return activePump.isInitialized || (activePump is OmnipodErosPumpPlugin && activePump.isRileyLinkReady) } private val screenAps = SWScreen(injector, R.string.configbuilder_aps) diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPlugin.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodErosPumpPlugin.java similarity index 99% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPlugin.java rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodErosPumpPlugin.java index 3bcd724874..6a5364dbca 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPlugin.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodErosPumpPlugin.java @@ -66,7 +66,6 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpInfo; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData; import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.eros.R; import info.nightscout.androidaps.plugins.pump.omnipod.eros.data.ActiveBolus; import info.nightscout.androidaps.plugins.pump.omnipod.eros.data.RLHistoryItemOmnipod; import info.nightscout.androidaps.plugins.pump.omnipod.eros.definition.OmnipodCommandType; @@ -116,7 +115,7 @@ import static info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.defini * @author Andy Rozman (andy.rozman@gmail.com) */ @Singleton -public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, RileyLinkPumpDevice { +public class OmnipodErosPumpPlugin extends PumpPluginBase implements PumpInterface, RileyLinkPumpDevice { private static final long RILEY_LINK_CONNECT_TIMEOUT_MILLIS = 3 * 60 * 1_000L; // 3 minutes private static final long STATUS_CHECK_INTERVAL_MILLIS = 60 * 1_000L; // 1 minute public static final int STARTUP_STATUS_REQUEST_TRIES = 2; @@ -159,7 +158,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, private final Runnable statusChecker; @Inject - public OmnipodPumpPlugin( + public OmnipodErosPumpPlugin( HasAndroidInjector injector, AAPSLogger aapsLogger, AapsSchedulers aapsSchedulers, @@ -248,10 +247,10 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, aapsOmnipodManager.createSuspendedFakeTbrIfNotExists(); } - if (OmnipodPumpPlugin.this.hasTimeDateOrTimeZoneChanged) { + if (OmnipodErosPumpPlugin.this.hasTimeDateOrTimeZoneChanged) { getCommandQueue().customCommand(new CommandHandleTimeChange(false), null); } - if (!OmnipodPumpPlugin.this.verifyPodAlertConfiguration()) { + if (!OmnipodErosPumpPlugin.this.verifyPodAlertConfiguration()) { getCommandQueue().customCommand(new CommandUpdateAlertConfiguration(), null); } diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/service/RileyLinkOmnipodService.java b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/service/RileyLinkOmnipodService.java index 128c465c03..9f6417ffdd 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/service/RileyLinkOmnipodService.java +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/rileylink/service/RileyLinkOmnipodService.java @@ -18,7 +18,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.Rile import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkTargetFrequency; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkService; -import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin; +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodErosPumpPlugin; import info.nightscout.androidaps.plugins.pump.omnipod.eros.R; import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager; import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager; @@ -34,7 +34,7 @@ public class RileyLinkOmnipodService extends RileyLinkService { private static final String REGEX_MAC = "([\\da-fA-F]{1,2}(?:\\:|$)){6}"; - @Inject OmnipodPumpPlugin omnipodPumpPlugin; + @Inject OmnipodErosPumpPlugin omnipodErosPumpPlugin; @Inject AapsOmnipodUtil aapsOmnipodUtil; @Inject PodStateManager podStateManager; @Inject DatabaseHelperInterface databaseHelper; diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt index 6404185aff..cc627f1a7a 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/OmnipodOverviewFragment.kt @@ -22,7 +22,7 @@ import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDevic import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkServiceState import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData -import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodErosPumpPlugin import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.databinding.OmnipodOverviewBinding import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress @@ -70,7 +70,7 @@ class OmnipodOverviewFragment : DaggerFragment() { @Inject lateinit var rxBus: RxBusWrapper @Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var activePlugin: ActivePluginProvider - @Inject lateinit var omnipodPumpPlugin: OmnipodPumpPlugin + @Inject lateinit var omnipodErosPumpPlugin: OmnipodErosPumpPlugin @Inject lateinit var podStateManager: PodStateManager @Inject lateinit var sp: SP @Inject lateinit var omnipodUtil: AapsOmnipodUtil @@ -106,7 +106,7 @@ class OmnipodOverviewFragment : DaggerFragment() { super.onViewCreated(view, savedInstanceState) binding.buttonPodManagement.setOnClickListener { - if (omnipodPumpPlugin.rileyLinkService?.verifyConfiguration() == true) { + if (omnipodErosPumpPlugin.rileyLinkService?.verifyConfiguration() == true) { activity?.let { activity -> context?.let { context -> protectionCheck.queryProtection( @@ -232,8 +232,8 @@ class OmnipodOverviewFragment : DaggerFragment() { updatePodStatus() val errors = ArrayList() - if (omnipodPumpPlugin.rileyLinkService != null) { - val rileyLinkErrorDescription = omnipodPumpPlugin.rileyLinkService.errorDescription + if (omnipodErosPumpPlugin.rileyLinkService != null) { + val rileyLinkErrorDescription = omnipodErosPumpPlugin.rileyLinkService.errorDescription if (StringUtils.isNotEmpty(rileyLinkErrorDescription)) { errors.add(rileyLinkErrorDescription) } @@ -288,7 +288,7 @@ class OmnipodOverviewFragment : DaggerFragment() { // base basal rate binding.baseBasalRate.text = if (podStateManager.isPodActivationCompleted) { - resourceHelper.gs(R.string.pump_basebasalrate, omnipodPumpPlugin.model().determineCorrectBasalSize(podStateManager.basalSchedule.rateAt(TimeUtil.toDuration(DateTime.now())))) + resourceHelper.gs(R.string.pump_basebasalrate, omnipodErosPumpPlugin.model().determineCorrectBasalSize(podStateManager.basalSchedule.rateAt(TimeUtil.toDuration(DateTime.now())))) } else { PLACEHOLDER } @@ -336,7 +336,7 @@ class OmnipodOverviewFragment : DaggerFragment() { if (podStateManager.isPodInitialized && podStateManager.lastSuccessfulCommunication != null) { binding.lastConnection.text = readableDuration(podStateManager.lastSuccessfulCommunication) val lastConnectionColor = - if (omnipodPumpPlugin.isUnreachableAlertTimeoutExceeded(getPumpUnreachableTimeout().millis)) { + if (omnipodErosPumpPlugin.isUnreachableAlertTimeoutExceeded(getPumpUnreachableTimeout().millis)) { Color.RED } else { Color.WHITE @@ -397,7 +397,7 @@ class OmnipodOverviewFragment : DaggerFragment() { private fun updateLastBolus() { if (podStateManager.isPodActivationCompleted && podStateManager.hasLastBolus()) { - var text = resourceHelper.gs(R.string.omnipod_overview_last_bolus_value, omnipodPumpPlugin.model().determineCorrectBolusSize(podStateManager.lastBolusAmount), resourceHelper.gs(R.string.insulin_unit_shortname), readableDuration(podStateManager.lastBolusStartTime)) + var text = resourceHelper.gs(R.string.omnipod_overview_last_bolus_value, omnipodErosPumpPlugin.model().determineCorrectBolusSize(podStateManager.lastBolusAmount), resourceHelper.gs(R.string.insulin_unit_shortname), readableDuration(podStateManager.lastBolusStartTime)) val textColor: Int if (podStateManager.isLastBolusCertain) { diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodManagementActivity.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodManagementActivity.kt index d542458d86..d7b05ebac7 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodManagementActivity.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/ui/PodManagementActivity.kt @@ -13,7 +13,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyL import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ResetRileyLinkConfigurationTask import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor -import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodPumpPlugin +import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodErosPumpPlugin import info.nightscout.androidaps.plugins.pump.omnipod.eros.R import info.nightscout.androidaps.plugins.pump.omnipod.eros.databinding.OmnipodPodManagementBinding import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress @@ -49,7 +49,7 @@ class PodManagementActivity : NoSplashAppCompatActivity() { @Inject lateinit var rileyLinkServiceData: RileyLinkServiceData @Inject lateinit var aapsOmnipodManager: AapsOmnipodManager @Inject lateinit var context: Context - @Inject lateinit var omnipodPumpPlugin: OmnipodPumpPlugin + @Inject lateinit var omnipodErosPumpPlugin: OmnipodErosPumpPlugin @Inject lateinit var serviceTaskExecutor: ServiceTaskExecutor @Inject lateinit var aapsSchedulers: AapsSchedulers @@ -78,7 +78,7 @@ class PodManagementActivity : NoSplashAppCompatActivity() { } binding.buttonRileylinkStats.setOnClickListener { - if (omnipodPumpPlugin.rileyLinkService?.verifyConfiguration() == true) { + if (omnipodErosPumpPlugin.rileyLinkService?.verifyConfiguration() == true) { startActivity(Intent(context, RileyLinkStatusActivity::class.java)) } else { displayNotConfiguredDialog() diff --git a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPluginTest.java b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodErosPumpPluginTest.java similarity index 97% rename from omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPluginTest.java rename to omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodErosPumpPluginTest.java index 82c2008017..795f36fc25 100644 --- a/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodPumpPluginTest.java +++ b/omnipod-eros/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/OmnipodErosPumpPluginTest.java @@ -38,7 +38,7 @@ import static org.mockito.Mockito.when; @RunWith(PowerMockRunner.class) -public class OmnipodPumpPluginTest { +public class OmnipodErosPumpPluginTest { @Mock HasAndroidInjector injector; AAPSLogger aapsLogger = new AAPSLoggerTest(); @@ -58,7 +58,7 @@ public class OmnipodPumpPluginTest { // mock all the things PowerMockito.mockStatic(Looper.class); - OmnipodPumpPlugin plugin = new OmnipodPumpPlugin(injector, aapsLogger, new TestAapsSchedulers(), rxBusWrapper, null, + OmnipodErosPumpPlugin plugin = new OmnipodErosPumpPlugin(injector, aapsLogger, new TestAapsSchedulers(), rxBusWrapper, null, resourceHelper, activePluginProvider, null, null, aapsOmnipodManager, commandQueueProvider, null, null, null, null, rileyLinkUtil, null, null, null, null From 43409eb86424e07fce1c6ca7b6ece48ca74f51a5 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Tue, 9 Feb 2021 21:21:30 +0100 Subject: [PATCH 09/83] Add empty Omnipod Dash module --- app/build.gradle | 1 + omnipod-dash/.gitignore | 1 + omnipod-dash/build.gradle | 38 +++++++++++++++++++ omnipod-dash/consumer-rules.pro | 0 omnipod-dash/proguard-rules.pro | 21 ++++++++++ omnipod-dash/src/main/AndroidManifest.xml | 5 +++ .../omnipod/dash/OmnipodDashPumpPlugin.java | 5 +++ settings.gradle | 3 +- 8 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 omnipod-dash/.gitignore create mode 100644 omnipod-dash/build.gradle create mode 100644 omnipod-dash/consumer-rules.pro create mode 100644 omnipod-dash/proguard-rules.pro create mode 100644 omnipod-dash/src/main/AndroidManifest.xml create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.java diff --git a/app/build.gradle b/app/build.gradle index c9c7c5fa18..899215e146 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -242,6 +242,7 @@ dependencies { implementation project(':rileylink') implementation project(':medtronic') implementation project(':omnipod-eros') + implementation project(':omnipod-dash') implementation fileTree(include: ['*.jar'], dir: 'libs') diff --git a/omnipod-dash/.gitignore b/omnipod-dash/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/omnipod-dash/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/omnipod-dash/build.gradle b/omnipod-dash/build.gradle new file mode 100644 index 0000000000..c673b3a28f --- /dev/null +++ b/omnipod-dash/build.gradle @@ -0,0 +1,38 @@ +plugins { + id 'com.android.library' +} + +android { + compileSdkVersion 28 + buildToolsVersion "30.0.2" + + defaultConfig { + minSdkVersion 24 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles "consumer-rules.pro" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.3.0' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' +} \ No newline at end of file diff --git a/omnipod-dash/consumer-rules.pro b/omnipod-dash/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/omnipod-dash/proguard-rules.pro b/omnipod-dash/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/omnipod-dash/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/omnipod-dash/src/main/AndroidManifest.xml b/omnipod-dash/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..e99b57bee2 --- /dev/null +++ b/omnipod-dash/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.java new file mode 100644 index 0000000000..e18c717b74 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.java @@ -0,0 +1,5 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash; + +public class OmnipodDashPumpPlugin { + // TODO +} diff --git a/settings.gradle b/settings.gradle index 32af4b9e30..2090bffc04 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,2 @@ -include ':database' -include ':app', ':wear', ':core', ':dana', ':danar', ':danars', ':rileylink', ':medtronic', ':omnipod-eros' +include ':app', ':database', ':wear', ':core', ':dana', ':danar', ':danars', ':rileylink', ':medtronic', ':omnipod-eros', ':omnipod-dash' From fc4065b71cce271f77d12bc28a9ffa28f30211be Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 10 Feb 2021 00:17:14 +0100 Subject: [PATCH 10/83] Add GetVersionResponse and SetUniqueIdResponse; add some definitions --- omnipod-dash/build.gradle | 2 +- .../dash/driver/pod/OmnipodDashManager.java | 4 + .../dash/driver/pod/command/Command.java | 7 + .../dash/driver/pod/command/CommandBase.java | 10 ++ .../dash/driver/pod/command/CommandType.java | 26 +++ .../driver/pod/definition/OmnipodEvent.java | 26 +++ .../dash/driver/pod/definition/PodStatus.java | 36 ++++ .../pod/response/ActivationResponseBase.java | 14 ++ .../dash/driver/pod/response/Response.java | 7 + .../driver/pod/response/ResponseBase.java | 22 +++ .../driver/pod/response/ResponseType.java | 76 +++++++++ .../pod/response/SetUniqueIdResponse.java | 155 ++++++++++++++++++ .../driver/pod/response/VersionResponse.java | 128 +++++++++++++++ .../pod/response/SetUniqueIdResponseTest.java | 44 +++++ .../pod/response/VersionResponseTest.java | 41 +++++ 15 files changed, 597 insertions(+), 1 deletion(-) create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/OmnipodDashManager.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/Command.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandType.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/OmnipodEvent.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/PodStatus.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ActivationResponseBase.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/Response.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseBase.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseType.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponse.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/VersionResponse.java create mode 100644 omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponseTest.java create mode 100644 omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/VersionResponseTest.java diff --git a/omnipod-dash/build.gradle b/omnipod-dash/build.gradle index c673b3a28f..959e970c17 100644 --- a/omnipod-dash/build.gradle +++ b/omnipod-dash/build.gradle @@ -29,7 +29,7 @@ android { } dependencies { - + implementation 'commons-codec:commons-codec:1.15' implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.3.0' testImplementation 'junit:junit:4.+' diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/OmnipodDashManager.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/OmnipodDashManager.java new file mode 100644 index 0000000000..76af4418c5 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/OmnipodDashManager.java @@ -0,0 +1,4 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod; + +public class OmnipodDashManager { +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/Command.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/Command.java new file mode 100644 index 0000000000..b05534135e --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/Command.java @@ -0,0 +1,7 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +public interface Command { + CommandType getCommandType(); + + byte[] getEncoded(); +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java new file mode 100644 index 0000000000..038086c02d --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java @@ -0,0 +1,10 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +abstract class CommandBase implements Command { + CommandBase(CommandType commandType) { + } + + @Override public CommandType getCommandType() { + return null; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandType.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandType.java new file mode 100644 index 0000000000..3df9df23b0 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandType.java @@ -0,0 +1,26 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +public enum CommandType { + SET_UNIQUE_ID((byte) 0x03), + GET_VERSION((byte) 0x07), + GET_STATUS((byte) 0x0e), + SILENCE_ALERTS((byte) 0x11), + PROGRAM_BASAL((byte) 0x13), + PROGRAM_TEMP_BASAL((byte) 0x16), + BOLUS((byte) 0x17), + PROGRAM_ALERTS((byte) 0x19), + DELIVERY_INTERLOCK((byte) 0x1a), + DEACTIVATE((byte) 0x1c), + PROGRAM_BEEPS((byte) 0x1e), + STOP_DELIVERY((byte) 0x1f); + + byte value; + + CommandType(byte value) { + this.value = value; + } + + public byte getValue() { + return value; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/OmnipodEvent.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/OmnipodEvent.java new file mode 100644 index 0000000000..a6f78b06e4 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/OmnipodEvent.java @@ -0,0 +1,26 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; + +public class OmnipodEvent { + public enum OmnipodEventType { + CONNECTED, + ALREADY_CONNECTED, + FAILED_TO_CONNECT, + DISCONNECTED, + COMMAND_SENT, + GOT_POD_VERSION, + SET_UNIQUE_ID, + PRIMED_PUMP, + FINISHED_ACTIVATION_1, + PROGRAMMED_BASAL, + PROGRAMMED_ALERTS, + SET_BEEPS, + INSERTED_CANNULA, + FINISHED_ACTIVATION_2, + PROGRAMMED_TEMP_BASAL, + STARTED_BOLUS, + STOPPED_DELIVERY, + SILENCED_ALERTS, + DEACTIVATED, + COMMAND_SENDING, + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/PodStatus.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/PodStatus.java new file mode 100644 index 0000000000..88fb98b546 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/PodStatus.java @@ -0,0 +1,36 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; + +public enum PodStatus { + UNINITIALIZED((byte) 0x00), + MFG_TEST((byte) 0x01), + FILLED((byte) 0x02), + UID_SET((byte) 0x03), + ENGAGING_CLUTCH_DRIVE((byte) 0x04), + CLUTCH_DRIVE_ENGAGED((byte) 0x05), + BASAL_PROGRAM_RUNNING((byte) 0x06), + PRIMING((byte) 0x07), + RUNNING_ABOVE_MIN_VOLUME((byte) 0x08), + RUNNING_BELOW_MIN_VOLUME((byte) 0x09), + UNUSED_10((byte) 0x0a), + UNUSED_11((byte) 0x0b), + UNUSED_12((byte) 0x0c), + ALARM((byte) 0x0d), + LUMP_OF_COAL((byte) 0x0e), + DEACTIVATED((byte) 0x0f), + UNKNOWN((byte) 0xff); + + private byte value; + + PodStatus(byte value) { + this.value = value; + } + + public static PodStatus byValue(byte value) { + for (PodStatus status : values()) { + if (status.value == value) { + return status; + } + } + return UNKNOWN; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ActivationResponseBase.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ActivationResponseBase.java new file mode 100644 index 0000000000..f36851f7d8 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ActivationResponseBase.java @@ -0,0 +1,14 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +abstract class ActivationResponseBase extends ResponseBase { + final ResponseType.ActivationResponseType activationResponseType; + + ActivationResponseBase(ResponseType.ActivationResponseType activationResponseType, byte[] encoded) { + super(ResponseType.ACTIVATION_RESPONSE, encoded); + this.activationResponseType = activationResponseType; + } + + public ResponseType.ActivationResponseType getActivationResponseType() { + return activationResponseType; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/Response.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/Response.java new file mode 100644 index 0000000000..e4edf3f4ba --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/Response.java @@ -0,0 +1,7 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +public interface Response { + ResponseType getResponseType(); + + byte[] getEncoded(); +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseBase.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseBase.java new file mode 100644 index 0000000000..bb43dcf4dc --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseBase.java @@ -0,0 +1,22 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +import java.util.Arrays; + +abstract class ResponseBase implements Response { + final ResponseType responseType; + final byte[] encoded; + + ResponseBase(ResponseType responseType, byte[] encoded) { + this.responseType = responseType; + this.encoded = Arrays.copyOf(encoded, encoded.length); + } + + @Override public ResponseType getResponseType() { + return responseType; + } + + @Override + public byte[] getEncoded() { + return encoded; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseType.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseType.java new file mode 100644 index 0000000000..1dff970efe --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseType.java @@ -0,0 +1,76 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +public enum ResponseType { + ACTIVATION_RESPONSE((byte) 0x01), + DEFAULT_STATUS_RESPONSE((byte) 0x1d), + ADDITIONAL_STATUS_RESPONSE((byte) 0x02), + NAK_RESPONSE((byte) 0x06), + UNKNOWN((byte) 0xff); + + private byte value; + + ResponseType(byte value) { + this.value = value; + } + + public byte getValue() { + return value; + } + + public static ResponseType byValue(byte value) { + for (ResponseType type : values()) { + if (type.value == value) { + return type; + } + } + return UNKNOWN; + } + + enum AdditionalStatusResponseType { + STATUS_RESPONSE_PAGE_1((byte) 0x01), + STATUS_RESPONSE_PAGE_2((byte) 0x02), + STATUS_RESPONSE_PAGE_3((byte) 0x03), + STATUS_RESPONSE_PAGE_5((byte) 0x05), + STATUS_RESPONSE_PAGE_6((byte) 0x06), + STATUS_RESPONSE_PAGE_70((byte) 0x46), + STATUS_RESPONSE_PAGE_80((byte) 0x50), + STATUS_RESPONSE_PAGE_81((byte) 0x51), + UNKNOWN((byte) 0xff); + + private byte value; + + AdditionalStatusResponseType(byte value) { + this.value = value; + } + + public static AdditionalStatusResponseType byValue(byte value) { + for (AdditionalStatusResponseType type : values()) { + if (type.value == value) { + return type; + } + } + return UNKNOWN; + } + } + + enum ActivationResponseType { + GET_VERSION_RESPONSE((byte) 0x15), + SET_UNIQUE_ID_RESPONSE((byte) 0x1b), + UNKNOWN((byte) 0xff); + + private byte length; + + ActivationResponseType(byte length) { + this.length = length; + } + + public static ActivationResponseType byLength(byte length) { + for (ActivationResponseType type : values()) { + if (type.length == length) { + return type; + } + } + return UNKNOWN; + } + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponse.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponse.java new file mode 100644 index 0000000000..798643df00 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponse.java @@ -0,0 +1,155 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +import java.nio.ByteBuffer; +import java.util.Arrays; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus; + +public final class SetUniqueIdResponse extends ActivationResponseBase { + private byte messageType; + private short messageLength; + private short pulseVolumeInTenThousandthMicroLiter; + private short pumpRate; + private short primePumpRate; + private short numberOfEngagingClutchDrivePulses; + private short numberOfPrimePulses; + private short podExpirationTimeInHours; + private short firmwareVersionMajor; + private short firmwareVersionMinor; + private short firmwareVersionInterim; + private short bleVersionMajor; + private short bleVersionMinor; + private short bleVersionInterim; + private short productId; + private PodStatus podStatus; + private long lotNumber; + private long podSequenceNumber; + private long uniqueIdReceivedInCommand; + + public SetUniqueIdResponse(byte[] encoded) { + super(ResponseType.ActivationResponseType.SET_UNIQUE_ID_RESPONSE, encoded); + + this.messageType = encoded[0]; + this.messageLength = (short) (encoded[1] & 0xff); + this.pulseVolumeInTenThousandthMicroLiter = ByteBuffer.wrap(new byte[]{encoded[2], encoded[3]}).getShort(); + this.pumpRate = (short) (encoded[4] & 0xff); + this.primePumpRate = (short) (encoded[5] & 0xff); + this.numberOfEngagingClutchDrivePulses = (short) (encoded[6] & 0xff); + this.numberOfPrimePulses = (short) (encoded[7] & 0xff); + this.podExpirationTimeInHours = (short) (encoded[8] & 0xff); + this.firmwareVersionMajor = (short) (encoded[9] & 0xff); + this.firmwareVersionMinor = (short) (encoded[10] & 0xff); + this.firmwareVersionInterim = (short) (encoded[11] & 0xff); + this.bleVersionMajor = (short) (encoded[12] & 0xff); + this.bleVersionMinor = (short) (encoded[13] & 0xff); + this.bleVersionInterim = (short) (encoded[14] & 0xff); + this.productId = (short) (encoded[15] & 0xff); + this.podStatus = PodStatus.byValue(encoded[16]); + this.lotNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[17], encoded[18], encoded[19], encoded[20]}).getLong(); + this.podSequenceNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[21], encoded[22], encoded[23], encoded[24]}).getLong(); + this.uniqueIdReceivedInCommand = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[25], encoded[26], encoded[27], encoded[28]}).getLong(); + } + + public byte getMessageType() { + return messageType; + } + + public short getMessageLength() { + return messageLength; + } + + public short getPulseVolumeInTenThousandthMicroLiter() { + return pulseVolumeInTenThousandthMicroLiter; + } + + public short getDeliveryRate() { + return pumpRate; + } + + public short getPrimeRate() { + return primePumpRate; + } + + public short getNumberOfEngagingClutchDrivePulses() { + return numberOfEngagingClutchDrivePulses; + } + + public short getNumberOfPrimePulses() { + return numberOfPrimePulses; + } + + public short getPodExpirationTimeInHours() { + return podExpirationTimeInHours; + } + + public short getFirmwareVersionMajor() { + return firmwareVersionMajor; + } + + public short getFirmwareVersionMinor() { + return firmwareVersionMinor; + } + + public short getFirmwareVersionInterim() { + return firmwareVersionInterim; + } + + public short getBleVersionMajor() { + return bleVersionMajor; + } + + public short getBleVersionMinor() { + return bleVersionMinor; + } + + public short getBleVersionInterim() { + return bleVersionInterim; + } + + public short getProductId() { + return productId; + } + + public PodStatus getPodStatus() { + return podStatus; + } + + public long getLotNumber() { + return lotNumber; + } + + public long getPodSequenceNumber() { + return podSequenceNumber; + } + + public long getUniqueIdReceivedInCommand() { + return uniqueIdReceivedInCommand; + } + + @Override public String toString() { + return "SetUniqueIdResponse{" + + "messageType=" + messageType + + ", messageLength=" + messageLength + + ", pulseVolume=" + pulseVolumeInTenThousandthMicroLiter + + ", pumpRate=" + pumpRate + + ", primePumpRate=" + primePumpRate + + ", numberOfEngagingClutchDrivePulses=" + numberOfEngagingClutchDrivePulses + + ", numberOfPrimePulses=" + numberOfPrimePulses + + ", podExpirationTimeInHours=" + podExpirationTimeInHours + + ", softwareVersionMajor=" + firmwareVersionMajor + + ", softwareVersionMinor=" + firmwareVersionMinor + + ", softwareVersionInterim=" + firmwareVersionInterim + + ", bleVersionMajor=" + bleVersionMajor + + ", bleVersionMinor=" + bleVersionMinor + + ", bleVersionInterim=" + bleVersionInterim + + ", productId=" + productId + + ", podStatus=" + podStatus + + ", lotNumber=" + lotNumber + + ", podSequenceNumber=" + podSequenceNumber + + ", uniqueIdReceivedInCommand=" + uniqueIdReceivedInCommand + + ", activationResponseType=" + activationResponseType + + ", responseType=" + responseType + + ", encoded=" + Arrays.toString(encoded) + + '}'; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/VersionResponse.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/VersionResponse.java new file mode 100644 index 0000000000..8f3c2e2be8 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/VersionResponse.java @@ -0,0 +1,128 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +import java.nio.ByteBuffer; +import java.util.Arrays; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus; + +public final class VersionResponse extends ActivationResponseBase { + + private final byte messageType; + private final short messageLength; + private final short firmwareVersionMajor; + private final short firmwareVersionMinor; + private final short firmwareVersionInterim; + private final short bleVersionMajor; + private final short bleVersionMinor; + private final short bleVersionInterim; + private final short productId; + private final PodStatus podStatus; + private final long lotNumber; + private final long podSequenceNumber; + private final byte rssi; + private final byte receiverLowerGain; + private final long uniqueIdReceivedInCommand; + + public VersionResponse(byte[] encoded) { + super(ResponseType.ActivationResponseType.GET_VERSION_RESPONSE, encoded); + + messageType = encoded[0]; + messageLength = (short) (encoded[1] & 0xff); + firmwareVersionMajor = (short) (encoded[2] & 0xff); + firmwareVersionMinor = (short) (encoded[3] & 0xff); + firmwareVersionInterim = (short) (encoded[4] & 0xff); + bleVersionMajor = (short) (encoded[5] & 0xff); + bleVersionMinor = (short) (encoded[6] & 0xff); + bleVersionInterim = (short) (encoded[7] & 0xff); + productId = (short) (encoded[8] & 0xff); + podStatus = PodStatus.byValue((byte) (encoded[9] & 0xf)); + lotNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[10], encoded[11], encoded[12], encoded[13]}).getLong(); + podSequenceNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[14], encoded[15], encoded[16], encoded[17]}).getLong(); + rssi = (byte) (encoded[18] & 0x3f); + receiverLowerGain = (byte) ((encoded[18] >> 6) & 0x03); + uniqueIdReceivedInCommand = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[19], encoded[20], encoded[21], encoded[22]}).getLong(); + } + + public byte getMessageType() { + return messageType; + } + + public short getMessageLength() { + return messageLength; + } + + public short getFirmwareVersionMajor() { + return firmwareVersionMajor; + } + + public short getFirmwareVersionMinor() { + return firmwareVersionMinor; + } + + public short getFirmwareVersionInterim() { + return firmwareVersionInterim; + } + + public short getBleVersionMajor() { + return bleVersionMajor; + } + + public short getBleVersionMinor() { + return bleVersionMinor; + } + + public short getBleVersionInterim() { + return bleVersionInterim; + } + + public short getProductId() { + return productId; + } + + public PodStatus getPodStatus() { + return podStatus; + } + + public long getLotNumber() { + return lotNumber; + } + + public long getPodSequenceNumber() { + return podSequenceNumber; + } + + public byte getRssi() { + return rssi; + } + + public byte getReceiverLowerGain() { + return receiverLowerGain; + } + + public long getUniqueIdReceivedInCommand() { + return uniqueIdReceivedInCommand; + } + + @Override public String toString() { + return "VersionResponse{" + + "messageType=" + messageType + + ", messageLength=" + messageLength + + ", firmwareVersionMajor=" + firmwareVersionMajor + + ", firmwareVersionMinor=" + firmwareVersionMinor + + ", firmwareVersionInterim=" + firmwareVersionInterim + + ", bleVersionMajor=" + bleVersionMajor + + ", bleVersionMinor=" + bleVersionMinor + + ", bleVersionInterim=" + bleVersionInterim + + ", productId=" + productId + + ", podStatus=" + podStatus + + ", lotNumber=" + lotNumber + + ", podSequenceNumber=" + podSequenceNumber + + ", rssi=" + rssi + + ", receiverLowerGain=" + receiverLowerGain + + ", uniqueIdReceivedInCommand=" + uniqueIdReceivedInCommand + + ", activationResponseType=" + activationResponseType + + ", responseType=" + responseType + + ", encoded=" + Arrays.toString(encoded) + + '}'; + } +} diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponseTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponseTest.java new file mode 100644 index 0000000000..1de262db9d --- /dev/null +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponseTest.java @@ -0,0 +1,44 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.junit.Test; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotSame; + +public class SetUniqueIdResponseTest { + @Test + public void testValidResponse() throws DecoderException { + byte[] encoded = Hex.decodeHex("011B13881008340A50040A00010300040308146CC1000954D402420001"); + SetUniqueIdResponse response = new SetUniqueIdResponse(encoded); + + assertArrayEquals(encoded, response.getEncoded()); + assertNotSame(encoded, response.getEncoded()); + assertEquals(ResponseType.ACTIVATION_RESPONSE, response.getResponseType()); + assertEquals(ResponseType.ActivationResponseType.SET_UNIQUE_ID_RESPONSE, response.getActivationResponseType()); + + assertEquals(ResponseType.ACTIVATION_RESPONSE.getValue(), response.getMessageType()); + assertEquals(27, response.getMessageLength()); + assertEquals(5000, response.getPulseVolumeInTenThousandthMicroLiter()); + assertEquals(16, response.getDeliveryRate()); + assertEquals(8, response.getPrimeRate()); + assertEquals(52, response.getNumberOfEngagingClutchDrivePulses()); + assertEquals(10, response.getNumberOfPrimePulses()); + assertEquals(80, response.getPodExpirationTimeInHours()); + assertEquals(4, response.getFirmwareVersionMajor()); + assertEquals(10, response.getFirmwareVersionMinor()); + assertEquals(0, response.getFirmwareVersionInterim()); + assertEquals(1, response.getBleVersionMajor()); + assertEquals(3, response.getBleVersionMinor()); + assertEquals(0, response.getBleVersionInterim()); + assertEquals(4, response.getProductId()); + assertEquals(PodStatus.UID_SET, response.getPodStatus()); + assertEquals(135556289L, response.getLotNumber()); + assertEquals(611540L, response.getPodSequenceNumber()); + assertEquals(37879809L, response.getUniqueIdReceivedInCommand()); + } +} \ No newline at end of file diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/VersionResponseTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/VersionResponseTest.java new file mode 100644 index 0000000000..c88142a715 --- /dev/null +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/VersionResponseTest.java @@ -0,0 +1,41 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.junit.Test; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotSame; + +public class VersionResponseTest { + + @Test + public void testValidResponse() throws DecoderException { + byte[] encoded = Hex.decodeHex("0115040A00010300040208146CC1000954D400FFFFFFFF"); + VersionResponse response = new VersionResponse(encoded); + + assertArrayEquals(encoded, response.getEncoded()); + assertNotSame(encoded, response.getEncoded()); + assertEquals(ResponseType.ACTIVATION_RESPONSE, response.getResponseType()); + assertEquals(ResponseType.ActivationResponseType.GET_VERSION_RESPONSE, response.getActivationResponseType()); + + assertEquals(ResponseType.ACTIVATION_RESPONSE.getValue(), response.getMessageType()); + assertEquals(21, response.getMessageLength()); + assertEquals(4, response.getFirmwareVersionMajor()); + assertEquals(10, response.getFirmwareVersionMinor()); + assertEquals(0, response.getFirmwareVersionInterim()); + assertEquals(1, response.getBleVersionMajor()); + assertEquals(3, response.getBleVersionMinor()); + assertEquals(0, response.getBleVersionInterim()); + assertEquals(4, response.getProductId()); + assertEquals(PodStatus.FILLED, response.getPodStatus()); + assertEquals(135556289, response.getLotNumber()); + assertEquals(611540, response.getPodSequenceNumber()); + assertEquals(0L, response.getRssi()); + assertEquals(0L, response.getReceiverLowerGain()); + assertEquals(4294967295L, response.getUniqueIdReceivedInCommand()); + } +} \ No newline at end of file From f1d095d9c821fd2aed592887dd6f4150b5d42708 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 10 Feb 2021 01:22:53 +0100 Subject: [PATCH 11/83] Add GetVersionCommand --- .../dash/driver/pod/command/CommandBase.java | 64 ++++++++++++++++++- .../driver/pod/command/GetVersionCommand.java | 31 +++++++++ .../omnipod/dash/driver/pod/util/CrcUtil.java | 32 ++++++++++ .../pod/command/GetVersionCommandTest.java | 17 +++++ 4 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/util/CrcUtil.java create mode 100644 omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommandTest.java diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java index 038086c02d..9e4c38c24e 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java @@ -1,10 +1,70 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.util.CrcUtil; + abstract class CommandBase implements Command { - CommandBase(CommandType commandType) { + final CommandType commandType; + final short sequenceNumber; + + CommandBase(CommandType commandType, short sequenceNumber) { + this.commandType = commandType; + this.sequenceNumber = sequenceNumber; } @Override public CommandType getCommandType() { - return null; + return commandType; + } + + public short getSequenceNumber() { + return sequenceNumber; + } + + static byte[] formatCommand(byte[] command) { + List temp = new ArrayList<>(); + + byte[] prefix = "S0.0=".getBytes(StandardCharsets.UTF_8); + for (byte b : prefix) { + temp.add(b); + } + + byte[] length = ByteBuffer.allocate(2).putShort((short) command.length).array(); + for (int i = 0; i < 2; i++) { + temp.add(length[i]); + } + + // Append command + for (byte b : command) { + temp.add(b); + } + + byte[] suffix = ",G0.0".getBytes(StandardCharsets.UTF_8); + for (byte b : suffix) { + temp.add(b); + } + + byte[] out = new byte[((short) temp.size())]; + for (int i2 = 0; i2 < temp.size(); i2++) { + out[i2] = temp.get(i2); + } + return out; + } + + static byte[] appendCrc(byte[] command) { + return ByteBuffer.allocate(command.length + 2) // + .put(command) // + .putShort(CrcUtil.createCrc(command)) // + .array(); + } + + static byte[] encodeHeader(int address, short sequenceNumber, short length, boolean unknown) { + return ByteBuffer.allocate(6) // + .putInt(address) // + .putShort((short) (((sequenceNumber & 15) << 10) | length | (((unknown ? 1 : 0) & 1) << 15))) // + .array(); } } diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java new file mode 100644 index 0000000000..782e4c9b58 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java @@ -0,0 +1,31 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +import java.nio.ByteBuffer; + +public class GetVersionCommand extends CommandBase { + private static final int DEFAULT_ADDRESS = -1; + private static final short LENGTH = 6; + private static final byte BODY_LENGTH = 4; + + private final int address; + private final boolean unknown; + + public GetVersionCommand(short sequenceNumber, boolean unknown) { + this(sequenceNumber, DEFAULT_ADDRESS, unknown); + } + + public GetVersionCommand(short sequenceNumber, int address, boolean unknown) { + super(CommandType.GET_VERSION, sequenceNumber); + this.address = address; + this.unknown = unknown; + } + + @Override public byte[] getEncoded() { + return appendCrc(ByteBuffer.allocate(12) // + .put(encodeHeader(address, sequenceNumber, LENGTH, unknown)) // + .put(commandType.getValue()) // + .put(BODY_LENGTH) // + .putInt(address) // + .array()); + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/util/CrcUtil.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/util/CrcUtil.java new file mode 100644 index 0000000000..2597c619ff --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/util/CrcUtil.java @@ -0,0 +1,32 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.util; + +public class CrcUtil { + + private static final short[] crc16table = {0, -32763, -32753, 10, -32741, 30, 20, -32751, -32717, 54, 60, -32711, 40, -32723, -32729, 34, -32669, 102, 108, -32663, 120, -32643, -32649, 114, 80, -32683, -32673, 90, -32693, 78, 68, -32703, -32573, 198, 204, -32567, 216, -32547, -32553, 210, 240, -32523, -32513, 250, -32533, 238, 228, -32543, 160, -32603, -32593, 170, -32581, 190, 180, -32591, -32621, 150, 156, -32615, 136, -32627, -32633, 130, -32381, 390, 396, -32375, 408, -32355, -32361, 402, 432, -32331, -32321, 442, -32341, 430, 420, -32351, 480, -32283, -32273, 490, -32261, 510, 500, -32271, -32301, 470, 476, -32295, 456, -32307, -32313, 450, 320, -32443, -32433, 330, -32421, 350, 340, -32431, -32397, 374, 380, -32391, 360, -32403, -32409, 354, -32477, 294, 300, -32471, 312, -32451, -32457, 306, 272, -32491, -32481, 282, -32501, 270, 260, -32511, -31997, 774, 780, -31991, 792, -31971, -31977, 786, 816, -31947, -31937, 826, -31957, 814, 804, -31967, 864, -31899, -31889, 874, -31877, 894, 884, -31887, -31917, 854, 860, -31911, 840, -31923, -31929, 834, 960, -31803, -31793, 970, -31781, 990, 980, -31791, -31757, 1014, 1020, -31751, 1000, -31763, -31769, 994, -31837, 934, 940, -31831, 952, -31811, -31817, 946, 912, -31851, -31841, 922, -31861, 910, 900, -31871, 640, -32123, -32113, 650, -32101, 670, 660, -32111, -32077, 694, 700, -32071, 680, -32083, -32089, 674, -32029, 742, 748, -32023, 760, -32003, -32009, 754, 720, -32043, -32033, 730, -32053, 718, 708, -32063, -32189, 582, 588, -32183, 600, -32163, -32169, 594, 624, -32139, -32129, 634, -32149, 622, 612, -32159, 544, -32219, -32209, 554, -32197, 574, 564, -32207, -32237, 534, 540, -32231, 520, -32243, -32249, 514}; + + public static int createCrc(short[] sArr) { + int i = 0; + for (short s = 0; s < sArr.length; s = (short) (s + 1)) { + byte b = (byte) sArr[s]; + short s2 = b; + if (b < 0) { + s2 = (short) (((byte) (b & Byte.MAX_VALUE)) + 128); + } + i += s2; + } + return i; + } + + public static short createCrc(byte[] bArr) { + short s = 0; + for (byte b : bArr) { + byte b2 = (byte) (b ^ (s & 255)); + short s2 = b2; + if (b2 < 0) { + s2 = (short) (((byte) (b2 & Byte.MAX_VALUE)) + 128); + } + s = (short) (((short) (((short) (s >> 8)) & 255)) ^ crc16table[s2]); + } + return s; + } +} diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommandTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommandTest.java new file mode 100644 index 0000000000..5750932ffa --- /dev/null +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommandTest.java @@ -0,0 +1,17 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.junit.Test; + +import static org.junit.Assert.assertArrayEquals; + +public class GetVersionCommandTest { + @Test + public void testEncoding() throws DecoderException { + byte[] encoded = new GetVersionCommand((short) 0, false) // + .getEncoded(); + + assertArrayEquals(Hex.decodeHex("FFFFFFFF00060704FFFFFFFF82B2"), encoded); + } +} \ No newline at end of file From af35253f0bf1256b34c566ca65bfdce25ed61573 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 10 Feb 2021 15:16:28 +0100 Subject: [PATCH 12/83] Add SetUniqueIdCommand and DeactivateCommand; add captures for ProgramAlertsCommand --- .../dash/driver/pod/command/CommandBase.java | 20 +++- .../driver/pod/command/DeactivateCommand.java | 21 ++++ .../driver/pod/command/GetVersionCommand.java | 13 +-- .../pod/command/SetUniqueIdCommand.java | 50 +++++++++ .../pod/command/DeactivateCommandTest.java | 17 +++ .../pod/command/ProgramAlertsCommandTest.java | 102 ++++++++++++++++++ .../pod/command/SetUniqueIdCommandTest.java | 19 ++++ 7 files changed, 230 insertions(+), 12 deletions(-) create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommand.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java create mode 100644 omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommandTest.java create mode 100644 omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java create mode 100644 omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommandTest.java diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java index 9e4c38c24e..b9c92f8b4c 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java @@ -8,22 +8,36 @@ import java.util.List; import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.util.CrcUtil; abstract class CommandBase implements Command { - final CommandType commandType; - final short sequenceNumber; + static final short HEADER_LENGTH = 6; - CommandBase(CommandType commandType, short sequenceNumber) { + final CommandType commandType; + final int address; + final short sequenceNumber; + final boolean unknown; + + CommandBase(CommandType commandType, int address, short sequenceNumber, boolean unknown) { this.commandType = commandType; + this.address = address; this.sequenceNumber = sequenceNumber; + this.unknown = unknown; } @Override public CommandType getCommandType() { return commandType; } + public int getAddress() { + return address; + } + public short getSequenceNumber() { return sequenceNumber; } + public boolean isUnknown() { + return unknown; + } + static byte[] formatCommand(byte[] command) { List temp = new ArrayList<>(); diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommand.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommand.java new file mode 100644 index 0000000000..d7678f8cb7 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommand.java @@ -0,0 +1,21 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +import java.nio.ByteBuffer; + +public class DeactivateCommand extends CommandBase { + private static final short LENGTH = 6; + private static final byte BODY_LENGTH = 4; + + DeactivateCommand(int address, short sequenceNumber, boolean unknown) { + super(CommandType.DEACTIVATE, address, sequenceNumber, unknown); + } + + @Override public byte[] getEncoded() { + return appendCrc(ByteBuffer.allocate(LENGTH + HEADER_LENGTH) // + .put(encodeHeader(address, sequenceNumber, LENGTH, unknown)) // + .put(commandType.getValue()) // + .put(BODY_LENGTH) // + .putInt(1229869870) // FIXME ?? was: byte array of int 777211465 converted to little endian + .array()); + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java index 782e4c9b58..9914c59889 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java @@ -7,21 +7,16 @@ public class GetVersionCommand extends CommandBase { private static final short LENGTH = 6; private static final byte BODY_LENGTH = 4; - private final int address; - private final boolean unknown; - public GetVersionCommand(short sequenceNumber, boolean unknown) { - this(sequenceNumber, DEFAULT_ADDRESS, unknown); + this(DEFAULT_ADDRESS, sequenceNumber, unknown); } - public GetVersionCommand(short sequenceNumber, int address, boolean unknown) { - super(CommandType.GET_VERSION, sequenceNumber); - this.address = address; - this.unknown = unknown; + public GetVersionCommand(int address, short sequenceNumber, boolean unknown) { + super(CommandType.GET_VERSION, address, sequenceNumber, unknown); } @Override public byte[] getEncoded() { - return appendCrc(ByteBuffer.allocate(12) // + return appendCrc(ByteBuffer.allocate(LENGTH + HEADER_LENGTH) // .put(encodeHeader(address, sequenceNumber, LENGTH, unknown)) // .put(commandType.getValue()) // .put(BODY_LENGTH) // diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java new file mode 100644 index 0000000000..3e4e8186c2 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java @@ -0,0 +1,50 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +import java.nio.ByteBuffer; +import java.util.Calendar; +import java.util.Date; + +public class SetUniqueIdCommand extends CommandBase { + private static final int DEFAULT_ADDRESS = -1; + private static final short LENGTH = 21; + private static final byte BODY_LENGTH = 19; + + private final int lotNumber; + private final int podSequenceNumber; + private final Date initializationTime; + + SetUniqueIdCommand(int address, short sequenceNumber, int lotNumber, int podSequenceNumber, Date initializationTime, boolean unknown) { + super(CommandType.SET_UNIQUE_ID, address, sequenceNumber, unknown); + this.lotNumber = lotNumber; + this.podSequenceNumber = podSequenceNumber; + this.initializationTime = initializationTime; + } + + @Override public byte[] getEncoded() { + return appendCrc(ByteBuffer.allocate(LENGTH + HEADER_LENGTH) // + .put(encodeHeader(DEFAULT_ADDRESS, sequenceNumber, LENGTH, unknown)) // + .put(commandType.getValue()) // + .put(BODY_LENGTH) // + .putInt(address) // + .put((byte) 0x14) // FIXME ?? + .put((byte) 0x04) // FIXME ?? + .put(encodeInitializationTime(initializationTime)) // + .putInt(lotNumber) // + .putInt(podSequenceNumber) // + .array()); + + } + + private static byte[] encodeInitializationTime(Date date) { + Calendar instance = Calendar.getInstance(); + instance.setTime(date); + + return new byte[]{ // + (byte) (instance.get(Calendar.MONTH) + 1), // + (byte) instance.get(Calendar.DATE), // + (byte) (instance.get(Calendar.YEAR) % 100), // + (byte) instance.get(Calendar.HOUR_OF_DAY), // + (byte) instance.get(Calendar.MINUTE) // + }; + } +} diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommandTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommandTest.java new file mode 100644 index 0000000000..b0b4b5380b --- /dev/null +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommandTest.java @@ -0,0 +1,17 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.junit.Test; + +import static org.junit.Assert.assertArrayEquals; + +public class DeactivateCommandTest { + @Test + public void testEncoding() throws DecoderException { + byte[] encoded = new DeactivateCommand(37879809, (short) 5, false) // + .getEncoded(); + + assertArrayEquals(Hex.decodeHex("0242000114061C04494E532E001C"), encoded); + } +} \ No newline at end of file diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java new file mode 100644 index 0000000000..ad642d6c4e --- /dev/null +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java @@ -0,0 +1,102 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +public class ProgramAlertsCommandTest { + // TODO + + // Address for all captures below: 37879811 + + /* + Pod expiration alerts + + V/PodComm: *** encode() CALLED ON ProgramAlertsCommandEncoder + *** encode() CALLED ON HeaderEncoder + V/PodComm: *** encode() RESULT FOR HeaderEncoder: 02:42:00:03:8C:12 FROM HeaderEncoder{lengthSequenceNumberAndFlags=-29678, f6666a=[], encoded=[2, 66, 0, 3, -116, 18], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0} + *** encode() RESULT FOR ProgramAlertsCommandEncoder: 02:42:00:03:8C:12:19:10:49:4E:53:2E:79:A4:10:D1:05:02:28:00:12:75:06:02:80:F5 FROM ProgramAlertsCommandEncoder{parameters=ProgramAlertsCommandParameters{configurations=[AlertConfigurationEncoder{slot=7, enabled=true, durationInMinutes=420, autoOff=false, timeTrigger=false, offsetInMinutes=4305, beepType=2, beepRepetition=5}, AlertConfigurationEncoder{slot=2, enabled=true, durationInMinutes=0, autoOff=false, timeTrigger=false, offsetInMinutes=4725, beepType=2, beepRepetition=6}]}, f6666a=[], encoded=[2, 66, 0, 3, -116, 18, 25, 16, 73, 78, 83, 46, 121, -92, 16, -47, 5, 2, 40, 0, 18, 117, 6, 2, -128, -11], headerEncoder=HeaderEncoder{lengthSequenceNumberAndFlags=-29678, f6666a=[], encoded=[2, 66, 0, 3, -116, 18], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0}, commandId=25, f6671f=0, commandBodyLength=16} + + I/PodComm: pod command: 024200038C121910494E532E79A410D1050228001275060280F5 + V/PodComm: flags: seqNum=3 ack=false mctf=true + Program Alert: + length:16, number of alerts:2 + ------------------------------------- + alert index: 7 (lump of coal/pod expiration) + enabled: true + duration: 420 minutes + set alarm: false + V/PodComm: type: time - trigger after 4305 minutes (71.75 hrs) + beep type: 2 + beep repetition: 5 + ------------------------------------- + alert index: 2 (imminent pod expiration) + enabled: true + duration: 0 minutes + set alarm: false + type: time - trigger after 4725 minutes (78.75 hrs) + beep type: 2 + beep repetition: 6 + + */ + + /* + Low reservoir + + V/PodComm: *** encode() RESULT FOR HeaderEncoder: 02:42:00:03:20:0C FROM HeaderEncoder{lengthSequenceNumberAndFlags=8204, f6666a=[], encoded=[2, 66, 0, 3, 32, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0} + V/PodComm: *** encode() RESULT FOR ProgramAlertsCommandEncoder: 02:42:00:03:20:0C:19:0A:49:4E:53:2E:4C:00:00:C8:01:02:01:49 FROM ProgramAlertsCommandEncoder{parameters=ProgamAlertsCommandParameters{configurations=[AlertConfigurationEncoder{slot=4, enabled=true, durationInMinutes=0, autoOff=false, timeTrigger=true, offsetInMinutes=200, beepType=2, beepRepetition=1}]}, f6666a=[], encoded=[2, 66, 0, 3, 32, 12, 25, 10, 73, 78, 83, 46, 76, 0, 0, -56, 1, 2, 1, 73], headerEncoder=HeaderEncoder{lengthSequenceNumberAndFlags=8204, f6666a=[], encoded=[2, 66, 0, 3, 32, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0}, commandId=25, f6671f=0, commandBodyLength=10} + + V/PodComm: flags: seqNum=8 ack=false mctf=false + Program Alert: + length:10, number of alerts:1 + ------------------------------------- + alert index: 4 (low reservoir) + enabled: true + duration: 0 minutes + set alarm: false + type: volume - trigger at 200 micro liter + beep type: 2 + beep repetition: 1 + */ + + /* + User Pod expiration + + V/PodComm: *** encode() CALLED ON ProgramAlertsCommandEncoder + *** encode() CALLED ON HeaderEncoder + V/PodComm: *** encode() RESULT FOR HeaderEncoder: 02:42:00:03:3C:0C FROM HeaderEncoder{lengthSequenceNumberAndFlags=15372, f6666a=[], encoded=[2, 66, 0, 3, 60, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0} + V/PodComm: *** encode() RESULT FOR ProgramAlertsCommandEncoder: 02:42:00:03:3C:0C:19:0A:49:4E:53:2E:38:00:0F:EF:03:02:03:E2 FROM ProgramAlertsCommandEncoder{parameters=ProgramAlertsCommandParameters{configurations=[AlertConfigurationEncoder{slot=3, enabled=true, durationInMinutes=0, autoOff=false, timeTrigger=false, offsetInMinutes=4079, beepType=2, beepRepetition=3}]}, f6666a=[], encoded=[2, 66, 0, 3, 60, 12, 25, 10, 73, 78, 83, 46, 56, 0, 15, -17, 3, 2, 3, -30], headerEncoder=HeaderEncoder{lengthSequenceNumberAndFlags=15372, f6666a=[], encoded=[2, 66, 0, 3, 60, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0}, commandId=25, f6671f=0, commandBodyLength=10} + + I/PodComm: pod command: 024200033C0C190A494E532E38000FEF030203E2 + V/PodComm: flags: seqNum=15 ack=false mctf=false + Program Alert: + length:10, number of alerts:1 + ------------------------------------- + alert index: 3 (user pod expiration) + enabled: true + duration: 0 minutes + set alarm: false + type: time - trigger after 4079 minutes (67.98 hrs) + beep type: 2 + beep repetition: 3 + */ + + + /* + Lump of coal + + V/PodComm: *** encode() CALLED ON ProgramAlertsCommandEncoder + *** encode() CALLED ON HeaderEncoder + *** encode() RESULT FOR HeaderEncoder: 02:42:00:03:28:0C FROM HeaderEncoder{lengthSequenceNumberAndFlags=10252, f6666a=[], encoded=[2, 66, 0, 3, 40, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0} + D/MainActivity: Pod Activation 1: got Pod Event + V/PodComm: *** encode() RESULT FOR ProgramAlertsCommandEncoder: 02:42:00:03:28:0C:19:0A:49:4E:53:2E:78:37:00:05:08:02:03:56 FROM ProgramAlertsCommandEncoder{parameters=ProgramAlertsCommandParameters{configurations=[AlertConfigurationEncoder{slot=7, enabled=true, durationInMinutes=55, autoOff=false, timeTrigger=false, offsetInMinutes=5, beepType=2, beepRepetition=8}]}, f6666a=[], encoded=[2, 66, 0, 3, 40, 12, 25, 10, 73, 78, 83, 46, 120, 55, 0, 5, 8, 2, 3, 86], headerEncoder=HeaderEncoder{lengthSequenceNumberAndFlags=10252, f6666a=[], encoded=[2, 66, 0, 3, 40, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0}, commandId=25, f6671f=0, commandBodyLength=10} + + V/PodComm: flags: seqNum=10 ack=false mctf=false + Program Alert: + length:10, number of alerts:1 + ------------------------------------- + V/PodComm: alert index: 7 (lump of coal/pod expiration) + enabled: true + duration: 55 minutes + set alarm: false + type: time - trigger after 5 minutes (0.08 hrs) + beep type: 2 + beep repetition: 8 + */ +} diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommandTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommandTest.java new file mode 100644 index 0000000000..055f215e5d --- /dev/null +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommandTest.java @@ -0,0 +1,19 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.junit.Test; + +import java.util.Date; + +import static org.junit.Assert.assertArrayEquals; + +public class SetUniqueIdCommandTest { + @Test + public void testEncoding() throws DecoderException { + byte[] encoded = new SetUniqueIdCommand(37879811, (short) 6, 135556289, 681767, new Date(2021, 1, 10, 14, 41), false) // + .getEncoded(); + + assertArrayEquals(Hex.decodeHex("FFFFFFFF18150313024200031404020A150E2908146CC1000A67278344"), encoded); + } +} \ No newline at end of file From eb46c973a320cf8541d77d8156268d7e23288dde Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 10 Feb 2021 18:00:34 +0100 Subject: [PATCH 13/83] Add ProgramAlertsCommand --- .../dash/driver/pod/command/CommandBase.java | 2 +- .../driver/pod/command/DeactivateCommand.java | 9 ++ .../driver/pod/command/GetVersionCommand.java | 9 ++ .../pod/command/ProgramAlertsCommand.java | 46 +++++++ .../pod/command/SetUniqueIdCommand.java | 12 ++ .../pod/definition/AlertConfiguration.java | 62 +++++++++ .../dash/driver/pod/definition/AlertSlot.java | 28 ++++ .../pod/definition/AlertTriggerType.java | 6 + .../pod/definition/BeepRepetitionType.java | 20 +++ .../dash/driver/pod/definition/BeepType.java | 17 +++ .../pod/command/ProgramAlertsCommandTest.java | 130 ++++++------------ 11 files changed, 254 insertions(+), 87 deletions(-) create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommand.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertConfiguration.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertSlot.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertTriggerType.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepRepetitionType.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepType.java diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java index b9c92f8b4c..e871c07827 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/CommandBase.java @@ -78,7 +78,7 @@ abstract class CommandBase implements Command { static byte[] encodeHeader(int address, short sequenceNumber, short length, boolean unknown) { return ByteBuffer.allocate(6) // .putInt(address) // - .putShort((short) (((sequenceNumber & 15) << 10) | length | (((unknown ? 1 : 0) & 1) << 15))) // + .putShort((short) (((sequenceNumber & 0x0f) << 10) | length | ((unknown ? 1 : 0) << 15))) // .array(); } } diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommand.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommand.java index d7678f8cb7..57f32dcdb1 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommand.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/DeactivateCommand.java @@ -18,4 +18,13 @@ public class DeactivateCommand extends CommandBase { .putInt(1229869870) // FIXME ?? was: byte array of int 777211465 converted to little endian .array()); } + + @Override public String toString() { + return "DeactivateCommand{" + + "commandType=" + commandType + + ", address=" + address + + ", sequenceNumber=" + sequenceNumber + + ", unknown=" + unknown + + '}'; + } } diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java index 9914c59889..b1e2296f48 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/GetVersionCommand.java @@ -23,4 +23,13 @@ public class GetVersionCommand extends CommandBase { .putInt(address) // .array()); } + + @Override public String toString() { + return "GetVersionCommand{" + + "commandType=" + commandType + + ", address=" + address + + ", sequenceNumber=" + sequenceNumber + + ", unknown=" + unknown + + '}'; + } } diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommand.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommand.java new file mode 100644 index 0000000000..8950e8a7e1 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommand.java @@ -0,0 +1,46 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.AlertConfiguration; + +public class ProgramAlertsCommand extends CommandBase { + private final List alertConfigurations; + + ProgramAlertsCommand(int address, short sequenceNumber, boolean unknown, List alertConfigurations) { + super(CommandType.PROGRAM_ALERTS, address, sequenceNumber, unknown); + this.alertConfigurations = new ArrayList<>(alertConfigurations); + } + + @Override public byte[] getEncoded() { + ByteBuffer byteBuffer = ByteBuffer.allocate(getLength() + HEADER_LENGTH) // + .put(encodeHeader(address, sequenceNumber, getLength(), unknown)) // + .put(commandType.getValue()) // + .put(getBodyLength()) // + .putInt(1229869870); // FIXME ?? was: byte array of int 777211465 converted to little endian + for (AlertConfiguration configuration : alertConfigurations) { + byteBuffer.put(configuration.getEncoded()); + } + return appendCrc(byteBuffer.array()); + } + + private short getLength() { + return (short) (alertConfigurations.size() * 6 + 6); + } + + private byte getBodyLength() { + return (byte) (alertConfigurations.size() * 6 + 4); + } + + @Override public String toString() { + return "ProgramAlertsCommand{" + + "alertConfigurations=" + alertConfigurations + + ", commandType=" + commandType + + ", address=" + address + + ", sequenceNumber=" + sequenceNumber + + ", unknown=" + unknown + + '}'; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java index 3e4e8186c2..00fca3ec36 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java @@ -47,4 +47,16 @@ public class SetUniqueIdCommand extends CommandBase { (byte) instance.get(Calendar.MINUTE) // }; } + + @Override public String toString() { + return "SetUniqueIdCommand{" + + "lotNumber=" + lotNumber + + ", podSequenceNumber=" + podSequenceNumber + + ", initializationTime=" + initializationTime + + ", commandType=" + commandType + + ", address=" + address + + ", sequenceNumber=" + sequenceNumber + + ", unknown=" + unknown + + '}'; + } } diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertConfiguration.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertConfiguration.java new file mode 100644 index 0000000000..4dc12b4e07 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertConfiguration.java @@ -0,0 +1,62 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; + +import java.nio.ByteBuffer; + +public class AlertConfiguration { + private AlertSlot slot; + private boolean enabled; + private short durationInMinutes; + private boolean autoOff; + private AlertTriggerType triggerType; + private short offsetInMinutesOrThresholdInMicroLiters; + private BeepType beepType; + private BeepRepetitionType beepRepetition; + + public AlertConfiguration(AlertSlot slot, boolean enabled, short durationInMinutes, boolean autoOff, AlertTriggerType triggerType, short offsetInMinutesOrThresholdInMicroLiters, BeepType beepType, BeepRepetitionType beepRepetition) { + this.slot = slot; + this.enabled = enabled; + this.durationInMinutes = durationInMinutes; + this.autoOff = autoOff; + this.triggerType = triggerType; + this.offsetInMinutesOrThresholdInMicroLiters = offsetInMinutesOrThresholdInMicroLiters; + this.beepType = beepType; + this.beepRepetition = beepRepetition; + } + + /* renamed from: d */ + public byte[] getEncoded() { + byte firstByte = (byte) (slot.getValue() << 4); + if (enabled) { + firstByte |= 1 << 3; + } + if (triggerType == AlertTriggerType.RESERVOIR_VOLUME_TRIGGER) { + firstByte |= 1 << 2; + } + if (autoOff) { + firstByte |= 1 << 1; + } + firstByte |= ((durationInMinutes >> 8) & 0x01); + + return ByteBuffer.allocate(6) // + .put(firstByte) + .put((byte) durationInMinutes) // + .putShort(offsetInMinutesOrThresholdInMicroLiters) // + .put(beepRepetition.getValue()) // + .put(beepType.getValue()) // + .array(); + } + + @Override public String toString() { + return "AlertConfiguration{" + + "slot=" + slot + + ", enabled=" + enabled + + ", durationInMinutes=" + durationInMinutes + + ", autoOff=" + autoOff + + ", triggerType=" + triggerType + + ", offsetInMinutesOrThresholdInMicroLiters=" + offsetInMinutesOrThresholdInMicroLiters + + ", beepType=" + beepType + + ", beepRepetition=" + beepRepetition + + '}'; + } + +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertSlot.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertSlot.java new file mode 100644 index 0000000000..0eb6450c32 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertSlot.java @@ -0,0 +1,28 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; + +public enum AlertSlot { + EXPIRATION_IMMINENT((byte) 0x02), + LOW_RESERVOIR((byte) 0x04), + USER_POD_EXPIRATION((byte) 0x03), + LUMP_OF_COAL_AND_EXPIRATION((byte) 0x07), + UNKNOWN((byte) 255); + + private byte value; + + AlertSlot(byte value) { + this.value = value; + } + + public static AlertSlot byValue(byte value) { + for (AlertSlot slot : values()) { + if (slot.value == value) { + return slot; + } + } + return UNKNOWN; + } + + public byte getValue() { + return value; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertTriggerType.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertTriggerType.java new file mode 100644 index 0000000000..fda5bf010f --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertTriggerType.java @@ -0,0 +1,6 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; + +public enum AlertTriggerType { + TIME_TRIGGER, + RESERVOIR_VOLUME_TRIGGER +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepRepetitionType.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepRepetitionType.java new file mode 100644 index 0000000000..2b290f96b5 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepRepetitionType.java @@ -0,0 +1,20 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; + +// FIXME names +public enum BeepRepetitionType { + XXX((byte) 0x01), // Used in low reservoir alert + XXX2((byte) 0x03), // Used in user pod expiration alert + XXX3((byte) 0x05), // Used in pod expiration alert + XXX4((byte) 0x06), // Used in imminent pod expiration alert + XXX5((byte) 0x08); // Used in lump of coal alert + + private byte value; + + BeepRepetitionType(byte value) { + this.value = value; + } + + public byte getValue() { + return value; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepType.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepType.java new file mode 100644 index 0000000000..f0104ff3e6 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepType.java @@ -0,0 +1,17 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; + +// FIXME names +public enum BeepType { + SILENT((byte) 0x00), + XXX((byte) 0x02); //// Used in low reservoir alert, user expiration alert, expiration alert, imminent expiration alert, lump of coal alert + + private byte value; + + BeepType(byte value) { + this.value = value; + } + + public byte getValue() { + return value; + } +} diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java index ad642d6c4e..280bb7d7a2 100644 --- a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java @@ -1,102 +1,60 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.AlertConfiguration; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.AlertSlot; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.AlertTriggerType; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.BeepRepetitionType; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.BeepType; + +import static org.junit.Assert.assertArrayEquals; + public class ProgramAlertsCommandTest { - // TODO + @Test + public void testExpirationAlerts() throws DecoderException { + List configurations = new ArrayList<>(); + configurations.add(new AlertConfiguration(AlertSlot.LUMP_OF_COAL_AND_EXPIRATION, true, (short) 420, false, AlertTriggerType.TIME_TRIGGER, (short) 4305, BeepType.XXX, BeepRepetitionType.XXX3)); + configurations.add(new AlertConfiguration(AlertSlot.EXPIRATION_IMMINENT, true, (short) 0, false, AlertTriggerType.TIME_TRIGGER, (short) 4725, BeepType.XXX, BeepRepetitionType.XXX4)); - // Address for all captures below: 37879811 + byte[] encoded = new ProgramAlertsCommand(37879811, (short) 3, true, configurations).getEncoded(); - /* - Pod expiration alerts + assertArrayEquals(Hex.decodeHex("024200038C121910494E532E79A410D1050228001275060280F5"), encoded); + } - V/PodComm: *** encode() CALLED ON ProgramAlertsCommandEncoder - *** encode() CALLED ON HeaderEncoder - V/PodComm: *** encode() RESULT FOR HeaderEncoder: 02:42:00:03:8C:12 FROM HeaderEncoder{lengthSequenceNumberAndFlags=-29678, f6666a=[], encoded=[2, 66, 0, 3, -116, 18], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0} - *** encode() RESULT FOR ProgramAlertsCommandEncoder: 02:42:00:03:8C:12:19:10:49:4E:53:2E:79:A4:10:D1:05:02:28:00:12:75:06:02:80:F5 FROM ProgramAlertsCommandEncoder{parameters=ProgramAlertsCommandParameters{configurations=[AlertConfigurationEncoder{slot=7, enabled=true, durationInMinutes=420, autoOff=false, timeTrigger=false, offsetInMinutes=4305, beepType=2, beepRepetition=5}, AlertConfigurationEncoder{slot=2, enabled=true, durationInMinutes=0, autoOff=false, timeTrigger=false, offsetInMinutes=4725, beepType=2, beepRepetition=6}]}, f6666a=[], encoded=[2, 66, 0, 3, -116, 18, 25, 16, 73, 78, 83, 46, 121, -92, 16, -47, 5, 2, 40, 0, 18, 117, 6, 2, -128, -11], headerEncoder=HeaderEncoder{lengthSequenceNumberAndFlags=-29678, f6666a=[], encoded=[2, 66, 0, 3, -116, 18], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0}, commandId=25, f6671f=0, commandBodyLength=16} + @Test + public void testLowReservoirAlert() throws DecoderException { + List configurations = new ArrayList<>(); + configurations.add(new AlertConfiguration(AlertSlot.LOW_RESERVOIR, true, (short) 0, false, AlertTriggerType.RESERVOIR_VOLUME_TRIGGER, (short) 200, BeepType.XXX, BeepRepetitionType.XXX)); - I/PodComm: pod command: 024200038C121910494E532E79A410D1050228001275060280F5 - V/PodComm: flags: seqNum=3 ack=false mctf=true - Program Alert: - length:16, number of alerts:2 - ------------------------------------- - alert index: 7 (lump of coal/pod expiration) - enabled: true - duration: 420 minutes - set alarm: false - V/PodComm: type: time - trigger after 4305 minutes (71.75 hrs) - beep type: 2 - beep repetition: 5 - ------------------------------------- - alert index: 2 (imminent pod expiration) - enabled: true - duration: 0 minutes - set alarm: false - type: time - trigger after 4725 minutes (78.75 hrs) - beep type: 2 - beep repetition: 6 + byte[] encoded = new ProgramAlertsCommand(37879811, (short) 8, false, configurations).getEncoded(); - */ + assertArrayEquals(Hex.decodeHex("02420003200C190A494E532E4C0000C801020149"), encoded); + } - /* - Low reservoir + @Test + public void testUserExpirationAlert() throws DecoderException { + List configurations = new ArrayList<>(); + configurations.add(new AlertConfiguration(AlertSlot.USER_POD_EXPIRATION, true, (short) 0, false, AlertTriggerType.TIME_TRIGGER, (short) 4079, BeepType.XXX, BeepRepetitionType.XXX2)); - V/PodComm: *** encode() RESULT FOR HeaderEncoder: 02:42:00:03:20:0C FROM HeaderEncoder{lengthSequenceNumberAndFlags=8204, f6666a=[], encoded=[2, 66, 0, 3, 32, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0} - V/PodComm: *** encode() RESULT FOR ProgramAlertsCommandEncoder: 02:42:00:03:20:0C:19:0A:49:4E:53:2E:4C:00:00:C8:01:02:01:49 FROM ProgramAlertsCommandEncoder{parameters=ProgamAlertsCommandParameters{configurations=[AlertConfigurationEncoder{slot=4, enabled=true, durationInMinutes=0, autoOff=false, timeTrigger=true, offsetInMinutes=200, beepType=2, beepRepetition=1}]}, f6666a=[], encoded=[2, 66, 0, 3, 32, 12, 25, 10, 73, 78, 83, 46, 76, 0, 0, -56, 1, 2, 1, 73], headerEncoder=HeaderEncoder{lengthSequenceNumberAndFlags=8204, f6666a=[], encoded=[2, 66, 0, 3, 32, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0}, commandId=25, f6671f=0, commandBodyLength=10} + byte[] encoded = new ProgramAlertsCommand(37879811, (short) 15, false, configurations).getEncoded(); - V/PodComm: flags: seqNum=8 ack=false mctf=false - Program Alert: - length:10, number of alerts:1 - ------------------------------------- - alert index: 4 (low reservoir) - enabled: true - duration: 0 minutes - set alarm: false - type: volume - trigger at 200 micro liter - beep type: 2 - beep repetition: 1 - */ - - /* - User Pod expiration - - V/PodComm: *** encode() CALLED ON ProgramAlertsCommandEncoder - *** encode() CALLED ON HeaderEncoder - V/PodComm: *** encode() RESULT FOR HeaderEncoder: 02:42:00:03:3C:0C FROM HeaderEncoder{lengthSequenceNumberAndFlags=15372, f6666a=[], encoded=[2, 66, 0, 3, 60, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0} - V/PodComm: *** encode() RESULT FOR ProgramAlertsCommandEncoder: 02:42:00:03:3C:0C:19:0A:49:4E:53:2E:38:00:0F:EF:03:02:03:E2 FROM ProgramAlertsCommandEncoder{parameters=ProgramAlertsCommandParameters{configurations=[AlertConfigurationEncoder{slot=3, enabled=true, durationInMinutes=0, autoOff=false, timeTrigger=false, offsetInMinutes=4079, beepType=2, beepRepetition=3}]}, f6666a=[], encoded=[2, 66, 0, 3, 60, 12, 25, 10, 73, 78, 83, 46, 56, 0, 15, -17, 3, 2, 3, -30], headerEncoder=HeaderEncoder{lengthSequenceNumberAndFlags=15372, f6666a=[], encoded=[2, 66, 0, 3, 60, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0}, commandId=25, f6671f=0, commandBodyLength=10} - - I/PodComm: pod command: 024200033C0C190A494E532E38000FEF030203E2 - V/PodComm: flags: seqNum=15 ack=false mctf=false - Program Alert: - length:10, number of alerts:1 - ------------------------------------- - alert index: 3 (user pod expiration) - enabled: true - duration: 0 minutes - set alarm: false - type: time - trigger after 4079 minutes (67.98 hrs) - beep type: 2 - beep repetition: 3 - */ + assertArrayEquals(Hex.decodeHex("024200033C0C190A494E532E38000FEF030203E2"), encoded); + } - /* - Lump of coal + @Test + public void testLumpOfCoalAlert() throws DecoderException { + List configurations = new ArrayList<>(); + configurations.add(new AlertConfiguration(AlertSlot.LUMP_OF_COAL_AND_EXPIRATION, true, (short) 55, false, AlertTriggerType.TIME_TRIGGER, (short) 5, BeepType.XXX, BeepRepetitionType.XXX5)); - V/PodComm: *** encode() CALLED ON ProgramAlertsCommandEncoder - *** encode() CALLED ON HeaderEncoder - *** encode() RESULT FOR HeaderEncoder: 02:42:00:03:28:0C FROM HeaderEncoder{lengthSequenceNumberAndFlags=10252, f6666a=[], encoded=[2, 66, 0, 3, 40, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0} - D/MainActivity: Pod Activation 1: got Pod Event - V/PodComm: *** encode() RESULT FOR ProgramAlertsCommandEncoder: 02:42:00:03:28:0C:19:0A:49:4E:53:2E:78:37:00:05:08:02:03:56 FROM ProgramAlertsCommandEncoder{parameters=ProgramAlertsCommandParameters{configurations=[AlertConfigurationEncoder{slot=7, enabled=true, durationInMinutes=55, autoOff=false, timeTrigger=false, offsetInMinutes=5, beepType=2, beepRepetition=8}]}, f6666a=[], encoded=[2, 66, 0, 3, 40, 12, 25, 10, 73, 78, 83, 46, 120, 55, 0, 5, 8, 2, 3, 86], headerEncoder=HeaderEncoder{lengthSequenceNumberAndFlags=10252, f6666a=[], encoded=[2, 66, 0, 3, 40, 12], headerEncoder=null, commandId=0, f6671f=0, commandBodyLength=0}, commandId=25, f6671f=0, commandBodyLength=10} + byte[] encoded = new ProgramAlertsCommand(37879811, (short) 10, false, configurations).getEncoded(); - V/PodComm: flags: seqNum=10 ack=false mctf=false - Program Alert: - length:10, number of alerts:1 - ------------------------------------- - V/PodComm: alert index: 7 (lump of coal/pod expiration) - enabled: true - duration: 55 minutes - set alarm: false - type: time - trigger after 5 minutes (0.08 hrs) - beep type: 2 - beep repetition: 8 - */ + assertArrayEquals(Hex.decodeHex("02420003280C190A494E532E7837000508020356"), encoded); + } } From e77f08cd2303fa47afb42004a962cf4cd5e93337 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 10 Feb 2021 19:36:45 +0100 Subject: [PATCH 14/83] Add DefaultStatusResponse --- .../pod/command/SetUniqueIdCommand.java | 1 - .../driver/pod/definition/DeliveryStatus.java | 26 ++++ .../pod/response/DefaultStatusResponse.java | 136 ++++++++++++++++++ .../response/DefaultStatusResponseTest.java | 41 ++++++ 4 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/DeliveryStatus.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponse.java create mode 100644 omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponseTest.java diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java index 00fca3ec36..c4849e1fd6 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SetUniqueIdCommand.java @@ -32,7 +32,6 @@ public class SetUniqueIdCommand extends CommandBase { .putInt(lotNumber) // .putInt(podSequenceNumber) // .array()); - } private static byte[] encodeInitializationTime(Date date) { diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/DeliveryStatus.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/DeliveryStatus.java new file mode 100644 index 0000000000..7dc9618fb5 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/DeliveryStatus.java @@ -0,0 +1,26 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; + +public enum DeliveryStatus { + SUSPENDED((byte) 0x00), + BASAL_ACTIVE((byte) 0x01), + TEMP_BASAL_ACTIVE((byte) 0x02), + PRIMING((byte) 0x04), + BOLUS_AND_BASAL_ACTIVE((byte) 0x05), + BOLUS_AND_TEMP_BASAL_ACTIVE((byte) 0x06), + UNKNOWN((byte) 0xff); + + private byte value; + + DeliveryStatus(byte value) { + this.value = value; + } + + public static DeliveryStatus byValue(byte value) { + for (DeliveryStatus status : values()) { + if (status.value == value) { + return status; + } + } + return UNKNOWN; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponse.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponse.java new file mode 100644 index 0000000000..69828cfa02 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponse.java @@ -0,0 +1,136 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +import java.util.Arrays; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus; + +public class DefaultStatusResponse extends ResponseBase { + private final byte messageType; + private final DeliveryStatus deliveryStatus; + private final PodStatus podStatus; + private final short totalPulsesDelivered; + private final short sequenceNumberOfLastProgrammingCommand; + private final short bolusPulsesRemaining; + private final boolean occlusionAlertActive; + private final boolean alert1Active; + private final boolean alert2Active; + private final boolean alert3Active; + private final boolean alert4Active; + private final boolean alert5Active; + private final boolean alert6Active; + private final boolean alert7Active; + private final short minutesSinceActivation; + private final short reservoirPulsesRemaining; + + public DefaultStatusResponse(byte[] encoded) { + super(ResponseType.DEFAULT_STATUS_RESPONSE, encoded); + + this.messageType = encoded[0]; + this.deliveryStatus = DeliveryStatus.byValue((byte) ((encoded[1] >> 4) & 0x0f)); + this.podStatus = PodStatus.byValue((byte) (encoded[1] & 0x0f)); + this.totalPulsesDelivered = (short) (((encoded[2] & 0x0f) << 12) | ((encoded[3] & 0xff) << 1) | ((encoded[4] & 0xff) >>> 7)); + this.sequenceNumberOfLastProgrammingCommand = (byte) ((encoded[4] >>> 3) & 0x0f); + this.bolusPulsesRemaining = (short) (((encoded[4] & 0x07) << 10) | (encoded[5] & 0xff)); + + short activeAlerts = (short) (((encoded[6] & 0xff) << 1) | (encoded[7] >>> 7)); + this.occlusionAlertActive = (activeAlerts & 1) == 1; + this.alert1Active = ((activeAlerts >> 1) & 1) == 1; + this.alert2Active = ((activeAlerts >> 2) & 1) == 1; + this.alert3Active = ((activeAlerts >> 3) & 1) == 1; + this.alert4Active = ((activeAlerts >> 4) & 1) == 1; + this.alert5Active = ((activeAlerts >> 5) & 1) == 1; + this.alert6Active = ((activeAlerts >> 6) & 1) == 1; + this.alert7Active = ((activeAlerts >> 7) & 1) == 1; + + this.minutesSinceActivation = (short) (((encoded[7] & 0x7f) << 6) | (((encoded[8] & 0xff) >>> 2) & 0x3f)); + this.reservoirPulsesRemaining = (short) (((encoded[8] << 8) | encoded[9]) & 0x3ff); + } + + public byte getMessageType() { + return messageType; + } + + public DeliveryStatus getDeliveryStatus() { + return deliveryStatus; + } + + public PodStatus getPodStatus() { + return podStatus; + } + + public short getTotalPulsesDelivered() { + return totalPulsesDelivered; + } + + public short getSequenceNumberOfLastProgrammingCommand() { + return sequenceNumberOfLastProgrammingCommand; + } + + public short getBolusPulsesRemaining() { + return bolusPulsesRemaining; + } + + public boolean isOcclusionAlertActive() { + return occlusionAlertActive; + } + + public boolean isAlert1Active() { + return alert1Active; + } + + public boolean isAlert2Active() { + return alert2Active; + } + + public boolean isAlert3Active() { + return alert3Active; + } + + public boolean isAlert4Active() { + return alert4Active; + } + + public boolean isAlert5Active() { + return alert5Active; + } + + public boolean isAlert6Active() { + return alert6Active; + } + + public boolean isAlert7Active() { + return alert7Active; + } + + public short getMinutesSinceActivation() { + return minutesSinceActivation; + } + + public short getReservoirPulsesRemaining() { + return reservoirPulsesRemaining; + } + + @Override public String toString() { + return "DefaultStatusResponse{" + + "messageType=" + messageType + + ", deliveryStatus=" + deliveryStatus + + ", podStatus=" + podStatus + + ", totalPulsesDelivered=" + totalPulsesDelivered + + ", sequenceNumberOfLastProgrammingCommand=" + sequenceNumberOfLastProgrammingCommand + + ", bolusPulsesRemaining=" + bolusPulsesRemaining + + ", occlusionAlertActive=" + occlusionAlertActive + + ", alert1Active=" + alert1Active + + ", alert2Active=" + alert2Active + + ", alert3Active=" + alert3Active + + ", alert4Active=" + alert4Active + + ", alert5Active=" + alert5Active + + ", alert6Active=" + alert6Active + + ", alert7Active=" + alert7Active + + ", minutesSinceActivation=" + minutesSinceActivation + + ", reservoirPulsesRemaining=" + reservoirPulsesRemaining + + ", responseType=" + responseType + + ", encoded=" + Arrays.toString(encoded) + + '}'; + } +} diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponseTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponseTest.java new file mode 100644 index 0000000000..2e3ddbd7c1 --- /dev/null +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponseTest.java @@ -0,0 +1,41 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.junit.Test; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotSame; + +public class DefaultStatusResponseTest { + @Test + public void testValidResponse() throws DecoderException { + byte[] encoded = Hex.decodeHex("1D1800A02800000463FF"); + DefaultStatusResponse response = new DefaultStatusResponse(encoded); + + assertArrayEquals(encoded, response.getEncoded()); + assertNotSame(encoded, response.getEncoded()); + assertEquals(ResponseType.DEFAULT_STATUS_RESPONSE, response.getResponseType()); + assertEquals(ResponseType.DEFAULT_STATUS_RESPONSE.getValue(), response.getMessageType()); + assertEquals(DeliveryStatus.BASAL_ACTIVE, response.getDeliveryStatus()); + assertEquals(PodStatus.RUNNING_ABOVE_MIN_VOLUME, response.getPodStatus()); + assertEquals((short) 320, response.getTotalPulsesDelivered()); + assertEquals((short) 5, response.getSequenceNumberOfLastProgrammingCommand()); + assertEquals((short) 0, response.getBolusPulsesRemaining()); + assertFalse(response.isOcclusionAlertActive()); + assertFalse(response.isAlert1Active()); + assertFalse(response.isAlert2Active()); + assertFalse(response.isAlert3Active()); + assertFalse(response.isAlert4Active()); + assertFalse(response.isAlert5Active()); + assertFalse(response.isAlert6Active()); + assertFalse(response.isAlert7Active()); + assertEquals((short) 280, response.getMinutesSinceActivation()); + assertEquals((short) 1023, response.getReservoirPulsesRemaining()); + } +} \ No newline at end of file From d4ec8464ea110f72cc18ad8bed02582732fc9a94 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 10 Feb 2021 21:53:26 +0100 Subject: [PATCH 15/83] Add AlarmStatusResponse (Status response page 2) --- omnipod-dash/src/main/AndroidManifest.xml | 3 +- .../dash/driver/pod/definition/AlarmType.java | 174 +++++++++++++ .../AdditionalStatusResponseBase.java | 14 + .../pod/response/AlarmStatusResponse.java | 240 ++++++++++++++++++ .../pod/response/DefaultStatusResponse.java | 32 +-- .../driver/pod/response/ResponseType.java | 6 +- .../pod/response/SetUniqueIdResponse.java | 38 +-- .../pod/response/AlarmStatusResponseTest.java | 56 ++++ 8 files changed, 525 insertions(+), 38 deletions(-) create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlarmType.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AdditionalStatusResponseBase.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AlarmStatusResponse.java create mode 100644 omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AlarmStatusResponseTest.java diff --git a/omnipod-dash/src/main/AndroidManifest.xml b/omnipod-dash/src/main/AndroidManifest.xml index e99b57bee2..e93d85a757 100644 --- a/omnipod-dash/src/main/AndroidManifest.xml +++ b/omnipod-dash/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - + \ No newline at end of file diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlarmType.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlarmType.java new file mode 100644 index 0000000000..7fcf8a8ece --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlarmType.java @@ -0,0 +1,174 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; + +public enum AlarmType { + NONE((byte) 0x00), + ALARM_PW_FLASH_ERASE((byte) 0x01), + ALARM_PW_FLASH_WRITE((byte) 0x02), + ALARM_BASAL_CKSUM((byte) 0x03), + ALARM_BASAL_PPULSE((byte) 0x04), + ALARM_BASAL_STEP((byte) 0x05), + ALARM_AUTO_WAKEUP_TIMEOUT((byte) 0x06), + ALARM_WIRE_OVERDRIVEN((byte) 0x07), + ALARM_BEEP_REP_INVALID_INDEX((byte) 0x08), + ALARM_INVALID_REP_PATTERN((byte) 0x09), + ALARM_TEMP_BASAL_STEP((byte) 0x0a), + ALARM_TEMP_BASAL_CKSUM((byte) 0x0b), + ALARM_BOLUS_OVERFLOW((byte) 0x0c), + ALARM_COP_RESET((byte) 0x0d), + ALARM_ILOP_RESET((byte) 0x0e), + ALARM_ILAD_RESET((byte) 0x0f), + ALARM_SAWCOP_RESET((byte) 0x10), + ALARM_BOLUS_STEP((byte) 0x11), + ALARM_LVD_RESET((byte) 0x12), + ALARM_INVALID_RF_MSG_LENGTH((byte) 0x13), + ALARM_OCCLUDED((byte) 0x14), + ALARM_BOLUSPROG_CHKSUM((byte) 0x15), + ALARM_BOLUS_LOG((byte) 0x16), + ALARM_CRITICAL_VAR((byte) 0x17), + ALARM_EMPTY_RESERVOIR((byte) 0x18), + ALARM_LOADERR((byte) 0x19), + ALARM_PSA_FAILURE((byte) 0x1a), + ALARM_TICKCNT_NOT_CLEARED((byte) 0x1b), + ALARM_PUMP_EXPIRED((byte) 0x1c), + ALARM_COMD_BIT_NOT_SET((byte) 0x1d), + ALARM_INVALID_COMD_SET((byte) 0x1e), + ALARM_ALERTS_ARRAY_CKSM((byte) 0x1f), + ALARM_UNIT_TEST((byte) 0x20), + ALARM_TICK_TIME_ERROR((byte) 0x21), + ALARM_CRITICAL_HAZARD((byte) 0x22), + ALARM_PIEZO_FREQ((byte) 0x23), + ALARM_TICKCNT_ERROR_RTC((byte) 0x24), + ALARM_TICK_FAILURE((byte) 0x25), + ALARM_INVALID((byte) 0x26), + ALARM_LUMP_ALERT_PROGRAM((byte) 0x27), + ALARM_INVALID_PASS_CODE((byte) 0x28), + ALARM_ALERT0((byte) 0x29), + ALARM_ALERT1((byte) 0x2a), + ALARM_ALERT2((byte) 0x2b), + ALARM_ALERT3((byte) 0x2c), + ALARM_ALERT4((byte) 0x2d), + ALARM_ALERT5((byte) 0x2e), + ALARM_ALERT6((byte) 0x2f), + ALARM_ALERT7((byte) 0x30), + ALARM_ILLEGAL_PUMP_STATE((byte) 0x31), + ALARM_COP_TEST_FAILURE((byte) 0x32), + ALARM_MCTF((byte) 0x33), + ALARM_ILLEGAL_RESET((byte) 0x34), + ALARM_VETO_NOT_SET((byte) 0x35), + ALARM_ILLEGAL_PIN_RESET((byte) 0x36), + ALARM_INVALID_BEEP_PATTERN((byte) 0x37), + ALARM_WIRE_STATE_MACHINE((byte) 0x38), + ALARM_VETO_TEST_DEFAULT((byte) 0x39), + ALARM_ALERT_INVALID_INDEX((byte) 0x3a), + ALARM_SAWCOP_TEST_FAIL((byte) 0x3b), + ALARM_MCUCOP_TEST_FAIL((byte) 0x3c), + ALARM_STEP_SENSOR_SHORTED((byte) 0x3d), + ALARM_FLASH_FAILURE((byte) 0x3e), + ALARM_SPARE63((byte) 0x3f), + ALARM_SS_OPEN_CNT_EXCEEDED((byte) 0x40), + ALARM_SS_EXCESSIVE_SUMMED((byte) 0x41), + ALARM_SS_MIN_PULSE_TRANSITION((byte) 0x42), + ALARM_SS_DEFAULT((byte) 0x43), + ALARM_OPEN_WIRE1((byte) 0x44), + ALARM_OPEN_WIRE2((byte) 0x45), + ALARM_LOADERR_FAILURE((byte) 0x46), + ALARM_SAW_VETO_FAILURE((byte) 0x47), + ALARM_BAD_RFM_CLOCK((byte) 0x48), + ALARM_BAD_TICK_HIGH((byte) 0x49), + ALARM_BAD_TICK_PERIOD((byte) 0x4a), + ALARM_BAD_TRIM_VALUE((byte) 0x4b), + ALARM_BAD_BUS_CLOCK((byte) 0x4c), + ALARM_BAD_CAL_MODE((byte) 0x4d), + ALARM_SAW_TRIM_ERROR((byte) 0x4e), + ALARM_RFM_CRYSTAL_ERROR((byte) 0x4f), + ALARM_CALST_TIMEOUT((byte) 0x50), + ALARM_TICKCNT_ERROR((byte) 0x51), + ALARM_BAD_RFM_XTAL_START((byte) 0x52), + ALARM_BAD_RX_SENSENSITIVITY((byte) 0x53), + ALARM_BAD_TX_PKT_SIZE((byte) 0x54), + ALARM_TICK_LOW_PHASE_EXCEEDED((byte) 0x55), + ALARM_TICK_HIGH_PHASE_EXCEEDED((byte) 0x56), + ALARM_OCCL_CRITVAR_FAIL((byte) 0x57), + ALARM_OCCL_PARAM((byte) 0x58), + ALARM_PROG_OCCL_FAIL((byte) 0x59), + ALARM_PW_TO_HIGH_FOR_OCCL_DET((byte) 0x5a), + ALARM_OCCL_CSUM((byte) 0x5b), + ALARM_PRIME_OPEN_CNT_TO_LOW((byte) 0x5c), + ALARM_BAD_RF_CDTHR((byte) 0x5d), + ALARM_FLASH_NOT_SECURE((byte) 0x5e), + ALARM_WIRE_TEST_OPEN_GROUND((byte) 0x5f), + ALARM_OCCL_STARTUP1((byte) 0x60), + ALARM_OCCL_STARTUP2((byte) 0x61), + ALARM_OCCL_EXCESS_TIMEOUTS1((byte) 0x62), + ALARM_SPARE99((byte) 0x63), + ALARM_SPARE100((byte) 0x64), + ALARM_SPARE101((byte) 0x65), + ALARM_OCCL_EXCESS_TIMEOUTS2((byte) 0x66), + ALARM_OCCL_EXCESS_TIMEOUTS3((byte) 0x67), + ALARM_OCCL_NOISY_PULSE_WIDTHS((byte) 0x68), + ALARM_OCCL_AT_BOLUS_END((byte) 0x69), + ALARM_OCCL_ABOVE_THRESHOLD((byte) 0x6a), + ALARM_BASAL_UNDERINFUSION((byte) 0x80), + ALARM_BASAL_OVERINFUSION((byte) 0x81), + ALARM_TEMP_UNDERINFUSION((byte) 0x82), + ALARM_TEMP_OVERINFUSION((byte) 0x83), + ALARM_BOLUS_UNDERINFUSION((byte) 0x84), + ALARM_BOLUS_OVERINFUSION((byte) 0x85), + ALARM_BASAL_OVERINFUSION_PULSE((byte) 0x86), + ALARM_TEMP_OVERINFUSION_PULSE((byte) 0x87), + ALARM_BOLUS_OVERINFUSION_PULSE((byte) 0x88), + ALARM_IMMBOLUS_UNDERINFUSION_PULSE((byte) 0x89), + ALARM_EXTBOLUS_OVERINFUSION_PULSE((byte) 0x8a), + ALARM_PROGRAM_CSUM((byte) 0x8b), + ALARM_UNUSED_140((byte) 0x8c), + ALARM_UNRECOGNIZED_PULSE((byte) 0x8d), + ALARM_SYNC_WITHOUT_TEMP_ACTIVE((byte) 0x8e), + ALARM_INTERLOCK_LOAD((byte) 0x8f), + ALARM_ILLEGAL_CHAN_PARAM((byte) 0x90), + ALARM_BASAL_PULSE_CHAN_INACTIVE((byte) 0x91), + ALARM_TEMP_PULSE_CHAN_INACTIVE((byte) 0x92), + ALARM_BOLUS_PULSE_CHAN_INACTIVE((byte) 0x93), + ALARM_INT_SEMAPHORE_NOT_SET((byte) 0x94), + ALARM_ILLEGAL_INTERLOCK_CHAN((byte) 0x95), + ALARM_TERMINATE_BOLUS((byte) 0x96), + ALARM_OPEN_TRANSITIONS_COUNT((byte) 0x97), + ALARM_BLE_TO((byte) 0xa0), + ALARM_BLE_INITIATED((byte) 0xa1), + ALARM_BLE_UNK_ALARM((byte) 0xa2), + ALARM_UNUSED_163((byte) 0xa3), + ALARM_UNUSED_164((byte) 0xa4), + ALARM_UNUSED_165((byte) 0xa5), + ALARM_BLE_IAAS((byte) 0xa6), + ALARM_UNUSED_167((byte) 0xa7), + ALARM_CRC_FAILURE((byte) 0xa8), + ALARM_BLE_WD_PING_TIMEOUT((byte) 0xa9), + ALARM_BLE_EXCESSIVE_RESETS((byte) 0xaa), + ALARM_BLE_NAK_ERROR((byte) 0xab), + ALARM_BLE_REQ_HIGH_TIMEOUT((byte) 0xac), + ALARM_BLE_UNKNOWN_RESP((byte) 0xad), + ALARM_BLE_UNUSED_174((byte) 0xae), + ALARM_BLE_REQ_STUCK_HIGH((byte) 0xaf), + ALARM_BLE_STATE_MACHINE_1((byte) 0xb1), + ALARM_BLE_STATE_MACHINE_2((byte) 0xb2), + ALARM_BLE_UNUSED_179((byte) 0xb3), + ALARM_BLE_ARB_LOST((byte) 0xb4), + ALARM_BLE_ER48_DUAL_NACK((byte) 0xc0), + ALARM_BLE_QN_EXCEED_MAX_RETRY((byte) 0xc1), + ALARM_BLE_QN_CRIT_VAR_FAIL((byte) 0xc2), + UNKNOWN((byte) 0xff); + + private byte value; + + AlarmType(byte value) { + this.value = value; + } + + public static AlarmType byValue(byte value) { + for (AlarmType type : values()) { + if (type.value == value) { + return type; + } + } + return UNKNOWN; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AdditionalStatusResponseBase.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AdditionalStatusResponseBase.java new file mode 100644 index 0000000000..efb356681e --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AdditionalStatusResponseBase.java @@ -0,0 +1,14 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +public class AdditionalStatusResponseBase extends ResponseBase { + final ResponseType.AdditionalStatusResponseType statusResponseType; + + AdditionalStatusResponseBase(ResponseType.AdditionalStatusResponseType statusResponseType, byte[] encoded) { + super(ResponseType.ADDITIONAL_STATUS_RESPONSE, encoded); + this.statusResponseType = statusResponseType; + } + + public ResponseType.AdditionalStatusResponseType getStatusResponseType() { + return statusResponseType; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AlarmStatusResponse.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AlarmStatusResponse.java new file mode 100644 index 0000000000..bb7ce23766 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AlarmStatusResponse.java @@ -0,0 +1,240 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +import java.nio.ByteBuffer; +import java.util.Arrays; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.AlarmType; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus; + +public class AlarmStatusResponse extends AdditionalStatusResponseBase { + private final byte messageType; + private final short messageLength; + private final byte additionalStatusResponseType; + private final PodStatus podStatus; + private final DeliveryStatus deliveryStatus; + private final short bolusPulsesRemaining; + private final short sequenceNumberOfLastProgrammingCommand; + private final short totalPulsesDelivered; + private final AlarmType alarmType; + private final short alarmTime; + private final short reservoirPulsesRemaining; + private final short minutesSinceActivation; + private final boolean alert0Active; + private final boolean alert1Active; + private final boolean alert2Active; + private final boolean alert3Active; + private final boolean alert4Active; + private final boolean alert5Active; + private final boolean alert6Active; + private final boolean alert7Active; + private final boolean occlusionAlarm; + private final boolean pulseInfoInvalid; + private final PodStatus podStatusWhenAlarmOccurred; + private final boolean immediateBolusWhenAlarmOccurred; + private final byte occlusionType; + private final boolean occurredWhenFetchingImmediateBolusActiveInformation; + private final short rssi; + private final short receiverLowerGain; + private final PodStatus podStatusWhenAlarmOccurred2; + private final short returnAddressOfPodAlarmHandlerCaller; + + public AlarmStatusResponse(byte[] encoded) { + super(ResponseType.AdditionalStatusResponseType.ALARM_STATUS, encoded); + messageType = encoded[0]; + messageLength = (short) (encoded[1] & 0xff); + additionalStatusResponseType = encoded[2]; + podStatus = PodStatus.byValue((byte) (encoded[3] & 0x0f)); + deliveryStatus = DeliveryStatus.byValue((byte) (encoded[4] & 0x0f)); + bolusPulsesRemaining = (short) (ByteBuffer.wrap(new byte[]{encoded[5], encoded[6]}).getShort() & 2047); + sequenceNumberOfLastProgrammingCommand = (short) (encoded[7] & 0x0f); + totalPulsesDelivered = ByteBuffer.wrap(new byte[]{encoded[8], encoded[9]}).getShort(); + alarmType = AlarmType.byValue(encoded[10]); + alarmTime = ByteBuffer.wrap(new byte[]{encoded[11], encoded[12]}).getShort(); + reservoirPulsesRemaining = ByteBuffer.wrap(new byte[]{encoded[13], encoded[14]}).getShort(); + minutesSinceActivation = ByteBuffer.wrap(new byte[]{encoded[15], encoded[16]}).getShort(); + + byte activeAlerts = encoded[17]; + alert0Active = (activeAlerts & 1) == 1; + alert1Active = ((activeAlerts >>> 1) & 1) == 1; + alert2Active = ((activeAlerts >>> 2) & 1) == 1; + alert3Active = ((activeAlerts >>> 3) & 1) == 1; + alert4Active = ((activeAlerts >>> 4) & 1) == 1; + alert5Active = ((activeAlerts >>> 5) & 1) == 1; + alert6Active = ((activeAlerts >>> 6) & 1) == 1; + alert7Active = ((activeAlerts >>> 7) & 1) == 1; + + byte alarmFlags = encoded[18]; + occlusionAlarm = (alarmFlags & 1) == 1; + pulseInfoInvalid = ((alarmFlags >> 1) & 1) == 1; + + byte byte19 = encoded[19]; + byte byte20 = encoded[20]; + podStatusWhenAlarmOccurred = PodStatus.byValue((byte) (byte19 & 0x0f)); + immediateBolusWhenAlarmOccurred = ((byte19 >> 4) & 1) == 1; + occlusionType = (byte) ((byte19 >> 5) & 3); + occurredWhenFetchingImmediateBolusActiveInformation = ((byte19 >> 7) & 1) == 1; + rssi = (short) (byte20 & 0x3f); + receiverLowerGain = (short) ((byte20 >> 6) & 0x03); + podStatusWhenAlarmOccurred2 = PodStatus.byValue((byte) (encoded[21] & 0x0f)); + returnAddressOfPodAlarmHandlerCaller = ByteBuffer.wrap(new byte[]{encoded[22], encoded[23]}).getShort(); + } + + public byte getMessageType() { + return messageType; + } + + public short getMessageLength() { + return messageLength; + } + + public byte getAdditionalStatusResponseType() { + return additionalStatusResponseType; + } + + public PodStatus getPodStatus() { + return podStatus; + } + + public DeliveryStatus getDeliveryStatus() { + return deliveryStatus; + } + + public short getBolusPulsesRemaining() { + return bolusPulsesRemaining; + } + + public short getSequenceNumberOfLastProgrammingCommand() { + return sequenceNumberOfLastProgrammingCommand; + } + + public short getTotalPulsesDelivered() { + return totalPulsesDelivered; + } + + public AlarmType getAlarmType() { + return alarmType; + } + + public short getAlarmTime() { + return alarmTime; + } + + public short getReservoirPulsesRemaining() { + return reservoirPulsesRemaining; + } + + public short getMinutesSinceActivation() { + return minutesSinceActivation; + } + + public boolean isAlert0Active() { + return alert0Active; + } + + public boolean isAlert1Active() { + return alert1Active; + } + + public boolean isAlert2Active() { + return alert2Active; + } + + public boolean isAlert3Active() { + return alert3Active; + } + + public boolean isAlert4Active() { + return alert4Active; + } + + public boolean isAlert5Active() { + return alert5Active; + } + + public boolean isAlert6Active() { + return alert6Active; + } + + public boolean isAlert7Active() { + return alert7Active; + } + + public boolean isOcclusionAlarm() { + return occlusionAlarm; + } + + public boolean isPulseInfoInvalid() { + return pulseInfoInvalid; + } + + public PodStatus getPodStatusWhenAlarmOccurred() { + return podStatusWhenAlarmOccurred; + } + + public boolean isImmediateBolusWhenAlarmOccurred() { + return immediateBolusWhenAlarmOccurred; + } + + public byte getOcclusionType() { + return occlusionType; + } + + public boolean isOccurredWhenFetchingImmediateBolusActiveInformation() { + return occurredWhenFetchingImmediateBolusActiveInformation; + } + + public short getRssi() { + return rssi; + } + + public short getReceiverLowerGain() { + return receiverLowerGain; + } + + public PodStatus getPodStatusWhenAlarmOccurred2() { + return podStatusWhenAlarmOccurred2; + } + + public short getReturnAddressOfPodAlarmHandlerCaller() { + return returnAddressOfPodAlarmHandlerCaller; + } + + @Override public String toString() { + return "AlarmStatusResponse{" + + "messageType=" + messageType + + ", messageLength=" + messageLength + + ", additionalStatusResponseType=" + additionalStatusResponseType + + ", podStatus=" + podStatus + + ", deliveryStatus=" + deliveryStatus + + ", bolusPulsesRemaining=" + bolusPulsesRemaining + + ", sequenceNumberOfLastProgrammingCommand=" + sequenceNumberOfLastProgrammingCommand + + ", totalPulsesDelivered=" + totalPulsesDelivered + + ", alarmType=" + alarmType + + ", alarmTime=" + alarmTime + + ", reservoirPulsesRemaining=" + reservoirPulsesRemaining + + ", minutesSinceActivation=" + minutesSinceActivation + + ", alert0Active=" + alert0Active + + ", alert1Active=" + alert1Active + + ", alert2Active=" + alert2Active + + ", alert3Active=" + alert3Active + + ", alert4Active=" + alert4Active + + ", alert5Active=" + alert5Active + + ", alert6Active=" + alert6Active + + ", alert7Active=" + alert7Active + + ", occlusionAlarm=" + occlusionAlarm + + ", pulseInfoInvalid=" + pulseInfoInvalid + + ", podStatusWhenAlarmOccurred=" + podStatusWhenAlarmOccurred + + ", immediateBolusWhenAlarmOccurred=" + immediateBolusWhenAlarmOccurred + + ", occlusionType=" + occlusionType + + ", occurredWhenFetchingImmediateBolusActiveInformation=" + occurredWhenFetchingImmediateBolusActiveInformation + + ", rssi=" + rssi + + ", receiverLowerGain=" + receiverLowerGain + + ", podStatusWhenAlarmOccurred2=" + podStatusWhenAlarmOccurred2 + + ", returnAddressOfPodAlarmHandlerCaller=" + returnAddressOfPodAlarmHandlerCaller + + ", statusResponseType=" + statusResponseType + + ", responseType=" + responseType + + ", encoded=" + Arrays.toString(encoded) + + '}'; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponse.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponse.java index 69828cfa02..bc448f18fb 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponse.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/DefaultStatusResponse.java @@ -26,25 +26,25 @@ public class DefaultStatusResponse extends ResponseBase { public DefaultStatusResponse(byte[] encoded) { super(ResponseType.DEFAULT_STATUS_RESPONSE, encoded); - this.messageType = encoded[0]; - this.deliveryStatus = DeliveryStatus.byValue((byte) ((encoded[1] >> 4) & 0x0f)); - this.podStatus = PodStatus.byValue((byte) (encoded[1] & 0x0f)); - this.totalPulsesDelivered = (short) (((encoded[2] & 0x0f) << 12) | ((encoded[3] & 0xff) << 1) | ((encoded[4] & 0xff) >>> 7)); - this.sequenceNumberOfLastProgrammingCommand = (byte) ((encoded[4] >>> 3) & 0x0f); - this.bolusPulsesRemaining = (short) (((encoded[4] & 0x07) << 10) | (encoded[5] & 0xff)); + messageType = encoded[0]; + deliveryStatus = DeliveryStatus.byValue((byte) ((encoded[1] >> 4) & 0x0f)); + podStatus = PodStatus.byValue((byte) (encoded[1] & 0x0f)); + totalPulsesDelivered = (short) (((encoded[2] & 0x0f) << 12) | ((encoded[3] & 0xff) << 1) | ((encoded[4] & 0xff) >>> 7)); + sequenceNumberOfLastProgrammingCommand = (byte) ((encoded[4] >>> 3) & 0x0f); + bolusPulsesRemaining = (short) ((((encoded[4] & 0x07) << 10) | (encoded[5] & 0xff)) & 2047); short activeAlerts = (short) (((encoded[6] & 0xff) << 1) | (encoded[7] >>> 7)); - this.occlusionAlertActive = (activeAlerts & 1) == 1; - this.alert1Active = ((activeAlerts >> 1) & 1) == 1; - this.alert2Active = ((activeAlerts >> 2) & 1) == 1; - this.alert3Active = ((activeAlerts >> 3) & 1) == 1; - this.alert4Active = ((activeAlerts >> 4) & 1) == 1; - this.alert5Active = ((activeAlerts >> 5) & 1) == 1; - this.alert6Active = ((activeAlerts >> 6) & 1) == 1; - this.alert7Active = ((activeAlerts >> 7) & 1) == 1; + occlusionAlertActive = (activeAlerts & 1) == 1; + alert1Active = ((activeAlerts >> 1) & 1) == 1; + alert2Active = ((activeAlerts >> 2) & 1) == 1; + alert3Active = ((activeAlerts >> 3) & 1) == 1; + alert4Active = ((activeAlerts >> 4) & 1) == 1; + alert5Active = ((activeAlerts >> 5) & 1) == 1; + alert6Active = ((activeAlerts >> 6) & 1) == 1; + alert7Active = ((activeAlerts >> 7) & 1) == 1; - this.minutesSinceActivation = (short) (((encoded[7] & 0x7f) << 6) | (((encoded[8] & 0xff) >>> 2) & 0x3f)); - this.reservoirPulsesRemaining = (short) (((encoded[8] << 8) | encoded[9]) & 0x3ff); + minutesSinceActivation = (short) (((encoded[7] & 0x7f) << 6) | (((encoded[8] & 0xff) >>> 2) & 0x3f)); + reservoirPulsesRemaining = (short) (((encoded[8] << 8) | encoded[9]) & 0x3ff); } public byte getMessageType() { diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseType.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseType.java index 1dff970efe..384ae11c0e 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseType.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/ResponseType.java @@ -28,7 +28,7 @@ public enum ResponseType { enum AdditionalStatusResponseType { STATUS_RESPONSE_PAGE_1((byte) 0x01), - STATUS_RESPONSE_PAGE_2((byte) 0x02), + ALARM_STATUS((byte) 0x02), STATUS_RESPONSE_PAGE_3((byte) 0x03), STATUS_RESPONSE_PAGE_5((byte) 0x05), STATUS_RESPONSE_PAGE_6((byte) 0x06), @@ -51,6 +51,10 @@ public enum ResponseType { } return UNKNOWN; } + + public byte getValue() { + return value; + } } enum ActivationResponseType { diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponse.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponse.java index 798643df00..2c0703258a 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponse.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/SetUniqueIdResponse.java @@ -29,25 +29,25 @@ public final class SetUniqueIdResponse extends ActivationResponseBase { public SetUniqueIdResponse(byte[] encoded) { super(ResponseType.ActivationResponseType.SET_UNIQUE_ID_RESPONSE, encoded); - this.messageType = encoded[0]; - this.messageLength = (short) (encoded[1] & 0xff); - this.pulseVolumeInTenThousandthMicroLiter = ByteBuffer.wrap(new byte[]{encoded[2], encoded[3]}).getShort(); - this.pumpRate = (short) (encoded[4] & 0xff); - this.primePumpRate = (short) (encoded[5] & 0xff); - this.numberOfEngagingClutchDrivePulses = (short) (encoded[6] & 0xff); - this.numberOfPrimePulses = (short) (encoded[7] & 0xff); - this.podExpirationTimeInHours = (short) (encoded[8] & 0xff); - this.firmwareVersionMajor = (short) (encoded[9] & 0xff); - this.firmwareVersionMinor = (short) (encoded[10] & 0xff); - this.firmwareVersionInterim = (short) (encoded[11] & 0xff); - this.bleVersionMajor = (short) (encoded[12] & 0xff); - this.bleVersionMinor = (short) (encoded[13] & 0xff); - this.bleVersionInterim = (short) (encoded[14] & 0xff); - this.productId = (short) (encoded[15] & 0xff); - this.podStatus = PodStatus.byValue(encoded[16]); - this.lotNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[17], encoded[18], encoded[19], encoded[20]}).getLong(); - this.podSequenceNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[21], encoded[22], encoded[23], encoded[24]}).getLong(); - this.uniqueIdReceivedInCommand = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[25], encoded[26], encoded[27], encoded[28]}).getLong(); + messageType = encoded[0]; + messageLength = (short) (encoded[1] & 0xff); + pulseVolumeInTenThousandthMicroLiter = ByteBuffer.wrap(new byte[]{encoded[2], encoded[3]}).getShort(); + pumpRate = (short) (encoded[4] & 0xff); + primePumpRate = (short) (encoded[5] & 0xff); + numberOfEngagingClutchDrivePulses = (short) (encoded[6] & 0xff); + numberOfPrimePulses = (short) (encoded[7] & 0xff); + podExpirationTimeInHours = (short) (encoded[8] & 0xff); + firmwareVersionMajor = (short) (encoded[9] & 0xff); + firmwareVersionMinor = (short) (encoded[10] & 0xff); + firmwareVersionInterim = (short) (encoded[11] & 0xff); + bleVersionMajor = (short) (encoded[12] & 0xff); + bleVersionMinor = (short) (encoded[13] & 0xff); + bleVersionInterim = (short) (encoded[14] & 0xff); + productId = (short) (encoded[15] & 0xff); + podStatus = PodStatus.byValue(encoded[16]); + lotNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[17], encoded[18], encoded[19], encoded[20]}).getLong(); + podSequenceNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[21], encoded[22], encoded[23], encoded[24]}).getLong(); + uniqueIdReceivedInCommand = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[25], encoded[26], encoded[27], encoded[28]}).getLong(); } public byte getMessageType() { diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AlarmStatusResponseTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AlarmStatusResponseTest.java new file mode 100644 index 0000000000..892f22cdb2 --- /dev/null +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/AlarmStatusResponseTest.java @@ -0,0 +1,56 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.junit.Test; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.AlarmType; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.DeliveryStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotSame; + +public class AlarmStatusResponseTest { + @Test + public void testValidResponse() throws DecoderException { + byte[] encoded = Hex.decodeHex("021602080100000501BD00000003FF01950000000000670A"); + AlarmStatusResponse response = new AlarmStatusResponse(encoded); + + assertArrayEquals(encoded, response.getEncoded()); + assertNotSame(encoded, response.getEncoded()); + assertEquals(ResponseType.ADDITIONAL_STATUS_RESPONSE, response.getResponseType()); + assertEquals(ResponseType.ADDITIONAL_STATUS_RESPONSE.getValue(), response.getMessageType()); + assertEquals(ResponseType.AdditionalStatusResponseType.ALARM_STATUS, response.getStatusResponseType()); + assertEquals(ResponseType.AdditionalStatusResponseType.ALARM_STATUS.getValue(), response.getAdditionalStatusResponseType()); + assertEquals(PodStatus.RUNNING_ABOVE_MIN_VOLUME, response.getPodStatus()); + assertEquals(DeliveryStatus.BASAL_ACTIVE, response.getDeliveryStatus()); + assertEquals((short) 0, response.getBolusPulsesRemaining()); + assertEquals((short) 5, response.getSequenceNumberOfLastProgrammingCommand()); + assertEquals((short) 445, response.getTotalPulsesDelivered()); + assertEquals(AlarmType.NONE, response.getAlarmType()); + assertEquals((short) 0, response.getAlarmTime()); + assertEquals((short) 1023, response.getReservoirPulsesRemaining()); + assertEquals((short) 405, response.getMinutesSinceActivation()); + assertFalse(response.isAlert0Active()); + assertFalse(response.isAlert1Active()); + assertFalse(response.isAlert2Active()); + assertFalse(response.isAlert3Active()); + assertFalse(response.isAlert4Active()); + assertFalse(response.isAlert5Active()); + assertFalse(response.isAlert6Active()); + assertFalse(response.isAlert7Active()); + assertFalse(response.isOcclusionAlarm()); + assertFalse(response.isPulseInfoInvalid()); + assertEquals(PodStatus.UNINITIALIZED, response.getPodStatusWhenAlarmOccurred()); + assertFalse(response.isImmediateBolusWhenAlarmOccurred()); + assertEquals((byte) 0x00, response.getOcclusionType()); + assertFalse(response.isOccurredWhenFetchingImmediateBolusActiveInformation()); + assertEquals(0, response.getRssi()); + assertEquals(0, response.getReceiverLowerGain()); + assertEquals(PodStatus.UNINITIALIZED, response.getPodStatusWhenAlarmOccurred2()); + assertEquals((short) 26378, response.getReturnAddressOfPodAlarmHandlerCaller()); + } +} \ No newline at end of file From 1afc0ae2a90822948a26b7bb2d628e51ff2c6d32 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 10 Feb 2021 21:58:14 +0100 Subject: [PATCH 16/83] Remove comment --- .../omnipod/dash/driver/pod/definition/AlertConfiguration.java | 1 - 1 file changed, 1 deletion(-) diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertConfiguration.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertConfiguration.java index 4dc12b4e07..f620df086d 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertConfiguration.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertConfiguration.java @@ -23,7 +23,6 @@ public class AlertConfiguration { this.beepRepetition = beepRepetition; } - /* renamed from: d */ public byte[] getEncoded() { byte firstByte = (byte) (slot.getValue() << 4); if (enabled) { From 43c3b429129c6e93a0c39a691cc172bf6d1a02dc Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 10 Feb 2021 22:35:44 +0100 Subject: [PATCH 17/83] Add SilenceAlertsCommand (untested) --- .../pod/command/SilenceAlertsCommand.java | 61 +++++++++++++++++++ .../dash/driver/pod/definition/AlertSlot.java | 10 ++- .../pod/command/ProgramAlertsCommandTest.java | 6 +- .../pod/command/SilenceAlertsCommandTest.java | 5 ++ 4 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommand.java create mode 100644 omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommandTest.java diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommand.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommand.java new file mode 100644 index 0000000000..bb2609846f --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommand.java @@ -0,0 +1,61 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +import java.nio.ByteBuffer; +import java.util.BitSet; + +public class SilenceAlertsCommand extends CommandBase { + private static final short LENGTH = (short) 7; + private static final byte BODY_LENGTH = (byte) 5; + + private final SilenceAlertCommandParameters parameters; + + public SilenceAlertsCommand(int address, short sequenceNumber, boolean unknown, SilenceAlertCommandParameters parameters) { + super(CommandType.SILENCE_ALERTS, address, sequenceNumber, unknown); + this.parameters = parameters; + } + + @Override public byte[] getEncoded() { + return appendCrc(ByteBuffer.allocate(LENGTH + HEADER_LENGTH) // + .put(encodeHeader(address, sequenceNumber, LENGTH, unknown)) // + .put(commandType.getValue()) // + .put(BODY_LENGTH) // + .putInt(1229869870) // FIXME ?? was: byte array of int 777211465 converted to little endian + .put(parameters.getEncoded()) // + .array()); + } + + public static final class SilenceAlertCommandParameters { + private final boolean silenceAutoOffAlert; + private final boolean silenceMultiCommandAlert; + private final boolean silenceExpirationImminentAlert; + private final boolean silenceUserSetExpirationAlert; + private final boolean silenceLowReservoirAlert; + private final boolean silenceSuspendInProgressAlert; + private final boolean silenceSuspendEndedAlert; + private final boolean silencePodExpirationAlert; + + public SilenceAlertCommandParameters(boolean silenceAutoOffAlert, boolean silenceMultiCommandAlert, boolean silenceExpirationImminentAlert, boolean silenceUserSetExpirationAlert, boolean silenceLowReservoirAlert, boolean silenceSuspendInProgressAlert, boolean silenceSuspendEndedAlert, boolean silencePodExpirationAlert) { + this.silenceAutoOffAlert = silenceAutoOffAlert; + this.silenceMultiCommandAlert = silenceMultiCommandAlert; + this.silenceExpirationImminentAlert = silenceExpirationImminentAlert; + this.silenceUserSetExpirationAlert = silenceUserSetExpirationAlert; + this.silenceLowReservoirAlert = silenceLowReservoirAlert; + this.silenceSuspendInProgressAlert = silenceSuspendInProgressAlert; + this.silenceSuspendEndedAlert = silenceSuspendEndedAlert; + this.silencePodExpirationAlert = silencePodExpirationAlert; + } + + public byte[] getEncoded() { + BitSet bitSet = new BitSet(8); + bitSet.set(0, this.silenceAutoOffAlert); + bitSet.set(1, this.silenceMultiCommandAlert); + bitSet.set(2, this.silenceExpirationImminentAlert); + bitSet.set(3, this.silenceUserSetExpirationAlert); + bitSet.set(4, this.silenceLowReservoirAlert); + bitSet.set(5, this.silenceSuspendInProgressAlert); + bitSet.set(6, this.silenceSuspendEndedAlert); + bitSet.set(7, this.silencePodExpirationAlert); + return bitSet.toByteArray(); + } + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertSlot.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertSlot.java index 0eb6450c32..9e8b23cb74 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertSlot.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/AlertSlot.java @@ -1,11 +1,15 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; public enum AlertSlot { + AUTO_OFF((byte) 0x00), + MULTI_COMMAND((byte) 0x01), EXPIRATION_IMMINENT((byte) 0x02), + USER_SET_EXPIRATION((byte) 0x03), LOW_RESERVOIR((byte) 0x04), - USER_POD_EXPIRATION((byte) 0x03), - LUMP_OF_COAL_AND_EXPIRATION((byte) 0x07), - UNKNOWN((byte) 255); + SUSPEND_IN_PROGRESS((byte) 0x05), + SUSPEND_ENDED((byte) 0x06), + EXPIRATION((byte) 0x07), + UNKNOWN((byte) 0xff); private byte value; diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java index 280bb7d7a2..a849ca74e0 100644 --- a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java @@ -19,7 +19,7 @@ public class ProgramAlertsCommandTest { @Test public void testExpirationAlerts() throws DecoderException { List configurations = new ArrayList<>(); - configurations.add(new AlertConfiguration(AlertSlot.LUMP_OF_COAL_AND_EXPIRATION, true, (short) 420, false, AlertTriggerType.TIME_TRIGGER, (short) 4305, BeepType.XXX, BeepRepetitionType.XXX3)); + configurations.add(new AlertConfiguration(AlertSlot.EXPIRATION, true, (short) 420, false, AlertTriggerType.TIME_TRIGGER, (short) 4305, BeepType.XXX, BeepRepetitionType.XXX3)); configurations.add(new AlertConfiguration(AlertSlot.EXPIRATION_IMMINENT, true, (short) 0, false, AlertTriggerType.TIME_TRIGGER, (short) 4725, BeepType.XXX, BeepRepetitionType.XXX4)); byte[] encoded = new ProgramAlertsCommand(37879811, (short) 3, true, configurations).getEncoded(); @@ -40,7 +40,7 @@ public class ProgramAlertsCommandTest { @Test public void testUserExpirationAlert() throws DecoderException { List configurations = new ArrayList<>(); - configurations.add(new AlertConfiguration(AlertSlot.USER_POD_EXPIRATION, true, (short) 0, false, AlertTriggerType.TIME_TRIGGER, (short) 4079, BeepType.XXX, BeepRepetitionType.XXX2)); + configurations.add(new AlertConfiguration(AlertSlot.USER_SET_EXPIRATION, true, (short) 0, false, AlertTriggerType.TIME_TRIGGER, (short) 4079, BeepType.XXX, BeepRepetitionType.XXX2)); byte[] encoded = new ProgramAlertsCommand(37879811, (short) 15, false, configurations).getEncoded(); @@ -51,7 +51,7 @@ public class ProgramAlertsCommandTest { @Test public void testLumpOfCoalAlert() throws DecoderException { List configurations = new ArrayList<>(); - configurations.add(new AlertConfiguration(AlertSlot.LUMP_OF_COAL_AND_EXPIRATION, true, (short) 55, false, AlertTriggerType.TIME_TRIGGER, (short) 5, BeepType.XXX, BeepRepetitionType.XXX5)); + configurations.add(new AlertConfiguration(AlertSlot.EXPIRATION, true, (short) 55, false, AlertTriggerType.TIME_TRIGGER, (short) 5, BeepType.XXX, BeepRepetitionType.XXX5)); byte[] encoded = new ProgramAlertsCommand(37879811, (short) 10, false, configurations).getEncoded(); diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommandTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommandTest.java new file mode 100644 index 0000000000..a107d38e6e --- /dev/null +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommandTest.java @@ -0,0 +1,5 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +// TODO capture silence alerts command +public class SilenceAlertsCommandTest { +} \ No newline at end of file From 93e4e924fa1ff16ee1c792f5e2296b414539570f Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 10 Feb 2021 22:55:42 +0100 Subject: [PATCH 18/83] Add NakResponse (untested) --- .../driver/pod/definition/NakErrorType.java | 49 +++++++++++++ .../dash/driver/pod/response/NakResponse.java | 71 +++++++++++++++++++ .../driver/pod/response/NakResponseTest.java | 5 ++ 3 files changed, 125 insertions(+) create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/NakErrorType.java create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponse.java create mode 100644 omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponseTest.java diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/NakErrorType.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/NakErrorType.java new file mode 100644 index 0000000000..d6482386ee --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/NakErrorType.java @@ -0,0 +1,49 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; + +public enum NakErrorType { + FLASH_WRITE((byte) 0x01), + FLASH_ERASE((byte) 0x02), + FLASH_OPERATION((byte) 0x03), + FLASH_ADDR((byte) 0x04), + POD_STATE((byte) 0x05), + CRITICAL_VARIABLE((byte) 0x06), + ILLEGAL_PARAM((byte) 0x07), + BOLUS_CRITICAL_VAR((byte) 0x08), + INT_ILLEGAL_PARAM((byte) 0x09), + ILLEGAL_CHECKSUM((byte) 0x0a), + INVALID_MSG_LEN((byte) 0x0b), + PUMP_STATE((byte) 0x0c), + ILLEGAL_COMMAND((byte) 0x0d), + ILLEGAL_FILL_STATE((byte) 0x0e), + MAX_READWRITE_SIZE((byte) 0x0f), + ILLEGAL_READ_ADDRESS((byte) 0x10), + ILLEGAL_READ_MEM_TYPE((byte) 0x11), + INIT_POD((byte) 0x12), + ILLEGAL_CMD_STATE((byte) 0x13), + ILLEGAL_SECURITY_CODE((byte) 0x14), + POD_IN_ALARM((byte) 0x15), + COMD_NOT_SET((byte) 0x16), + ILLEGAL_RX_SENS_VALUE((byte) 0x17), + ILLEGAL_TX_PKT_SIZE((byte) 0x18), + OCCL_PARAMS_ALREADY_SET((byte) 0x19), + OCCL_PARAM((byte) 0x1a), + ILLEGAL_CDTHR_VALUE((byte) 0x1b), + IGNORE_COMMAND((byte) 0x1c), + INVALID_CRC((byte) 0x1d), + UNKNOWN((byte) 0xff); + + private byte value; + + NakErrorType(byte value) { + this.value = value; + } + + public static NakErrorType byValue(byte value) { + for (NakErrorType type : values()) { + if (type.value == value) { + return type; + } + } + return UNKNOWN; + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponse.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponse.java new file mode 100644 index 0000000000..8b55189ebe --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponse.java @@ -0,0 +1,71 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +import java.util.Arrays; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.AlarmType; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.NakErrorType; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus; + +public class NakResponse extends ResponseBase { + private final byte messageType; + private final short messageLength; + private final NakErrorType nakErrorType; + private final AlarmType alarmType; + private final PodStatus podStatus; + private final short securityNakSyncCount; + + public NakResponse(byte[] encoded) { + super(ResponseType.NAK_RESPONSE, encoded); + this.messageType = encoded[0]; + this.messageLength = encoded[1]; + this.nakErrorType = NakErrorType.byValue(encoded[2]); + byte byte3 = encoded[3]; + byte byte4 = encoded[4]; + if (nakErrorType == NakErrorType.ILLEGAL_SECURITY_CODE) { + this.securityNakSyncCount = (short) ((byte3 << 8) | byte4); + this.alarmType = null; + this.podStatus = null; + } else { + this.securityNakSyncCount = 0; + this.alarmType = AlarmType.byValue(byte3); + this.podStatus = PodStatus.byValue(byte4); + } + } + + public byte getMessageType() { + return messageType; + } + + public short getMessageLength() { + return messageLength; + } + + public NakErrorType getNakErrorType() { + return nakErrorType; + } + + public AlarmType getAlarmType() { + return alarmType; + } + + public PodStatus getPodStatus() { + return podStatus; + } + + public short getSecurityNakSyncCount() { + return securityNakSyncCount; + } + + @Override public String toString() { + return "NakResponse{" + + "messageType=" + messageType + + ", messageLength=" + messageLength + + ", nakErrorType=" + nakErrorType + + ", alarmType=" + alarmType + + ", podStatus=" + podStatus + + ", securityNakSyncCount=" + securityNakSyncCount + + ", responseType=" + responseType + + ", encoded=" + Arrays.toString(encoded) + + '}'; + } +} diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponseTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponseTest.java new file mode 100644 index 0000000000..393cb41e4e --- /dev/null +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponseTest.java @@ -0,0 +1,5 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; + +// TODO capture NAK response +public class NakResponseTest { +} \ No newline at end of file From 5acdac3dc8b36f769379ec57a1621457a4418367 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Wed, 10 Feb 2021 23:33:32 +0100 Subject: [PATCH 19/83] move jcenter to mavencentral, inline some dependencies, restrict jcenter to those we can be certain to update --- app/build.gradle | 5 ++-- app/libs/wearpreferenceactivity-0.5.0.aar | Bin 0 -> 30815 bytes app/libs/weekdaysselector-1.1.1.aar | Bin 0 -> 17376 bytes app/src/main/res/drawable/ic_glimp.xml | 2 +- build.gradle | 16 ++++++++--- core/core_dependencies.gradle | 2 -- .../database/ExampleInstrumentedTest.kt | 25 ------------------ .../nightscout/database/ExampleUnitTest.kt | 18 ------------- gradle/wrapper/gradle-wrapper.properties | 4 +-- .../pump/omnipod/OmnipodPumpPluginTest.java | 6 +++-- .../manager/AapsPodStateManagerTest.java | 3 ++- wear/build.gradle | 8 +++--- wear/libs/wearpreferenceactivity-0.5.0.aar | Bin 0 -> 30815 bytes 13 files changed, 30 insertions(+), 59 deletions(-) create mode 100644 app/libs/wearpreferenceactivity-0.5.0.aar create mode 100644 app/libs/weekdaysselector-1.1.1.aar delete mode 100644 database/src/androidTest/java/info/nightscout/database/ExampleInstrumentedTest.kt delete mode 100644 database/src/test/java/info/nightscout/database/ExampleUnitTest.kt create mode 100644 wear/libs/wearpreferenceactivity-0.5.0.aar diff --git a/app/build.gradle b/app/build.gradle index 8d71d287b1..49a3c90a3e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,5 @@ buildscript { repositories { - jcenter() maven { url "https://plugins.gradle.org/m2/" } // jacoco 0.2 } @@ -22,7 +21,6 @@ jacoco { } repositories { - jcenter { url "https://jcenter.bintray.com/" } mavenCentral() google() } @@ -245,6 +243,9 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') + // https://github.com/DavidProdinger/Weekdays-Selector (used outdated 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1') + implementation(name: 'weekdaysselector-1.1.1', ext: 'aar') + testImplementation "junit:junit:$junit_version" testImplementation 'org.json:json:20201115' testImplementation "org.mockito:mockito-core:${mockitoVersion}" diff --git a/app/libs/wearpreferenceactivity-0.5.0.aar b/app/libs/wearpreferenceactivity-0.5.0.aar new file mode 100644 index 0000000000000000000000000000000000000000..66b3cad816ca298c74a9f5c4d8c11fb1bfde068b GIT binary patch literal 30815 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 Krd*&31_l6-L6s>0 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_glimp.xml b/app/src/main/res/drawable/ic_glimp.xml index 73b42ccd97..ed10736e93 100644 --- a/app/src/main/res/drawable/ic_glimp.xml +++ b/app/src/main/res/drawable/ic_glimp.xml @@ -7,7 +7,7 @@ android:pathData="M60.558,17.9c-0,-7.782 -6.318,-14.1 -14.1,-14.1l-29.149,-0c-7.782,-0 -14.1,6.318 -14.1,14.1l0,28.2c0,7.782 6.318,14.1 14.1,14.1l29.149,0c7.782,0 14.1,-6.318 14.1,-14.1l-0,-28.2Z" android:strokeAlpha="0.96" android:strokeWidth="0.84" - android:fillColor="?attr/text_color" + android:fillColor="@android:color/transparent" android:strokeColor="#fff"/> Si(p|{GY2O=Nu!d;Jg$Sxa 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 Date: Wed, 10 Feb 2021 23:52:48 +0100 Subject: [PATCH 20/83] Add StopDeliveryCommand, add test for NakResponse --- .../pod/command/StopDeliveryCommand.java | 55 +++++++++++++++++++ .../dash/driver/pod/definition/BeepType.java | 4 +- .../pod/command/ProgramAlertsCommandTest.java | 10 ++-- .../pod/command/StopDeliveryCommandTest.java | 29 ++++++++++ .../driver/pod/response/NakResponseTest.java | 27 ++++++++- 5 files changed, 117 insertions(+), 8 deletions(-) create mode 100644 omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/StopDeliveryCommand.java create mode 100644 omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/StopDeliveryCommandTest.java diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/StopDeliveryCommand.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/StopDeliveryCommand.java new file mode 100644 index 0000000000..99cc1da256 --- /dev/null +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/StopDeliveryCommand.java @@ -0,0 +1,55 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +import java.nio.ByteBuffer; +import java.util.BitSet; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.BeepType; + +public class StopDeliveryCommand extends CommandBase { + private static final short LENGTH = 7; + private static final byte BODY_LENGTH = 5; + + private final DeliveryType deliveryType; + private final BeepType beepType; + + public StopDeliveryCommand(int address, short sequenceNumber, boolean unknown, DeliveryType deliveryType, BeepType beepType) { + super(CommandType.STOP_DELIVERY, address, sequenceNumber, unknown); + this.deliveryType = deliveryType; + this.beepType = beepType; + } + + @Override public byte[] getEncoded() { + return appendCrc(ByteBuffer.allocate(LENGTH + HEADER_LENGTH) // + .put(encodeHeader(address, sequenceNumber, LENGTH, unknown)) // + .put(commandType.getValue()) // + .put(BODY_LENGTH) // + .putInt(1229869870) // FIXME ?? was: byte array of int 777211465 converted to little endian + .put((byte) ((beepType.getValue() << 4) | deliveryType.getEncoded())) // + .array()); + } + + public enum DeliveryType { + BASAL(true, false, false), + TEMP_BASAL(false, true, false), + BOLUS(false, false, true), + ALL(true, true, true); + + private final boolean basal; + private final boolean tempBasal; + private final boolean bolus; + + DeliveryType(boolean basal, boolean tempBasal, boolean bolus) { + this.basal = basal; + this.tempBasal = tempBasal; + this.bolus = bolus; + } + + public byte getEncoded() { + BitSet bitSet = new BitSet(8); + bitSet.set(0, this.basal); + bitSet.set(1, this.tempBasal); + bitSet.set(2, this.bolus); + return bitSet.toByteArray()[0]; + } + } +} diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepType.java b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepType.java index f0104ff3e6..ee750df520 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepType.java +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/definition/BeepType.java @@ -1,9 +1,9 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition; -// FIXME names public enum BeepType { SILENT((byte) 0x00), - XXX((byte) 0x02); //// Used in low reservoir alert, user expiration alert, expiration alert, imminent expiration alert, lump of coal alert + FOUR_TIMES_BIP_BEEP((byte) 0x02), // Used in low reservoir alert, user expiration alert, expiration alert, imminent expiration alert, lump of coal alert + LONG_SINGLE_BEEP((byte) 0x06); // Used in stop delivery command private byte value; diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java index a849ca74e0..f054efc0eb 100644 --- a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/ProgramAlertsCommandTest.java @@ -19,8 +19,8 @@ public class ProgramAlertsCommandTest { @Test public void testExpirationAlerts() throws DecoderException { List configurations = new ArrayList<>(); - configurations.add(new AlertConfiguration(AlertSlot.EXPIRATION, true, (short) 420, false, AlertTriggerType.TIME_TRIGGER, (short) 4305, BeepType.XXX, BeepRepetitionType.XXX3)); - configurations.add(new AlertConfiguration(AlertSlot.EXPIRATION_IMMINENT, true, (short) 0, false, AlertTriggerType.TIME_TRIGGER, (short) 4725, BeepType.XXX, BeepRepetitionType.XXX4)); + configurations.add(new AlertConfiguration(AlertSlot.EXPIRATION, true, (short) 420, false, AlertTriggerType.TIME_TRIGGER, (short) 4305, BeepType.FOUR_TIMES_BIP_BEEP, BeepRepetitionType.XXX3)); + configurations.add(new AlertConfiguration(AlertSlot.EXPIRATION_IMMINENT, true, (short) 0, false, AlertTriggerType.TIME_TRIGGER, (short) 4725, BeepType.FOUR_TIMES_BIP_BEEP, BeepRepetitionType.XXX4)); byte[] encoded = new ProgramAlertsCommand(37879811, (short) 3, true, configurations).getEncoded(); @@ -30,7 +30,7 @@ public class ProgramAlertsCommandTest { @Test public void testLowReservoirAlert() throws DecoderException { List configurations = new ArrayList<>(); - configurations.add(new AlertConfiguration(AlertSlot.LOW_RESERVOIR, true, (short) 0, false, AlertTriggerType.RESERVOIR_VOLUME_TRIGGER, (short) 200, BeepType.XXX, BeepRepetitionType.XXX)); + configurations.add(new AlertConfiguration(AlertSlot.LOW_RESERVOIR, true, (short) 0, false, AlertTriggerType.RESERVOIR_VOLUME_TRIGGER, (short) 200, BeepType.FOUR_TIMES_BIP_BEEP, BeepRepetitionType.XXX)); byte[] encoded = new ProgramAlertsCommand(37879811, (short) 8, false, configurations).getEncoded(); @@ -40,7 +40,7 @@ public class ProgramAlertsCommandTest { @Test public void testUserExpirationAlert() throws DecoderException { List configurations = new ArrayList<>(); - configurations.add(new AlertConfiguration(AlertSlot.USER_SET_EXPIRATION, true, (short) 0, false, AlertTriggerType.TIME_TRIGGER, (short) 4079, BeepType.XXX, BeepRepetitionType.XXX2)); + configurations.add(new AlertConfiguration(AlertSlot.USER_SET_EXPIRATION, true, (short) 0, false, AlertTriggerType.TIME_TRIGGER, (short) 4079, BeepType.FOUR_TIMES_BIP_BEEP, BeepRepetitionType.XXX2)); byte[] encoded = new ProgramAlertsCommand(37879811, (short) 15, false, configurations).getEncoded(); @@ -51,7 +51,7 @@ public class ProgramAlertsCommandTest { @Test public void testLumpOfCoalAlert() throws DecoderException { List configurations = new ArrayList<>(); - configurations.add(new AlertConfiguration(AlertSlot.EXPIRATION, true, (short) 55, false, AlertTriggerType.TIME_TRIGGER, (short) 5, BeepType.XXX, BeepRepetitionType.XXX5)); + configurations.add(new AlertConfiguration(AlertSlot.EXPIRATION, true, (short) 55, false, AlertTriggerType.TIME_TRIGGER, (short) 5, BeepType.FOUR_TIMES_BIP_BEEP, BeepRepetitionType.XXX5)); byte[] encoded = new ProgramAlertsCommand(37879811, (short) 10, false, configurations).getEncoded(); diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/StopDeliveryCommandTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/StopDeliveryCommandTest.java new file mode 100644 index 0000000000..35fa7e63a3 --- /dev/null +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/StopDeliveryCommandTest.java @@ -0,0 +1,29 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; + +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.junit.Test; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.BeepType; + +import static org.junit.Assert.assertArrayEquals; + +public class StopDeliveryCommandTest { + @Test + public void testStopTempBasal() throws DecoderException { + byte[] encoded = new StopDeliveryCommand(37879811, (short) 0, false, StopDeliveryCommand.DeliveryType.TEMP_BASAL, BeepType.LONG_SINGLE_BEEP) // + .getEncoded(); + + assertArrayEquals(Hex.decodeHex("0242000300071F05494E532E6201B1"), encoded); + } + + @Test + public void testSuspendDelivery() throws DecoderException { + byte[] encoded = new StopDeliveryCommand(37879811, (short) 2, false, StopDeliveryCommand.DeliveryType.ALL, BeepType.SILENT) // + .getEncoded(); + + assertArrayEquals(Hex.decodeHex("0242000308071F05494E532E078287"), encoded); + } + + // TODO test cancel bolus +} \ No newline at end of file diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponseTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponseTest.java index 393cb41e4e..8f43916574 100644 --- a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponseTest.java +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/response/NakResponseTest.java @@ -1,5 +1,30 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response; -// TODO capture NAK response +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.junit.Test; + +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.AlarmType; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.NakErrorType; +import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotSame; + public class NakResponseTest { + @Test + public void testValidResponse() throws DecoderException { + byte[] encoded = Hex.decodeHex("0603070009"); + + NakResponse response = new NakResponse(encoded); + assertArrayEquals(encoded, response.getEncoded()); + assertNotSame(encoded, response.getEncoded()); + assertEquals(ResponseType.NAK_RESPONSE, response.getResponseType()); + assertEquals(ResponseType.NAK_RESPONSE.getValue(), response.getMessageType()); + assertEquals(NakErrorType.ILLEGAL_PARAM, response.getNakErrorType()); + assertEquals(AlarmType.NONE, response.getAlarmType()); + assertEquals(PodStatus.RUNNING_BELOW_MIN_VOLUME, response.getPodStatus()); + assertEquals((byte) 0x00, response.getSecurityNakSyncCount()); + } } \ No newline at end of file From fa051630193a888f843a9a245bed63a85ef83980 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Thu, 11 Feb 2021 00:10:14 +0100 Subject: [PATCH 21/83] Add test for SilenceAlertsCommand --- .../pod/command/SilenceAlertsCommandTest.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommandTest.java b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommandTest.java index a107d38e6e..57d9ad20fb 100644 --- a/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommandTest.java +++ b/omnipod-dash/src/test/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/command/SilenceAlertsCommandTest.java @@ -1,5 +1,19 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command; -// TODO capture silence alerts command +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.junit.Test; + +import static org.junit.Assert.assertArrayEquals; + public class SilenceAlertsCommandTest { + @Test + public void testSilenceLowReservoirAlert() throws DecoderException { + byte[] encoded = new SilenceAlertsCommand(37879811, (short) 1, false, new SilenceAlertsCommand.SilenceAlertCommandParameters(false, false, false, false, true, false, false, false)) // + .getEncoded(); + + assertArrayEquals(Hex.decodeHex("0242000304071105494E532E1081CE"), encoded); + } + + // TODO capture more silence alerts commands } \ No newline at end of file From c05dcbd8db7d718c551aa497ba90d7243cad02e6 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Thu, 11 Feb 2021 00:51:20 +0100 Subject: [PATCH 22/83] Minor Eros stuff --- .../androidaps/dependencyInjection/AppComponent.kt | 4 ++-- omnipod-eros/src/main/AndroidManifest.xml | 8 ++++---- .../dagger/{OmnipodModule.kt => OmnipodErosModule.kt} | 2 +- omnipod-eros/src/main/res/layout/omnipod_overview.xml | 2 +- .../src/main/res/layout/omnipod_pod_management.xml | 9 +++++---- 5 files changed, 13 insertions(+), 12 deletions(-) rename omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/{OmnipodModule.kt => OmnipodErosModule.kt} (98%) diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppComponent.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppComponent.kt index e45e5ae42d..61cb5334b0 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppComponent.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppComponent.kt @@ -11,7 +11,7 @@ import info.nightscout.androidaps.danar.di.DanaRModule import info.nightscout.androidaps.danars.di.DanaRSModule import info.nightscout.androidaps.database.DatabaseModule import info.nightscout.androidaps.plugins.pump.common.dagger.RileyLinkModule -import info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger.OmnipodModule +import info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger.OmnipodErosModule import javax.inject.Singleton @Singleton @@ -32,7 +32,7 @@ import javax.inject.Singleton WizardModule::class, RileyLinkModule::class, MedtronicModule::class, - OmnipodModule::class, + OmnipodErosModule::class, APSModule::class, PreferencesModule::class, OverviewModule::class, diff --git a/omnipod-eros/src/main/AndroidManifest.xml b/omnipod-eros/src/main/AndroidManifest.xml index af03a825f1..22e068b8cc 100644 --- a/omnipod-eros/src/main/AndroidManifest.xml +++ b/omnipod-eros/src/main/AndroidManifest.xml @@ -7,9 +7,9 @@ android:enabled="true" android:exported="true" /> - - - - + + + + \ No newline at end of file diff --git a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodModule.kt b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodErosModule.kt similarity index 98% rename from omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodModule.kt rename to omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodErosModule.kt index fd9c3def50..bea8298395 100644 --- a/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodModule.kt +++ b/omnipod-eros/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/eros/dagger/OmnipodErosModule.kt @@ -14,7 +14,7 @@ import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivati @Module @Suppress("unused") -abstract class OmnipodModule { +abstract class OmnipodErosModule { // Activities @ContributesAndroidInjector diff --git a/omnipod-eros/src/main/res/layout/omnipod_overview.xml b/omnipod-eros/src/main/res/layout/omnipod_overview.xml index 42c7a84ac9..f627579beb 100644 --- a/omnipod-eros/src/main/res/layout/omnipod_overview.xml +++ b/omnipod-eros/src/main/res/layout/omnipod_overview.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".eros.ui.OmnipodOverviewFragment"> + tools:context=".ui.OmnipodOverviewFragment"> + android:orientation="vertical" + tools:context=".ui.PodManagementActivity"> + android:visibility="gone" /> @@ -155,7 +156,7 @@ android:drawableTop="@drawable/ic_pod_management_rl_stats" android:text="@string/omnipod_pod_management_button_riley_link_stats" android:textAllCaps="false" - android:visibility="gone"/> + android:visibility="gone" /> From 8cac7a444106e374aa95134b8e7d84f8b83e4960 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Thu, 11 Feb 2021 02:43:48 +0100 Subject: [PATCH 23/83] Update gradle-wrapper.properties --- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cae68e7e43..9a5b8e899d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Feb 10 19:21:54 CET 2021 +#Tue Oct 20 18:24:46 CEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip From 9aca29feb6ff80c82bbf6907c6e2876bf081829a Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Thu, 11 Feb 2021 10:52:47 +0100 Subject: [PATCH 24/83] Add omnipod-dash module to crowdin --- crowdin.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crowdin.yml b/crowdin.yml index d1d40577c8..d4bddbb642 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -19,6 +19,8 @@ files: translation: /dana/src/main/res/values-%android_code%/strings.xml - source: /medtronic/src/main/res/values/strings.xml translation: /medtronic/src/main/res/values-%android_code%/strings.xml + - source: /omnipod-dash/src/main/res/values/strings.xml + translation: /omnipod-dash/src/main/res/values-%android_code%/strings.xml - source: /omnipod-eros/src/main/res/values/strings.xml translation: /omnipod-eros/src/main/res/values-%android_code%/strings.xml - source: /rileylink/src/main/res/values/strings.xml From b2c56ba48e647bfb2ca1ebd3ba7d98da21c9ec66 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Thu, 11 Feb 2021 11:01:18 +0100 Subject: [PATCH 25/83] Update Omnipod Eros and Omnipod Dash build.gradle --- omnipod-dash/build.gradle | 23 +++++++++++++++++++---- omnipod-eros/build.gradle | 10 ---------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/omnipod-dash/build.gradle b/omnipod-dash/build.gradle index 959e970c17..9521d7b4c2 100644 --- a/omnipod-dash/build.gradle +++ b/omnipod-dash/build.gradle @@ -1,10 +1,9 @@ -plugins { - id 'com.android.library' -} +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-kapt' android { compileSdkVersion 28 - buildToolsVersion "30.0.2" defaultConfig { minSdkVersion 24 @@ -16,11 +15,22 @@ android { consumerProguardFiles "consumer-rules.pro" } + kotlinOptions { + jvmTarget = '1.8' + } + buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } + debug { + testCoverageEnabled(project.hasProperty('coverage')) + } + firebaseDisable { + System.setProperty("disableFirebase", "true") + ext.enableCrashlytics = false + } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -29,6 +39,11 @@ android { } dependencies { + annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version" + annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version" + kapt "com.google.dagger:dagger-android-processor:$dagger_version" + kapt "com.google.dagger:dagger-compiler:$dagger_version" + implementation 'commons-codec:commons-codec:1.15' implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.3.0' diff --git a/omnipod-eros/build.gradle b/omnipod-eros/build.gradle index 41548fa975..beb8c490bc 100644 --- a/omnipod-eros/build.gradle +++ b/omnipod-eros/build.gradle @@ -41,20 +41,10 @@ android { } } -allprojects { - repositories { - flatDir { - dirs 'libs' - } - } -} - dependencies { implementation project(':core') implementation project(':rileylink') - implementation fileTree(dir: 'libs', include: ['*.jar']) - annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version" annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version" kapt "com.google.dagger:dagger-android-processor:$dagger_version" From 1a866e970fa9b119e0bc3786353a9e737cf1edf9 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Thu, 11 Feb 2021 11:24:31 +0100 Subject: [PATCH 26/83] Variable version in Omnipod Eros and Omnipod Dash build.gradle --- app/build.gradle | 2 +- build.gradle | 4 +++- core/core_dependencies.gradle | 2 +- omnipod-dash/build.gradle | 11 +++++------ omnipod-eros/build.gradle | 2 +- wear/build.gradle | 4 ++-- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ae8f2060f7..2f474c8590 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -254,7 +254,7 @@ dependencies { testImplementation "org.powermock:powermock-module-junit4-rule-agent:${powermockVersion}" testImplementation "org.powermock:powermock-module-junit4-rule:${powermockVersion}" testImplementation "org.powermock:powermock-module-junit4:${powermockVersion}" - testImplementation 'joda-time:joda-time:2.10.9' + testImplementation "joda-time:joda-time:$jodatime_version" testImplementation('com.google.truth:truth:1.1.2') { exclude group: "com.google.guava", module: "guava" exclude group: "com.google.code.findbugs", module: "jsr305" diff --git a/build.gradle b/build.gradle index 4e22ae1ea0..1070011ebb 100644 --- a/build.gradle +++ b/build.gradle @@ -15,11 +15,13 @@ buildscript { fragmentktx_version = '1.3.0-rc01' ormLiteVersion = '4.46' nav_version = '2.3.2' - appcompat_verison = '1.2.0' + appcompat_version = '1.2.0' material_version = '1.2.1' constraintlayout_version = '2.0.4' preferencektx_version = '1.1.1' commonslang3_version = '3.11' + commonscodec_version = '1.15' + jodatime_version = '2.10.9' work_version = '2.5.0' junit_version = '4.13.1' diff --git a/core/core_dependencies.gradle b/core/core_dependencies.gradle index f6864b8332..4d05f7312f 100644 --- a/core/core_dependencies.gradle +++ b/core/core_dependencies.gradle @@ -8,7 +8,7 @@ dependencies { api "androidx.core:core-ktx:$coreVersion" api 'androidx.legacy:legacy-support-v13:1.0.0' api 'androidx.legacy:legacy-support-v4:1.0.0' - api "androidx.appcompat:appcompat:$appcompat_verison" + api "androidx.appcompat:appcompat:$appcompat_version" api "androidx.preference:preference-ktx:$preferencektx_version" api 'androidx.biometric:biometric:1.0.1' api "androidx.activity:activity-ktx:${activityVersion}" diff --git a/omnipod-dash/build.gradle b/omnipod-dash/build.gradle index 9521d7b4c2..66ca373984 100644 --- a/omnipod-dash/build.gradle +++ b/omnipod-dash/build.gradle @@ -44,10 +44,9 @@ dependencies { kapt "com.google.dagger:dagger-android-processor:$dagger_version" kapt "com.google.dagger:dagger-compiler:$dagger_version" - implementation 'commons-codec:commons-codec:1.15' - implementation 'androidx.appcompat:appcompat:1.2.0' - implementation 'com.google.android.material:material:1.3.0' - testImplementation 'junit:junit:4.+' - androidTestImplementation 'androidx.test.ext:junit:1.1.2' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + implementation "commons-codec:commons-codec:$commonscodec_version" + implementation "androidx.appcompat:appcompat:$appcompat_version" + implementation "com.google.android.material:material:$material_version" + testImplementation "junit:junit:$junit_version" + androidTestImplementation "androidx.test.ext:junit:$androidx_junit" } \ No newline at end of file diff --git a/omnipod-eros/build.gradle b/omnipod-eros/build.gradle index beb8c490bc..5f95aa675c 100644 --- a/omnipod-eros/build.gradle +++ b/omnipod-eros/build.gradle @@ -54,7 +54,7 @@ dependencies { testImplementation "org.mockito:mockito-core:${mockitoVersion}" testImplementation "org.powermock:powermock-api-mockito2:$powermockVersion" testImplementation "org.powermock:powermock-module-junit4:${powermockVersion}" - testImplementation 'joda-time:joda-time:2.10.9' + testImplementation "joda-time:joda-time:$jodatime_version" androidTestImplementation "androidx.test.ext:junit:$androidx_junit" androidTestImplementation "androidx.test:rules:$androidx_rules" } diff --git a/wear/build.gradle b/wear/build.gradle index a5a93a3530..653c44eb30 100644 --- a/wear/build.gradle +++ b/wear/build.gradle @@ -114,7 +114,7 @@ dependencies { //implementation files("libs/hellocharts-library-1.5.5.jar") //compile "com.ustwo.android:clockwise-wearable:1.0.2" - implementation "androidx.appcompat:appcompat:$appcompat_verison" + implementation "androidx.appcompat:appcompat:$appcompat_version" implementation 'androidx.legacy:legacy-support-v13:1.0.0' compileOnly "com.google.android.wearable:wearable:${wearableVersion}" @@ -143,7 +143,7 @@ dependencies { testImplementation "org.powermock:powermock-module-junit4-rule-agent:${powermockVersion}" testImplementation "org.powermock:powermock-module-junit4-rule:${powermockVersion}" testImplementation "org.powermock:powermock-module-junit4:${powermockVersion}" - testImplementation 'joda-time:joda-time:2.10.9' + testImplementation "joda-time:joda-time:$jodatime_version" testImplementation('com.google.truth:truth:1.1.2') { exclude group: "com.google.guava", module: "guava" } From 517aa5ec8fdc0915690a4c2ac0c901d036fba694 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 11 Feb 2021 10:32:00 +0000 Subject: [PATCH 27/83] Create Dependabot config file --- .github/dependabot.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..23ab6f030d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 +updates: +- package-ecosystem: gradle + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 + target-branch: dev From 67d47a40e19903cb30ee81daa344b71b8543234e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Feb 2021 10:34:19 +0000 Subject: [PATCH 28/83] Bump lifecycle-livedata-ktx from 2.2.0 to 2.3.0 Bumps lifecycle-livedata-ktx from 2.2.0 to 2.3.0. Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 4e22ae1ea0..f9260bf119 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { rxandroid_version = '2.1.1' rxkotlin_version = '2.4.0' room_version = '2.2.6' - lifecycle_version = '2.2.0' + lifecycle_version = '2.3.0' dagger_version = '2.31.2' coroutinesVersion = '1.3.7' activityVersion = '1.2.0-rc01' From 738c3585d5c0fa489f682ebd3c995b76388fc6f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Feb 2021 10:34:35 +0000 Subject: [PATCH 29/83] Bump wearableVersion from 2.4.0 to 2.8.1 Bumps `wearableVersion` from 2.4.0 to 2.8.1. Updates `wearable` from 2.4.0 to 2.8.1 Updates `wearable` from 2.4.0 to 2.8.1 Signed-off-by: dependabot[bot] --- wear/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wear/build.gradle b/wear/build.gradle index a5a93a3530..88bfa0bf24 100644 --- a/wear/build.gradle +++ b/wear/build.gradle @@ -19,7 +19,7 @@ jacoco { } ext { - wearableVersion = "2.4.0" + wearableVersion = "2.8.1" playServicesWearable = "17.0.0" } From a2702fbc122228f3b60cfa52666e45c3dd92cd72 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 12:58:48 +0100 Subject: [PATCH 30/83] api androidx.browser:browser:1.3.0 --- core/core_dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/core_dependencies.gradle b/core/core_dependencies.gradle index f6864b8332..16d6d836b8 100644 --- a/core/core_dependencies.gradle +++ b/core/core_dependencies.gradle @@ -11,6 +11,7 @@ dependencies { api "androidx.appcompat:appcompat:$appcompat_verison" api "androidx.preference:preference-ktx:$preferencektx_version" api 'androidx.biometric:biometric:1.0.1' + api "androidx.browser:browser:1.3.0" api "androidx.activity:activity-ktx:${activityVersion}" api "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0" api 'androidx.cardview:cardview:1.0.0' @@ -72,7 +73,6 @@ dependencies { api "androidx.work:work-runtime:$work_version" api "androidx.work:work-runtime-ktx:$work_version" api "androidx.work:work-rxjava2:$work_version" - api 'com.google.androidbrowserhelper:androidbrowserhelper:2.0.1' api 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava' // new for tidepool From c8dd373c3756d11315af2751b4a26fa9e98bff49 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 13:31:09 +0100 Subject: [PATCH 31/83] biometric update --- core/build.gradle | 2 +- core/core_dependencies.gradle | 2 +- .../utils/protection/BiometricCheck.kt | 44 +++++++++---------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index 9d71b4cec7..71ce3bd0da 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -7,7 +7,7 @@ android { compileSdkVersion 28 defaultConfig { - minSdkVersion 24 + minSdkVersion 26 targetSdkVersion 28 versionCode 1 versionName "1.0" diff --git a/core/core_dependencies.gradle b/core/core_dependencies.gradle index 16d6d836b8..68446f4544 100644 --- a/core/core_dependencies.gradle +++ b/core/core_dependencies.gradle @@ -10,7 +10,7 @@ dependencies { api 'androidx.legacy:legacy-support-v4:1.0.0' api "androidx.appcompat:appcompat:$appcompat_verison" api "androidx.preference:preference-ktx:$preferencektx_version" - api 'androidx.biometric:biometric:1.0.1' + api 'androidx.biometric:biometric:1.1.0' api "androidx.browser:browser:1.3.0" api "androidx.activity:activity-ktx:${activityVersion}" api "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0" diff --git a/core/src/main/java/info/nightscout/androidaps/utils/protection/BiometricCheck.kt b/core/src/main/java/info/nightscout/androidaps/utils/protection/BiometricCheck.kt index 22ef6a1b4a..b74b3377dc 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/protection/BiometricCheck.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/protection/BiometricCheck.kt @@ -1,7 +1,7 @@ package info.nightscout.androidaps.utils.protection -import androidx.biometric.BiometricConstants import androidx.biometric.BiometricPrompt +import androidx.biometric.BiometricPrompt.* import androidx.fragment.app.FragmentActivity import info.nightscout.androidaps.core.R import info.nightscout.androidaps.utils.ToastUtils @@ -16,43 +16,43 @@ object BiometricCheck { override fun onAuthenticationError(errorCode: Int, errString: CharSequence) { super.onAuthenticationError(errorCode, errString) when (errorCode) { - BiometricConstants.ERROR_UNABLE_TO_PROCESS, - BiometricConstants.ERROR_TIMEOUT, - BiometricConstants.ERROR_CANCELED, - BiometricConstants.ERROR_LOCKOUT, - BiometricConstants.ERROR_VENDOR, - BiometricConstants.ERROR_LOCKOUT_PERMANENT, - BiometricConstants.ERROR_USER_CANCELED -> { + ERROR_UNABLE_TO_PROCESS, + ERROR_TIMEOUT, + ERROR_CANCELED, + ERROR_LOCKOUT, + ERROR_VENDOR, + ERROR_LOCKOUT_PERMANENT, + ERROR_USER_CANCELED -> { ToastUtils.showToastInUiThread(activity.baseContext, errString.toString()) // fallback to master password - runOnUiThread(Runnable { + runOnUiThread { passwordCheck.queryPassword(activity, R.string.master_password, R.string.key_master_password, { ok?.run() }, { cancel?.run() }, { fail?.run() }) - }) + } } - BiometricConstants.ERROR_NEGATIVE_BUTTON -> + ERROR_NEGATIVE_BUTTON -> cancel?.run() - BiometricConstants.ERROR_NO_DEVICE_CREDENTIAL -> { + ERROR_NO_DEVICE_CREDENTIAL -> { ToastUtils.showToastInUiThread(activity.baseContext, errString.toString()) // no pin set // fallback to master password - runOnUiThread(Runnable { + runOnUiThread { passwordCheck.queryPassword(activity, R.string.master_password, R.string.key_master_password, { ok?.run() }, { cancel?.run() }, { fail?.run() }) - }) + } } - BiometricConstants.ERROR_NO_SPACE, - BiometricConstants.ERROR_HW_UNAVAILABLE, - BiometricConstants.ERROR_HW_NOT_PRESENT, - BiometricConstants.ERROR_NO_BIOMETRICS -> - runOnUiThread(Runnable { + ERROR_NO_SPACE, + ERROR_HW_UNAVAILABLE, + ERROR_HW_NOT_PRESENT, + ERROR_NO_BIOMETRICS -> + runOnUiThread { passwordCheck.queryPassword(activity, R.string.master_password, R.string.key_master_password, { ok?.run() }, { cancel?.run() }, { fail?.run() }) - }) + } } } - override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) { + override fun onAuthenticationSucceeded(result: AuthenticationResult) { super.onAuthenticationSucceeded(result) // Called when a biometric is recognized. ok?.run() @@ -65,7 +65,7 @@ object BiometricCheck { } }) - val promptInfo = BiometricPrompt.PromptInfo.Builder() + val promptInfo = PromptInfo.Builder() .setTitle(activity.getString(title)) .setDescription(activity.getString(R.string.biometric_title)) .setNegativeButtonText(activity.getString(R.string.cancel)) // not possible with setDeviceCredentialAllowed From 84a2c37055abba573919b030d2c997b5184c964e Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 13:48:50 +0100 Subject: [PATCH 32/83] unused code --- app/src/main/res/layout/activity_preferences.xml | 2 +- .../info/nightscout/androidaps/utils/DateUtil.java | 12 +----------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/layout/activity_preferences.xml b/app/src/main/res/layout/activity_preferences.xml index 00b72e0b74..eef88c7bad 100644 --- a/app/src/main/res/layout/activity_preferences.xml +++ b/app/src/main/res/layout/activity_preferences.xml @@ -34,7 +34,7 @@ + android:layout_height="wrap_content" /> diff --git a/core/src/main/java/info/nightscout/androidaps/utils/DateUtil.java b/core/src/main/java/info/nightscout/androidaps/utils/DateUtil.java index 46fac31626..256b5215de 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/DateUtil.java +++ b/core/src/main/java/info/nightscout/androidaps/utils/DateUtil.java @@ -42,12 +42,10 @@ import info.nightscout.androidaps.utils.resources.ResourceHelper; @Singleton public class DateUtil { private final Context context; - private final ResourceHelper resourceHelper; @Inject - public DateUtil(Context context, ResourceHelper resourceHelper) { + public DateUtil(Context context) { this.context = context; - this.resourceHelper = resourceHelper; } /** @@ -193,10 +191,6 @@ public class DateUtil { return new DateTime(mills).toString(DateTimeFormat.forPattern(format)); } - public static String timeFullString(long mills) { - return new DateTime(mills).toString(DateTimeFormat.fullTime()); - } - public String dateAndTimeString(Date date) { return dateString(date) + " " + timeString(date); } @@ -279,10 +273,6 @@ public class DateUtil { return diff > T.mins(minutes).msecs(); } - public static GregorianCalendar gregorianCalendar() { - return new GregorianCalendar(); - } - public static long getTimeZoneOffsetMs() { return new GregorianCalendar().getTimeZone().getRawOffset(); } From 7f1e3f3b1329893c2446684334818b4baf26300b Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 14:27:12 +0100 Subject: [PATCH 33/83] duplicated entry --- core/core_dependencies.gradle | 3 --- 1 file changed, 3 deletions(-) diff --git a/core/core_dependencies.gradle b/core/core_dependencies.gradle index 68446f4544..0f57bfb600 100644 --- a/core/core_dependencies.gradle +++ b/core/core_dependencies.gradle @@ -54,9 +54,6 @@ dependencies { // Graphview cannot be upgraded api "com.jjoe64:graphview:4.0.1" - //DateUtil - api 'net.danlew:android.joda:2.10.6' - //db api "com.j256.ormlite:ormlite-core:${ormLiteVersion}" api "com.j256.ormlite:ormlite-android:${ormLiteVersion}" From 68588e6f7de642bbc976f760b358e4d19fafaaee Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 14:49:51 +0100 Subject: [PATCH 34/83] multiple entries in gradle --- build.gradle | 2 +- core/core_dependencies.gradle | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 2871d9a39a..748975e533 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ buildscript { lifecycle_version = '2.3.0' dagger_version = '2.31.2' coroutinesVersion = '1.3.7' - activityVersion = '1.2.0-rc01' + activityVersion = '1.2.0' fragmentktx_version = '1.3.0-rc01' ormLiteVersion = '4.46' nav_version = '2.3.2' diff --git a/core/core_dependencies.gradle b/core/core_dependencies.gradle index c5a161eaae..4e0560e2a1 100644 --- a/core/core_dependencies.gradle +++ b/core/core_dependencies.gradle @@ -12,13 +12,12 @@ dependencies { api "androidx.preference:preference-ktx:$preferencektx_version" api 'androidx.biometric:biometric:1.1.0' api "androidx.browser:browser:1.3.0" - api "androidx.activity:activity-ktx:${activityVersion}" + api "androidx.activity:activity-ktx:$activityVersion" api "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0" api 'androidx.cardview:cardview:1.0.0' api 'androidx.recyclerview:recyclerview:1.1.0' api 'androidx.gridlayout:gridlayout:1.0.0' api 'androidx.percentlayout:percentlayout:1.0.0' - api 'androidx.activity:activity-ktx:1.2.0-rc01' api "com.google.android.material:material:$material_version" api "com.google.dagger:dagger-android:$dagger_version" From 7506c7e2abecb93785fc2e5f62383fe07bb84e96 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 18:10:14 +0100 Subject: [PATCH 35/83] remove findbug --- app/build.gradle | 5 ----- .../DetermineBasalAdapterAMAJS.java | 3 ++- .../DetermineBasalAdapterSMBJS.java | 3 ++- .../SmsCommunicatorPluginTest.kt | 2 +- .../androidaps/utils/DateUtilTest.kt | 20 +++++++++---------- core/core_dependencies.gradle | 5 +---- 6 files changed, 16 insertions(+), 22 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 2f474c8590..bab6818d09 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -216,9 +216,6 @@ android { useLibrary "org.apache.http.legacy" - configurations.all { - resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9' - } } allprojects { @@ -257,7 +254,6 @@ dependencies { testImplementation "joda-time:joda-time:$jodatime_version" testImplementation('com.google.truth:truth:1.1.2') { exclude group: "com.google.guava", module: "guava" - exclude group: "com.google.code.findbugs", module: "jsr305" } testImplementation "org.skyscreamer:jsonassert:1.5.0" testImplementation "org.hamcrest:hamcrest-all:1.3" @@ -265,7 +261,6 @@ dependencies { androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0-alpha03' androidTestImplementation "androidx.test.ext:junit:$androidx_junit" androidTestImplementation "androidx.test:rules:$androidx_rules" - androidTestImplementation 'com.google.code.findbugs:jsr305:3.0.2' /* Dagger2 - We are going to use dagger.android which includes * support for Activity and fragment injection so we need to include diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/DetermineBasalAdapterAMAJS.java b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/DetermineBasalAdapterAMAJS.java index a6876a3144..d8af22b203 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/DetermineBasalAdapterAMAJS.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/DetermineBasalAdapterAMAJS.java @@ -1,5 +1,7 @@ package info.nightscout.androidaps.plugins.aps.openAPSAMA; +import androidx.annotation.Nullable; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -16,7 +18,6 @@ import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.nio.charset.StandardCharsets; -import javax.annotation.Nullable; import javax.inject.Inject; import info.nightscout.androidaps.plugins.general.openhumans.OpenHumansUploader; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.java b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.java index e42b139f3e..5793c7125f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.java @@ -1,5 +1,7 @@ package info.nightscout.androidaps.plugins.aps.openAPSSMB; +import androidx.annotation.Nullable; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -16,7 +18,6 @@ import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.nio.charset.StandardCharsets; -import javax.annotation.Nullable; import javax.inject.Inject; import dagger.android.HasAndroidInjector; diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt index dc72598590..6c8339a650 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt @@ -104,7 +104,7 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() { `when`(SmsManager.getDefault()).thenReturn(smsManager) `when`(sp.getString(R.string.key_smscommunicator_allowednumbers, "")).thenReturn("1234;5678") - smsCommunicatorPlugin = SmsCommunicatorPlugin(injector, aapsLogger, resourceHelper, aapsSchedulers, sp, constraintChecker, rxBus, profileFunction, fabricPrivacy, activePlugin, commandQueue, loopPlugin, iobCobCalculatorPlugin, xdripCalibrations, otp, Config(), DateUtil(context, resourceHelper)) + smsCommunicatorPlugin = SmsCommunicatorPlugin(injector, aapsLogger, resourceHelper, aapsSchedulers, sp, constraintChecker, rxBus, profileFunction, fabricPrivacy, activePlugin, commandQueue, loopPlugin, iobCobCalculatorPlugin, xdripCalibrations, otp, Config(), DateUtil(context)) smsCommunicatorPlugin.setPluginEnabled(PluginType.GENERAL, true) Mockito.doAnswer { invocation: InvocationOnMock -> val callback = invocation.getArgument(1) diff --git a/app/src/test/java/info/nightscout/androidaps/utils/DateUtilTest.kt b/app/src/test/java/info/nightscout/androidaps/utils/DateUtilTest.kt index 3a70e1a34c..064b843234 100644 --- a/app/src/test/java/info/nightscout/androidaps/utils/DateUtilTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/utils/DateUtilTest.kt @@ -48,22 +48,22 @@ class DateUtilTest : TestBase() { } @Test fun timeStringTest() { - Assert.assertTrue(DateUtil(context, resourceHelper).timeString(Date(1513902750000L)).contains("32")) - Assert.assertTrue(DateUtil(context, resourceHelper).timeString(1513902750000L).contains("32")) + Assert.assertTrue(DateUtil(context).timeString(Date(1513902750000L)).contains("32")) + Assert.assertTrue(DateUtil(context).timeString(1513902750000L).contains("32")) } @Test fun dateAndTimeStringTest() { - Assert.assertTrue(DateUtil(context, resourceHelper).dateAndTimeString(1513902750000L).contains("22")) - Assert.assertTrue(DateUtil(context, resourceHelper).dateAndTimeString(1513902750000L).contains("32")) - Assert.assertTrue(DateUtil(context, resourceHelper).dateAndTimeString(Date(1513902750000L)).contains("22")) - Assert.assertTrue(DateUtil(context, resourceHelper).dateAndTimeString(Date(1513902750000L)).contains("32")) + Assert.assertTrue(DateUtil(context).dateAndTimeString(1513902750000L).contains("22")) + Assert.assertTrue(DateUtil(context).dateAndTimeString(1513902750000L).contains("32")) + Assert.assertTrue(DateUtil(context).dateAndTimeString(Date(1513902750000L)).contains("22")) + Assert.assertTrue(DateUtil(context).dateAndTimeString(Date(1513902750000L)).contains("32")) } @Test fun dateAndTimeRangeStringTest() { - Assert.assertTrue(DateUtil(context, resourceHelper).dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("22")) - Assert.assertTrue(DateUtil(context, resourceHelper).dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("32")) - Assert.assertTrue(DateUtil(context, resourceHelper).dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("22")) - Assert.assertTrue(DateUtil(context, resourceHelper).dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("32")) + Assert.assertTrue(DateUtil(context).dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("22")) + Assert.assertTrue(DateUtil(context).dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("32")) + Assert.assertTrue(DateUtil(context).dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("22")) + Assert.assertTrue(DateUtil(context).dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("32")) } /* diff --git a/core/core_dependencies.gradle b/core/core_dependencies.gradle index 4e0560e2a1..d9dcd24409 100644 --- a/core/core_dependencies.gradle +++ b/core/core_dependencies.gradle @@ -98,10 +98,7 @@ dependencies { exclude group: "org.json", module: "json" } - api('com.google.guava:guava:30.0-jre') { - exclude group: "com.google.code.findbugs", module: "jsr305" - } - api 'com.google.code.findbugs:jsr305:3.0.2' + api 'com.google.guava:guava:30.0-jre' api 'org.mozilla:rhino:1.7.13' From f05431daeb855bf0c207e1ac78b2065d47f883cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Feb 2021 17:11:03 +0000 Subject: [PATCH 36/83] Bump joda-time from 2.10.9 to 2.10.10 Bumps [joda-time](https://github.com/JodaOrg/joda-time) from 2.10.9 to 2.10.10. - [Release notes](https://github.com/JodaOrg/joda-time/releases) - [Changelog](https://github.com/JodaOrg/joda-time/blob/master/RELEASE-NOTES.txt) - [Commits](https://github.com/JodaOrg/joda-time/compare/v2.10.9...v2.10.10) Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 748975e533..ed01a220a7 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ buildscript { preferencektx_version = '1.1.1' commonslang3_version = '3.11' commonscodec_version = '1.15' - jodatime_version = '2.10.9' + jodatime_version = '2.10.10' work_version = '2.5.0' junit_version = '4.13.1' From 341bfdcdfae1ee5930a65d20370bebf1a95150fc Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 20:52:57 +0100 Subject: [PATCH 37/83] test libs update --- app/build.gradle | 2 +- app/jacoco.exec | Bin 312383 -> 0 bytes .../general/automation/actions/ActionAlarm.kt | 7 ------- .../automation/actions/ActionAlarmTest.kt | 6 ------ .../actions/ActionNotificationTest.kt | 4 +--- build.gradle | 2 +- 6 files changed, 3 insertions(+), 18 deletions(-) delete mode 100644 app/jacoco.exec diff --git a/app/build.gradle b/app/build.gradle index bab6818d09..7f2c67e5d3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -258,7 +258,7 @@ dependencies { testImplementation "org.skyscreamer:jsonassert:1.5.0" testImplementation "org.hamcrest:hamcrest-all:1.3" - androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0-alpha03' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0-alpha03' androidTestImplementation "androidx.test.ext:junit:$androidx_junit" androidTestImplementation "androidx.test:rules:$androidx_rules" diff --git a/app/jacoco.exec b/app/jacoco.exec deleted file mode 100644 index de458659e8a6aa56fe658f1aa2eca08a4b9e0487..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312383 zcmeEP30xF)`=4b|JP;V~JU|WecDcNgLQFT)(I}?OtQvI<#zGl8ZY)J+T*fH|;mk$&WE!5g1olL7v zPB9skIF^1%vaDrJ)Q(rL^_c|3fIHY+sDkF_mQf*dkGY^1+Q`75Cmao$(qyip26qAn#< zWl)$X_(7vIYZNB6PAl&R_h(3>Ki4hX=SwchYmGzRIep@S8%OUfnM{Q8oWk*H`l^j4ogp() zqv=G@hd=q-xvGUh2~%$nAx_RhFPXvSG`;G!ZJS~fy?b2>B(F*L3mg{5FX^Gx~l!9o8D_m z1oNDZ`y42vQISmbQW&Y2060$*`dsAW*O$r{k@L?J;m>&*V=}#M;LRFL!_}sgcs)g_ zYFPrv`u=bH^~?5seR-dWMwgtd)+WmaBq)+wSuB>*jmegs#+<9&e*HP#8?pX(k&%Pr z2f#TfLjq+qwFo7~!=s4b`O=2qDBlxAYbW<$dzqU&h+Otr=7z!tZ}^A)h3!!j*%G4I zi~ML^@V-fNiangJecP!6dm9Wo16ufwyXfGs?>#^HLo>_ix-IKWwJmZ98JT~#Tg~vC z-b62++vL~?z70-Vwh-i!jfdB2!@h0g5Yeq1IY{v22E z#|M_F`4-C~c&X?hA9z3Xs---3f*8niwR(*imV;52Olc{DLL<|qQ-*XkHA$w`nbb*Y zC2b&$vVokRycGobXY1l7Bic?bdR}WenEo?p>8G%79erz7OkO*7>+<}2goJlbPBc?y zN(RGA>%@S-Y{w1$YBD#@vF=lkR!i2SYb3y(iv2K8AW7F$-58h%rCk{^yRrU z+R&BhJHm}vO-e;oO zD2vPJWi}2sDD>cXy_Do(uK~xe7koQ_2;+H9tI%PoX)IO`IJb>y&*kgWqy4>;B`nU z1(-M1u6-g^&P>blAo5QKA;*i3hD{!Uv(yuW7m-i@0(}A3;Bb&9dfYm3VM|Xf@iNcV zaec8d8KTYvDoqbINui;AX`SmMy~vrrYZiA{I%X6R>Fh*hu624LX38Tq3PW12oD6iC z`FEt`?#%;b8fnNAB01(97CAwmrL1D<0GryykYea@QzQI=Wq%5+(rm$c3dR1p$ zPtM&t4l&ib+uZ}lT-e>7=)!ZA&up7$%BVD`=>U_wl0}ep4gG(gubFU^=*n{z1Er+Y zV7Xwqv!BqNn2qreCQ>Lk8c!}RzTWwhnDps{jORSe;(_3>w^pGv#ZeGYn?|+btPP1n z-jk#Z?$#wZF@()~exkpRBTVF9XZyX-s|NWhF_QO>mFG~HJOBpa;=2bEX!%zRo$1U95H^&E)!S&s7<*=^yGOd zR@146ML=giIxPy8jIwB*k%~7_`grwZs-Y)wPjtMFLR5mNz$kn6S2N}`J$v8*@9w5| zL^NdrFGQ*6b=eOx-71ZR#ptjR>AOY&I&=TUmhMDh5c^B?4Qq`4me1O&i*l+L@w(k| zUpdMWQ6#ofaz~nSp|f{YxIA>JB}_nE*%E;L1nJ+p@cxHcX;p~!JWCvWvd!+(W`B#M z5PaZ={^;>@4>E5bdHK}9vkQn<`A%0Z90RGH%@oi{v+*-YPEO9k67C;?&)LZmGU~?> zLq6V@*O2JV^QZXVl-2v9S5~Eo`|_3X1i5=-`#nA@!d~W$!W`oRHUfg^5~8?WW3MNB zAKnwo>l(}a?;+}q)@i9~7V@$F^-%rTpVsi^W98duJ649QniV=T>GW-L3iCFem6F~M z_H9UQ(taAzpXZJ6oF4^3G!_?cHtNBN$pgyN+uG{$CgBMO_6AMet#I?q9A`2rO+!9)f%-av)PFv zKy4=e+`iQ+#f>Oph>LGN5n<{55NiL7_eW7RAdfA<4L)s3YH}A|-`VSTPa=lrFO+X5 z*q9atyF-nXfsJv;?!3M|EwAMA_B35lK;=Vq3I}|(_!4otGcioiJ#&!}`lb`qX;4l` zQD~DXc^{1;8O*yo0gZnPh#(jc;B3D#Kic;s^RLN%(Wj1jv>q^&7|Qd)tsCls3m5Yu z4%RE>nh<-X0}jWUN{;;n$mbwHAz&+nZ-^b7QkKx>a^${HGnulVZi3cd@WgI zudAD1@$S(e!1W9afjYG3p-d(?tI9 zEP+Oj3AT`pV?HrPZ(z>O9Tp3iIZFij%kZ6V%04mwK@4|cfu*5(A*EGlm6VJrKNhX$hwdj9?JNIRB!o z@gT4JPS9*SA{@w?%3%tPnW`ocRjUjl@+BT*mxguf+~_muM_v?#wXKv=ou<$*n-jwO zMs0~)sZbz=AWryt7jKpN(oc{8&HxdfUxoRB{#rSK6bH{*d4ZIF794SK_sTgVYSek3 z7{g;U$`8S<;V2@`lo^i7qcoJlfRcCN1(LsO8Z|f(8J!ak zjE_%FZ~o!wb!R1H^8-DaF5dd%H!j)9vOF1bS+Rg`qQ4Lrh0xb?pO#_7CRr(^u+$m)SmQmyQEYs&87Pc87OF_dpY z3DRTptc!1Mc}2xrJ9WG&hsfBsAPZXw=<^44PaSB`U@0%6ReA}Qw`QQWgepum0Cg3M zCDlRpnvC-KvT?!d6GsxGd6vubTwNKl8JGRlteGMpsdLlgM6}4iLkEA2UO?A=;O42E z@P%J@;ziRO-!hAb(k~kjQIP=GCwFFDs{8qazPxyjm2(7dPMHd1J0-<1kJ#$?03sWC zQ8+v+F<=I?IXJw@*QCq0e)(RDLf+TtrTi!$jzUB&_Ld{llj{bQ_+lbv5xJEQ!V^c#!a=Y4|AFu=nAg7X^bYxFc>(D1 zS0%$sLC6W4xv@-@IG|%T&#>$ZAjqCS1;2lE;l^&fJn8cPf;IY$rZk8`l1bAm%tjRL zuJz2HwEK_VX}osid0a9#$ZVU7wyTFo{*(ad^Ve-Ui{;>dPv1+qCxzbhS@$Vq|k(ip}%B8>2M? zh@mn$PBDlq4hcWEX8WBrysP(l{>rmKSzDq>$>VzxvgsdLkvsnR>TN*s+P7g88|$9A>MntP*J{02^NLsDuy%Btiv!JUr-o1X|y9;U6L* zVQ4)z4MIP{@joE3RKpr7y0C3qPFphmSwLd%CEL!Zu4(7+wsQf0jE%+OC#g-!l(B_( zB}Ddv4<{j_EZOzNcP=g-GS`>r#se?VTgFyOu|ffeG1OOQHUJzT9B0Hp)*tgn{Rxl1 zi=HsccmnD?JwF72eIGcQS9??f|VNlnz#Gm z#x2cxK}POUVmdSj8Pw1dr_c;kq*2DHk5SHLKYYof3)-z9HElNv<#F10mNrr^lOp@U z^1u&OwcGTc^g7EwZ^Bz~<(8obQYL8pN@d7RJ|}|2KuQ|j&xyyp28Xvk*=Fmx|3OO6 zcI;JNNGVHn=NS>|@j41eJ;^7bW53Mo)MqRamqc@$9u%NA|bZo_@?+{t(B`01}cZupFFu1Yf zam*)#!$sumyd%#`9X<6Q01bqxLa2~VY{ypQXa*Ya{Xz^h@Znr!&Ud>H8u<4l^}d9K z@XpSHB~I$H>fV^y%DBc!%FA8L5SJlpVvQoHV8T#?vx#ThU4GJ!*L`taxG|YE7j)M} zp-93|2H?KAQ+w@RKO;S~tQf?2X;lJ|WOK>N+!glE!XSjF{_4J~wkX%?ZVF7d>}Xw7 zzc_hRA9LTU{7!iPZ-bM|L8zbf!LtuO#x6oZxzXdIxF zslhoJd3R4ek&slv#K>xg*Zs=d1IQ2(<4p!ACL^l1u~sobUTYIy&41g3Rzx6=Wuk?O z6u|4P+JjuTSW|b$*>(k@VhMz1*kcJKJX6ta=LKD`fEZvGaDf;u>1Z|g5X+{il&AuT zM$!MH+r@oOSpp$s#7Z((N`kF@+O)J^Dd%uJfndzSjC13yK z=M{bnmi@-7$;HJA;;2NkTBAx(BpR!k$m_o(Q$1S99~0eq%#mZP=16En!D4+2G*?XN zu%L090sf77qdxA109s){vR1Uxg0zYl%)MEKemqv-+9Wl%02YWCTox?u0q4IRQv);$Q7}&b1h#?^W`nFJ`ax* zF?pE=PFfZg#6$Z|P1t!X?d1T`ooKzaN<*gJM5*Y;8s?8|l4Q4fa{jJtN}=4+uf&-1 zdzQ~ELl$TuUd`{_`eMr^qxkhw5M!*LE-^u8QfS)y(UGG_bVVwe{oSR4v0g+UXGs}v z#AK^ggLJ2O)(K9)#$8Qfrc-&E8OI+9E%US888*x>no`Q4_NLaMFrg%L_)CRXKAXqO z@ns-C3JD4tLA~23>q}+y$}~|l$_c0*l23%+$C&C`zV#(BcZoHIwMQ=ObF%Ae^1|z` zcZt!m>rlLGI5qOl#y&s!^PYjZ(I~W+bO_tD6S`ry3KlFEhdoW5b?^(%{T@GwOf+aA zP?Tt3&>pwuk*F8p;)lH?qeFZq3)Hh=LU*(_%aO#7C``-S{O41MgxdF?c>T!M8Ha^; zsUlsXx&`0(l2;$TbHnc)-{Hhq9#ix@HoYvvYhN^;waAbB*7+?6zVtmWEwc2oi+!4< zE3ljf623n!{HVe?FFBAe<|Ae{l)RdIrxaO4>RbP>jSA*pl$%@7YRfF=#XYS^hkf8p zifcs*z$43S2e_`$%L{$6qF>fuxZa9Xjrd#ogu1!4i6^^>2q?&6*Ac?@=_sTatDkFEwFq{V2d&5#Y62rCZ6!71J84jj%X(% z`rLuu3QYvlU#j`FeCNL(f7nG}KMRMDjI;*jLldIpk)Z5}3N52Rm9!y|{W}J%!(9v+ z^zihgc#Oe4^?Ul&=1Ry#lgy!gzmESxpqL91-DS$@2r{?jSjruaV z(0k>TC+}@Bh+Ad0RHyVRL%D>Pd*o^1@lS6}45-nyVY0w(VmpeBYLRN|6so$GO+F;{ z-1#ns+&NW(kL*x?Ldlg+hmBb!6bYxtccJ(0X!`;(@^(!7n`d|tgb%s*opG~Q9|&6_ zn%-hlK-N}=752!Sobj1{YIjj93_T@>6$Tc^W>zhq)&^_1ZF?1MT-SVP#7n}JW3i)tP^1I za`!|b*6irX^|L3e7&YlXbp^WA(g_I7@FKFi<0W!{`@pQ40cUiNg0Rh=cl}#t4uKIA zG1$~nbVX8pC4wX_mJE99Y0y=H1K?19bqobFE6_kvN{L31qOi(cGz>@?rhCxFaT1iDW!=GPq^Sbz+; zZMGQwRK?2F9NIonx1!C*K?2v3eYHoS$r+l`AUO&qU23@M){Ar-y9c7ra7B~aGkPW5 z7Z~l>y`nw(tew3{O0IhJTaB&9AKr65^umG470ala^i>#BpixId4H;uoGm((Eb(nj7 zAGFkv@<+Zv!&au*7{(Bt{B{-zX9Mj*&1ly>uKAGLC9V7VgU9W|0X9Lt z5LxSDtE@GX>A^!Fam!kxRN&9n#Z5-Eom|8#KEaXs8>}%yJ0Lg?DusP7^tTHF`}y2H zJ}%#_mpKnUZ6q_t=5EI8)BI2wl#H>1KE* z-ameQseBPR|GW#_ZF+0aCA#5iQ%by^qExlu2?_1hYuRbcx!Ud5pW_|2W*vGG2@xkV z;3a`Fnpy-ANPS5>`wPFC&ZP;5V>4#I>`Jp0E%`zZu>;X&U-E+f;?$>c-U9g6Tr z#N$H&n;&tH#MW>{6q7j(4*jem4i@otYB=rz7M7>Eq)pIdFym<*UI zBD~QFKE3GbJ0y|qo(~^7vBFcE3FEzI3^4@vGvW+3uBAq0=E}2yBqUZK^(;E zzjfYH1wDU2O6MpXqu3;0N>n4qXl50>vq7KZS~x}9EvV4bm&ls08u`)+pTHtcJ0#ba z+`X~=9-kFqFT21?XXAl^)FcQ4c8$HB?0tAo>~p6HHj!rtNLiid7VQV^ey`mpRa_Wj z17^VHe-T5z25ezWLz$WN28fP0X;jg}m;t!MHcuu0FW0K<6Kjy__g4+-zOYs{(S{dt zM4~5XL{qv#V{B%zc;%BXOttu>ZwzzsZ6bUmR*^x&EJkF}#g91_FM*N2`_+bBUl03@ z*F2W;add1*Lvhv`AZx*3MTrx{Ag+0MlfN8o_S9E?YOU-04fZR$--HOdVi3Ww7kWHM z_l$SJBzS>PzKqe0)~tSzd)tNZhP8_{(H|`1wPUv~&%XyeM!pR+(M*{s87O&Z5@Aj@ zG>Wd!=59#y-rU@UEEsGdV%HjbYfXmChOHo#7E+0ui7IjVr-Q7{mm`B&%(`HLuthmm zr;KAt#xmdQ`~1H?G|QC?j52XOF-a6l#OYH)${+I4?T`_tPi}OAI)cF)1oAx^1Jo;EM0Nehk+aXrs+fPR1=aPM!Z_Z2QTYV)>NSqa+hcceJSlgQmt z?CY9Hsi;IHTkMNi%M|-wx-TXtwamQ|<)2^VzVReUuf6m7!Je%S@-9*?nF3;VJE5Zb zQ;A#pD>Cx5MbOPXalwtFca}_cJ(Pq{5MBd1{KY2Tn9Fct@_3XEF_d<}H8?$)b*i@M zaX4>e{A>*lcE8F@H|xZhJf-BLhvox2ivNt`t?qCZ4Lx?ipn%^PY5SI>P*T1}yNFbq zKo!9~p4W%I`)v!Ub5n1WMbo0U%;F8yY3UkMV6fCvRIc9w!D51P{buyw6s9?W{u++f zYrb8dv$76Ok*4Hz_C|wKw%P}$bU)p1(Dz^cvR3eW=mhUUe0euA|8BRM;W@o|IU$^d z$v*)W#$n>G7rV31VwX?j!u@Y$9(0~wl-dnx_HMkuV6UDcv`sNLV2G=(XBGRBZ=`pA zIia)1S>7dKMWmEEZIU{<7n);08Dw^|MOW-8!v@KfE0?n@Paj?J%7-smmTAQ0tbl9@ zjvk8-^}lvq{dE4jylUv2rOO6nfK?c%u7hDW?%8r5L*d@ttsW3M`jSO6H-xY5-gPTK zkO$`4z!+`DW`8EJSgIi#S^98&_D!FoiIV1PZ~jEQ=oE|4CHh{OM7I8;=6ikGdHuyJ zXUly%4q+0<+jx-!d(Q4=>M;KfZ^Xr50FjAClR=?0(VmNW2#??)u%hUt9|Q3U`i)q! zLxf0}3WFeQGLZ31M?#O^9adMcKM4hYf?<|1JW%nh4U6RuU~Rb6m0~F&-Q6eyHK}*M zjF=vLr9@z(r&Izk(VhB3IT@*Wk0kDH41vv!b$s**M5y`Yd(Wqv zb;JvTjdB?sk_l5)@5l43JTV%kR_`EC|F$#*J5A?phT z;<4lWo1e+Meqo?<2+pB#Pd*snT#yZ8F=2U*q*N$WD3-|cXm`RzeT}OU-bNy8psdy< z%HW?U_@6?fG;0(PhJqF@V40C-6R3h|jnVK!2Vfq+;nsc@akL@vldU~%5=<30h`J1j zz0{;B+wzCE(J%VcQIFOGhVnK&T3>WBrKJoCjZ6m+b-J3GB;$?|Lbx^hC0(6@ge2Jj zoK5eSeO&LS=|PZQhpuh8*=U#t?{EU^WtF-9tV@rfxz+@2#KJ0dzv>h=HC?d93IU7N z>+0rLyn8eV;4Sc5FU*0{fc8T)>;{%&V)PONJV$WfAuhsHmZPk2H!4&Wk`$(5pz9iM zFyF)LxDS8ER1uw01XAt!;%QcYXYj#!pZ1R)q*#QQh7k$D2(h>>4J1e|a&qLJf;p?R z<{ul)tJe=KA8R$7Ha>bi5|*_cf)UyF%qfb$I$=8(=L2R$wi4oJ#G9Lu@Tx_Ld!adPutnm~%eE%dKGz2GtgEk&zNZ>&+vt3I~(swj>-~ zT$hk8z>H8qGbt$MkF`u;TwKqAuHiE@}wi`!Q$d;<16K6O2OWc8E_ zOhp`BFiTb!AKc-uJ&#%UTgbhq9gg#2Pi0$pG<*V?`~;xqgToRR%Qb_?)C1n|$_pZ6 zISj4SmIpYhx8h>0Ea3!8c#SBSW5LtJuq`~jd5=ikv!H7l~TE(JY(S;2-OhN z2kd=nnc~LUEIk3f;-leK1gWHY%($^qIhmJ;T&k2EO&OI2wH~Q82R@*ynK(f)HbAds z$ec`RJA@=sVTweGiO>6YVdC@1^YXO z&%?GVfK-9~_+K!pGn-@(6dH7D719|gvj}2q?6iuzpb)Z36P$gMkECSxvl}(qneE@> zo!n==KA`y_Vihk@RJR5_z_JYHpZA_*Xfr|RxH2rg9tAIN30s$cKfDQ zzkWB+`Sfw5MuqCQ5(z1io|t|6F3=PIw&{4++Qe7$-!`EY5y%r5()3ORtbwXMgorpV z%tDI-Co@o7f2erkon^nIl5ysae0gB`<{iPUh|xUnQP{3_n5HO#2xoT(&;5xe!ns5T zY*Pa>L#>*-!CDLqH33pdlBqz2Snq+Qsny-u&>4B#eQ~q!!Yh=8=T?pB!xo4G1vL%R z?3luCSAB_^utlv9BdS#6g^Y`UBIgb@=E5uYgiznSpB=$1z6Uw=wr-cS?&FV$7#@Rc zMp2WD$}j;93_>fqN~G5r)g}rJVbmFs@cdwn*%)aws*|-bCP16V|GJ{>*R{TF#w!&s z%+OC_>~hbikM^Iod{MK980-=e0IOFa_CQ8@Lns08x8(lwW=?qUt84PrC}^%#9NK7y;MZ9pb@!UABa7U5oafN~#>h0#M>~Nz= z?Pm9^bU^g~aGi=*m8dL?Hw&`Y?BQ6%4+-v)6x59hX23z;X3Y0qzhY=1tXf!Q^(^@t zYk6xV&tS@wi6!RJnhAg>`++m4Cs<^8iX}^onX*1K^j$1nroxFR zgTyGGX^}nz%Ay!(Gyo8)a3&EIieZYca*NMA=QbyVQTFIp<4s6?iDGDtzgJdk98Q$Z z(F!RkiV6!-Br(>f*>>i8%ups?PLfxT2I7)Sp<2tyd`kKOBwXYD`? z3kUA{j!^4^KLx|mr6k5EhQi~;q)Z`5Sb~1P+%LdN>B;>WGmRN9jRrMracDG^L|8(+ zR^%h36^WnHBZ7#7l394zED;A=Z9`msTjAm6)W4C7<8qk-BXjDd!D6Q_T|$)IIwdkeVv`Zf_W?hM8wIq-+~GT8e9V0!ng@@gv(*^T2~lWm z4GoU-ctHD3t(2!Cl7+9h&=Af5!9}H+>O)_Sco8rx1ARp0c_8845h8u401J(@#Dp}+ zAwyLKkGeJt*$@)f+_P#$=5BSy}|A8_V+7_g+jdZ>>l4JKz3ue!K9*@jWB zBqd1N$x~(Y&1R5a54}43=IVAsh$xp%TzaAkV-tcN(Q{SExV-nmJa&F(aXKgzYZ#u6sYZPBBe zaL8n9io5E6yV^g_#qDKGcJ!)fG?zRT8dE`i8mIF1gat2;U3LHMtIi?nQX7?PR^-f9 z#U!p>5<2{)!YiN6<6V`{)CK!e8ND)1RHVV6$OJYHOT~&Y)y;xjsWRwwH=G)IXJenA z{CT<3%xy&(GW8}MB8)jOOEC4fGfoZ^zfX1CS1H=&+ItupI@KdD?S+_|l&6wtc%pmcz_ARvdi(5uZ|vCGai~*~ z#H1zXidUzUOVWFTKEHpJwR_ET=6Gru&PYYb9EqoPa`GC7D4r zzS7NpI$1Yy=$kjf#`20vqV&*UOAP787&HOH2PDif>V-RI!=WKvI)x;54q>w3#?T!D z-Pq$||0}lEC!{%7WO7&VbQb7&VYY%Ib44PYHmRh1(+g{24tb4uE><+J)DJLs($q%d zK%GgQq*f|WClE;ER9r49B!i@%iIliU*_C9MYQ5s(`fJ+K)j|jN^2V5 z)xPh8+$Y{8QjtTb&+Hs&6UoO}7)R(gVAmDr(^Btt2|G5iQ!pU;5wT7$rpZJOC+~!^)H-u@4RqQJ1w|9QuA+q(H)su*GW| zC}xcy+VWTqCcleUBvFGE1|!vk2(N;r(M+7L8!xyJn_c$QsY2U>wObA5S7Jvsz0i{& zU6YgtZOW_py<1;wxnz{{HoShi!~~s5p=r<5INekq+B8sW{FXtsan#II^T@{4U~QLx;Z@Y+T}j(vk`igXE$(;BZNX@A zhIsCk2kR)?VnIc5S$;FPIhuWaNo1D4 z<>s6tPdqHwpQN)FJArnLfhWZ64!-;A(q-_(q#cxyK&ug^HobsOR ztJRT=$1K=dKzIDNk<)X}O-Tw%TX6b021+8`c3G@3nbkl=tp7%LilD+Ik^=$n2uN3= zNDGkJFfFgRBh1IIFO@GM=bv}Vx3aGsmIDKo&EaZOO1z$;RJC#g1S3BU&L*C1clk*_ z7hVvXrAF(tRJB4JSrxG98VW=>Nc56CBLu`g-3+y$IH$=QH&G3A&y~Cg-<3 z&pVX?1g*71CcclMDcx99uwWGBN_vs1~#cju^kuN2?zWC0?#Y5)$@~Zngo{int^qKnV%mzraV-h^ zcENhEhP!`*tP_?$o33ygW7`GFOZVuchxBIpb1aqs5?dDumX;3z6--t%v$8acGz=bb z>wW)?(_M%S9HUB_jSWRgbU*}zqxl49r-)dscUt(E#8D;%uU{D&I&ig5Ft6Lq`XxBJ zGb$8}rniOdi#=??Dx$=^3elxqs7&Goe!Zc?hHT$|;`Jk2XB-x8U{IeP-BjuQwRg+a zZ!d4lE6?ZXU0HtwI(=%5211SNza&#VTF4(ebw~E#*wNgfjy8}$5694X@>U!r>!(wt z6QMk$3CG(R9EFC^px%V4;ke|{j*?h9P%sP?MEeA+WTok42~0@(ep%s1Z@M1;#G8$J zN~?ke_tC)1^4ZmU+$3J&dC3g@EKXJiVZ)TjnW??I*%Hum^57 zgTw=3!>ItJ#7c)JhIhrr(}QX*PDxHFiEDavh9lcPQJK^!sB;jlho@aqNK2e(-}z*@ zYg~n|J;>iO8)T^#wHoRa?4>JDXs%{pZ-YT+K(Hp|z@U@vUvO~xIcXZ92k*Q+uKKS1K0!ZO1j23| zjx=)HwTwmY9%|(Dq1!E)V{pJC>{$Wi-EpzseYddt@aO0%?Qhg+`%)S`Wf(&cyLJ(~ z2;#a2;Z5E!tZci#d(d4M0;jT2TgaJnJeKd?Yg8`hwa^AiNvTo)xh#(T#6aW_Y#68j zun*(O@p(H+erZ{sB>D+jO0QB{%AnBDi)paJXq==osQfaD$YWjy7p_@nS7%&(S(W}@-cFg#TTL$Wic;XD)}vXmxOxDbrwM&7vLvH< z@m9l)@w`unyEDqrrT*`Tc0I$^g|rg*@)$b+j$0mWhIdH+Slc2c$T`D}9#gkh{mO+X z)(#SNVxE;hdAFDH{bIwpAl^nS&J*V&5R;ZI1bO<;>I>>9`^+W!3RjL^BO;^(Ts$~r~zO=DMJEf zG_?pN#)CGI+d3N+1bOY)t;_T8ft-FDo~Ox-%>>V&f$`F*V3JooT-@@t>j{gTGAQg$ z4AL9DLJM96{&R6Mdcye^(%^!ErIT)DJDsTrwvsL3@ED<=bSjq>kE z$-`a)j$beMc7XE|SXpO{k$Q%D%tnjFliU_KF}uc7LmOV}1if(dWwC1xY&uxmT2epP z6Ot0Ckc31zGcC)5;I^SOc?4cWPY_;2KDrP3aAaZu!+K5Xi(XF$bzQ`3O{~4EiDqzC z8NJNL;Rb~s{Acxp67ucPAw$l7^3_x)TNJuER8*3}tTD0mE?Kn0kIN*)pW_Pt_`otX z-(s<%&t&%5-;>VI9eqsX0MnZHrt&O5Qs({YmZZr?K~K1ndvpaPYN- z?T7>(gMlus>^($hhjgHT+H7?Og&|YU{EiNABQnhK4YrymWs%gP7G(P~9=CZtBa>bm zGGxeFM#7l3cx4KuGHW2%@xsx%b0rHFZlATD?=HHdbw|^6*0IM2j=p=Rz$s_g9+!fn zc5G0tbA6;2`O3!lMAc7<_AZ2!to?|F`PP}N(}kRWaq;!epTwk3CuF>@7j_v+O?qn; zN>dzVgxxl(6}z(0H^asvFY{&Vi5zC$KWBdDMZwMOn;ce8I^f-O- zlf}1qN79tP*_f<_-ff82CTD&gyYu??w7inb+tYMK0ipw0R&qOHbk6<&^DlFFSF+W- zBj2ji%3>8-a}q2dvjM^#Gy~>g0IB^%+RS52;J3V0Z0mXSumovG4JQMmZezV0&;5j`ah;7xp_&)a-o;dZX!0DoQ1frL<;tQ^;xeVbMqU~yR zn7=DJ@DUVeKvvH#6>mDs0R2!)ccPF>Fsj^f#&37_HyeK~+>aP0=xuW$3EKA2f`w5j z3T-ka@1s#9SF_*E(}JPk1loi7QATKbutrYmW+s}lWrUQhY< zj}7L*%(A62`Jkkv>Y&Gn3#$~02y#3pw^~2z>$-!h-}G$98#$M|8c`68LYLK&JJOU3 zoxOqA&YAGwg$YBe)aVqse_h%?47YmvuGeOP}q*A11kg| zqtKhJD9}1ea{m`a_qaheK zRhI9DUGJ>gNetz=RqJVa71XSgA!(-wP*XCDi!^$-@WG%u0t51}PJB?*T%B-f_1KxN za{;VuPYYgLpcc~;6c&^itW-gz0APW4h~Js-J6Do#HaU1aCgt#6UcqH6Vh(Y;G8G2i zD=7vyXAwht1+i)@JdSBa13hq?rv zmb>pbi^<;-K-9%jJpDep&dS8~VR^hTvt!WUVDWtmvPk3ni?YUpyzVfGov=||p@BkL$Br8-Ta=|l58Oq8KfTSOPaj+)hM9rW7G z&AXa8Dc*1!4q$Uzfg1XWqllu$b?N^v%u9H!Gc!Cw9p?SlAG{4Kr46~(sMM%IJVr)m zwFBehlhd1jczWGg3As@6k}2%3;ahm81vu^#773$Y9$?v`aj^eZNnTb`m~fUCVs;W1 z3?Q;;AxKnht@6@W9Y1>^AyAYrMJ|ZzOGAJ;LEBIlHS_8TD<`5qb;8%Xcq>ear4RJi z!}F^!KhR$*H_TT#%6y^jE%S**@|aeYe++IWO43&p`~?g^6B=?xw7gKDcUoyF`=t_<27iJlF&G+-%F1k-^Y}qy!o!o<5x_d3v z_J`L7yEI&&tY^tRd0-UMu+|ws<;#tT-q~AeCpUXPF!KVMj-J|)>k0{rTG{Q^l-h$fm#Bh;+n7$##)&;VBv3_ZKjj?VMJ%JGs4*urqfT&si(P{mpt4N(AY{p&WJ#d7e!r|%`_ z-A&V3nx6V#IvU&f#4C3YQTT3F>`P#i`<9f16Zb3}{dU(0kI;c7gy`pP(73G+c_TjL zz?z(vluQ0b2i6cR2pN}{SoSa*jCisXFBZ(|LnSE_L%MWTDjAO0xg*ZoSg=Lu05>^Rm)9#BWu5khS{kT)Ff-bn?XT{0HT)F$Q*{ z8yNe=$)ozn=~=52GIsC2bNBAubp>g8+d=)!ujiwW7Q9`hClM>?kFY%-w%h}?v1lk0 z)hZ_=EpNI|(9WAFv_M$nZHsB{?X-#4_N?SR0F?r?E9ml10PO+>>=^m_%LfXG7Cg(3 z*-i<5%{~4(bVrNPOtycxhDvk!o^5W88{9ww?dWqDPx=CGoZd za$RN|m1tILR0)biV>J_b?>{>N8U~ykC$x!GVT9gQx)?)$LdEr3&>-#m*4?DnVs5E; zugYE2xXYHx%8=qf#hkYH&_Q-rZAAB$XAW!3d*7xdlc^?9{nam#|JOr_OUE1EZXH zO7@(4X4X&bW_EDBeow1|AT=PoB)Z111}lg}clbinaofymO#=C@EDCE|xzUtT4*o{1 z^W8a3j93W^ZT>A3yl#~U8#*Tn8)^XSh!xXtC*3T&2^P9pC4-4TPUAtnVdjp>TU+rG z;J9&HG_4|(sZ}!d9~d2d=qu^*HQoP{N{r>naje*ml~i3;v9z~VX~@)@C>6IHV-t?> ztVO1tJa%aDPgC!^1d~7SU)m(eZuR8+UD=dExusu;G3WOzpIL@15J{-SJ(0(IBwT&m zGI)r8l>BPx|e0krZ($^Ca-jkL_08skSZT&PD`W=$bkv&Hud%n1rnNfZg@Cw&}gCt zC&YyIQ!f!yVJop7#{UZ}Y*?H1+Y8R+m|f5@VAE)rGvRIV#n_bj>*5oaCp1dC8A&f1~HbPK-m#UYu75=7?kAdgQTdD`pq z=HK!13m62GLXGuC(0DS+`cfIaGEEc>$phw(F39mT15wx(MSM8HWF%l?9*i~INPwPblXDmSTux`ZZ$1cfm$lIMHO_fs-5 zBmC-{LEEYmyuoq#0k}Qy2nln%7xc#S-60G`WV4Hj`wfJlMlU%Mvf@c!afJsIN;7?a zsPGWM{s}$)PFA5*B=_`<+8$-szpJA&SK=0}T3B-Kk=n97Apoh!mk-Y*h6mI+DzL`I zs(GR9Pb22cz=G`Vq&pi_;RY^A$Zw2+m)8C8UrOMW+qb)2VzxP)8Q$iBFH2tj@#;7O zFQW52hQzT9%g8x(pdWt|ykw@k1bKa4+_(eFf^-6FADkD-k!6dst(9ykezfH-iBtTP zy;Qi+zeAJ@cBeZ5ALeHCq`N>BLhq(l!|Y8P;cy?t2|XCSFhGcD)S=bJq#!N~LmJV^ z{QS^Y_Q2AY=ysK`e6rfkI>i@;cW*5))L{u^v1+3c6z3RANGC>h0xVwS;o0|2zq-jI zPh_S=pSF4dL5d$HoGKy6=07j(wykf~MFP#e73<~B6{rqoQ+6TP>vX`565jTc@@>8K zw7oPsol4G*DM9C5duq4g>{QR00^bl5xFNS{1E-l_&M*6Svd5m+Qd*xM)K{QV1(GN& z_xui7q1d?s*L=tgRbF~5IsNrCUU8f9pDz~`k55tS^+4|ABIBsa=0naIv?_Vw9nE}! ze}v=v=pbfjLXZAidF#|5h4QLtaR^g_+hv}#*Kf$enE<^Z<)K;-7O zHb9HJn(iQEi+QJZ!Pysvc?z@+_U&L3h|^Yw)1I8t{B%LTjmv~S=4a(SX{#8Jk+)+S z*|1Oegtot3+`_9lSpL@F-NucG+)iRO?SJ;@FfsWObwr@5wsq^GRc1AlL-iV+0yIu_ zDhe&Ny4~BpC)qPT-E|Qt`#`AGbJdAGl(p{&9KF!nq?E@{AQ1+Du$F?svpV|4i^apd zZ2I{vewgvtr+r7gz?F%vkNX7Uq4m%of~=QC;beYf@}-lR?=?DjinmL#{KaQ|xu{E5 zjaZIK14TIu=Sj52RPY^Qa<}QZ(SJrt)+CSg`0~X*83Oxx?b)F9j_BWj$bpyJ``|9N zel@oDnJ>Q;xX+kNM{A^1x*3IJ!ZgT?xd-Ayq5duM#gF^m&YU{)bE2cO8oW*6kS;mb zo(rsG5o44rMOP%nS0YHa5vL%{5H}<0wa}&Cyc`k`DSkA1MD`U4a9Qge{2^9${@nKh zV^!oZ=w*Ur>8&Oin3%aQR3hTl1yRH+q!-2#uipLZ*eJ`#st<$);5GrtQfM#}ak^u^ zQT8S&`Oz$ON|b-3T3{q=HOmP5P0*oA6F z;J33#Jktud=$LzY9+{WTe1!l|!0`GaOM#^dLArUm4||>Z$}YWM^S9~qTlD(%E$4ED z4kNu{K>`?b@%t)_DbUuWp@xh>efabtaZM(_TQ7{1Ddm~1BNje%fPh`(zILg=k>_bzbZjKHg zw>29AR^}GDe#m14$?T6~h)B$B6Lys{54ZI9K}l6We_pXwN{k6!;abVj#djB2K6yjp z0=2U2sT<>smJXkR69@$cydumW)?Iw|wltp0ILOC=mAz zrWQFw?x)hqMiv7rAdD=gsirtLf83}Pp*z{uKgwkCrAq-Qv(G-U`gqtl%Qhm)S@!MV z6s+@>t+-qq1rop-WbbgRK_N?nSq%!VQV7fI6dDof>_9|I?%_Ji%Lk^FxTOt|zAW_0 z1&oDsw_22kj|i$)`9u1s;Kam`PC+o15~=Y^>N4Md48zblD3rAH^XX4QGUnAY@T#!T zw$BE4F+E9;ys4Fq0BwUZh)a_fM|3caM8gUq<{I%x6!6%k@CrKOcDytXkOnPKGO6 z$fPitjdToS#oN0v9wT3ZVMgxI62riV@7cExY`2pmI zzNEMgn_ORf6JXseGyUZs@%IZ}NE_{nQD^pZETzyO)*!t5#a`7{4i4V-11|~R+M5Ss zfn`7$(aQjoXJ*y@DzPxj=)z-;L(JVfsOWOUeqiN{+;%Nv(YuElxnOe~C3G3zQ41LM zf@vLeixF|n!<#%C<{N0ZWSr}o3q!t#t=uBFBVZt$G`!dsVl-@Q3`{Lfz$L>cWh0$d z9N~j18J*!DtCWp6+K5F0@f0zws+9cp5Z=bNC}BaAez}h zuo(yS2r7)+dZ!KV$lg+68fA)v`hPl9GiX!Fy6PJFQgU{++8aI}J#DQExi~EyLeElx zsMQyfpbd;sa0}A~w`%oma33)AQj{+A{pG6;eA?=_2E69f@eQ($kY+N16Rf1{5_mG} z*A0o&#YX+Wt8d_VZ%h)wuF3jnA&8}@c-kl`VziY5{styV;c}xkZ+n%MAf9-~ZA=fu ze9b!c_`uP3?-cM(b1C&+K)uZ>0!m|8b#f^$Qv7tgLQDHXaep0{uzeI5|0DiCLpOp<{ds6gZGYCS& zsMVB6U^ULTuW#B^YB9KAd|AiBprqhg{96~^|1c}93a=h53=6Swx9Nali{t{gi8Px{ z8wqk${m~;*rcYh++-8R<=?yZdLEcxP8K_93j8h*oH9hNBU$Vimz1#QxHBIKieF8j$ z`0+-1Y<0s{7K>O)fp9gI9<3x~#EzmiE+iQ2TVff!@S2WgwEF!1&Aj=~eU4J4(zvKg z?BnzzbF(*woK2jTB<=1vkx+jI|eTJjBVT zLflN`eAn~h^}vUoVKiw3I$FTf9A+pM;JCogr5^>$(9vD=3B1$0vQ&iVJpH*NXR zAlGaP+RL$u3_7T>$T_g>oo4 zR}CkROi4UnE3T=J3u3eEtK^hqTEKz@`!1v~ITIBo^G^p^gM)^4ebizm{DrSJ5S#rC z8S>HXkP)X(Zgg_nAasGIf@>6X>r_9OQ)Eb2XpHqNz!wx!NyMl&DtAxKFtl^0;Gp0n zx>mU4$q!7;@N%lyp)DtZ+#<`6v-6HTFLm_P3X&Zak(ybhL9yi-kN&J+9=b;NbK)_t z!Qrh>w%IC902EPbl?HWb{8dtS%6ax) zvh9rOnsyGaA`@h*Y$P8)No`W5j4iw?A+jHQI0+S_+?1h;_$k$2ZsoSvl*0ry90(`QE6l?e4< zwJ_b$`;UYbMfU!S0Vz^p8m_F+?}-0YD_mjSn`L~jXoSH%V_`dos8n6MbPHn<2Efq~ zJNcL6xRn(n$bI!|-?_MaX(BH`sL>^(DUY&9ppp%M&y)cId6k)#vWPKxO8of?w0K~eUCbje*sEs+!wLWdG>e_&JGB}?tS=N* zN=2kF%&l=L7_C!_K11?k0d~*F2g&b zU%i69kgw;}sP$ytiXy>pEm-R5R&|65LuxQ91&9W1u(aOi&R`K6Z`bD&_c@vlkKttBykFo-YpM4YuWYa-X8x8vWSy z{hTYPImT?eq(q_R8^)ECJiEcm`VHjl*$|6VTCh)=lGoWAO>y4Jnc`f}@YV+p0+)Tj zOJprK@D8*_w!u;_OhbMI2t3@g3Ov}}iaXKAmum(e>|0PLlXt>2_lYqaJ|HO?sIG(I z68CJmFS6++tJs%(tM-9|`v<;JBG|)(Kr$i*Ne!jhNm!B86Ho@12qZj-YlvC(_Q)l( z0@uVok4&Tk8e&wW1*&y&0|jY`I-SapCz-W0I%Gtmr$%!cWe5!NkdTjdCtTFmxGLe5 zgaNMng0k0&h%hT=OhfW$N zc(H{-I3tov25OXE1CC!W_;!HvOtCCIjubLnUg7Phmf$aP%1c>LD)T6 zr2S?IZlpcDf{}I+EW8B}{}nd{&BC2NDSLMw*744)v2H2A!4OIX5r9z!^e{99k%hoy z!yJA@bK;CKCfRlR4T)@;B942l{*(AbL5$|H6v8giPBDR5cK@QXLG>!c9)J#Sh$|Z) z@R1P~t5j^n%2ax2i%Jjf7T?W4ln?P`gxO!snA7y^fd@n|&px6eQEX?4NgF}y8RF~a(iJGIs*oIok~F*wCtC-Wt_;5JQSqhm@_E-(l!DhpcanEwWZ z)|(y)h#sKz5Z&WxdFo5LYfu*uAKf;ntAq^sUGngoGr@~^hlw(v4wYd7un#gwBM>Um z^g5&3M4@32IwMjWAFMGOBaKFNvNpy9shLP%I{Wrr0H!f&J3W%RQ_Ofr5f(9Hy!dqy z!mr&rdhD!T#EH__nGrsI`(njTYn> z*`w50`7WKic1{Wd%{|2C&3%>m{@^&qjuoMr!{WwJiI-}8?Ufiym#hmBd>rb!@9mMEpURrD3dQA}@bdrT>?=Q)csa)N(7WG(i~=LQ}Z6 zluIs%d(!6ak|t&%ng?d!oTyiFJV?DNseY)VpYFJerjit9jj3OnUSou69(Mlgo`N~6 zv*sTg?W~Q|K|xBdN0X0ihp1{Uia0$gGtE()_Y%iVJSa>Uesir@azV2>^PN^rO8C)f6M zD(6X;ozyHFVTU=)N@@9T6bn6q)$Qv2od!~U*d99$`^WOuKqi_gGeui1g;qtU zr)luPKL^dDos*gUnOA{X&D&bVoPhf(hM-eMr6{z?lnP$RF|UIQ*Q~Rw<`w1Ocx_0B zp;rsJ|3KQ9KzCN<42#6YHO;_+_W;)M$_p4(vC9IUa1Ds4_QkGKLss~Q^14CpIzUc= zS)c4;0DY+fjO;e~%_`l85Us<=3J zR=4T*by0f?cm*fRHr(E_Txvb-i^KUG4Ft7-d#&uVY3m=CAcRVy(3o+ z@wMS=ZQ`r>Z=2AH2;_05baR^m2tHMN2%^Rbum92y+W%#{-KxjR;bm=l~l> zJI~x!_}h8JcC|d9yIOFN)q!te@J=?BIe*F}q}u z4!jQZu|*Aj5Nb|E;T80@#WfrehJuJ4j)+Yk73MI^?y&K8J+vS#j${!SHN9PiJV%wk1o#-=>A4gspz9clzG zeDfRA*SrN4+GLm7K#o(>X!uEWVA zr56;Z#*s>kwO5J(5GYu?*?;k=^?Rg zis7K@;+$e3o<;#XEi9n@AHN4gM~HPwjGse2J-)aL2*)RnJni*)^Y3^s@fqr0Un-+l zriqF)7!;WRJ+Vz?F{Zj%FsNGG>`G?u`&W{=AODJ(9f(IEo-Fsv{yjA;>kA+9CKt>~ zi85sBO*+&~=+LQ$V?yKR;3vPX93!QOS9#FTvf@0h31p?uVJeb5RYotk3_L>`MK+X& zlQVp@XXTBqZQ^C!lzzyuPqTCdmeZC8)BVYl59B{p-!=1=a~Hv3crf9#ZF&_z7tJk& zh&YOCLZV|vtxD>w>XOtA&|<{B%bUt%)K!oDdpQ6zJ?8W-{?8l7ou>B&dty(SIP+$j zJd%QCt&jwpAp~ISvc(~P(}Qsm&b|Wkm2R%69A$euS64inkyQm10eHe0n!)pPOW7WY z-=I>EwO<5R*&buP9d|Rb_)0kzDNpvU&Dg;s*xE)j%9Wapn! zYQF?JPp+2Qg+M7_7)u>sD|>Q(MYCWl0rY{T_6<^&SfnR$ma6e+LOKSuVMz)qM5Rn* zg4&B`n4q>s9oLj26*!rv>i1U->b|g6HqnMRS3=^k)IvWSejg5yk4N{~SnS(q+o z_~@s)s{N&#-fPOsJ4M;1HEw50FNpCOgVfs*WCNTo5pf!Q0`|*o(sN$Nrc>ITZ|5|R zc$QcT;{qVBs{y@wBF4hi@su)QEVklE))@=_-W8z(yE9-0+B|yB7JA~=#yJd>l?n|L zgbz*=>bkSb9&cJ`Tg>)ci20RBmK@YcM9xQjp(jDQrnLp-w zFZ~Xe|orqlcv9Z-Hz;_H!Cr)q=5KNff5&bdd9D6%3csZ-ak zp$f)T6(lgOs@@rQQzOFucyUm*q>jsY$1u`XfMpg&qwam?Gt=cB7+gi-BGz3MqrWRG zq5^;Pe}6Wwu#eS@(HEZ{!ntsv?ow3i0>iARD4!`0D16i#M!enITC+aU-fkPj`Amd* zGlxi@*$mD?vlA|16cw0O9N~km5M;mp$4=0hO)}`NHt5tUh2ALR0$$I~GQ~d0^M9TA zI+<3ToMJL6OT7qWrR-8fNM%!@1<(=nN5pmF3$Fthl|e1M3~fg8%AS>JT(?LpkZwJD zkVmE@p05?x)W<10XsxV4W>1++F!`FpifeJD!~&Y0Ldz7-UY3*Jh=dY=VbE)HyXs?R z*E!=fS+q8&(5{N>XSc(IN0^rO>`?*i1*Yl0*fJ~IS}UV3t8&DaSlA2DxnJ2k?Uji^ z-GUOku*8E$(7J|74-F?^=mzaQEY>_=$&^mc$6MKGt1N&Yt*8 z*KTg!)y!!Vhkau~aO9xG3d241HQ=q`X9Qyf42j`g$p**vZr}UYG?@zz4DJ>w78q%z zjfNOnk9)L|kP$nI+VD~W9IY(-(&EiVJ*8E_TNB^DjH&5(^@RmbcErSAa2i|NSz@In z1JXl!GjahIOMu9z7sxpnWM`2z6WF^<8^T;)@7t&+!Fu#07`_bqGlZ-d2O~Z-~Kj~Nd|Bjn3y(!?MnKQX zayOzYenPy+>L{}b@KrQ%bcm1Kb}eJkyN4RNu%I1v6b8}!uUeoEg0tBir(P~R_6!nB z_c|T|7i(Y%;`D;1htYYKxzEpboukR>F6fP?!5vBcS1X(u;(KQIelj7XQE8?(T{-;XZ7yTJ0v8xj{B z)Zi#2af)K~s^K^X9py_!F#|&3o;=9f4eq`2aK-L(PQysM!*$%ONOT6KL5AbiwDqPt z(_T)(_@pdz zqUMO;4k4XYA*xP{M&tBRL*7Ri`1G+=->a;X?@QpKs@nhWFer!!UY8bAaUs`~)h$Uyz%<1T)Y5buhRc$}49%jD3uu|> z`<6>tYHz-lWiFNVTCN$SnQ0o@riCe)WmyWTB?@x?&pG#A=0bRfx#wKPe*bw32HsD@ z%)RG4=Xt)*_xpWNCsX`+^7gY^Gm0utZq2Zk2hk8h5=ah_HAMW3K%`BAN%XW}-&SX~ z>`c14D1sS9`R25RF+VNX%B=Pk@7R8sst6*=&EWxTwQ=?|Br}?x&dq3aTt|I;LZ7>u zH~(eGjBgaxqk@@FEN4p3Fq((pZ4D#7TD3!`Xvh0AV%7!rc}$U&CF5;i7kC>A6ZT=! zps>JC`%oA{PsN?$Qp@qqo~iG2uJb(-c22g%B=q&X{WXBIFZo~gX<|BXh#Bd@y0nU` zCd6WOq^G2tj7Sw`2icnIC;zDo`-a{*!cz2Cs3Nyk3P>iaB_%y|Fq$^U*Vk-1M{849r?!C^x* z7;sm!H>qIQt%Za6&6~QeXW|w9ONCE}y2SW6646@2NM}Y8XA9guoBg>#>Wa#;#G{Jw z$81dn#&c>2Tnp1QSh6N=1pJ1xiNxm-1#?B}y6;V6sQ8Pz8GnJkA63EkM@w0HV1Er2 z=zKX}!Z%*0)l58e=xXGyy96`-5y#lE=fb*|gjPmlIUpK_y0U3&507?|Mz%Mlb4 z^PHV~KC^Yo7WW;gTB}L1L21a-yY0Miuv`8KcRH-qRmEIMx#JYX0M$& zaPH)yQt*;d@?a9ipT!u><|N3Wfatw&{>qgN^!!z3lESU4%aZ>426SN=deGmbKD2P& zW0!tZBzDUROyP`1^VphH1hJa?&poty(aZ5~W<1D1-#z6dQrYJtz(AO;dRrkNg?oW z4E$p>o1A78F+va`6%y@qKn`KC$HEUiggwvZ9$I@aatgo2?VtcS7){W05|XYeSW4Op z0E++z4Q&Q0=6`3q_uAp;_1S04ggSg+cd^+n93jE-(dR8%XEN+QpAiSomV7qCJyW>0 z&pur59pUv93Y^~Tmf**8{jS@(DsG76B;n$T*9_7Ot1Y>SK1fXm!!$1=$BU`mFX=LR zPv}umjb0DG@Vvj$mtm*(F1grmOS}1s=j4r}<%67svq_~QFf5Q_bHczbt2o>H&EeDMFd(eDVeG=Y84Z_>vlvZ| zu^cdr91{oPdoFwtdmMhywf z!Xpha!^Rq7h8VD~e;4!)irJ@*&E7g?R$`D_!}Z$Z3bLJ(VoMx$^?4Ue)`SmN?Q1GD z(3gJ_{_?e8uvHQZ3Zqh5qD#fBkfW2zy>%o%Ns3Uut$ zqHUEw+oy`*6jWJ<}nk3nt!VDor^sebcxVr zGYG_l-2Uvqzux<(&$x)k6$_oZtT+ifbFIAg@Ww&#wcj3mV%^t2b1L7tYx%@Fr3@Us zGThBQ?^oXc&FLvN#mYqCy;tq~Dr8gmV;IxyfiHh+cK7D^vIULz#}H=N__8!AVc4?^ z$4=R^BGjsKH_2|Kta&zedq&ap&ohd)W&q64qsyJ!RKJ?xXKueuPa~zdiG`@)37_s{&+WPS>mECDwnu?)5imV0>z-v zdxnNbAK}AfY6d|wnQVhjJA1x+cVe*01tTtL*!c4B8=kvqBRuqM(?M5WUHp85K`OCx z@y^C_W&}888<1Al%sIHu=)z>G@`u#ZkMh?WUfIYRZgPwE^V|uGaI+x0v@097yp}H0X3ySNPFvW*qTmNJvZ1%!EdpJOa0dzZ1aDAN5M=lJn+8 zD*uS=P{rBNxWpJkv?Up5NfSZGdlv&2ofh=I=EdWUBQkt9tBkm=8z*I4Lboyik~wNn zYK{I=8PEPSXkA3?Tl06Tgi@uLR&`Jah!D!jhriIQ|H~m9_#kgx0@B)UpEdKiW{&MQ_zdl=;C{?9*?J<;67mz zi8dVy4^n^|mua>dlMV6KWDYI0wF}ad2AGzS!?RiXDM|MUrfm9~YP>3$-7tSOs%;&Ap$t@eJdhz8zx z;Yiy^>PIA)Y#e8i$3rkdsCqz(U2$ah+)d`CBUR=JuH+H5YsEwXk@dUfl@)C~s%IOs zpA2}v%9WAs4OvXKlE$WSL^kAwl2r7PH7FgYz9#xrik)OthK3 z3vk14yF3^lcjW!gRBjE|6{%4)#voRz8AYDAX4u9>ofu7qm!QR04U0kv`#BnR3j2{Hn@zCtB@P_sftn5+Su8Z*tt?5=2KZW^*c zn)BJK$UQWm>1<%1Z2Z%lMI8qJ_?(C2pZFSX9b+ElrH6;)!7+XmEm+lz z8(T22tPN{A^3KCcE_d9n^2Dtf08!oxxo$CgPyEi9C8NJtMYz{T+u#M!Uf1U@-aF?j zeFkG9-AmwIV--=j8-*+oxd*Uik4JwnBI}7vl}CeX_sR;GVJ-kavaIcQ-xO^PWQhj1 zF>I&zdUIua=bj)!8*uWP1st4Y36yOLxYP6_+a0Genl)6J6}!%@Dtsg*1(hkP_?Ysr z2jsx2AHCSpe{Bo8E9fv;>l$4F*|7@FI~q~=ayJFAJ;!e-iXZ%3h$8j-#g+z)zUruWW?$o1i>6FWQ@aK6QHAcTP$Ji4Mx(Vzm%0U?G;IIr z5iw0RrZI7<0+m?g3b#0VdMXY@r~7nT`epR!I~66XH(oDNmM(5X6i(IHwtkM-Ql36E zVm{%wfo`7)mQr#~;D#M9ys}+!RY~wpszC7wsa1F(2^jI+g5*3ERE>834goCrv^745 zfW?G+pyHj9DYZ>~!%V#*QouC>6xtJ~?-yuHoAcR6vX);nssnvKg#&(t(_fT-e2cE44c=6#Dkb~q;Eh9BhV!3>Nm@TLS;`r8m6R=wh~HB*cm|WCsjdS!Yat15!)X5_x*cHm<|eA zrqGT`Z2GvL)`o}loCehZ89eV(e3Jo!vJV4q11=0!Z=Ur!6To)=!ZB%C(91>2GmVo% z5T=(1=K|*l*GE+Z20)CX#Xg~2^;1+~9v4)Yh~_7$Fg4?|R1%rPg#tm*i>{^Hp>m$r zX-g~F#{)N59RffmlG7SLfD5Mq8wFmKl#SvNRndkcf+_GfQ zN)>Q$5xBX@!xKGtM@u)i+}8h0H#h3w5bOVbeoyDelN8|=8QBN1yM-MFT_&y(P;Z{v zId^`WqkAqXI@Dp2YAm=RrklBB3^St^VuO3MAnpXRAMey3e69b#rZJNhs>+(kcx{Fo zaTb#;JJZ1>%iKp?^nULq8enVF4j=e<*>|%pDoXOyzV}VK+|JjIT?m<3X5fca+Vg(P z33$?$Q>oXEn>3Xn1?1HGwvApgYS#J}qK+!^1nY7s(cKq(1LABps|{owVcoWF>ipvu zBbDn=mfL=09klTk0_A$Tq>{i@vy z{S+x~($bex(UXvh1f3Nje>**p8J97YyBBiN>uo$68_ieVK1iZ!1(}GN-2??0Fr@;i z;cEoOYErQB;JbQbHTWYkV>Q>G^rARxS~6BEl^LrYeBzNppZ~T0LXkuvK;|5xLLnNc zJ!B}CH8|VBVOI_~A&|En{C>Ej1^-zftBw2FK0sY>C-<|OlD$eT`Ayr(sqmZF{B>g= zoVfoBMS5awaTU8rqGUeCm}yK(H>W$Y+Y1ottpGT+^2+)l{{ugMec5HEmqNlM?3Eal z=v$H2$(7(kqDK$GoEu;{YG`$4Qysi3UGF9SdXBY(F9dt?wuEpcW$qPp096B^?wqQc zpkV6lim0ADRSodcN>>-e`>4WW|8Ik-5&a^K{dy&X*#~B9oe{v)!)dn&_|!xuw}R(e z(}OE1Ob{jj{LI$xlMeWdj_Pu_>pNdj<8#>;eH(JmD4&apSd(C9X0w8YAQvnOg~l7r zPR>`yY9XsbR;09fVkE>hKQy#~F3blKJaU*%OA%jQ*0iE4+W1^$6-vAiR&$6tV{<}Dzx!X0;bYG1W2I=SCF_^ zH&ufT{J6!+^Lu|TEKM!CkYVN9e7<@PVwqg?DHz3+t;~t<1c1QM%E||rQXcslijSM% z2UNDoZYkQ@U=5gq0+Zk4sieM)D!@Q%b=Um?Z2cx+^?`YuTyheySrKM1sxSUN#c!|{ zZqj*qc}r>zW61?K=_$*${4)L6_DzcB;nMJ`5sAjs&ah$&?;&*Y(ac{6#&Hoy&8)(f zW0SWBr0w3m&sryjf~jf-ojpWsI*7yQLPU!S@kfNb+J`$r&f>qqG6#Lu{>i*)tkd)g z&;Cd?eD~JkEK(Fh-|68j(=POhJn(q0Fy#RRh@2pnU)Z{5y3uTphUsKHUvj0AJ|;pP z(rDYI?BaiOG8!n)1{0(Jc#IU5#c$Rfmk&b71raHJXaEt!E#Gn^`HW@0BH#~mAjF%H zFeBYzN}F7E0le)m{dWeUrE2Q90}S8W6lefT8jqPU+IZMx?b>zz!i5X#N+36Y+*vCt z=)A0qqB-jE4~CJT4=Hsj&6RC}`i*~RZUxQLb!!GlgBY^OqG0&EU?vTX9?u7A&6M#} z0(hI_CHdv~@L=+JuL@OiHgV&!4M!|X%G-8qf?{i1>iios?IB>Vof!fSkHUnQ`FhBC zebI}R%0fZGby;b}9QkwlJ@1|T^Q~=rXUr}yYRgtUU~722%bu7zk+?j|$z}+r@Sy8g z@(cO*8V{hxCQ_@`lTmxLfpunA3=HsrPYnW-o1xabzj4^!p(V|;nQ#Rrgq-Isbl~v7 z%f6%GJ$|tHBBA6D0XS4)mfs;)g;YS*bUZRa9zB>v3zuc2>L+B2kZ?Pu0e%xw*7TFM zvvR;Y7C$7H04Wm@e+}R2B{tHHGB%=(pD{LXpzp5JyH}(ssjo3fz+LQ40e6W#tjTDt zyzS==MbjqDx`Lg^&SM{cXu^I~dE;Zu~I_*X(A<`vrQB8vfajJ9uCM>|%2b5BE zT#-3>&CxB2vsI+hP%gH?r0`f6zl8ia6VjjHg5^KNSsb=(kg<7Guy>{D4y=-)uw(a* z9l%jI`?Ht78Uq>KEU1vzduirS3&5c!4z*Al(c)vMs-oel^^UIScRG-1469O;DjHt2 zA^cBx+yu{?@ZWTo_a6ycs_2CNH|-4?>1Va4J2*77z-l)pnYq!RYKykp(^El$11bZ; z>OA-N3xw5q1RO42noWGlD%v)iZt3q|cB@K%jR!+PFrWY~{2T2EvPtBsI2^(x^3#Q( z5~g@p(<%%ANdMxaO|y1#&{4%C@&I+X0Y$|1gmKp!^37lT=}# zhw~puD{s<}aXM)WK%i4K8CITEP6P5$l~76XQ}`}VsI;6xp2dF{#L#jNDxfEhc71-h z9#ZZ%a8h1=kn@N6%>4>&4yp7pSu--MmXLU(#hGF>Ih;1mhGteZxg1n4&4V;#=4v|! zKFeCPEkg?k?XKL1Ejrt`a}=$IBzj&n^gc&eQ&Zt4b9P4u!GcnY(Wwx?sJ6LCa$Q1( zPkrf(mUDNJk0ktG$1_9_k=V zjDOOAEQwJ?8dRNWFu+gap{fv*NX1YBwn(vr(i4YKuA?kddjH&#-e?3WqT@l5LeaqVL zA^oP8+9>7&c)m~w%KgBb&29$=Ddc20JP0@nQTWB^rKtL}TC`gP-ClTm?cm=5(CuAw zoLaZHrR}-Zmx5QUW(Fwa%yMc_H4DgKs|Anj3J%lzu=6L_y=HA~xYKP9$tKOdO`gLuCMM5J8?iEF;rw_tLRB z-I^Xg(L3H>k$Wd!XZBQ>-sONHC76TWg1;U}s>r{tV~?K8IQ+K%C8v99+^UO>W`u+L z6S`v#rybr*x~bo}nY$)jM`-F(zRfoLZ_@17J-B&TyMf&qTI5s&YS1Jn$?%bVp%?qg zPb*$>+N~Shm`+%Xwvgx~yTb;BAodXkgdV2KT+smoR#=yR`-;g;bW{C9n9+9Uf!$ko z|1~>=>8-FK|F*nhU?8L&_vr2d6%r}8pDgqLWM>INL)q;bAKq75eBh^(&*u^9)0^oM2Id^Q+BG>FY^Iz#mZz2W(KKjwQ=82Xxl41GklTW%|_l zO^D%GoFNPWnJj}-iNC7Jyh@>`S@pouE&PjOa7L(l)Nd`P)}9tHvAA9Ux(n{rlqM?U zjPx=^r1VNkPQt0q7^II5jC7OpZ%#QV_&0HjdwREau@=9w1=iG9AgyfTJXJbfKOCj@jt!0BCOv*x2TK@`4$TrF&i3dbfjDD0H~BwfQIK@ z%xu#}&)Yn>LgGRm%YpH(8P;;+E}>8V`u2`?o_(MiYuTFVcUG?fEUal>tTA9b@s3Fk zr_GtQT#=$A4-!I?YLqP<@MxoXq%niD&$|WnVw_R|604~%m;wmZfb9Mr%KWksp5lJ!AV%O?pdSI`h5F)E|B(&L;?8Gz zaNLSn5gO$q1qji1saVIh{PKmb56tXykQwC3HAcOHYLOGbrS|Y1;RVTsY~w0zBL}W} zzNrVdT@0VNz8wnPLs&dfhnqHgW9Y{{Jd2>{gGHMh>C-v!O@d-9*-EaHK#DkjH93BZGEd=V!7`|2nUPJ3}x#~ZUS`NfVJQIzO7!eWFpW>Uq4#r&Jk=sY+NN5{kftqoa>|;^8&c zuNyPg8Xxnu2k3)PA&6%ezC{6j3i|O~PJQM9_$n=bfc0Sg)8Qb&!h-_t=BWV&zumpj zqfa$I;x;VaFs<7P91s{6`S*t^p+L@ot9w3OdA`JLnkftN)hb}P8O;kgAJ*7-ZQ_Zw zljnK9u%NON^DGTmBaMMI64tM;DJ(2SXrfH%`JK>2Ik1{)6J_M1>pE^cKe4&n&oA9r zsgEIS4Z}1R)wZ{DD`o+-L)5ln$lEAaP#fh8lX&MdZ;v0KND$|yb1*$SBo2LZaqYpS zfrvAY_aiOd3#8HYrdM(03j0)#jlZ`{H|}I&++>2)*LF?lPAE=8g@I4?p#joXxM|dw zINl3;wwc-eSaZutn>I~CbGQj_**-N3-#(*T?p9|cR1Lc)p zj(cw4AEVp2P0edAD3^l3Fb&uA^#XDSR?mT7A6oYL`VY=}7}M;j)z>vDISkY80r1>M z9o-s*Ab%zlQ+*BzKQI8wyHI&dx26rslVj-hgNW0fVe1dBJn`P*QG*;Gnm|uKl>?Q9Z{z=uvf0)%KCMH2@1RObbEBAVA3V17}iW zzo0b{)+>P3df+@QU`R%0<+$*Oh+alfz5hM53BU-=aNw|N)ZiAD`vT|EYx%^753bM^ zxvjHocA-C;Ahu>RkV=;W8i3Uj9Og6VRu{u?E10NUf{hhB@oGhVOhGh_e}qDw9-(e#IUmFngO7s>>9v3+P+-pK zUix^>wPsrjnGp)Pp3G`P)D^p&HpE{bA3hiM4n8-;Z~_eq+~OQ)7?OX>f4WmNwqO>&v83d=khO<2V%8;w?N zm&0VWAX9&b(qo4ORk9x%`@NPqdHpc=lB(*t=?*$d2JrB~iQm!c?1mUr{Ua!Jl~b21Rc?Y<6;ZJz2K-Rrq#d-mp!e5O)$a0!Rh zjU3USL*n5<98J|^^H4dmKq7-%UU~kJPK}p@8Pfh9{zCQ;f-#nLlB)u!ANqmF*6hBvsHn*<=ulA_V6Xcca3(;JLev%|68ZF zO8o)-+V(u2Q*h5jUtLW2k!5cBzVL=dS}nD`r@%&8ngcrI1Rb8$h@cb6^@-rZB0=a5 zfY6k9hX4%y&|hm?M+zcpSO7Up0nkI~B_C=zG!*D7WPn=QLf?=_LKg0GGnXED8c8Gp zq^5!ns$aRDnDA0RjAC4&jnJ-=;U&9D!Ze5yyX8~L`4r;bpmLeEv-`m(9x3$sU;8f< zn|gm6;WL!W8l3ImqHQ)~HXO-tY}f&s9qwq61FSMSoip05m$X;4qhz%|1{) zW+*pJsoH!RV20$Gv6iA{4RU2dw2&;-{vrPZKYo4LWksU9u#01C*_jUOI7hnK1tV3U&xTMM8&XWaEwM=p`zWAlB>fU+taU_B3|S6P4A~qQD3f^6gMnPv&_c;)E712BN0V-X*WChB*?XG~#FrTu% z@9p?}%*$;f6b}vgibV=bVb#W@87-+?GW7qaQc80v5WM(H1lrS?d=6V*y7Nus_lc!o z+Cx$E3C`PU`}BRKiLCOE$56nI2~$q>4eFzBTHHQtLEqHyeGV$*zkNV+u%{Tl=S7|kZ9+32u>y}r`{762Ce zSkCS=I~qe%T@7_kT_YY1BJyXzvAlu-6j6N0@>WcuC(m0oYk$-7lF1=&q-V((dy%~( zdi6Dib3%HSAu1;?w5Om`y!mMsq1_`E3X|&;vE3s*b3{^^AgzIl^%dPhetS>toIAhG z(LI+GRiU_>AImw6>1NTYaTqv|H_)?}T8?-2Ons-bV*V*V8)A_GbV9bpB&1m0{?xqo zK%^G)&BJ5f_^{|MCaw-)Iur6d47I})%w#Ub9)hhkBqwUb!D-N%!g-}GWJ^&RzWY~P z;R68-9>kP3ko~%Tn;p}^FxLIvKlst(yY5qL9saGliRJ7jTY4s<53|U(iwq65adP!Puk`&xq5bfcJ8}ACC+q3n;qc=sb5uZ_&>Z3c=up#OlH?a+uev_rCO}7 zx6VKmNJUTfn{&|`^FfIs6Q%Zjhx#38|Dl5%3eWnX2D6(&JNVeTKH`=HfI1k}!s2Ef zzgTwqS3PBER_DZ;vVoTevLxe*gQ#(j-~xeT3>BT$+1Ydqd~WR=05bLp5q(A@3w}z# zJe&^yB937o4k-oPn(E*rW(w-WnjRh}7(emQCL}|v z)flEzAXY%MKrSy7{mgm&Wgw-~!hWgvh1I)C z&ZBLBABBtCsOzjtFCcuEch;$NvKzAX!=$9Xco)|TqZ3N@xrDB<18-B;ST&7QT63fe zcvfpWlWqZ8DNFh!aVfox$tK*ueE!mA{QbpV;cQma>1RW?G-8;M3VjrW-h!43ixn_b zkzg2YG)?0i2EoqoL3kD(X^0s%)(|tqfXU-sP*5vopE@>s>y%lEL2f;9YJYj;1}U%o%Ns3Uut$qHUEw+jQM!S86)t1~8R*2t>tJ9ZV zTXs(66%wupzC`%_3qMb;xdBWv|?$-AAbk+@h_%VWcx7iL(X5OE>7Wv*){aCkCrrFv9*p z>qU4bT%GXTO&j5%XPXYX^6KK}8w^tU#>G1u%b8&amMt43&>5L#&cSsSE{hsA0kpuT z!hanK1TbI|M1dyAKXF`3eJS>1K`#rB`pqWz>3n{>sb`{^GUHV(2Kj=k^*r+}W_`Ce zuQ)!Te;1W0k9gbS)9rRHSzH)+cQ$7jA9mkUrG*b}@+u+?dFZ%rbb(>Xc@ccRj&1+_ zi~Y6?ZManBIUoONE6q)%p&cvZe zXb%}HJ`;#zFz3g{1;Klr%C33wc;ko+-_0r`uIt8CKPmzsnVaYA-1C{OQ?@AfpWUDQ zc{*Qo`&^GQp8aXix`^1f=I>TCi@NbkOSiG=pb#z#%E^bn(5&R>-Q&Gg?rYceNO0OS zVK}p4lm)%);hF6VONMP+q4qLYRV~$%Lv#-_*}H~BJ=X1~Z#OezRV`}84cLk)=%pug zH~HSH$K$CdxKHZhZc>exv|5F4Jr^CL7|d$sAg0YZs&^4KOu3&kR*{1>zhg z!*GtvM4l<4cP6@N`+Pl)?>wO};{*9KcH{0RsxmN@3>zS!?RiXDM z|MUsQ>0DdLneHdz3p8a@PaMvEsny=knF*>cn{;E4Z+$u{c}+Hsv&iFNl55u@B3H$c z-E%jYmyT3>3gKOVE<}O@ZkCu!!pyR6d1XZ#kLuaR>?Z@>?>Hn&Wmphi5S5S8C&ItM zS;$3e|5+QZELo;lbJRxp5`@69aK0lT0Evl*i6WP~pw0Ykmj~nHj=cYw%B>+@0(i&O z}9nlr7HJ9V(Z^SZ;bcHv@we z7)glbOa?p;9n~sitc{j?zm5+%_SKgvQ!x}((PhIRn-sU&08(%_4c#F%>y4Fv9hk_! zk-S>v^>;168fc}E2~}pbuXxAy%hWnE++m2kjkBjACnI!Y8y(lNKR?`kP~^Js&MIT4 z>m9lfn`XJ2^z5rorl-ZUjZRmYrAfgLg^NUMvN79Gl}#jC9Y(Wo0jTQ*W3o>6sq7hF zp%Ol*Ss^1#))1R+&ompeyP{y7t78lQY_zz!X~+VVhpBW#Bg1v^x$gzlia;><%Kfh} zO-Xi^u$nnufVQml`c;X?W*B;^To_{dj!{SiZq`iSk+HH5tK0YH;r8E!I8@$8SDq>5 z-NJ9s{cHjNEur4=;DE%_SMLoQqY^U^_8htbl86t`DS2Knuq>nK?LV(?oz3Pu%`YcK zZktY6-N%BsCL0yH$-nO#^+4yIkt(mNd{yySAn?J7^)ngI~yy^!k` zv-iaBj9D`Jn^lB+eY6c;5bbq+{^GrJzS3tfCROE&JW9DxxEqBmaE}jQ%N~#ZU_{mv znJSM4*I$$sFvDB`eq>qO@4hM88c1gL%dnl^>&=zzoqK`^ZNSNEmIE*h36w=(-}EEf z9j7vyHB^}uyUwjDd?Y0Wl_?Ykvdif{rT^L%bXU+}veq@a06c55$YjEIHXe z>yY0MgxeP*`)K=~IdJaeqEbeuXoW54Qy`5nCjmbKWL#!n<5!EOOiWX|1@TdZu9HwA z*95fDTFgDP_F&``ev8`yezo@(r34sinRK%mebTV~r$@vz*_fs%t-Uc^DHgdx^oX9G zibK)qKAo0+89n+=MK{75zozsi#chb*r5bDA&ogpd+fJT^C_QJV_b$2EZ%e!RDw802 zl7_2(Y*PkKPw+su@91wS#}-W8$8=WMNphi}cYx+Rqz(Zrxs@;Y&n&Ar+xyMo)8{ZD z3ZD%N&e4U5vw$tMV45)z_dvzFBJ*M3OyOLw@X!cMUs}$_2sEbE*_x1l^0uEh6iu5n zOEvk24ACLd;owVmi=i8kV=|2zFj3GDSzktN3=$2Hrq5l?oBuLo#y5%@Ul9uBOz9a$ z^AOBhaB#L(-55}~&~|wsab^h8zzab$z+x&xTI{PbH(EW=htZVFvi+?G-us$1Kmd~@ zZoWW74ebOr`c$BrlmhL@^B3zc+_9lLiR!pGU4z5LnkUpOW$3wpVT>7tY_C50f^D$!_5Gh^0H-_cC&?-w>-q)^Xm#YxF3+BTc+h#h}C3q>7XK;{;%F?9uk0V&DE zyNYB&;vLacRrNm)RsW}J9n5n^+@=iErdhjE2o6;b)?*XO0Cj$k6i3Q5CMdjlKEI^= z+x*?T`5Z4<;oUc)AJ;pjZ!e+nZZiviUomzf`$*REYlfT^If|?!IeamabAa??njkR= z_&nnFtF9LVts45}x462lTA}dd1hwj#q%yA5X;2w!&3ni~4Gg-xht14wR*`>{@zq;9 zJHEWX&U+X(uPqg3iQ#^!z5!`TPg5b22g8%0dv{(>SUN-VTO08R577f2>IdzDwXg6% z_}bqe^;_OSTq)BSRZ-GM+e%pzSpUZ`OZ@Vrm)P43K> zeHeHfh)_U>f8g$n&Cv~|3x^8kV>0|^x%YI^>->aQLP{{E9I zItc%ts;)fYI9}uj_De$ep4am31EuZ-C!4t^BHuDAqcbe`=kRtqocYU?)uJG)F24^qHja)8Rc_Pu^JUf zBLdPKERxE{8_iD6R~rciRBhCo{v=q7A7UZUg)QRB zo1r#@q6t+z3MQ%n1x~{A5o5+2eRJn5H^g-q6Aw*aBg{||H+V>FwI5gLm_MhK{IQy! zRm}5}r>0t5WhztPA2k3N3<5lZv6W)^;G};zu0n%>umD1c7ETk02Q%b#@0Cl>TNL@m zbxMpzax>&f5lp2ag;jX|4;U}1F|mOjOhV}Fsgma)x3!=J3w&to_gd!U^~0E+N_+{y zyH1`)?GX0(-^&2S-{kVJ4pos2;AMM9SH%)ntwE7&P%9Flm0Jdsn z!0>P6fh9g}f_FsOD!ZjkNJ<|wNKOhjagpKuFjnw< z`9=XVSanSc=h3{pyd{;=k`lk?g7c`_dDmq60L{E8w$CQ9%CHI-hE3ickhXjKK5Lzz zEE7=C95y4c$m}7=0Sc&TSS7>RLPR;U_#<*8u@85IoW*~IWe)nR{gZjq$V^hm0Hn0g zvp-VJ%ZtM7ZAu;(^l+AG7y3jVc)VAbn*l{og^A_YFbn7(rW?)nXubqOZpoEO`j`lH zNJH&x=i_n`ST2MYVZqTKI~lip%aP*10kuJ zx-$SMeVYOez~DI3HNm&-md83X!3yC4AXU4=2$84Z0FC?(vUcq{f8oM~btRA+K<=!S zZD?LrM$sJg_y@yC(1(;dmFCJeLH))*G`9`q={kEtDOoS5FbihVpq232;~$=~R&H~= zB)>c#9!x&(RiTQ3A#Pl@;fQ5PdE1UnV0tM;Kq)~&mfv8-ni&FaV1f>Jz8-R3U-V*f zQgp#}S!u-_`E&X`@16Yft!;Z}%q}l#%T_#KYk0lOo)|?>8|hDamXpm8PT@hE9%Lyi$!#cAo1_t=RrheT|ZG7<6D@U32ABb2ALXyko~`Ns5d zm)?Dh$^BBo!Uf#r52(j=Gv=)Lv=ONw_hEwx%KmdI(U^P1686 zFmWT`H=J#P&6o*3+OF!oVHEq}9nH>vyXwUx#fjX~3r54?C%hDty~$1!8dWgd0b_-4 z4a!5{0)ccY6>XTCH6jLrtQI3;vdU?&T(lh3lEr@*L^OgGn$7JX$bA4=RdM|?%AoCY zK|X|4+qpGa)}n10S{P~&Vkl%b5P*dI+#q#DWm)1;=6;1bKnj63h^ZqA=8BC|Uk^PS zPt8yXOL$Ao(kOwKvDcLnh|kp7N??x)8nzPkqKGf)NTZ0qtw;=1%^8ujMgtScvQwoj z0b2s=FJK6WT2}}<`U}|cQ&qDbWV=<`$Y8cW&tjog)Z-!IzK*SdAZk!N06sdqlESWZiL ztfVQ)K)ra*g649B2owA4(1GMq?5*yGm38~o!u*0$F_qWL=_xO~A3JV2vuflL#rcbM zzN+z@!-yme!?|o3auKT0aMbN*w`LSop4^&YEf1nmToX_mQ0W^#BXAa7kH}VMw(Ly0 zx+uaUw(t#?yzJ(*<%5_OEDZ}v+Lbkln4}#NlXSd4BW7J-pT`s{L|NK|+vWmg2NOe5 z0D=qrv=6C<t4&)aC4RlUec4Mb$2)tbzSFtRlVAjT zakj+-$)m$*2UaOKg(|vbOW_Qfb}8wpgPrN-WFTm{7J|sp+Mqji z>SPXo{mLnyV)&B7&t^{M1i`45SAJUYlGAS8;6~X66UsuOlMo-wRTTM5=la&M!l@&W=!`k{iB2x?a$yRQ5AfD`4S(5ruC|@O)Uq8 z9w@cS!p_X{f1+6+6QOXcP%I2V`wV$-2gliLRvQXpTr=JPH+yLZ_P!%tzbghp;bz;i zz?jnRhz1rxf+>wlcAA06=|e+TRFbN#0BFM6se=!#>>H=JqS0lt;p;S3h)3^2JgPD4 zQ@C|($FuF`|JA}YTy-3Zgg8V;mGtYi-yi*|-3$HdM8?R31rUNpT3Rh3NoacEFflHpBnXrKtxr>?-v>ZHA(UE5GH#LJRbxtdz$o zy<7A)rNXCM0lJA^?2Efz=em9U^yoTK`s@1Q!7(<@2oa@$jvm~a2bfH85MFr&?fuir zd96m_AX|Xvn(f(}Kk}JM)zLm23Jwxy9}VW+Ku3fs2kQ_42W#Q{l`9+Q`Kxu(cqpy9 zzi+^5@t%z9^~&>)EPpciwfMTsq{Br`f{;Z7+l?8)=~e@50-%~q=duhbP75ZT*wK7v zyE6mGETLXH_Mz2_UXFh=<3Yx(kjvF&XV-EW>@cAjZFtVc0pMp3h5`@3KZiXytU(a# z8~Ao&^rDtK6lZAF@&sr)zSx6 zTF9~^Bv`aW7?zP~wzp`V$x!rvB58aCsc&KcH&A3RGj}zu;s##E(Hy>1NdKqw3(vKd zeHo2rI^|^*UHJT(j`jKY%;sNPjrU@P)M2mIy0oQLEzqzV!<<(&>dBa%Z;~RV#X9!Aw-h&WLch7WSX?}Tj`m74=!S;Dpeyu<*guh&#ibCx1dJT~{%3k(M8 zE>P4Jj~|rGUz@Y&z$ABq!Z>kSCa&uuss{xWp9&7IR=o)((76j?@SyOJPK?_O zlcxe_PrPH&!)bG7Emv&o{CzKvvZVvP+GrkW%;4;^u0r}Qdj#G(kerMN3Fx)Qz^;eW zsR@j|^-L*Ku(4t%UbM(jmVr6M(gP#GulkQ{SQd9a%e`+PhVeq;?bxE-X~%n9+VK5m zmO~q}7>E`skY#GjN!?2y&$-rYYoX$BT3Nqw7}P>g`c(BAgT-GYW@mEM>bQCVSuf7f z7P78K5VOX{R~`YtMlbgLKN2pM+?_G04oyZOd4WB`IULZZisy{x_9fS!1dl;_D6$$; z@*F0s1=&#TQ1-`VhfY4$D)GOHEJ%6W$Cn`iE`yoFQ=~=Hho(W5EDeZwfE37-zY{^k z@X|LBWOiHh!_q5npG#4kVI{ZE9m^%5_I9E%$?og8eF&@bC)mAaZEd*IZNtx2bwG%t zm7~pO8191}ZEroIi4H$6w%MJf4_tnE*H=t`g(|xG5=Mi{0X0JuUSMG)re|<>@ccl^ zSY|oWlh$*zutooFFX=v*I-TiL=W8b}ga^$|698)7fpkDGwU*tvwZlMVc!{DfE<(BR zD^&mqp=I~ogBbSkCBt`(cFa5Hw&6H-dU(~Q6W1rqam2CKFg?6IkEh0wkKJyRrMZi^ zvGLl(6Kf~W^L%kZl!>)kIA5MB$5%$qO%6}#71}#Vkfpx(`62-rI^(2xq7Pbd4 z&+DORsZc#EiCZhiXiKuf#v*j!yfs49rz2k6e}8yTG&8Wy5k<_aE?Qle{A?Kt2ZpgKomeeqs_)4}F| zGvSU(*d|)CJ_)&w!>{~StY1CR;=U{9I`}w;JRGn=m87ZEfX+I0;I{Ivo*zaDPJ1S2 zNrr$-hAM%)R!wt84P&rW6yW0BjeU9WFN*uhwtM|H>PpTD+_2+?SGF_b6poRaP0(5= zoQx93p5PDz)oQAZv)lbU1dwwUY0Q{gaIdBSkSyit)2o-USMNTNIMrF+Z>5m(l#XX9 z3x809;P&gU39xlOTN<>#^2B4Nxr)Rne0JG|U=@pEbb>+90~+umGd##S#Al;2kuS)| zyzSd~9<($Nr>V_!xf#l$el&8X`}fUbCImJARFS}O<4Y=BLIWg;2E;rz;A*`B$dQz? z9(qG@wUiU(w*F_ziRh+gn`z9ZDg3k1;^w9y3z(q_N6(Gdt60PtpoB4q&wT^gk9X=1 zzSjR=)0oK$FIw|Ft4(SaXEE8bGaX#AoZS;+&B!!bAkug@(V%%b?eKw*mwh+uA~Bz{ zw)ehCm)rT;u?rzH%MARmN_*aKIRQ`FazNc&j}uz;;+@e;M$KCPLex=aB;hhZcVA!! zVYzP#Ayq|9WD6J0$FY3Bl}<$^z9@csiEpCt7LnQ z-%u1k__+{8LxCIb8=-ncl}>_#%M?pUjPiBJ+gARTo`U>?u3Q7RIB$hzu2y1$AM!u& z?;Z`JCcF~F;4Wnn~J2${`)X?h8CPji~&G!<2J;z$Y7XopsEum@e z={}v7ei;oxD^@X|1hs3eNQhJhiRft~P)Dfk@iMjdcwJQgCMcLz4Ne32$zwOA0bXol z_LBkccN~(XNHlY|cMJO~<3YGB|0+asRCO}+Z`>XRaXl`FP8F<80E zZzAha)@E!-v7c*+O}i)~G}{QjXA zJZQb*MURiH3F(fsgiMZ0ZUVDmybk}>-q~$WW49a~dAmytA#u}@#tiyglX+gqnnDW~ z>u4a8s=B#`pt37*5Nt}{X?zEBpNn2X-p!5TN%auIT2L%iJ34Gy~=sGzf|C+E_F}1AqHshEIciH2t28Klvx2)@nMo}GZh>W5A z8GRsA!MJ+gvP=+G0?2Vxx_i)P^bP;t$HWl97pw_lRh~Ru^AcL}A za!O=)QZG{kC-jh?-72JKotm)Zq&Kz6()WdLhG#8oY4e27k52}Oe(9!GfGxwcVz2pe z75{qXpa&cgxZ30FoK0v_+FKXv8DCnAwOk)|v2pyiV=)h}@|>p)N+9Z8617$jTR@E^f{b1&W1!YO)dvf7c&kX|I@oG!ulQbd|8VNdMv^b?EoW| z64?Mkmx6J~3sA1pxnW`N|Uj=I1ro&NCMzv2oX2nYEf zrnG_V*Y!K_j;pkd9JuQFri!y*YCo+}uVyF^5@G+X`@MhgqsMpMrx;LVOvcgJ!7!Gy zn{4TrIl?aJ%&_CTuHRbnRi4v>DBvo?{0jov2R0@oC4XnU&x1Nn%rIlY(kok3(81>+ z?Yvy#Z^HBdLS+{$(PAB2R?Y=~)Am14x#h5;f;Cp)X$p4_%usafBU{d7EnWF>D-U8q zbxn$Jpfmv#?`ULTuf#Mpfz7oY0K$K`ShJ)m(Ka;{f+1EB+QL6vAlXG&o`Z8LQ z?O@oMkpWNI<}tZ?c7As5yFMk(bjAH3yns9(9)n&|EG7X7d1>L6J#YHAZRx>6tbSSW zx(2~^AVsa!xc7Sa)tsG2(Q1o~Q_bt3?_Cf?Q1~)T7JKwu#^Ja9FFDm;ca$WF(~V(w zP^>qL^^^o$;3rZ41YA${n{&|`^FfJX9H@QYp{@eje<%lo^6}!TSN6Qs`KLQQFCU}L zMq361ZyH)JyD7ATkFDz?ZiayiwDoFXakGwJEIa+Hp0exLjTvi=kNMgI_(Q0v#Z>T) zftLpowK{^RX|sf*Bj>=?J)f>TU!s_F|1DrwXZ1HfJKKjP*H4wPapU8iBbLwXB6;x#KGZFqR*yYeuBjE)b#ZrRAA)=>_ z?lf=y)B8X6OnF_SYybgB)8fBqVBthkB$&wAHYXRF4uquKc5s!kna>HTGysjshucv=jH&96mIc*1cH8fqYW0XycQMtd6A6_`2LH*r@)x1JzEoLG%v&f87m*~RVVFLK)u zl5cQ4I$*rf?BrmFcSkW9ikp^SzVP*dnSBm=*8RY(B>^54&?F#ix99bjL9|Z`b@6TRd8Jy_Es27-H=7%+I@*ng(Bx%bsko&{cP_+!k%A;*r8lt~pA z7V~dDqw@fa8y$m6IizleA=BjDPzrKda7SeW`V{ozyPW#WgUUeqAdq!79LRn$GwE29 zv26m}9zm|nE#4Ga$D{)+Tu9VZQ^UlSU*~VCxLEz4JM`(Z7o39>t9W!~SKIfTLyToO z|A0N;w18)|*0oX|HZSk__34uw$t4Sx87s~M`wr&WtqR$tH8I|38oJ@opLc)gHcyZ( zGr`tJ(#iJ+&y*ad0El?>PByh|N}`$;uX4hoI&GnE$Ri;O_qj!IWS5h3ApVVCxt_Qo zSwAc|T+xD*w8abaco>$@IgFB)^;3$lc-rya{%zq(AqtK(Zy|v}645Lz}3e9C0h8 zQHL^88}Mj3=N(Zv4ZA6Y+2?X-aFLTJ0ik_Gyau5<_ejA z#7>q%YA&1xP*;;P2XAewOKm|w$Xh&L4o)bPc#A}}iAMc4vJN68??70d^!k3JoX&qz z-;iN^1;b~0eM4F$3UTWY;9c6oyJ^y939AX1zfGYFNsBsrRtxH^mZgApBd&#RsW#(0 z{wY1!16iH_ck$PvMRjgV)oh){oDdtQJ``jN*^^HTvgRe0jgXA{eKT-e%XkV zKNx5|h-oV1f$%j~ha@?aCYT7X3WP<9En;|0#1AGOnN6p>s#mRQI&}BfhP>{*a_M=C zqKSqiT9M`-)@uC;P2`bQM|w)S3ER$i`~QC`J*Ibq$|spiv4_Nhfj@E@Nl1T!3zq+Y zJ62#17WqfVQNAfXSGc7zjva1=$)py62`@aCvEe-u?NgyJP|*O;>lV@ALC}&EEL*zviFC zK7j@{Z6OC)M<|N25acP}W*h!DY4+ZvfGmCPZJ10tJVTr9}N9Yx~p> zB?_@@1l=M+4ph`_%7GgEcK1e)KGpn)TT0Ch)4HuXU{lvP+whO7_*GOCGX)$S#f(Nx zlzx39Q+h=tM+!}pmaBy(O22JXnC;g$=hpaFt7R>Z<7{2J&>0R`a{Y#|!mkMEmheDd0YUmkKRI<7q!VP6)*wB|_R z(Zern$+P<%AG!6Stoc&4sK*V{TB6~VG7`y{pMHMKIB8NW{ifMX> zgdY$n??UCVPZn)Zo*YB3ALOF;^~s`T;=RSEDu<5>aIaOUc1%`Hx5k1Qahv=DQB<08 zFmh*>D?V&w(0zaW78E;>^k_o{9foPGVeza#3m}osri4_yS5^2W+nBJ)1-=Z{(2y(;0q|4l-h;oX6~AB9rd5c8gw}o zf%Q!Dg~rKwX>MIZSNDY*fy7MA&g5=5WN9NE_kdHCJQ&t%<{mHz)`$GzxdnRwsRjE9 z9qaLoMOuCZutrqDNuW@R0*+_JJ7ByH9?c9BQNce6#7@}*IG(4AVo2&VApt4z70C#ZV%%dFyCc`q1G?PFOp2@S&A`Advt7 diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionAlarm.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionAlarm.kt index 47520412a4..45480a4c3f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionAlarm.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionAlarm.kt @@ -7,19 +7,13 @@ import androidx.annotation.DrawableRes import dagger.android.HasAndroidInjector import info.nightscout.androidaps.R import info.nightscout.androidaps.activities.ErrorHelperActivity -import info.nightscout.androidaps.activities.PreferencesActivity import info.nightscout.androidaps.data.PumpEnactResult -import info.nightscout.androidaps.events.EventRefreshOverview import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.automation.elements.InputString import info.nightscout.androidaps.plugins.general.automation.elements.LabelWithElement import info.nightscout.androidaps.plugins.general.automation.elements.LayoutBuilder -import info.nightscout.androidaps.plugins.general.nsclient.NSUpload -import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification -import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationUserMessage import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.utils.JsonHelper -import info.nightscout.androidaps.utils.alertDialogs.WarningDialog import info.nightscout.androidaps.utils.resources.ResourceHelper import org.json.JSONObject import javax.inject.Inject @@ -28,7 +22,6 @@ class ActionAlarm(injector: HasAndroidInjector) : Action(injector) { @Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var rxBus: RxBusWrapper - @Inject lateinit var nsUpload: NSUpload @Inject lateinit var context: Context var text = InputString(injector) diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionAlarmTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionAlarmTest.kt index aceee54a25..ea965e52b6 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionAlarmTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionAlarmTest.kt @@ -17,9 +17,7 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers import org.mockito.Mock -import org.mockito.Mockito import org.mockito.Mockito.`when` -import org.powermock.api.mockito.PowerMockito import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.modules.junit4.PowerMockRunner @@ -29,7 +27,6 @@ class ActionAlarmTest : TestBase() { @Mock lateinit var resourceHelper: ResourceHelper @Mock lateinit var rxBus: RxBusWrapper - @Mock lateinit var nsUpload: NSUpload @Mock lateinit var context: Context private lateinit var sut: ActionAlarm @@ -38,7 +35,6 @@ class ActionAlarmTest : TestBase() { if (it is ActionAlarm) { it.resourceHelper = resourceHelper it.rxBus = rxBus - it.nsUpload = nsUpload it.context = context } if (it is PumpEnactResult) { @@ -50,7 +46,6 @@ class ActionAlarmTest : TestBase() { @Before fun setup() { - PowerMockito.mockStatic(NSUpload::class.java) `when`(resourceHelper.gs(R.string.ok)).thenReturn("OK") `when`(resourceHelper.gs(R.string.alarm)).thenReturn("Alarm") `when`(resourceHelper.gs(ArgumentMatchers.eq(R.string.alarm_message), ArgumentMatchers.anyString())).thenReturn("Alarm: %s") @@ -77,7 +72,6 @@ class ActionAlarmTest : TestBase() { Assert.assertTrue(result.success) } }) - PowerMockito.verifyStatic(NSUpload::class.java, Mockito.times(1)) } @Test fun hasDialogTest() { diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionNotificationTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionNotificationTest.kt index 06307d2347..3ac32413ce 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionNotificationTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionNotificationTest.kt @@ -18,7 +18,6 @@ import org.mockito.ArgumentMatchers import org.mockito.Mock import org.mockito.Mockito import org.mockito.Mockito.`when` -import org.powermock.api.mockito.PowerMockito import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.modules.junit4.PowerMockRunner @@ -47,7 +46,6 @@ class ActionNotificationTest : TestBase() { @Before fun setup() { - PowerMockito.mockStatic(NSUpload::class.java) `when`(resourceHelper.gs(R.string.ok)).thenReturn("OK") `when`(resourceHelper.gs(R.string.notification)).thenReturn("Notification") `when`(resourceHelper.gs(ArgumentMatchers.eq(R.string.notification_message), ArgumentMatchers.anyString())).thenReturn("Notification: %s") @@ -75,7 +73,7 @@ class ActionNotificationTest : TestBase() { } }) Mockito.verify(rxBus, Mockito.times(2)).send(anyObject()) - PowerMockito.verifyStatic(NSUpload::class.java, Mockito.times(1)) + Mockito.verify(nsUpload, Mockito.times(1)).uploadError(anyObject()) } @Test fun hasDialogTest() { diff --git a/build.gradle b/build.gradle index 748975e533..48ed623d74 100644 --- a/build.gradle +++ b/build.gradle @@ -26,7 +26,7 @@ buildscript { junit_version = '4.13.1' mockitoVersion = '2.8.47' - powermockVersion = "1.7.3" + powermockVersion = '2.0.9' dexmakerVersion = "1.2" retrofit2Version = '2.9.0' okhttp3Version = '4.9.0' From f0ac674fccd88199f2006b0afa59927e4e3ab01c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Feb 2021 19:54:29 +0000 Subject: [PATCH 38/83] Bump rules from 1.3.1-alpha03 to 1.4.0-alpha04 Bumps rules from 1.3.1-alpha03 to 1.4.0-alpha04. Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 48ed623d74..75446f384c 100644 --- a/build.gradle +++ b/build.gradle @@ -32,7 +32,7 @@ buildscript { okhttp3Version = '4.9.0' androidx_junit = '1.1.2' - androidx_rules = '1.3.1-alpha03' + androidx_rules = '1.4.0-alpha04' } repositories { google() From 9673a3cc90c5c4d951de004c10efe7151a36ffa7 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 22:27:22 +0100 Subject: [PATCH 39/83] dagger update --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8c16ccbc80..31ed55f757 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { rxkotlin_version = '2.4.0' room_version = '2.2.6' lifecycle_version = '2.3.0' - dagger_version = '2.31.2' + dagger_version = '2.32' coroutinesVersion = '1.4.1' activityVersion = '1.2.0' fragmentktx_version = '1.3.0-rc01' From 2eb84e7471ab3c922ddbe5f5f02abb97991803d3 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 22:31:18 +0100 Subject: [PATCH 40/83] fragment & nav lib update --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 31ed55f757..8b20509a2f 100644 --- a/build.gradle +++ b/build.gradle @@ -12,9 +12,9 @@ buildscript { dagger_version = '2.32' coroutinesVersion = '1.4.1' activityVersion = '1.2.0' - fragmentktx_version = '1.3.0-rc01' + fragmentktx_version = '1.3.0-rc02' ormLiteVersion = '4.46' - nav_version = '2.3.2' + nav_version = '2.3.3' appcompat_version = '1.2.0' material_version = '1.2.1' constraintlayout_version = '2.0.4' From 4bdc67cac711eccc147fe0779232254ffe548e4e Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 22:40:55 +0100 Subject: [PATCH 41/83] material lib update --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8b20509a2f..fa16a53f76 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ buildscript { ormLiteVersion = '4.46' nav_version = '2.3.3' appcompat_version = '1.2.0' - material_version = '1.2.1' + material_version = '1.3.0' constraintlayout_version = '2.0.4' preferencektx_version = '1.1.1' commonslang3_version = '3.11' From 7a8de9221b77a68f2d98d6c1d2e5e4cc445440bf Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 23:17:22 +0100 Subject: [PATCH 42/83] fix tests --- .../androidaps/interfaces/ConstraintsCheckerTest.kt | 4 +++- .../plugins/configBuilder/ConfigBuilderPluginTest.kt | 4 +++- .../plugins/constraints/objectives/ObjectivesPluginTest.kt | 4 +++- .../general/smsCommunicator/SmsCommunicatorPluginTest.kt | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt b/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt index a1a9fa796e..48ebe49bc8 100644 --- a/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt @@ -22,6 +22,7 @@ import info.nightscout.androidaps.plugins.pump.combo.ComboPlugin import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage import info.nightscout.androidaps.danar.DanaRPlugin import info.nightscout.androidaps.danars.DanaRSPlugin +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin @@ -61,6 +62,7 @@ class ConstraintsCheckerTest : TestBaseWithProfile() { @Mock lateinit var profiler: Profiler @Mock lateinit var nsUpload: NSUpload @Mock lateinit var uploadQueue: UploadQueue + @Mock lateinit var uel: UserEntryLogger private var buildHelper = BuildHelper(Config()) lateinit var danaPump: DanaPump @@ -115,7 +117,7 @@ class ConstraintsCheckerTest : TestBaseWithProfile() { danaPump = DanaPump(aapsLogger, sp, injector) hardLimits = HardLimits(aapsLogger, rxBus, sp, resourceHelper, context, nsUpload) - objectivesPlugin = ObjectivesPlugin(injector, aapsLogger, resourceHelper, activePlugin, sp, Config()) + objectivesPlugin = ObjectivesPlugin(injector, aapsLogger, resourceHelper, activePlugin, sp, Config(), uel) comboPlugin = ComboPlugin(injector, aapsLogger, rxBus, resourceHelper, profileFunction, treatmentsPlugin, sp, commandQueue, context) danaRPlugin = DanaRPlugin(injector, aapsLogger, aapsSchedulers, rxBus, context, resourceHelper, constraintChecker, activePlugin, sp, commandQueue, danaPump, dateUtil, fabricPrivacy) danaRSPlugin = DanaRSPlugin(injector, aapsLogger, aapsSchedulers, rxBus, context, resourceHelper, constraintChecker, profileFunction, activePluginProvider, sp, commandQueue, danaPump, detailedBolusInfoStorage, fabricPrivacy, dateUtil) diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt index 4e7fc5e9cc..aa21e0a2bf 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt @@ -6,6 +6,7 @@ import dagger.android.HasAndroidInjector import info.nightscout.androidaps.TestBase import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.CommandQueueProvider +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin @@ -27,6 +28,7 @@ class ConfigBuilderPluginTest : TestBase() { @Mock lateinit var resourceHelper: ResourceHelper @Mock lateinit var commandQueue: CommandQueueProvider @Mock lateinit var activePlugin: ActivePluginProvider + @Mock lateinit var uel: UserEntryLogger private lateinit var configBuilderPlugin: ConfigBuilderPlugin @@ -43,6 +45,6 @@ class ConfigBuilderPluginTest : TestBase() { @Before fun prepareMock() { - configBuilderPlugin = ConfigBuilderPlugin(injector, aapsLogger, resourceHelper, sp, RxBusWrapper(aapsSchedulers), activePlugin) + configBuilderPlugin = ConfigBuilderPlugin(injector, aapsLogger, resourceHelper, sp, RxBusWrapper(aapsSchedulers), activePlugin, uel) } } \ No newline at end of file diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPluginTest.kt index a0cd07823e..bf0075e992 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPluginTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPluginTest.kt @@ -7,6 +7,7 @@ import info.nightscout.androidaps.R import info.nightscout.androidaps.TestBase import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.Constraint +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.resources.ResourceHelper @@ -25,6 +26,7 @@ class ObjectivesPluginTest : TestBase() { @Mock lateinit var resourceHelper: ResourceHelper @Mock lateinit var activePlugin: ActivePluginProvider @Mock lateinit var sp: SP + @Mock lateinit var uel: UserEntryLogger private lateinit var objectivesPlugin: ObjectivesPlugin @@ -38,7 +40,7 @@ class ObjectivesPluginTest : TestBase() { } @Before fun prepareMock() { - objectivesPlugin = ObjectivesPlugin(injector, aapsLogger, resourceHelper, activePlugin, sp, Config()) + objectivesPlugin = ObjectivesPlugin(injector, aapsLogger, resourceHelper, activePlugin, sp, Config(), uel) objectivesPlugin.onStart() `when`(resourceHelper.gs(R.string.objectivenotstarted)).thenReturn("Objective %1\$d not started") } diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt index 6c8339a650..e650f9ff71 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt @@ -16,6 +16,7 @@ import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.Constraint import info.nightscout.androidaps.interfaces.PluginType import info.nightscout.androidaps.interfaces.PumpDescription +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.plugins.general.smsCommunicator.otp.OneTimePassword @@ -65,6 +66,7 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() { @Mock lateinit var treatmentService: TreatmentService @Mock lateinit var otp: OneTimePassword @Mock lateinit var xdripCalibrations: XdripCalibrations + @Mock lateinit var uel: UserEntryLogger var injector: HasAndroidInjector = HasAndroidInjector { AndroidInjector { @@ -104,7 +106,7 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() { `when`(SmsManager.getDefault()).thenReturn(smsManager) `when`(sp.getString(R.string.key_smscommunicator_allowednumbers, "")).thenReturn("1234;5678") - smsCommunicatorPlugin = SmsCommunicatorPlugin(injector, aapsLogger, resourceHelper, aapsSchedulers, sp, constraintChecker, rxBus, profileFunction, fabricPrivacy, activePlugin, commandQueue, loopPlugin, iobCobCalculatorPlugin, xdripCalibrations, otp, Config(), DateUtil(context)) + smsCommunicatorPlugin = SmsCommunicatorPlugin(injector, aapsLogger, resourceHelper, aapsSchedulers, sp, constraintChecker, rxBus, profileFunction, fabricPrivacy, activePlugin, commandQueue, loopPlugin, iobCobCalculatorPlugin, xdripCalibrations, otp, Config(), DateUtil(context), uel) smsCommunicatorPlugin.setPluginEnabled(PluginType.GENERAL, true) Mockito.doAnswer { invocation: InvocationOnMock -> val callback = invocation.getArgument(1) From d1a647830f72d63052822122a5f53370eb6efe62 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 23:33:22 +0100 Subject: [PATCH 43/83] update mockito --- app/build.gradle | 2 +- app/jacoco.exec | Bin 0 -> 82546 bytes .../interfaces/ConstraintsCheckerTest.kt | 8 ++++---- .../configBuilder/ConfigBuilderPluginTest.kt | 2 ++ .../objectives/ObjectivesPluginTest.kt | 2 ++ .../maintenance/ClassicPrefsFormatTest.kt | 5 +++-- .../maintenance/EncryptedPrefsFormatTest.kt | 4 +++- .../SmsCommunicatorPluginTest.kt | 2 +- build.gradle | 2 +- 9 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 app/jacoco.exec diff --git a/app/build.gradle b/app/build.gradle index 7f2c67e5d3..f95f2ddc9b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -258,7 +258,7 @@ dependencies { testImplementation "org.skyscreamer:jsonassert:1.5.0" testImplementation "org.hamcrest:hamcrest-all:1.3" - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0-alpha03' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0-alpha04' androidTestImplementation "androidx.test.ext:junit:$androidx_junit" androidTestImplementation "androidx.test:rules:$androidx_rules" diff --git a/app/jacoco.exec b/app/jacoco.exec new file mode 100644 index 0000000000000000000000000000000000000000..1622861d3aaa3e9d1c3d9a04de71580b928cc274 GIT binary patch literal 82546 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 IC}pGmf7L!hlK=n! literal 0 HcmV?d00001 diff --git a/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt b/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt index 48ebe49bc8..7af1bb33b2 100644 --- a/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt @@ -8,6 +8,9 @@ import info.nightscout.androidaps.MainApp import info.nightscout.androidaps.R import info.nightscout.androidaps.TestBaseWithProfile import info.nightscout.androidaps.dana.DanaPump +import info.nightscout.androidaps.danar.DanaRPlugin +import info.nightscout.androidaps.danars.DanaRSPlugin +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.aps.openAPSAMA.OpenAPSAMAPlugin import info.nightscout.androidaps.plugins.aps.openAPSSMB.OpenAPSSMBPlugin import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin @@ -20,9 +23,6 @@ import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin import info.nightscout.androidaps.plugins.pump.combo.ComboPlugin import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage -import info.nightscout.androidaps.danar.DanaRPlugin -import info.nightscout.androidaps.danars.DanaRSPlugin -import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin @@ -47,7 +47,7 @@ import java.util.* * Created by mike on 18.03.2018. */ @RunWith(PowerMockRunner::class) -@PrepareForTest(MainApp::class, ConfigBuilderPlugin::class, ConstraintChecker::class, SP::class, Context::class, OpenAPSAMAPlugin::class, OpenAPSSMBPlugin::class, TreatmentsPlugin::class, TreatmentService::class, VirtualPumpPlugin::class, DetailedBolusInfoStorage::class, GlimpPlugin::class, Profiler::class) +@PrepareForTest(MainApp::class, ConfigBuilderPlugin::class, ConstraintChecker::class, SP::class, Context::class, OpenAPSAMAPlugin::class, OpenAPSSMBPlugin::class, TreatmentsPlugin::class, TreatmentService::class, VirtualPumpPlugin::class, DetailedBolusInfoStorage::class, GlimpPlugin::class, Profiler::class, UserEntryLogger::class) class ConstraintsCheckerTest : TestBaseWithProfile() { @Mock lateinit var activePlugin: ActivePluginProvider diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt index aa21e0a2bf..7a85c0284e 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPluginTest.kt @@ -16,9 +16,11 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock +import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.modules.junit4.PowerMockRunner @RunWith(PowerMockRunner::class) +@PrepareForTest(UserEntryLogger::class) class ConfigBuilderPluginTest : TestBase() { @Mock lateinit var virtualPumpPlugin: Lazy diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPluginTest.kt index bf0075e992..8c4f0bac87 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPluginTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPluginTest.kt @@ -18,8 +18,10 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito.`when` +import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.modules.junit4.PowerMockRunner +@PrepareForTest(UserEntryLogger::class) @RunWith(PowerMockRunner::class) class ObjectivesPluginTest : TestBase() { diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/ClassicPrefsFormatTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/ClassicPrefsFormatTest.kt index f0a5c07491..2e27046f5b 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/ClassicPrefsFormatTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/ClassicPrefsFormatTest.kt @@ -11,7 +11,6 @@ import org.junit.Assert import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock -import org.mockito.Mockito import org.mockito.Mockito.`when` import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.modules.junit4.PowerMockRunner @@ -24,6 +23,7 @@ class ClassicPrefsFormatTest : TestBase() { @Mock lateinit var resourceHelper: ResourceHelper @Mock lateinit var sp: SP + @Mock lateinit var file: MockedFile @Test fun preferenceLoadingTest() { @@ -53,8 +53,9 @@ class ClassicPrefsFormatTest : TestBase() { classicFormat.savePreferences(getMockedFile(), prefs) } + class MockedFile(s: String) : File(s) + private fun getMockedFile(): File { - val file = Mockito.mock(File::class.java) `when`(file.exists()).thenReturn(true) `when`(file.canRead()).thenReturn(true) `when`(file.canWrite()).thenReturn(true) diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/EncryptedPrefsFormatTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/EncryptedPrefsFormatTest.kt index fa52651e50..5438f15eac 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/EncryptedPrefsFormatTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/EncryptedPrefsFormatTest.kt @@ -28,6 +28,7 @@ class EncryptedPrefsFormatTest : TestBase() { @Mock lateinit var resourceHelper: ResourceHelper @Mock lateinit var sp: SP + @Mock lateinit var file: MockedFile private var cryptoUtil: CryptoUtil = CryptoUtil(aapsLogger) @@ -228,8 +229,9 @@ class EncryptedPrefsFormatTest : TestBase() { encryptedFormat.loadPreferences(getMockedFile(), "sikret") } + class MockedFile(s: String) : File(s) + private fun getMockedFile(): File { - val file = Mockito.mock(File::class.java) Mockito.`when`(file.exists()).thenReturn(true) Mockito.`when`(file.canRead()).thenReturn(true) Mockito.`when`(file.canWrite()).thenReturn(true) diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt index e650f9ff71..ab55ab89c5 100644 --- a/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt @@ -51,7 +51,7 @@ import org.powermock.modules.junit4.PowerMockRunner import java.util.* @RunWith(PowerMockRunner::class) -@PrepareForTest(ConstraintChecker::class, FabricPrivacy::class, VirtualPumpPlugin::class, XdripCalibrations::class, SmsManager::class, CommandQueue::class, LocalProfilePlugin::class, DateUtil::class, IobCobCalculatorPlugin::class, OneTimePassword::class) +@PrepareForTest(ConstraintChecker::class, FabricPrivacy::class, VirtualPumpPlugin::class, XdripCalibrations::class, SmsManager::class, CommandQueue::class, LocalProfilePlugin::class, DateUtil::class, IobCobCalculatorPlugin::class, OneTimePassword::class, UserEntryLogger::class) class SmsCommunicatorPluginTest : TestBaseWithProfile() { @Mock lateinit var context: Context diff --git a/build.gradle b/build.gradle index fa16a53f76..61aeae6ce4 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ buildscript { work_version = '2.5.0' junit_version = '4.13.1' - mockitoVersion = '2.8.47' + mockitoVersion = '3.7.7' powermockVersion = '2.0.9' dexmakerVersion = "1.2" retrofit2Version = '2.9.0' From 7acaf8a7e67fab5df8139f5be52c55080f3eae49 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 23:42:40 +0100 Subject: [PATCH 44/83] accept NSProfile as bundle --- .../androidaps/plugins/profile/ns/NSProfilePlugin.kt | 7 ++++++- .../info/nightscout/androidaps/receivers/DataReceiver.kt | 4 +--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfilePlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfilePlugin.kt index a47e53afe1..5109f6811c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfilePlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfilePlugin.kt @@ -17,6 +17,8 @@ import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientRestart import info.nightscout.androidaps.plugins.profile.ns.events.EventNSProfileUpdateGUI +import info.nightscout.androidaps.receivers.BundleStore +import info.nightscout.androidaps.receivers.DataReceiver import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.sharedPreferences.SP import org.json.JSONObject @@ -87,13 +89,16 @@ class NSProfilePlugin @Inject constructor( @Inject lateinit var nsProfilePlugin: NSProfilePlugin @Inject lateinit var aapsLogger: AAPSLogger @Inject lateinit var rxBus: RxBusWrapper + @Inject lateinit var bundleStore: BundleStore init { (context.applicationContext as HasAndroidInjector).androidInjector().inject(this) } override fun doWork(): Result { - inputData.getString("profile")?.let { profileString -> + val bundle = bundleStore.pickup(inputData.getLong(DataReceiver.STORE_KEY, -1)) + ?: return Result.failure() + bundle.getString("profile")?.let { profileString -> nsProfilePlugin.profile = ProfileStore(injector, JSONObject(profileString)) nsProfilePlugin.storeNSProfile() if (nsProfilePlugin.isEnabled()) { diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/DataReceiver.kt b/app/src/main/java/info/nightscout/androidaps/receivers/DataReceiver.kt index e764f35b2d..3d4d04dbf7 100644 --- a/app/src/main/java/info/nightscout/androidaps/receivers/DataReceiver.kt +++ b/app/src/main/java/info/nightscout/androidaps/receivers/DataReceiver.kt @@ -61,9 +61,7 @@ open class DataReceiver : DaggerBroadcastReceiver() { }.build()).build() Intents.ACTION_NEW_PROFILE -> OneTimeWorkRequest.Builder(NSProfilePlugin.NSProfileWorker::class.java) - .setInputData(Data.Builder().also { - it.copyString("profile", bundle, null) - }.build()).build() + .setInputData(bundleInputData(bundle, intent)).build() Intents.ACTION_NEW_SGV -> OneTimeWorkRequest.Builder(NSClientSourcePlugin.NSClientSourceWorker::class.java) .setInputData(Data.Builder().also { From d1ba6dda7322711b1ffc809296fd6197e3dea695 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 11 Feb 2021 23:57:11 +0100 Subject: [PATCH 45/83] 2.8.2.1-dev-a --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index f95f2ddc9b..5df54d7711 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -117,7 +117,7 @@ android { targetSdkVersion 28 multiDexEnabled true versionCode 1500 - version "2.8.2.1-dev" + version "2.8.2.1-dev-a" buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"' buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"' From ab9c533ff3e367f507433b36616485c92997b7d5 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 13 Feb 2021 01:38:43 +0100 Subject: [PATCH 46/83] Fix crash of charts if no bg data exists in mg/dl --- .../androidaps/plugins/general/overview/graphData/GraphData.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt index d99334b74b..ae0d64e5b0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.kt @@ -66,7 +66,7 @@ class GraphData( bgReadingsArray = iobCobCalculatorPlugin.bgReadings if (bgReadingsArray?.isEmpty() != false) { aapsLogger.debug("No BG data.") - maxY = 10.0 + maxY = if (units == Constants.MGDL) 180.0 else 10.0 minY = 0.0 return } From 6203e214d228c041c1af796e08eed98c7d96f3ef Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 13 Feb 2021 16:01:47 +0100 Subject: [PATCH 47/83] db migration quick fix: rather lose data than crash-loop --- .../info/nightscout/androidaps/database/AppDatabase.kt | 9 ++++----- .../nightscout/androidaps/database/DatabaseModule.kt | 1 + 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/database/src/main/java/info/nightscout/androidaps/database/AppDatabase.kt b/database/src/main/java/info/nightscout/androidaps/database/AppDatabase.kt index 5a943b6310..f2cf4c1f7e 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/AppDatabase.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/AppDatabase.kt @@ -6,14 +6,13 @@ import androidx.room.TypeConverters import info.nightscout.androidaps.database.daos.* import info.nightscout.androidaps.database.entities.* -const val DATABASE_VERSION = 2 +const val DATABASE_VERSION = 3 @Database(version = DATABASE_VERSION, - entities = arrayOf(APSResult::class, Bolus::class, BolusCalculatorResult::class, Carbs::class, + entities = [APSResult::class, Bolus::class, BolusCalculatorResult::class, Carbs::class, EffectiveProfileSwitch::class, ExtendedBolus::class, GlucoseValue::class, ProfileSwitch::class, - TemporaryBasal::class, TemporaryTarget::class, TherapyEvent::class, TotalDailyDose::class, - APSResultLink::class, MealLink::class, MultiwaveBolusLink::class, PreferenceChange::class, - VersionChange::class, UserEntry::class), + TemporaryBasal::class, TemporaryTarget::class, TherapyEvent::class, TotalDailyDose::class, APSResultLink::class, + MealLink::class, MultiwaveBolusLink::class, PreferenceChange::class, VersionChange::class, UserEntry::class], exportSchema = true) @TypeConverters(Converters::class) internal abstract class AppDatabase : RoomDatabase() { diff --git a/database/src/main/java/info/nightscout/androidaps/database/DatabaseModule.kt b/database/src/main/java/info/nightscout/androidaps/database/DatabaseModule.kt index 9ef0b9e0ab..b36e16ff5d 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/DatabaseModule.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/DatabaseModule.kt @@ -22,6 +22,7 @@ open class DatabaseModule { Room .databaseBuilder(context, AppDatabase::class.java, fileName) .addMigrations(migration1to2) + .fallbackToDestructiveMigration() .build() @Qualifier From c7e261d0e6686c0e7e431d254c2081973e7e88f2 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 13 Feb 2021 18:30:35 +0100 Subject: [PATCH 48/83] weekday picker working without view --- .../automation/elements/InputWeekDay.kt | 21 +++--- .../androidaps/utils/ui/WeekdayPicker.kt | 68 +++++++++++++++++ .../src/main/res/color/weekday_background.xml | 5 ++ .../src/main/res/color/weekend_background.xml | 5 ++ .../drawable/weekday_circle_brackground.xml | 7 ++ core/src/main/res/layout/weekday_picker.xml | 74 +++++++++++++++++++ core/src/main/res/values/colors.xml | 5 ++ core/src/main/res/values/strings.xml | 9 +++ 8 files changed, 182 insertions(+), 12 deletions(-) create mode 100644 core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt create mode 100644 core/src/main/res/color/weekday_background.xml create mode 100644 core/src/main/res/color/weekend_background.xml create mode 100644 core/src/main/res/drawable/weekday_circle_brackground.xml create mode 100644 core/src/main/res/layout/weekday_picker.xml diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/elements/InputWeekDay.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/elements/InputWeekDay.kt index 1f2531d95b..dda616de14 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/elements/InputWeekDay.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/elements/InputWeekDay.kt @@ -1,12 +1,10 @@ package info.nightscout.androidaps.plugins.general.automation.elements -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout import androidx.annotation.StringRes -import com.dpro.widgets.WeekdaysPicker import dagger.android.HasAndroidInjector import info.nightscout.androidaps.R +import info.nightscout.androidaps.utils.ui.WeekdayPicker import java.util.* class InputWeekDay(injector: HasAndroidInjector) : Element(injector) { @@ -22,6 +20,7 @@ class InputWeekDay(injector: HasAndroidInjector) : Element(injector) { get() = shortNames[ordinal] companion object { + private val calendarInts = intArrayOf( Calendar.MONDAY, Calendar.TUESDAY, @@ -56,7 +55,7 @@ class InputWeekDay(injector: HasAndroidInjector) : Element(injector) { for (day in DayOfWeek.values()) set(day, false) } - fun setAll(value:Boolean) { + fun setAll(value: Boolean) { for (day in DayOfWeek.values()) set(day, value) } @@ -78,13 +77,11 @@ class InputWeekDay(injector: HasAndroidInjector) : Element(injector) { } override fun addToLayout(root: LinearLayout) { - val weekdaysPicker = WeekdaysPicker(root.context) - weekdaysPicker.setEditable(true) - weekdaysPicker.selectedDays = getSelectedDays() - weekdaysPicker.setOnWeekdaysChangeListener { _: View?, i: Int, list: List -> set(DayOfWeek.fromCalendarInt(i), list.contains(i)) } - weekdaysPicker.layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) - weekdaysPicker.sundayFirstDay = Calendar.getInstance().firstDayOfWeek == Calendar.SUNDAY - weekdaysPicker.redrawDays() - root.addView(weekdaysPicker) + WeekdayPicker(root.context).apply { + setSelectedDays(getSelectedDays()) + setOnWeekdaysChangeListener { i: Int, selected: Boolean -> set(DayOfWeek.fromCalendarInt(i), selected) } + root.addView(this) + } + // TODO: remove library and dependency statement } } diff --git a/core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt b/core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt new file mode 100644 index 0000000000..0ac104a070 --- /dev/null +++ b/core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt @@ -0,0 +1,68 @@ +package info.nightscout.androidaps.utils.ui + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.Checkable +import android.widget.LinearLayout +import androidx.appcompat.widget.AppCompatCheckedTextView +import info.nightscout.androidaps.core.databinding.WeekdayPickerBinding +import info.nightscout.androidaps.utils.extensions.toVisibility +import java.util.* + +class WeekdayPicker @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr) { + + private var changeListener: ((Int, Boolean) -> Unit)? = null + + private var binding: WeekdayPickerBinding + + init { + val inflater = LayoutInflater.from(context) + binding = WeekdayPickerBinding.inflate(inflater, this, true) + determineBeginOfWeek() + setupClickListeners() + } + + private fun determineBeginOfWeek() { + (Calendar.getInstance().firstDayOfWeek == Calendar.SUNDAY).let { + binding.weekdayPickerSundayStart.visibility = it.toVisibility() + binding.weekdayPickerSundayEnd.visibility = it.not().toVisibility() + } + } + + fun setSelectedDays(list: List) { + binding.weekdayPickerSundayStart.isChecked = list.contains(Calendar.SUNDAY) + binding.weekdayPickerSundayEnd.isChecked = list.contains(Calendar.SUNDAY) + binding.weekdayPickerMonday.isChecked = list.contains(Calendar.MONDAY) + binding.weekdayPickerTuesday.isChecked = list.contains(Calendar.TUESDAY) + binding.weekdayPickerWednesday.isChecked = list.contains(Calendar.WEDNESDAY) + binding.weekdayPickerThursday.isChecked = list.contains(Calendar.THURSDAY) + binding.weekdayPickerFriday.isChecked = list.contains(Calendar.FRIDAY) + binding.weekdayPickerSaturday.isChecked = list.contains(Calendar.SATURDAY) + } + + private fun setupClickListeners() { + binding.weekdayPickerSundayStart.setupCallbackFor(Calendar.SUNDAY) + binding.weekdayPickerSundayEnd.setupCallbackFor(Calendar.SUNDAY) + binding.weekdayPickerMonday.setupCallbackFor(Calendar.MONDAY) + binding.weekdayPickerTuesday.setupCallbackFor(Calendar.TUESDAY) + binding.weekdayPickerWednesday.setupCallbackFor(Calendar.WEDNESDAY) + binding.weekdayPickerThursday.setupCallbackFor(Calendar.THURSDAY) + binding.weekdayPickerFriday.setupCallbackFor(Calendar.FRIDAY) + binding.weekdayPickerSaturday.setupCallbackFor(Calendar.SATURDAY) + } + + fun setOnWeekdaysChangeListener(changeListener: (Int, Boolean) -> Unit) { + this.changeListener = changeListener + } + + private fun AppCompatCheckedTextView.setupCallbackFor(day: Int) = setOnClickListener{ + val checkable = it as Checkable + val checked = checkable.isChecked + checkable.isChecked = !checked + changeListener?.invoke(day, !checked) + } + +} \ No newline at end of file diff --git a/core/src/main/res/color/weekday_background.xml b/core/src/main/res/color/weekday_background.xml new file mode 100644 index 0000000000..b345f818d2 --- /dev/null +++ b/core/src/main/res/color/weekday_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/src/main/res/color/weekend_background.xml b/core/src/main/res/color/weekend_background.xml new file mode 100644 index 0000000000..1de73d0e17 --- /dev/null +++ b/core/src/main/res/color/weekend_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/src/main/res/drawable/weekday_circle_brackground.xml b/core/src/main/res/drawable/weekday_circle_brackground.xml new file mode 100644 index 0000000000..861dda73c2 --- /dev/null +++ b/core/src/main/res/drawable/weekday_circle_brackground.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/core/src/main/res/layout/weekday_picker.xml b/core/src/main/res/layout/weekday_picker.xml new file mode 100644 index 0000000000..82acbb829b --- /dev/null +++ b/core/src/main/res/layout/weekday_picker.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml index 7842897b59..6bd15fb852 100644 --- a/core/src/main/res/values/colors.xml +++ b/core/src/main/res/values/colors.xml @@ -41,6 +41,11 @@ #00d2d2 #ffffff + #8000FF00 + #1000FF00 + #800000FF + #100000FF + #FF8C00 diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index e42bd8e553..06a686a867 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -315,6 +315,15 @@ Please reboot your phone or restart AndroidAPS from the System Settings \notherwise Android APS will not have logging (important to track and verify that the algorithms are working correctly)! + + M + T + W + T + F + S + S + %1$d day %1$d days From ff6a8f30c1c05cac3bde17dbf9df961102f35f51 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 13 Feb 2021 19:10:12 +0100 Subject: [PATCH 49/83] weekday component working --- .../androidaps/utils/ui/WeekdayPicker.kt | 3 +- .../res/color/day_selection_background.xml | 5 + .../src/main/res/color/weekday_background.xml | 5 - .../src/main/res/color/weekend_background.xml | 5 - .../drawable/weekday_circle_brackground.xml | 6 +- .../drawable/weekend_circle_brackground.xml | 7 + core/src/main/res/layout/weekday_picker.xml | 124 +++++++++++++----- core/src/main/res/values/colors.xml | 7 +- 8 files changed, 114 insertions(+), 48 deletions(-) create mode 100644 core/src/main/res/color/day_selection_background.xml delete mode 100644 core/src/main/res/color/weekday_background.xml delete mode 100644 core/src/main/res/color/weekend_background.xml create mode 100644 core/src/main/res/drawable/weekend_circle_brackground.xml diff --git a/core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt b/core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt index 0ac104a070..07af86879f 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt @@ -6,13 +6,14 @@ import android.view.LayoutInflater import android.widget.Checkable import android.widget.LinearLayout import androidx.appcompat.widget.AppCompatCheckedTextView +import androidx.constraintlayout.widget.ConstraintLayout import info.nightscout.androidaps.core.databinding.WeekdayPickerBinding import info.nightscout.androidaps.utils.extensions.toVisibility import java.util.* class WeekdayPicker @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : LinearLayout(context, attrs, defStyleAttr) { +) : ConstraintLayout(context, attrs, defStyleAttr) { private var changeListener: ((Int, Boolean) -> Unit)? = null diff --git a/core/src/main/res/color/day_selection_background.xml b/core/src/main/res/color/day_selection_background.xml new file mode 100644 index 0000000000..6dd68ef826 --- /dev/null +++ b/core/src/main/res/color/day_selection_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/src/main/res/color/weekday_background.xml b/core/src/main/res/color/weekday_background.xml deleted file mode 100644 index b345f818d2..0000000000 --- a/core/src/main/res/color/weekday_background.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/core/src/main/res/color/weekend_background.xml b/core/src/main/res/color/weekend_background.xml deleted file mode 100644 index 1de73d0e17..0000000000 --- a/core/src/main/res/color/weekend_background.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/core/src/main/res/drawable/weekday_circle_brackground.xml b/core/src/main/res/drawable/weekday_circle_brackground.xml index 861dda73c2..df71b0310e 100644 --- a/core/src/main/res/drawable/weekday_circle_brackground.xml +++ b/core/src/main/res/drawable/weekday_circle_brackground.xml @@ -1,7 +1,7 @@ - + + android:width="4dp" + android:color="@color/weekdayOutline"/> \ No newline at end of file diff --git a/core/src/main/res/drawable/weekend_circle_brackground.xml b/core/src/main/res/drawable/weekend_circle_brackground.xml new file mode 100644 index 0000000000..658780df37 --- /dev/null +++ b/core/src/main/res/drawable/weekend_circle_brackground.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/core/src/main/res/layout/weekday_picker.xml b/core/src/main/res/layout/weekday_picker.xml index 82acbb829b..db8219f583 100644 --- a/core/src/main/res/layout/weekday_picker.xml +++ b/core/src/main/res/layout/weekday_picker.xml @@ -1,74 +1,138 @@ - + android:layout_height="wrap_content"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toStartOf="@+id/weekdayPickerMonday" + app:layout_constraintStart_toStartOf="parent" /> + android:gravity="center" + android:textAlignment="gravity" + android:padding="8dp" + android:layout_margin="2dp" + app:layout_constraintDimensionRatio="H,1:1" + app:autoSizeTextType="uniform" + android:text="@string/monday_short" + app:layout_constraintEnd_toStartOf="@+id/weekdayPickerTuesday" + app:layout_constraintStart_toEndOf="@+id/weekdayPickerSundayStart" + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintBaseline_toBaselineOf="@+id/weekdayPickerWednesday" + app:layout_constraintEnd_toStartOf="@+id/weekdayPickerWednesday" + app:layout_constraintStart_toEndOf="@+id/weekdayPickerMonday" /> + app:layout_constraintEnd_toStartOf="@+id/weekdayPickerThursday" + app:layout_constraintStart_toEndOf="@+id/weekdayPickerTuesday" + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toStartOf="@+id/weekdayPickerFriday" + app:layout_constraintStart_toEndOf="@+id/weekdayPickerWednesday" /> + app:layout_constraintEnd_toStartOf="@+id/weekdayPickerSaturday" + app:layout_constraintStart_toEndOf="@+id/weekdayPickerThursday" + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toStartOf="@+id/weekdayPickerSundayEnd" + app:layout_constraintStart_toEndOf="@+id/weekdayPickerFriday" /> + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/weekdayPickerSaturday" + app:layout_constraintTop_toTopOf="parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml index 6bd15fb852..a533a5c3aa 100644 --- a/core/src/main/res/values/colors.xml +++ b/core/src/main/res/values/colors.xml @@ -41,10 +41,9 @@ #00d2d2 #ffffff - #8000FF00 - #1000FF00 - #800000FF - #100000FF + #D000FF00 + #1ea3e5 + #1e88e5 #FF8C00 From 7c8caa659b4662b676524a216eadd56fcdbae96e Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 13 Feb 2021 19:19:14 +0100 Subject: [PATCH 50/83] remove crashing library --- app/build.gradle | 3 --- app/libs/weekdaysselector-1.1.1.aar | Bin 17376 -> 0 bytes 2 files changed, 3 deletions(-) delete mode 100644 app/libs/weekdaysselector-1.1.1.aar diff --git a/app/build.gradle b/app/build.gradle index 5df54d7711..45e91a54d6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -241,9 +241,6 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - // https://github.com/DavidProdinger/Weekdays-Selector (used outdated 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1') - implementation(name: 'weekdaysselector-1.1.1', ext: 'aar') - testImplementation "junit:junit:$junit_version" testImplementation 'org.json:json:20201115' testImplementation "org.mockito:mockito-core:${mockitoVersion}" diff --git a/app/libs/weekdaysselector-1.1.1.aar b/app/libs/weekdaysselector-1.1.1.aar deleted file mode 100644 index 214a429e3ab71fb2118cfd13579ed882ad6ef9a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17376 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 Krd*&31_l6-L6s>0 From 0d601634e00445ad2b9191c8e3b3c29d50434f01 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 13 Feb 2021 19:40:27 +0100 Subject: [PATCH 51/83] cleanups of new weekday selector --- .../automation/elements/InputWeekDay.kt | 2 - .../androidaps/utils/ui/WeekdayPicker.kt | 39 +++++---- core/src/main/res/layout/weekday_picker.xml | 81 +++++++++---------- 3 files changed, 59 insertions(+), 63 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/elements/InputWeekDay.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/elements/InputWeekDay.kt index dda616de14..53733acfc8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/elements/InputWeekDay.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/elements/InputWeekDay.kt @@ -20,7 +20,6 @@ class InputWeekDay(injector: HasAndroidInjector) : Element(injector) { get() = shortNames[ordinal] companion object { - private val calendarInts = intArrayOf( Calendar.MONDAY, Calendar.TUESDAY, @@ -82,6 +81,5 @@ class InputWeekDay(injector: HasAndroidInjector) : Element(injector) { setOnWeekdaysChangeListener { i: Int, selected: Boolean -> set(DayOfWeek.fromCalendarInt(i), selected) } root.addView(this) } - // TODO: remove library and dependency statement } } diff --git a/core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt b/core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt index 07af86879f..e3352ec94d 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/ui/WeekdayPicker.kt @@ -4,7 +4,6 @@ import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import android.widget.Checkable -import android.widget.LinearLayout import androidx.appcompat.widget.AppCompatCheckedTextView import androidx.constraintlayout.widget.ConstraintLayout import info.nightscout.androidaps.core.databinding.WeekdayPickerBinding @@ -33,33 +32,33 @@ class WeekdayPicker @JvmOverloads constructor( } } - fun setSelectedDays(list: List) { - binding.weekdayPickerSundayStart.isChecked = list.contains(Calendar.SUNDAY) - binding.weekdayPickerSundayEnd.isChecked = list.contains(Calendar.SUNDAY) - binding.weekdayPickerMonday.isChecked = list.contains(Calendar.MONDAY) - binding.weekdayPickerTuesday.isChecked = list.contains(Calendar.TUESDAY) - binding.weekdayPickerWednesday.isChecked = list.contains(Calendar.WEDNESDAY) - binding.weekdayPickerThursday.isChecked = list.contains(Calendar.THURSDAY) - binding.weekdayPickerFriday.isChecked = list.contains(Calendar.FRIDAY) - binding.weekdayPickerSaturday.isChecked = list.contains(Calendar.SATURDAY) + fun setSelectedDays(list: List) = with(binding) { + weekdayPickerSundayStart.isChecked = list.contains(Calendar.SUNDAY) + weekdayPickerSundayEnd.isChecked = list.contains(Calendar.SUNDAY) + weekdayPickerMonday.isChecked = list.contains(Calendar.MONDAY) + weekdayPickerTuesday.isChecked = list.contains(Calendar.TUESDAY) + weekdayPickerWednesday.isChecked = list.contains(Calendar.WEDNESDAY) + weekdayPickerThursday.isChecked = list.contains(Calendar.THURSDAY) + weekdayPickerFriday.isChecked = list.contains(Calendar.FRIDAY) + weekdayPickerSaturday.isChecked = list.contains(Calendar.SATURDAY) } - private fun setupClickListeners() { - binding.weekdayPickerSundayStart.setupCallbackFor(Calendar.SUNDAY) - binding.weekdayPickerSundayEnd.setupCallbackFor(Calendar.SUNDAY) - binding.weekdayPickerMonday.setupCallbackFor(Calendar.MONDAY) - binding.weekdayPickerTuesday.setupCallbackFor(Calendar.TUESDAY) - binding.weekdayPickerWednesday.setupCallbackFor(Calendar.WEDNESDAY) - binding.weekdayPickerThursday.setupCallbackFor(Calendar.THURSDAY) - binding.weekdayPickerFriday.setupCallbackFor(Calendar.FRIDAY) - binding.weekdayPickerSaturday.setupCallbackFor(Calendar.SATURDAY) + private fun setupClickListeners() = with(binding) { + weekdayPickerSundayStart.setupCallbackFor(Calendar.SUNDAY) + weekdayPickerSundayEnd.setupCallbackFor(Calendar.SUNDAY) + weekdayPickerMonday.setupCallbackFor(Calendar.MONDAY) + weekdayPickerTuesday.setupCallbackFor(Calendar.TUESDAY) + weekdayPickerWednesday.setupCallbackFor(Calendar.WEDNESDAY) + weekdayPickerThursday.setupCallbackFor(Calendar.THURSDAY) + weekdayPickerFriday.setupCallbackFor(Calendar.FRIDAY) + weekdayPickerSaturday.setupCallbackFor(Calendar.SATURDAY) } fun setOnWeekdaysChangeListener(changeListener: (Int, Boolean) -> Unit) { this.changeListener = changeListener } - private fun AppCompatCheckedTextView.setupCallbackFor(day: Int) = setOnClickListener{ + private fun AppCompatCheckedTextView.setupCallbackFor(day: Int) = setOnClickListener { val checkable = it as Checkable val checked = checkable.isChecked checkable.isChecked = !checked diff --git a/core/src/main/res/layout/weekday_picker.xml b/core/src/main/res/layout/weekday_picker.xml index db8219f583..f20fec423d 100644 --- a/core/src/main/res/layout/weekday_picker.xml +++ b/core/src/main/res/layout/weekday_picker.xml @@ -1,40 +1,39 @@ + android:layout_height="wrap_content" + android:padding="2dp"> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> @@ -43,15 +42,15 @@ android:id="@+id/weekdayPickerTuesday" android:layout_width="0dp" android:layout_height="0dp" + android:layout_margin="2dp" android:background="@drawable/weekday_circle_brackground" android:gravity="center" - android:textAlignment="gravity" android:padding="8dp" - android:layout_margin="2dp" - app:layout_constraintDimensionRatio="H,1:1" - app:autoSizeTextType="uniform" android:text="@string/tuesday_short" + android:textAlignment="gravity" + app:autoSizeTextType="uniform" app:layout_constraintBaseline_toBaselineOf="@+id/weekdayPickerWednesday" + app:layout_constraintDimensionRatio="H,1:1" app:layout_constraintEnd_toStartOf="@+id/weekdayPickerWednesday" app:layout_constraintStart_toEndOf="@+id/weekdayPickerMonday" /> @@ -59,14 +58,14 @@ android:id="@+id/weekdayPickerWednesday" android:layout_width="0dp" android:layout_height="0dp" + android:layout_margin="2dp" android:background="@drawable/weekday_circle_brackground" android:gravity="center" - android:textAlignment="gravity" android:padding="8dp" - android:layout_margin="2dp" - app:layout_constraintDimensionRatio="H,1:1" - app:autoSizeTextType="uniform" android:text="@string/wednesday_short" + android:textAlignment="gravity" + app:autoSizeTextType="uniform" + app:layout_constraintDimensionRatio="H,1:1" app:layout_constraintEnd_toStartOf="@+id/weekdayPickerThursday" app:layout_constraintStart_toEndOf="@+id/weekdayPickerTuesday" app:layout_constraintTop_toTopOf="parent" /> @@ -75,30 +74,30 @@ android:id="@+id/weekdayPickerThursday" android:layout_width="0dp" android:layout_height="0dp" + android:layout_margin="2dp" android:background="@drawable/weekday_circle_brackground" android:gravity="center" - android:textAlignment="gravity" android:padding="8dp" - android:layout_margin="2dp" - app:layout_constraintDimensionRatio="H,1:1" - app:autoSizeTextType="uniform" android:text="@string/thursday_short" - app:layout_constraintTop_toTopOf="parent" + android:textAlignment="gravity" + app:autoSizeTextType="uniform" + app:layout_constraintDimensionRatio="H,1:1" app:layout_constraintEnd_toStartOf="@+id/weekdayPickerFriday" - app:layout_constraintStart_toEndOf="@+id/weekdayPickerWednesday" /> + app:layout_constraintStart_toEndOf="@+id/weekdayPickerWednesday" + app:layout_constraintTop_toTopOf="parent" /> @@ -107,30 +106,30 @@ android:id="@+id/weekdayPickerSaturday" android:layout_width="0dp" android:layout_height="0dp" + android:layout_margin="2dp" android:background="@drawable/weekend_circle_brackground" android:gravity="center" - android:textAlignment="gravity" android:padding="8dp" - android:layout_margin="2dp" - app:layout_constraintDimensionRatio="H,1:1" - app:autoSizeTextType="uniform" android:text="@string/saturday_short" - app:layout_constraintTop_toTopOf="parent" + android:textAlignment="gravity" + app:autoSizeTextType="uniform" + app:layout_constraintDimensionRatio="H,1:1" app:layout_constraintEnd_toStartOf="@+id/weekdayPickerSundayEnd" - app:layout_constraintStart_toEndOf="@+id/weekdayPickerFriday" /> + app:layout_constraintStart_toEndOf="@+id/weekdayPickerFriday" + app:layout_constraintTop_toTopOf="parent" /> From 0ce35c6439d02c849081f20e3fbac269007ca89d Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sat, 13 Feb 2021 22:14:06 +0100 Subject: [PATCH 52/83] TDDStatsActivity ->kt --- .../activities/TDDStatsActivity.java | 528 ------------------ .../androidaps/activities/TDDStatsActivity.kt | 429 ++++++++++++++ ...atsactivity.xml => activity_tdd_stats.xml} | 165 +++--- 3 files changed, 509 insertions(+), 613 deletions(-) delete mode 100644 core/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java create mode 100644 core/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.kt rename core/src/main/res/layout/{danar_statsactivity.xml => activity_tdd_stats.xml} (58%) diff --git a/core/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java b/core/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java deleted file mode 100644 index b9cc88fc28..0000000000 --- a/core/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java +++ /dev/null @@ -1,528 +0,0 @@ -package info.nightscout.androidaps.activities; - -import android.graphics.Color; -import android.graphics.Rect; -import android.os.Bundle; -import android.text.TextUtils; -import android.view.MotionEvent; -import android.view.View; -import android.view.WindowManager; -import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.InputMethodManager; -import android.widget.Button; -import android.widget.EditText; -import android.widget.TableLayout; -import android.widget.TableRow; -import android.widget.TextView; - -import androidx.recyclerview.widget.LinearLayoutManager; - -import java.text.DateFormat; -import java.text.DecimalFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; -import java.util.Locale; - -import javax.inject.Inject; - -import info.nightscout.androidaps.core.R; -import info.nightscout.androidaps.data.Profile; -import info.nightscout.androidaps.db.TDD; -import info.nightscout.androidaps.events.EventDanaRSyncStatus; -import info.nightscout.androidaps.events.EventPumpStatusChanged; -import info.nightscout.androidaps.interfaces.ActivePluginProvider; -import info.nightscout.androidaps.interfaces.CommandQueueProvider; -import info.nightscout.androidaps.interfaces.DatabaseHelperInterface; -import info.nightscout.androidaps.interfaces.ProfileFunction; -import info.nightscout.androidaps.logging.AAPSLogger; -import info.nightscout.androidaps.plugins.bus.RxBusWrapper; -import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; -import info.nightscout.androidaps.queue.Callback; -import info.nightscout.androidaps.utils.FabricPrivacy; -import info.nightscout.androidaps.utils.SafeParse; -import info.nightscout.androidaps.utils.resources.ResourceHelper; -import info.nightscout.androidaps.utils.rx.AapsSchedulers; -import info.nightscout.androidaps.utils.sharedPreferences.SP; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.CompositeDisposable; - -public class TDDStatsActivity extends NoSplashAppCompatActivity { - @Inject AAPSLogger aapsLogger; - @Inject ResourceHelper resourceHelper; - @Inject RxBusWrapper rxBus; - @Inject SP sp; - @Inject ProfileFunction profileFunction; - @Inject ActivePluginProvider activePlugin; - @Inject CommandQueueProvider commandQueue; - @Inject DatabaseHelperInterface databaseHelper; - @Inject FabricPrivacy fabricPrivacy; - @Inject AapsSchedulers aapsSchedulers; - - private final CompositeDisposable disposable = new CompositeDisposable(); - - TextView statusView, statsMessage, totalBaseBasal2; - EditText totalBaseBasal; - Button reloadButton; - LinearLayoutManager llm; - TableLayout tl, ctl, etl; - String TBB; - double magicNumber; - DecimalFormat decimalFormat; - - List historyList = new ArrayList<>(); - List dummies; - - public TDDStatsActivity() { - super(); - } - - @Override - protected void onResume() { - super.onResume(); - disposable.add(rxBus - .toObservable(EventPumpStatusChanged.class) - .observeOn(aapsSchedulers.getMain()) - .subscribe(event -> statusView.setText(event.getStatus(resourceHelper)), exception -> fabricPrivacy.logException(exception)) - ); - disposable.add(rxBus - .toObservable(EventDanaRSyncStatus.class) - .observeOn(aapsSchedulers.getMain()) - .subscribe(event -> { - aapsLogger.debug("EventDanaRSyncStatus: " + event.getMessage()); - statusView.setText(event.getMessage()); - }, exception -> fabricPrivacy.logException(exception)) - ); - } - - @Override - protected void onPause() { - super.onPause(); - disposable.clear(); - } - - @Override - public boolean dispatchTouchEvent(MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - View myView = getCurrentFocus(); - if (myView instanceof EditText) { - Rect rect = new Rect(); - myView.getGlobalVisibleRect(rect); - if (!rect.contains((int) event.getRawX(), (int) event.getRawY())) { - myView.clearFocus(); - } - } - } - return super.dispatchTouchEvent(event); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.danar_statsactivity); - getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); - statusView = findViewById(R.id.danar_stats_connection_status); - reloadButton = findViewById(R.id.danar_statsreload); - totalBaseBasal = findViewById(R.id.danar_stats_editTotalBaseBasal); - totalBaseBasal2 = findViewById(R.id.danar_stats_editTotalBaseBasal2); - statsMessage = findViewById(R.id.danar_stats_Message); - - statusView.setVisibility(View.GONE); - statsMessage.setVisibility(View.GONE); - - totalBaseBasal2.setEnabled(false); - totalBaseBasal2.setClickable(false); - totalBaseBasal2.setFocusable(false); - totalBaseBasal2.setInputType(0); - - decimalFormat = new DecimalFormat("0.000"); - llm = new LinearLayoutManager(this); - - TBB = sp.getString("TBB", "10.00"); - - Profile profile = profileFunction.getProfile(); - if (profile != null) { - double cppTBB = profile.baseBasalSum(); - TBB = decimalFormat.format(cppTBB); - sp.putString("TBB", TBB); - } - totalBaseBasal.setText(TBB); - - if (!activePlugin.getActivePump().getPumpDescription().needsManualTDDLoad) - reloadButton.setVisibility(View.GONE); - - // stats table - tl = findViewById(R.id.main_table); - TableRow tr_head = new TableRow(this); - tr_head.setBackgroundColor(Color.DKGRAY); - tr_head.setLayoutParams(new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - - TextView label_date = new TextView(this); - label_date.setText(resourceHelper.gs(R.string.date)); - label_date.setTextColor(Color.WHITE); - tr_head.addView(label_date); - - TextView label_basalrate = new TextView(this); - label_basalrate.setText(resourceHelper.gs(R.string.basalrate)); - label_basalrate.setTextColor(Color.WHITE); - tr_head.addView(label_basalrate); - - TextView label_bolus = new TextView(this); - label_bolus.setText(resourceHelper.gs(R.string.bolus)); - label_bolus.setTextColor(Color.WHITE); - tr_head.addView(label_bolus); - - TextView label_tdd = new TextView(this); - label_tdd.setText(resourceHelper.gs(R.string.tdd)); - label_tdd.setTextColor(Color.WHITE); - tr_head.addView(label_tdd); - - TextView label_ratio = new TextView(this); - label_ratio.setText(resourceHelper.gs(R.string.ratio)); - label_ratio.setTextColor(Color.WHITE); - tr_head.addView(label_ratio); - - // add stats headers to tables - tl.addView(tr_head, new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - - // cumulative table - ctl = findViewById(R.id.cumulative_table); - TableRow ctr_head = new TableRow(this); - ctr_head.setBackgroundColor(Color.DKGRAY); - ctr_head.setLayoutParams(new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - - TextView label_cum_amount_days = new TextView(this); - label_cum_amount_days.setText(resourceHelper.gs(R.string.amount_days)); - label_cum_amount_days.setTextColor(Color.WHITE); - ctr_head.addView(label_cum_amount_days); - - TextView label_cum_tdd = new TextView(this); - label_cum_tdd.setText(resourceHelper.gs(R.string.tdd)); - label_cum_tdd.setTextColor(Color.WHITE); - ctr_head.addView(label_cum_tdd); - - TextView label_cum_ratio = new TextView(this); - label_cum_ratio.setText(resourceHelper.gs(R.string.ratio)); - label_cum_ratio.setTextColor(Color.WHITE); - ctr_head.addView(label_cum_ratio); - - // add cummulative headers to tables - ctl.addView(ctr_head, new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - - // expontial table - etl = findViewById(R.id.expweight_table); - TableRow etr_head = new TableRow(this); - etr_head.setBackgroundColor(Color.DKGRAY); - etr_head.setLayoutParams(new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - - TextView label_exp_weight = new TextView(this); - label_exp_weight.setText(resourceHelper.gs(R.string.weight)); - label_exp_weight.setTextColor(Color.WHITE); - etr_head.addView(label_exp_weight); - - TextView label_exp_tdd = new TextView(this); - label_exp_tdd.setText(resourceHelper.gs(R.string.tdd)); - label_exp_tdd.setTextColor(Color.WHITE); - etr_head.addView(label_exp_tdd); - - TextView label_exp_ratio = new TextView(this); - label_exp_ratio.setText(resourceHelper.gs(R.string.ratio)); - label_exp_ratio.setTextColor(Color.WHITE); - etr_head.addView(label_exp_ratio); - - // add expontial headers to tables - etl.addView(etr_head, new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - - reloadButton.setOnClickListener(v -> { - runOnUiThread(() -> { - reloadButton.setVisibility(View.GONE); - statusView.setVisibility(View.VISIBLE); - statsMessage.setVisibility(View.VISIBLE); - statsMessage.setText(resourceHelper.gs(R.string.warning_Message)); - }); - commandQueue.loadTDDs(new Callback() { - @Override - public void run() { - loadDataFromDB(); - runOnUiThread(() -> { - reloadButton.setVisibility(View.VISIBLE); - statusView.setVisibility(View.GONE); - statsMessage.setVisibility(View.GONE); - }); - } - }); - }); - - totalBaseBasal.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - totalBaseBasal.clearFocus(); - return true; - } - return false; - }); - - totalBaseBasal.setOnFocusChangeListener((v, hasFocus) -> { - if (hasFocus) { - totalBaseBasal.getText().clear(); - } else { - sp.putString("TBB", totalBaseBasal.getText().toString()); - TBB = sp.getString("TBB", ""); - loadDataFromDB(); - InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(totalBaseBasal.getWindowToken(), 0); - } - }); - - loadDataFromDB(); - } - - private void loadDataFromDB() { - historyList = databaseHelper.getTDDs(); - - //only use newest 10 - historyList = historyList.subList(0, Math.min(10, historyList.size())); - - //fill single gaps - dummies = new LinkedList<>(); - DateFormat df = new SimpleDateFormat("dd.MM.", Locale.getDefault()); - for (int i = 0; i < historyList.size() - 1; i++) { - TDD elem1 = historyList.get(i); - TDD elem2 = historyList.get(i + 1); - - if (!df.format(new Date(elem1.date)).equals(df.format(new Date(elem2.date + 25 * 60 * 60 * 1000)))) { - TDD dummy = new TDD(); - dummy.date = elem1.date - 24 * 60 * 60 * 1000; - dummy.basal = elem1.basal / 2; - dummy.bolus = elem1.bolus / 2; - dummies.add(dummy); - elem1.basal /= 2; - elem1.bolus /= 2; - } - } - historyList.addAll(dummies); - Collections.sort(historyList, (lhs, rhs) -> (int) (rhs.date - lhs.date)); - - runOnUiThread(() -> { - cleanTable(tl); - cleanTable(ctl); - cleanTable(etl); - DateFormat df1 = new SimpleDateFormat("dd.MM.", Locale.getDefault()); - - if (TextUtils.isEmpty(TBB)) { - totalBaseBasal.setError("Please Enter Total Base Basal"); - return; - } else { - magicNumber = SafeParse.stringToDouble(TBB); - } - - magicNumber *= 2; - totalBaseBasal2.setText(decimalFormat.format(magicNumber)); - - int i = 0; - double sum = 0d; - double weighted03 = 0d; - double weighted05 = 0d; - double weighted07 = 0d; - - - //TDD table - for (TDD record : historyList) { - double tdd = record.getTotal(); - - // Create the table row - TableRow tr = new TableRow(TDDStatsActivity.this); - if (i % 2 != 0) tr.setBackgroundColor(Color.DKGRAY); - if (dummies.contains(record)) { - tr.setBackgroundColor(Color.argb(125, 255, 0, 0)); - } - tr.setId(100 + i); - tr.setLayoutParams(new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - - // Here create the TextView dynamically - TextView labelDATE = new TextView(TDDStatsActivity.this); - labelDATE.setId(200 + i); - labelDATE.setText(df1.format(new Date(record.date))); - labelDATE.setTextColor(Color.WHITE); - tr.addView(labelDATE); - - TextView labelBASAL = new TextView(TDDStatsActivity.this); - labelBASAL.setId(300 + i); - labelBASAL.setText(resourceHelper.gs(R.string.formatinsulinunits, record.basal)); - labelBASAL.setTextColor(Color.WHITE); - tr.addView(labelBASAL); - - TextView labelBOLUS = new TextView(TDDStatsActivity.this); - labelBOLUS.setId(400 + i); - labelBOLUS.setText(resourceHelper.gs(R.string.formatinsulinunits, record.bolus)); - labelBOLUS.setTextColor(Color.WHITE); - tr.addView(labelBOLUS); - - TextView labelTDD = new TextView(TDDStatsActivity.this); - labelTDD.setId(500 + i); - labelTDD.setText(resourceHelper.gs(R.string.formatinsulinunits, tdd)); - labelTDD.setTextColor(Color.WHITE); - tr.addView(labelTDD); - - TextView labelRATIO = new TextView(TDDStatsActivity.this); - labelRATIO.setId(600 + i); - labelRATIO.setText(Math.round(100 * tdd / magicNumber) + "%"); - labelRATIO.setTextColor(Color.WHITE); - tr.addView(labelRATIO); - - // add stats rows to tables - tl.addView(tr, new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - - i++; - } - - i = 0; - - //cumulative TDDs - for (TDD record : historyList) { - if (!historyList.isEmpty() && df1.format(new Date(record.date)).equals(df1.format(new Date()))) { - //Today should not be included - continue; - } - i++; - - sum = sum + record.getTotal(); - - // Create the cumtable row - TableRow ctr = new TableRow(TDDStatsActivity.this); - if (i % 2 == 0) ctr.setBackgroundColor(Color.DKGRAY); - ctr.setId(700 + i); - ctr.setLayoutParams(new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - - // Here create the TextView dynamically - TextView labelDAYS = new TextView(TDDStatsActivity.this); - labelDAYS.setId(800 + i); - labelDAYS.setText("" + i); - labelDAYS.setTextColor(Color.WHITE); - ctr.addView(labelDAYS); - - TextView labelCUMTDD = new TextView(TDDStatsActivity.this); - labelCUMTDD.setId(900 + i); - labelCUMTDD.setText(resourceHelper.gs(R.string.formatinsulinunits, sum / i)); - labelCUMTDD.setTextColor(Color.WHITE); - ctr.addView(labelCUMTDD); - - TextView labelCUMRATIO = new TextView(TDDStatsActivity.this); - labelCUMRATIO.setId(1000 + i); - labelCUMRATIO.setText(Math.round(100 * sum / i / magicNumber) + "%"); - labelCUMRATIO.setTextColor(Color.WHITE); - ctr.addView(labelCUMRATIO); - - // add cummulative rows to tables - ctl.addView(ctr, new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - } - - if (isOldData(historyList) && activePlugin.getActivePump().getPumpDescription().needsManualTDDLoad) { - statsMessage.setVisibility(View.VISIBLE); - statsMessage.setText(resourceHelper.gs(R.string.olddata_Message)); - - } else { - tl.setBackgroundColor(Color.TRANSPARENT); - } - - if (!historyList.isEmpty() && df1.format(new Date(historyList.get(0).date)).equals(df1.format(new Date()))) { - //Today should not be included - historyList.remove(0); - } - - Collections.reverse(historyList); - - i = 0; - - for (TDD record : historyList) { - double tdd = record.getTotal(); - if (i == 0) { - weighted03 = tdd; - weighted05 = tdd; - weighted07 = tdd; - - } else { - weighted07 = (weighted07 * 0.3 + tdd * 0.7); - weighted05 = (weighted05 * 0.5 + tdd * 0.5); - weighted03 = (weighted03 * 0.7 + tdd * 0.3); - } - i++; - } - - // Create the exptable row - TableRow etr = new TableRow(TDDStatsActivity.this); - if (i % 2 != 0) etr.setBackgroundColor(Color.DKGRAY); - etr.setId(1100 + i); - etr.setLayoutParams(new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - - // Here create the TextView dynamically - TextView labelWEIGHT = new TextView(TDDStatsActivity.this); - labelWEIGHT.setId(1200 + i); - labelWEIGHT.setText("0.3\n" + "0.5\n" + "0.7"); - labelWEIGHT.setTextColor(Color.WHITE); - etr.addView(labelWEIGHT); - - TextView labelEXPTDD = new TextView(TDDStatsActivity.this); - labelEXPTDD.setId(1300 + i); - labelEXPTDD.setText(resourceHelper.gs(R.string.formatinsulinunits, weighted03) + "\n" + - resourceHelper.gs(R.string.formatinsulinunits, weighted05) + "\n" + - resourceHelper.gs(R.string.formatinsulinunits, weighted07)); - labelEXPTDD.setTextColor(Color.WHITE); - etr.addView(labelEXPTDD); - - TextView labelEXPRATIO = new TextView(TDDStatsActivity.this); - labelEXPRATIO.setId(1400 + i); - labelEXPRATIO.setText(Math.round(100 * weighted03 / magicNumber) + "%\n" - + Math.round(100 * weighted05 / magicNumber) + "%\n" - + Math.round(100 * weighted07 / magicNumber) + "%"); - labelEXPRATIO.setTextColor(Color.WHITE); - etr.addView(labelEXPRATIO); - - // add exponentail rows to tables - etl.addView(etr, new TableLayout.LayoutParams( - TableLayout.LayoutParams.MATCH_PARENT, - TableLayout.LayoutParams.WRAP_CONTENT)); - }); - } - - private void cleanTable(TableLayout table) { - int childCount = table.getChildCount(); - // Remove all rows except the first one - if (childCount > 1) { - table.removeViews(1, childCount - 1); - } - } - - public boolean isOldData(List historyList) { - - PumpType type = activePlugin.getActivePump().getPumpDescription().pumpType; - boolean startsYesterday = type == PumpType.DanaR || type == PumpType.DanaRS || type == PumpType.DanaRv2 || type == PumpType.DanaRKorean || type == PumpType.AccuChekInsight; - - DateFormat df = new SimpleDateFormat("dd.MM.", Locale.getDefault()); - return (historyList.size() < 3 || !(df.format(new Date(historyList.get(0).date)).equals(df.format(new Date(System.currentTimeMillis() - (startsYesterday ? 1000 * 60 * 60 * 24 : 0)))))); - } -} \ No newline at end of file diff --git a/core/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.kt b/core/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.kt new file mode 100644 index 0000000000..ba650bace7 --- /dev/null +++ b/core/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.kt @@ -0,0 +1,429 @@ +package info.nightscout.androidaps.activities + +import android.annotation.SuppressLint +import android.graphics.Color +import android.graphics.Rect +import android.os.Bundle +import android.text.TextUtils +import android.view.KeyEvent +import android.view.MotionEvent +import android.view.View +import android.view.WindowManager +import android.view.inputmethod.EditorInfo +import android.view.inputmethod.InputMethodManager +import android.widget.EditText +import android.widget.TableLayout +import android.widget.TableRow +import android.widget.TextView +import info.nightscout.androidaps.core.R +import info.nightscout.androidaps.core.databinding.ActivityTddStatsBinding +import info.nightscout.androidaps.db.TDD +import info.nightscout.androidaps.events.EventDanaRSyncStatus +import info.nightscout.androidaps.events.EventPumpStatusChanged +import info.nightscout.androidaps.interfaces.ActivePluginProvider +import info.nightscout.androidaps.interfaces.CommandQueueProvider +import info.nightscout.androidaps.interfaces.DatabaseHelperInterface +import info.nightscout.androidaps.interfaces.ProfileFunction +import info.nightscout.androidaps.logging.AAPSLogger +import info.nightscout.androidaps.plugins.bus.RxBusWrapper +import info.nightscout.androidaps.plugins.pump.common.defs.PumpType +import info.nightscout.androidaps.queue.Callback +import info.nightscout.androidaps.utils.FabricPrivacy +import info.nightscout.androidaps.utils.SafeParse +import info.nightscout.androidaps.utils.rx.AapsSchedulers +import info.nightscout.androidaps.utils.sharedPreferences.SP +import io.reactivex.disposables.CompositeDisposable +import java.text.DateFormat +import java.text.DecimalFormat +import java.text.SimpleDateFormat +import java.util.* +import javax.inject.Inject +import kotlin.math.min +import kotlin.math.roundToInt + +class TDDStatsActivity : NoSplashAppCompatActivity() { + + @Inject lateinit var aapsLogger: AAPSLogger + @Inject lateinit var rxBus: RxBusWrapper + @Inject lateinit var sp: SP + @Inject lateinit var profileFunction: ProfileFunction + @Inject lateinit var activePlugin: ActivePluginProvider + @Inject lateinit var commandQueue: CommandQueueProvider + @Inject lateinit var databaseHelper: DatabaseHelperInterface + @Inject lateinit var fabricPrivacy: FabricPrivacy + @Inject lateinit var aapsSchedulers: AapsSchedulers + + private lateinit var binding: ActivityTddStatsBinding + private val disposable = CompositeDisposable() + + lateinit var tbb: String + private var magicNumber = 0.0 + private var decimalFormat: DecimalFormat = DecimalFormat("0.000") + private var historyList: MutableList = mutableListOf() + private var dummies: MutableList = mutableListOf() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityTddStatsBinding.inflate(layoutInflater) + setContentView(binding.root) + + window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) + binding.connectionStatus.visibility = View.GONE + binding.message.visibility = View.GONE + binding.totalBaseBasal2.isEnabled = false + binding.totalBaseBasal2.isClickable = false + binding.totalBaseBasal2.isFocusable = false + binding.totalBaseBasal2.inputType = 0 + tbb = sp.getString("TBB", "10.00") + val profile = profileFunction.getProfile() + if (profile != null) { + val cppTBB = profile.baseBasalSum() + tbb = decimalFormat.format(cppTBB) + sp.putString("TBB", tbb) + } + binding.totalBaseBasal.setText(tbb) + if (!activePlugin.activePump.pumpDescription.needsManualTDDLoad) binding.reload.visibility = View.GONE + + // stats table + + // add stats headers to tables + binding.mainTable.addView( + TableRow(this).also { trHead -> + trHead.setBackgroundColor(Color.DKGRAY) + trHead.layoutParams = TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT) + trHead.addView(TextView(this).also { labelDate -> + labelDate.text = resourceHelper.gs(R.string.date) + labelDate.setTextColor(Color.WHITE) + }) + trHead.addView(TextView(this).also { labelBasalRate -> + labelBasalRate.text = resourceHelper.gs(R.string.basalrate) + labelBasalRate.setTextColor(Color.WHITE) + }) + trHead.addView(TextView(this).also { labelBolus -> + labelBolus.text = resourceHelper.gs(R.string.bolus) + labelBolus.setTextColor(Color.WHITE) + }) + trHead.addView(TextView(this).also { labelTdd -> + labelTdd.text = resourceHelper.gs(R.string.tdd) + labelTdd.setTextColor(Color.WHITE) + }) + trHead.addView(TextView(this).also { labelRatio -> + labelRatio.text = resourceHelper.gs(R.string.ratio) + labelRatio.setTextColor(Color.WHITE) + }) + }, TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT) + ) + + // cumulative table + binding.cumulativeTable.addView( + TableRow(this).also { ctrHead -> + ctrHead.setBackgroundColor(Color.DKGRAY) + ctrHead.layoutParams = TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT) + ctrHead.addView(TextView(this).also { labelCumAmountDays -> + labelCumAmountDays.text = resourceHelper.gs(R.string.amount_days) + labelCumAmountDays.setTextColor(Color.WHITE) + }) + ctrHead.addView(TextView(this).also { labelCumTdd -> + labelCumTdd.text = resourceHelper.gs(R.string.tdd) + labelCumTdd.setTextColor(Color.WHITE) + }) + ctrHead.addView(TextView(this).also { labelCumRatio -> + labelCumRatio.text = resourceHelper.gs(R.string.ratio) + labelCumRatio.setTextColor(Color.WHITE) + }) + }, TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT) + ) + + // exponential table + binding.expweightTable.addView( + TableRow(this).also { etrHead -> + etrHead.setBackgroundColor(Color.DKGRAY) + etrHead.layoutParams = TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT) + etrHead.addView(TextView(this).also { labelExpWeight -> + labelExpWeight.text = resourceHelper.gs(R.string.weight) + labelExpWeight.setTextColor(Color.WHITE) + }) + etrHead.addView(TextView(this).also { labelExpTdd -> + labelExpTdd.text = resourceHelper.gs(R.string.tdd) + labelExpTdd.setTextColor(Color.WHITE) + }) + etrHead.addView(TextView(this).also { labelExpRatio -> + labelExpRatio.text = resourceHelper.gs(R.string.ratio) + labelExpRatio.setTextColor(Color.WHITE) + }) + }, TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT) + ) + + binding.reload.setOnClickListener { + binding.reload.visibility = View.GONE + binding.connectionStatus.visibility = View.VISIBLE + binding.message.visibility = View.VISIBLE + binding.message.text = resourceHelper.gs(R.string.warning_Message) + commandQueue.loadTDDs(object : Callback() { + override fun run() { + loadDataFromDB() + runOnUiThread { + binding.reload.visibility = View.VISIBLE + binding.connectionStatus.visibility = View.GONE + binding.message.visibility = View.GONE + } + } + }) + } + binding.totalBaseBasal.setOnEditorActionListener { _: TextView?, actionId: Int, _: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + binding.totalBaseBasal.clearFocus() + return@setOnEditorActionListener true + } + false + } + binding.totalBaseBasal.setOnFocusChangeListener { _: View?, hasFocus: Boolean -> + if (hasFocus) { + binding.totalBaseBasal.text.clear() + } else { + sp.putString("TBB", binding.totalBaseBasal.text.toString()) + tbb = sp.getString("TBB", "") + loadDataFromDB() + val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager + imm.hideSoftInputFromWindow(binding.totalBaseBasal.windowToken, 0) + } + } + loadDataFromDB() + } + + override fun onResume() { + super.onResume() + disposable.add(rxBus + .toObservable(EventPumpStatusChanged::class.java) + .observeOn(aapsSchedulers.main) + .subscribe({ event -> binding.connectionStatus.text = event.getStatus(resourceHelper) }, fabricPrivacy::logException) + ) + disposable.add(rxBus + .toObservable(EventDanaRSyncStatus::class.java) + .observeOn(aapsSchedulers.main) + .subscribe({ event -> + aapsLogger.debug("EventDanaRSyncStatus: " + event.message) + binding.connectionStatus.text = event.message + }, fabricPrivacy::logException) + ) + } + + override fun onPause() { + super.onPause() + disposable.clear() + } + + override fun dispatchTouchEvent(event: MotionEvent): Boolean { + if (event.action == MotionEvent.ACTION_DOWN) { + val myView = currentFocus + if (myView is EditText) { + val rect = Rect() + myView.getGlobalVisibleRect(rect) + if (!rect.contains(event.rawX.toInt(), event.rawY.toInt())) { + myView.clearFocus() + } + } + } + return super.dispatchTouchEvent(event) + } + + @SuppressLint("SetTextI18n") + private fun loadDataFromDB() { + historyList.clear() + historyList.addAll(databaseHelper.getTDDs()) + + //only use newest 10 + historyList = historyList.subList(0, min(10, historyList.size)) + + //fill single gaps + val df: DateFormat = SimpleDateFormat("dd.MM.", Locale.getDefault()) + for (i in 0 until historyList.size - 1) { + val elem1 = historyList[i] + val elem2 = historyList[i + 1] + if (df.format(Date(elem1.date)) != df.format(Date(elem2.date + 25 * 60 * 60 * 1000))) { + val dummy = TDD() + dummy.date = elem1.date - 24 * 60 * 60 * 1000 + dummy.basal = elem1.basal / 2 + dummy.bolus = elem1.bolus / 2 + dummies.add(dummy) + elem1.basal /= 2.0 + elem1.bolus /= 2.0 + } + } + historyList.addAll(dummies) + historyList.sortWith { lhs: TDD, rhs: TDD -> (rhs.date - lhs.date).toInt() } + runOnUiThread { + cleanTable(binding.mainTable) + cleanTable(binding.cumulativeTable) + cleanTable(binding.expweightTable) + val df1: DateFormat = SimpleDateFormat("dd.MM.", Locale.getDefault()) + if (TextUtils.isEmpty(tbb)) { + binding.totalBaseBasal.error = "Please Enter Total Base Basal" + return@runOnUiThread + } else { + magicNumber = SafeParse.stringToDouble(tbb) + } + magicNumber *= 2.0 + binding.totalBaseBasal2.text = decimalFormat.format(magicNumber) + var i = 0 + var sum = 0.0 + var weighted03 = 0.0 + var weighted05 = 0.0 + var weighted07 = 0.0 + + //TDD table + for (record in historyList) { + val tdd = record.getTotal() + + // Create the table row + binding.mainTable.addView( + TableRow(this@TDDStatsActivity).also { tr -> + if (i % 2 != 0) tr.setBackgroundColor(Color.DKGRAY) + if (dummies.contains(record)) + tr.setBackgroundColor(Color.argb(125, 255, 0, 0)) + + tr.id = 100 + i + tr.layoutParams = TableLayout.LayoutParams( + TableLayout.LayoutParams.MATCH_PARENT, + TableLayout.LayoutParams.WRAP_CONTENT) + + // Here create the TextView dynamically + tr.addView(TextView(this@TDDStatsActivity).also { labelDATE -> + labelDATE.id = 200 + i + labelDATE.text = df1.format(Date(record.date)) + labelDATE.setTextColor(Color.WHITE) + }) + tr.addView(TextView(this@TDDStatsActivity).also { labelBASAL -> + labelBASAL.id = 300 + i + labelBASAL.text = resourceHelper.gs(R.string.formatinsulinunits, record.basal) + labelBASAL.setTextColor(Color.WHITE) + }) + tr.addView(TextView(this@TDDStatsActivity).also { labelBOLUS -> + labelBOLUS.id = 400 + i + labelBOLUS.text = resourceHelper.gs(R.string.formatinsulinunits, record.bolus) + labelBOLUS.setTextColor(Color.WHITE) + }) + tr.addView(TextView(this@TDDStatsActivity).also { labelTDD -> + labelTDD.id = 500 + i + labelTDD.text = resourceHelper.gs(R.string.formatinsulinunits, tdd) + labelTDD.setTextColor(Color.WHITE) + }) + tr.addView(TextView(this@TDDStatsActivity).also { labelRATIO -> + labelRATIO.id = 600 + i + labelRATIO.text = (100 * tdd / magicNumber).roundToInt().toString() + "%" + labelRATIO.setTextColor(Color.WHITE) + }) + }, TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)) + i++ + } + i = 0 + + //cumulative TDDs + for (record in historyList) { + if (historyList.isNotEmpty() && df1.format(Date(record.date)) == df1.format(Date())) + //Today should not be included + continue + i++ + sum += record.getTotal() + + // Create the cumulative table row + binding.cumulativeTable.addView( + TableRow(this@TDDStatsActivity).also { ctr -> + if (i % 2 == 0) ctr.setBackgroundColor(Color.DKGRAY) + ctr.id = 700 + i + ctr.layoutParams = TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT) + + // Here create the TextView dynamically + ctr.addView(TextView(this@TDDStatsActivity).also { labelDAYS -> + labelDAYS.id = 800 + i + labelDAYS.text = i.toString() + labelDAYS.setTextColor(Color.WHITE) + }) + + ctr.addView(TextView(this@TDDStatsActivity).also { labelCUMTDD -> + labelCUMTDD.id = 900 + i + labelCUMTDD.text = resourceHelper.gs(R.string.formatinsulinunits, sum / i) + labelCUMTDD.setTextColor(Color.WHITE) + }) + + ctr.addView(TextView(this@TDDStatsActivity).also { labelCUMRATIO -> + labelCUMRATIO.id = 1000 + i + labelCUMRATIO.text = (100 * sum / i / magicNumber).roundToInt().toString() + "%" + labelCUMRATIO.setTextColor(Color.WHITE) + }) + }, TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT) + ) + } + if (isOldData(historyList) && activePlugin.activePump.pumpDescription.needsManualTDDLoad) { + binding.message.visibility = View.VISIBLE + binding.message.text = resourceHelper.gs(R.string.olddata_Message) + } else binding.mainTable.setBackgroundColor(Color.TRANSPARENT) + if (historyList.isNotEmpty() && df1.format(Date(historyList[0].date)) == df1.format(Date())) { + //Today should not be included + historyList.removeAt(0) + } + historyList.reverse() + i = 0 + for (record in historyList) { + val tdd = record.getTotal() + if (i == 0) { + weighted03 = tdd + weighted05 = tdd + weighted07 = tdd + } else { + weighted07 = weighted07 * 0.3 + tdd * 0.7 + weighted05 = weighted05 * 0.5 + tdd * 0.5 + weighted03 = weighted03 * 0.7 + tdd * 0.3 + } + i++ + } + + // Create the exponential table row + binding.expweightTable.addView( + TableRow(this@TDDStatsActivity).also { etr -> + if (i % 2 != 0) etr.setBackgroundColor(Color.DKGRAY) + etr.id = 1100 + i + etr.layoutParams = TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT) + + // Here create the TextView dynamically + etr.addView(TextView(this@TDDStatsActivity).also { labelWEIGHT -> + labelWEIGHT.id = 1200 + i + labelWEIGHT.text = "0.3\n0.5\n0.7" + labelWEIGHT.setTextColor(Color.WHITE) + }) + etr.addView(TextView(this@TDDStatsActivity).also { labelEXPTDD -> + labelEXPTDD.id = 1300 + i + labelEXPTDD.text = """ + ${resourceHelper.gs(R.string.formatinsulinunits, weighted03)} + ${resourceHelper.gs(R.string.formatinsulinunits, weighted05)} + ${resourceHelper.gs(R.string.formatinsulinunits, weighted07)} + """.trimIndent() + labelEXPTDD.setTextColor(Color.WHITE) + }) + etr.addView(TextView(this@TDDStatsActivity).also { labelEXPRATIO -> + labelEXPRATIO.id = 1400 + i + labelEXPRATIO.text = """ + ${(100 * weighted03 / magicNumber).roundToInt()}% + ${(100 * weighted05 / magicNumber).roundToInt()}% + ${(100 * weighted07 / magicNumber).roundToInt()}% + """.trimIndent() + labelEXPRATIO.setTextColor(Color.WHITE) + }) + }, TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT) + ) + } + } + + private fun cleanTable(table: TableLayout) { + val childCount = table.childCount + // Remove all rows except the first one + if (childCount > 1) table.removeViews(1, childCount - 1) + } + + private fun isOldData(historyList: List): Boolean { + val type = activePlugin.activePump.pumpDescription.pumpType + val startsYesterday = type == PumpType.DanaR || type == PumpType.DanaRS || type == PumpType.DanaRv2 || type == PumpType.DanaRKorean || type == PumpType.AccuChekInsight + val df: DateFormat = SimpleDateFormat("dd.MM.", Locale.getDefault()) + return historyList.size < 3 || df.format(Date(historyList[0].date)) != df.format(Date(System.currentTimeMillis() - if (startsYesterday) 1000 * 60 * 60 * 24 else 0)) + } +} \ No newline at end of file diff --git a/core/src/main/res/layout/danar_statsactivity.xml b/core/src/main/res/layout/activity_tdd_stats.xml similarity index 58% rename from core/src/main/res/layout/danar_statsactivity.xml rename to core/src/main/res/layout/activity_tdd_stats.xml index 3b19dcc30d..f7967bfebf 100644 --- a/core/src/main/res/layout/danar_statsactivity.xml +++ b/core/src/main/res/layout/activity_tdd_stats.xml @@ -3,14 +3,15 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" - android:paddingBottom="@dimen/activity_vertical_margin" android:paddingTop="@dimen/activity_vertical_margin" + android:paddingBottom="@dimen/activity_vertical_margin" tools:context="info.nightscout.androidaps.activities.TDDStatsActivity"> + + android:gravity="center_horizontal" + android:text="@string/tdd" + android:textColor="@color/mdtp_white" /> - + android:layout_weight="1" + android:stretchColumns="0,1,2,3,4" /> + android:layout_weight="1" + android:orientation="horizontal"> + android:layout_height="wrap_content" + android:orientation="vertical"> + android:text="@string/cumulative_tdd" + android:textColor="@color/mdtp_white" /> + android:layout_height="0dp" + android:layout_weight="1" + android:stretchColumns="0,1,2"> @@ -71,78 +71,78 @@ android:layout_height="10dp" /> + android:focusableInTouchMode="true" + android:orientation="vertical"> + android:gravity="center_horizontal" + android:text="@string/expweight" + android:textColor="@color/mdtp_white" /> - + android:layout_height="0dp" + android:layout_weight="1" + android:stretchColumns="0,1,2" /> + android:layout_height="match_parent" + android:orientation="horizontal"> + android:labelFor="@+id/total_base_basal" + android:text="@string/tbb" /> + android:gravity="center_vertical|center_horizontal" + android:inputType="numberDecimal" + android:textAppearance="?android:attr/textAppearanceMedium" + android:textColor="@color/mdtp_white" /> + android:layout_height="match_parent" + android:orientation="horizontal"> + android:labelFor="@+id/total_base_basal_2" + android:text="@string/tbb2" /> + android:textAppearance="?android:attr/textAppearanceMedium" + android:textColor="@color/mdtp_white" /> @@ -150,52 +150,47 @@ + + android:gravity="center_horizontal" + android:orientation="vertical"> - + + + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:background="@drawable/pillborder" + android:paddingLeft="10dp" + android:paddingRight="10dp" + android:text="@string/warning_Message" + android:textColor="#ff0000" + android:textSize="15sp" + android:textStyle="bold" /> - + - + - - -